play managed publishing: console plan/verify play-publish-changes, ready-to-publish items in play status, desktop hint
This commit is contained in:
parent
29a9683ab7
commit
1bb43fd4a0
20 changed files with 184 additions and 9 deletions
|
|
@ -20,6 +20,7 @@ import { NEVER_PRESS, PLAY_NEVER_PRESS, playAppList } from './console-forms';
|
|||
import type { ConsolePlan, PlanAnswer, PlanIds, PlanStatus, PlanStep } from './console-plan';
|
||||
import { AD_ID_PERMISSION, type ProjectSignals } from './project-signals';
|
||||
import { playGamesPart } from './console-games-plan';
|
||||
import { PUBLISH_BUTTON, PUBLISH_CONFIRM } from './play-publish';
|
||||
|
||||
const PLAY = 'https://play.google.com/console';
|
||||
|
||||
|
|
@ -503,10 +504,41 @@ function productionRelease(config: ShipConfig, p: PlanIds): Part {
|
|||
};
|
||||
}
|
||||
|
||||
function publishChanges(config: ShipConfig, p: PlanIds): Part {
|
||||
const ready = p.readyChanges ?? null;
|
||||
const readyText = ready === null ? 'not read (add --lookup, or run `storebound play status`)' : ready.length ? ready.map(r => `${r.track} ${r.version ?? '?'} (${r.build ?? '?'}) ${r.rollout}`).join('; ') : 'nothing ready to publish per the API';
|
||||
return {
|
||||
title: 'Play Console: publish the approved changes (managed publishing)',
|
||||
start: start(config, p, 'publishing', ['Publishing overview (left menu)']),
|
||||
steps: steps([
|
||||
{ text: 'Precondition: `storebound play status` shows "production <version>: In review / ready to publish" (managed publishing on, Google approved).' },
|
||||
{ text: 'Open Publishing overview. The section "Changes ready to publish" lists every approved change (e.g. the production release and Data safety); read the list as text and compare it with the ready changes below.' },
|
||||
{ text: `Stop. The owner presses "${PUBLISH_BUTTON}" (N = the number in the list) and then confirms in its dialog (button "${PUBLISH_CONFIRM}"; a real mouse click, a JS .click() may do nothing). It makes every listed change live at once.`, answers: ['ready'] },
|
||||
{ text: 'Verify: `storebound console verify play-publish-changes` (API: no production release is left ready to publish) or pipe the page text to `--from-text -`.' },
|
||||
]),
|
||||
answers: [ans('ready', 'Changes ready to publish (API)', readyText, 'certain', 'play status (public store page + tracks)', { note: 'The API sees production releases only; Data safety, listing and other non-track changes show in the console list only.', where: 'Publishing overview > Changes ready to publish' })],
|
||||
final: PUBLISH_BUTTON,
|
||||
neverPress: ['Publish N changes', 'Send changes for review', 'Submit N changes for review', 'Restart review', 'Discard changes', 'Stop managed publishing', 'Turn off managed publishing', 'Halt rollout', 'Unpublish app', 'Deactivate', ...NEVER_PRESS],
|
||||
allowed: [
|
||||
{ button: 'Publishing overview (left menu), expand Changes ready to publish', class: 'navigation', where: 'read-only: lists the approved changes' },
|
||||
],
|
||||
uiFacts: [
|
||||
'Managed publishing (play.managedPublishing: true): after approval the changes wait in Publishing overview > "Changes ready to publish"; the button is "Publish N changes" (N counts every change, e.g. production full rollout + Data safety) and opens a confirm dialog.',
|
||||
'The Developer API has no publishing-state endpoint: storebound infers "ready to publish" from a completed production release the public store page does not show yet.',
|
||||
'Never "Discard changes" or "Stop managed publishing" (it would unpublish or drop the approved changes).',
|
||||
managedPublishingNote(config),
|
||||
PLAY_MATERIAL_FACT,
|
||||
],
|
||||
verify: { command: 'storebound console verify play-publish-changes', source: 'page-text', capture: PAGE_TEXT, expect: ['No production release is left ready to publish (API), or the page shows no "Publish N changes" button / "Changes ready to publish".'] },
|
||||
guidance: ['Open: Publishing overview > Changes ready to publish'],
|
||||
};
|
||||
}
|
||||
|
||||
export function playOnlyPart(form: Exclude<PlanOnlyFormId, 'play-app-content'>, config: ShipConfig, p: PlanIds): Part {
|
||||
switch (form) {
|
||||
case 'play-production-countries': return productionCountries(config, p);
|
||||
case 'play-production-release': return productionRelease(config, p);
|
||||
case 'play-publish-changes': return publishChanges(config, p);
|
||||
case 'play-store-settings': return storeSettings(config, p);
|
||||
case 'play-privacy-policy': return privacyPolicy(config, p);
|
||||
case 'play-ads': return adsDeclaration(config, p);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue