Skip to content

Commit eb64413

Browse files
authored
build: Release (#10452)
2 parents 7c3b43d + 6667900 commit eb64413

29 files changed

Lines changed: 2050 additions & 592 deletions

DEPRECATIONS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ The following is a list of deprecations, according to the [Deprecation Policy](h
2727
| DEPPS21 | Config option `protectedFieldsOwnerExempt` defaults to `false` | | 9.6.0 (2026) | 10.0.0 (2027) | deprecated | - |
2828
| DEPPS22 | Config option `protectedFieldsTriggerExempt` defaults to `true` | | 9.6.0 (2026) | 10.0.0 (2027) | deprecated | - |
2929
| DEPPS23 | Config option `protectedFieldsSaveResponseExempt` defaults to `false` | | 9.7.0 (2026) | 10.0.0 (2027) | deprecated | - |
30+
| DEPPS24 | Config option `installation.duplicateDeviceTokenActionEnforceAuth` defaults to `true` | [#10451](https://github.com/parse-community/parse-server/pull/10451) | 9.9.0 (2026) | 10.0.0 (2027) | deprecated | - |
3031

3132
[i_deprecation]: ## "The version and date of the deprecation."
3233
[i_change]: ## "The version and date of the planned change."

README.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ A big _thank you_ 🙏 to our [sponsors](#sponsors) and [backers](#backers) who
7272
- [Configuring File Adapters](#configuring-file-adapters)
7373
- [Restricting File URL Domains](#restricting-file-url-domains)
7474
- [Idempotency Enforcement](#idempotency-enforcement)
75+
- [Installations](#installations)
7576
- [Localization](#localization)
7677
- [Pages](#pages)
7778
- [Localization with Directory Structure](#localization-with-directory-structure)
@@ -658,6 +659,49 @@ Assuming the script above is named, `parse_idempotency_delete_expired_records.sh
658659
2 * * * * /root/parse_idempotency_delete_expired_records.sh >/dev/null 2>&1
659660
```
660661
662+
## Installations
663+
664+
Parse Server deduplicates `_Installation` records when a new install collides with an existing row's `deviceToken`. The `installation` option block configures the dedup behavior.
665+
666+
### Options
667+
668+
| Parameter | Optional | Type | Default | Environment Variable |
669+
|---|---|---|---|---|
670+
| `installation.duplicateDeviceTokenActionEnforceAuth` | yes | `Boolean` | `false` | `PARSE_SERVER_INSTALLATION_DUPLICATE_DEVICE_TOKEN_ACTION_ENFORCE_AUTH` |
671+
| `installation.duplicateDeviceTokenAction` | yes | `String` | `'delete'` | `PARSE_SERVER_INSTALLATION_DUPLICATE_DEVICE_TOKEN_ACTION` |
672+
| `installation.duplicateDeviceTokenMergePriority` | yes | `String` | `'deviceToken'` | `PARSE_SERVER_INSTALLATION_DUPLICATE_DEVICE_TOKEN_MERGE_PRIORITY` |
673+
674+
#### `duplicateDeviceTokenActionEnforceAuth`
675+
676+
When `true`, the dedup operation runs with the caller's auth context so ACL and CLP are honored. When `false`, the dedup runs as master and bypasses both. Master and maintenance keys always bypass regardless of this flag.
677+
678+
#### `duplicateDeviceTokenAction`
679+
680+
What Parse Server does to the conflicting `_Installation` row(s) when a new install's `deviceToken` collides with an existing row.
681+
682+
- `'delete'`: destroys the conflicting row.
683+
- `'update'`: clears the now-conflicting ID field on the conflicting row, preserving custom fields, channels, and history.
684+
685+
#### `duplicateDeviceTokenMergePriority`
686+
687+
When an existing row holds the new `deviceToken` but has no `installationId` of its own, Parse Server merges the two rows. This option controls which side wins.
688+
689+
- `'deviceToken'`: the deviceToken-only row survives; the request's installationId-matched row is the loser.
690+
- `'installationId'`: the request's installationId-matched row survives; the deviceToken-only orphan is the loser.
691+
692+
### Configuration example
693+
694+
```javascript
695+
const parseServer = new ParseServer({
696+
...otherOptions,
697+
installation: {
698+
duplicateDeviceTokenActionEnforceAuth: true,
699+
duplicateDeviceTokenAction: 'update',
700+
duplicateDeviceTokenMergePriority: 'installationId',
701+
},
702+
});
703+
```
704+
661705
## Localization
662706

663707
### Pages

changelogs/CHANGELOG_alpha.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,31 @@
1+
# [9.9.0-alpha.3](https://github.com/parse-community/parse-server/compare/9.9.0-alpha.2...9.9.0-alpha.3) (2026-04-30)
2+
3+
4+
### Features
5+
6+
* Add installation deviceToken deduplication options ([#10451](https://github.com/parse-community/parse-server/issues/10451)) ([9fee1a0](https://github.com/parse-community/parse-server/commit/9fee1a07080ab8bda2a3d4798881bcc288e5b37a))
7+
8+
# [9.9.0-alpha.2](https://github.com/parse-community/parse-server/compare/9.9.0-alpha.1...9.9.0-alpha.2) (2026-04-26)
9+
10+
11+
### Bug Fixes
12+
13+
* MFA SMS one-time password accepted twice under concurrent login ([GHSA-jpq4-7fmq-q5fj](https://github.com/parse-community/parse-server/security/advisories/GHSA-jpq4-7fmq-q5fj)) ([#10448](https://github.com/parse-community/parse-server/issues/10448)) ([725be0d](https://github.com/parse-community/parse-server/commit/725be0d602baa619492606e7b3f6829082d93a4c))
14+
15+
# [9.9.0-alpha.1](https://github.com/parse-community/parse-server/compare/9.8.1-alpha.1...9.9.0-alpha.1) (2026-04-17)
16+
17+
18+
### Features
19+
20+
* Add `rawValues` and `rawFieldNames` options for aggregation queries ([#10438](https://github.com/parse-community/parse-server/issues/10438)) ([f26700e](https://github.com/parse-community/parse-server/commit/f26700e39d1980940467bee0d26ca3deb88e3924))
21+
22+
## [9.8.1-alpha.1](https://github.com/parse-community/parse-server/compare/9.8.0...9.8.1-alpha.1) (2026-04-12)
23+
24+
25+
### Bug Fixes
26+
27+
* Context mutations leak across requests in `ParseServerRESTController` ([#10291](https://github.com/parse-community/parse-server/issues/10291)) ([60a58ec](https://github.com/parse-community/parse-server/commit/60a58ec11a8bb67aaf217b1e7362b89d742b66da))
28+
129
# [9.8.0-alpha.13](https://github.com/parse-community/parse-server/compare/9.8.0-alpha.12...9.8.0-alpha.13) (2026-04-12)
230

331

0 commit comments

Comments
 (0)