Desktop D3 writes in the window: push listing text, upload graphics, screenshots and previews, render jobs, catalog sync and price export, Play rollout share / halt / resume / complete and iOS phased release controls, TestFlight What to Test, internal groups and testers, reply editor with approve and send; every one a dry run, a native dialog, then the real run

This commit is contained in:
CRTkafa 2026-10-11 04:25:53 +08:00
parent f47c00bed0
commit ba58895d3a
15 changed files with 573 additions and 69 deletions

View file

@ -227,7 +227,7 @@ export const en = {
'releases.noVersionsText': 'When the first build is uploaded it shows here.',
'releases.history': 'Versions on the stores',
'releases.historySub': 'Read {when}',
'releases.consoleNote': 'storebound never submits for review, releases or completes a rollout. Do those in the store console.',
'releases.consoleNote': 'storebound never submits for review and never releases an approved version: do those in the store console. Rollout and phased release changes are your decision, each confirmed in a system dialog.',
'cat.products': 'One-time products',
'cat.productsSub': 'In the config',
@ -774,4 +774,96 @@ export const en = {
'portfolio.groupCount_one': '1 app',
'portfolio.groupAccounts': '{count} accounts',
'portfolio.groupAccounts_one': '1 account',
'write.dryRunning': 'Dry run first: nothing changes yet',
'write.notApplied': 'Not applied',
'write.notAppliedDetail': 'You chose Cancel in the dialog: nothing changed.',
'act.storeTitle': 'Push to the stores',
'act.storeSub': 'Listing text, screenshots and previews from this folder, and the local renders',
'act.playListing': 'Listing text',
'act.playListingDone': 'Play listing updated',
'act.playImages': 'Graphics and screenshots',
'act.version': 'Version',
'act.appleListing': 'Version {version} and its text',
'act.appleListingDone': 'App Store version and text updated',
'act.appleShots': 'Screenshots',
'act.applePreviews': 'App previews',
'act.uploaded': 'Uploaded',
'act.slowHint': 'Can take minutes: progress shows in the toast, Cancel stops it',
'act.render': 'Render (local)',
'act.renderLang': 'Language to render',
'act.allLangs': 'All languages',
'act.renderShots': 'Render screenshots',
'act.renderVideo': 'Cut app previews',
'act.icons': 'Generate icons',
'act.gallery': 'Review gallery',
'act.galleryDone': 'Gallery written next to the renders',
'act.rendered': 'Done',
'act.localHint': 'Local files only; needs ffmpeg and Chrome (Dependencies)',
'act.note': 'Each action runs a dry run and shows it in a system dialog before anything changes. Nothing here submits for review or publishes: that stays in the consoles.',
'act.catalogTitle': 'Sync the catalog',
'act.catalogSub': 'Create and update products and subscriptions with their regional prices from the config',
'act.playProducts': 'One-time products',
'act.playSubs': 'Subscriptions',
'act.appleIap': 'In-app purchases',
'act.appleSubs': 'Subscriptions',
'act.synced': 'Catalog updated',
'act.prices': 'Prices',
'act.pricesExport': 'Export prices (CSV)',
'act.pricesExported': 'Prices exported into the folder',
'act.pricesImport': 'Changing live prices from a sheet stays a terminal step:',
'act.catalogNote': 'Never submits: new items wait in the consoles until you send them with a version.',
'roll.playNow': 'Rollout {pct} %',
'roll.share': 'New user share',
'roll.toShare': 'Raise to {pct} %',
'roll.halt': 'Halt',
'roll.haltHint': 'Stops new installs of the update; not a rollback',
'roll.halted': 'Rollout halted',
'roll.resume': 'Resume',
'roll.complete': 'Everyone (100 %)',
'roll.completeHint': 'Completes the staged rollout: every user gets the update',
'roll.done': 'Rollout updated',
'roll.iosNow': 'Phased release, day {day} of 7',
'roll.pause': 'Pause',
'roll.pauseHint': 'Holds the automatic updates (up to 30 days); not a rollback',
'roll.paused': 'Phased release paused',
'roll.everyone': 'Release to everyone',
'roll.everyoneHint': 'Ends the phased release: every user with automatic updates gets it now',
'roll.phasedOn': 'Turn on phased release',
'roll.phasedOnHint': 'When this version goes live, it reaches users with automatic updates over 7 days',
'roll.phasedOnDone': 'Phased release is on',
'tf.what': 'What to Test',
'tf.groupsBtn': 'Internal groups',
'tf.whatToTest': 'What to Test for build {build}',
'tf.whatPlaceholder': 'What changed and what to look at (every App Store locale gets this text)',
'tf.whatSave': 'Set this text',
'tf.whatFromFile': 'From the listing file',
'tf.whatFromFileHint': 'Each locale\'s whatToTest (or What\'s New) from the App Store listing file',
'tf.whatSaved': 'What to Test updated',
'tf.toInternal': 'Give build {build} to internal groups',
'tf.noInternal': 'No internal group: create one in App Store Connect or with apple.testflight.groups.',
'tf.distribute': 'Give to these groups',
'tf.distributed': 'Build added to the groups',
'tf.externalNote': 'External groups and Beta App Review stay in App Store Connect.',
'tf.testersTitle': 'Testers',
'tf.testersSub': 'From the testers CSV in this folder (.storebound/testers.csv, never committed)',
'tf.testersGroup': 'Group',
'tf.testersAll': 'Every group in the CSV',
'tf.testersAdd': 'Add new testers',
'tf.testersHint': 'Apple emails each new tester an invitation once the group has a build',
'tf.testersDone': 'Testers added',
'tf.testersNote': 'Emails stay masked in every line and dialog. Removing testers stays a terminal step.',
'reviews.replyEditor': 'Reply',
'reviews.replyPlaceholder': 'Plain text, in the reviewer\'s language. No incentives, no personal data.',
'reviews.unsaved': 'Not saved',
'reviews.save': 'Save draft',
'reviews.saved': 'Draft saved (approve it again)',
'reviews.send': 'Send reply',
'reviews.sendHint': 'Public: the reviewer is notified. A system dialog shows the reply first.',
'reviews.sent': 'Reply sent',
'reviews.incentive': 'Offers something for a rating or asks for stars: not allowed',
'reviews.tooLong': 'Longer than the store allows ({limit} characters)',
'reviews.sendNoteD3': 'Replies are public. Save, approve, then Send: each step shows a system dialog first.',
} as const;