play data-safety: PSL_SUPPORT_DATA_DELETION_BY_USER as Play's single choice (partialDeletion true | false | 'auto90'), drop the removed PSL_DATA_COLLECTION_USER_REQUEST_DELETE (deletionRequest deprecated, check notes it); ship Google's empty form (cli/data/play-data-safety-form.csv, exported 2026-10-12), take every Answer requirement from it and report pairs not in it (formPairIssues) in check, declarations and play data-safety. Pitfall 21
This commit is contained in:
parent
dfc28c15f8
commit
b5b8f2da9d
35 changed files with 1824 additions and 859 deletions
18
CHANGELOG.md
18
CHANGELOG.md
|
|
@ -9,6 +9,24 @@
|
|||
owner presses only the final public or irreversible buttons and answers the facts no file proves in one batch at
|
||||
the start. Skill text that left navigation, draft saves, exports or uploads to the owner is rewritten;
|
||||
`tests/do-it-dont-ask.test.ts` guards it. Pitfall 26.
|
||||
|
||||
- Fix (`play data-safety`): apps with accounts got Play 400 "Invalid safety labels declaration: Line 7: Response ID
|
||||
missing". Play's current form asks `PSL_SUPPORT_DATA_DELETION_BY_USER` as a single choice with three options;
|
||||
storebound wrote it as a bare TRUE / FALSE. It now writes one row per option with TRUE on the picked one, and
|
||||
`dataSafety.partialDeletion` is `true | false | 'auto90'`: true = `DATA_DELETION_YES` (plus `PSL_DATA_DELETION_URL`),
|
||||
false = `DATA_DELETION_NO`, `'auto90'` = `DATA_DELETION_NO_AUTO_DELETED` ("No, but user data is automatically
|
||||
deleted within 90 days"); left out, `check` names it as missing.
|
||||
- Play removed `PSL_DATA_COLLECTION_USER_REQUEST_DELETE` from the form, so it is no longer written and has no rule.
|
||||
`dataSafety.deletionRequest` is deprecated and optional; `check` prints a note to remove it. `profile` checks,
|
||||
`scan` and the desktop app no longer ask for it (the desktop Data safety card shows the deletion answer instead).
|
||||
- Google's empty form, exported from Play Console on 2026-10-12, ships as `cli/data/play-data-safety-form.csv`
|
||||
(embedded in the binary). Every row's Answer requirement (and label) comes from it, `dataSafety.extra` rows
|
||||
included (they were guessed as MULTIPLE_CHOICE / MAYBE_REQUIRED). New `formPairIssues`: every (Question ID,
|
||||
Response ID) pair must be in that form, or `check`, `project.declarations`, `play data-safety --dry` and the real
|
||||
run (before the POST) report "<q>,<r> is not in Play's current Data safety form ...; Play answers 400". Refresh
|
||||
the file when Play changes the form (Play Console > App content > Data safety > Export to CSV, nothing answered).
|
||||
- `templates/data-safety.csv` (the filled example from `init`) regenerated against the form. Pitfall 21.
|
||||
|
||||
- Fix (`play build`): the Android SDK is found the way Android Studio finds it, so a non-interactive shell (no
|
||||
`ANDROID_HOME`) with a gitignored `local.properties` no longer ends in Gradle's "SDK location not found". Order:
|
||||
`ANDROID_HOME`, `ANDROID_SDK_ROOT`, `sdk.dir` in the Gradle project's `local.properties`, then
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue