diff --git a/CHANGELOG.md b/CHANGELOG.md index 26b8f1e..cfaa7fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,21 @@ - **One-line errors for missing required values:** `apple listing` without `--version` says "--version is required (storebound apple status shows the editable version)"; the same for privacy-manifest `--ios`, adhoc export `--archive`, edit `--ops` and resubmit `--build`. A flag given without a value counts as missing. +- **Every CLI command is reachable in the desktop app.** A new **More tools** tab gives each command without a + screen of its own (play build / upload / share / app-id, apple build / upload / signing / adhoc, bundle, IAP review, + Header and Search Results, custom product pages, in-app events, pre-orders, what's new, listing translate / check, + ASO rank / competitors / suggest, captures, fonts, JPEG copies, triage, originality, privacy manifest, ads scan, + Apple Ads reports, web, RevenueCat diff, PPP sheet, workflows, install for an AI tool) one typed form with the + command's own options, built from the method's schema; never a free-text shell. Reads run there; writes show the + dry run, then the native dialog, then run with the confirm token. Owner-only steps (offer codes, win-back, + promoted enable, pre-order enable / end, custom page and event submit, TestFlight expire, Apple Ads changes, + RevenueCat sync, shots login) are listed with their terminal command to copy. New desktop methods in `serve`: + `play.build`, `play.upload`, `play.share`, `play.app_id`, `apple.build`, `apple.upload`, `apple.signing_ensure`, + `apple.adhoc_register`, `apple.adhoc_export`, `shots.fonts`, `shots.jpeg`, `agent.install`. +- **docs/desktop-coverage.md** (generated by `bun tools/gen-desktop-coverage.ts` from `cli/lib/desktop-coverage.ts`): + every command with its window place and methods; 92 commands, 88 covered, 4 not for the desktop (`mcp`, `serve`, + `desktop`, `api`). `tests/desktop-coverage.test.ts` fails when a command has no place, names a method the window + never calls, or is marked not-for-desktop without being on the short list. ## 0.8.21 ยท 2026-10-20 diff --git a/docs/desktop.md b/docs/desktop.md index f13f7f0..795c2c3 100644 --- a/docs/desktop.md +++ b/docs/desktop.md @@ -349,6 +349,22 @@ and account names only), the same file the desktop reads. A workspace account's | `inspect --listing-text --json` (new) | Listings export (Markdown) | | `import fastlane` | First-run guide, App folders, store-only app banner (`project_import_fastlane`: plan in a native dialog first) | +**Every command, one place (desktop-coverage.md).** `cli/lib/desktop-coverage.ts` maps each CLI command to the +window place and the methods that run it (serve methods, or `host:` commands of src-tauri); `bun +tools/gen-desktop-coverage.ts` writes [desktop-coverage.md](desktop-coverage.md) from it and +`tests/desktop-coverage.test.ts` fails when a command has no place, names a method the window never calls, or is +"not for the desktop" outside the short list (`mcp`, `serve`, `desktop`, `api`). A new command needs an entry there. + +**More tools tab** (`src/screens/tabs/Tools.tsx`). The commands without a screen of their own (`TOOLBOX` in the +coverage map: build and upload, ad-hoc devices, store features, text and ASO, captures, quality, Apple Ads, workflows +and AI tools) get one form each, built from the method's argument schema (`system.methods`): enums as selects, +booleans as checkboxes, strings with the sidecar's pattern; empty fields keep the command's defaults. Never a +free-text shell: the sidecar validates every value. Reads run and show the command's output; writes go through +`useWrite` (dry run, native dialog, confirm token; build, upload, signing and device registration have their own +question answered by that token). Owner-only steps without a window button (`OWNER_STEPS`: offer codes, win-back, +promoted enable, pre-order enable / end, custom page and event submit, TestFlight expire, Apple Ads changes, +RevenueCat sync, shots login) are listed with their terminal command and a Copy button. + **Exports.** Every screen registers what it can save (`src/ui/Exports.tsx`): the "Export" menu at the top right of the top bar and the "Export" group of the command palette. Files: prices CSV (the `prices import` format), listings (md), reviews CSV, health report (md), catalog parity (md), store readiness report (md), store declarations (md), @@ -375,7 +391,7 @@ note first. tracking, encryption, sign-in, contact), highlighted in amber, each with how to answer. - **First run.** The guide now starts with the studio (pick or create, with a colour), so the keys added two steps later land in it; the app step offers add / start / import from fastlane side by side. -- **Tabs.** Eleven app tabs fit 1440 px; narrower windows scroll the tab bar sideways instead of wrapping. +- **Tabs.** Twelve app tabs (More tools last) fit 1440 px; narrower windows scroll the tab bar sideways instead of wrapping. R&D on a fastlane importer and a RevenueCat adapter: `docs/research/fastlane-revenuecat.md`.