store-only apps edit their listing on the store (storebound listing live / set: old -> new per field with the checks, a PATCH of only the edited fields; serve listing.set is the one store-only write, its token bound to the store ids; policy.rs STORE_ONLY_WRITES, write_with_confirm for store targets); screenshot captions per language and scene edited as a text edit of the shots copy JSON (JSON files keep their layout); Play content rating, target audience and App content answers in App info; docs/console-parity.md after the editors (73 rows: 55 complete, 18 with the reason) and tests/console-parity.test.ts keeping it honest

This commit is contained in:
CRTkafa 2026-10-14 00:53:38 +08:00
parent 3cea2af4e1
commit 7ac028421a
33 changed files with 852 additions and 157 deletions

View file

@ -1723,4 +1723,21 @@ export const en = {
'ed.moveDown': 'Move {id} down',
'ed.applyArtSub': 'Render, then upload: an upload replaces the store\'s screenshot set (dry run first).',
'ed.loadFailed': 'Could not read the app folder\'s files: {error}',
'ed.storeOnlyTitle': 'Edit the listing on the stores',
'ed.storeOnlySub': 'No app folder: the live texts, changed straight on each store per language.',
'ed.storeOnlyNote': 'This app has no folder, so the texts go straight to the store: each Apply shows the store\'s dry run, then asks. URLs, contact and screenshots need an app folder (Link a folder).',
'ed.storeOnlyApplyPlay': 'Google Play {lang}: preview',
'ed.storeOnlyApplyApple': 'App Store {lang}: preview',
'ed.liveEmpty': 'The live texts are not read yet',
'ed.noEditableVersion': 'No App Store version is being prepared: name, subtitle and promotional text can change now; description, keywords and what\'s new change with a new version.',
'ed.captionsTitle': 'Screenshot captions',
'ed.captionsSub': 'Per language and scene ({file}). Render again after saving; long lines are checked by shots check.',
'ed.eyebrow': 'Eyebrow',
'ed.titleLine': 'Title line {n}',
'ed.subline': 'Subline',
'ed.contentRating': 'Content rating answers (Play IARC)',
'ed.contentRatingHint': '{ "category": "game", "answers": { ... } }. No API: Fill in console types them; you press Submit.',
'ed.targetAudience': 'Target audience and ads (Play)',
'ed.appContent': 'App content declarations (Play)',
'ed.appContentHint': 'Government, financial and health features, advertising ID. No API: the console plan step uses them.',
} as const;