5236f002f1
desktop: tray menu panels and pinnable context menus
...
The tray's right-click menu is drawn by the app: one tree from tray.rs
(stable submenu keys), one frameless always-on-top menu-N window per
panel rendered by tray-menu.html with the design system, placed inside
the monitor's work area. A pure panel book keeps transient and pinned
panels apart; pinned panels (pin button, Ctrl+click, middle click) are
draggable, step aside from each other and are saved in state.json
(menuPins) and restored at start. tray_update pushes the tree to the
open panels, which update in place; closed panels are destroyed. The
native menu, rendered from the same tree, stays as the fallback and on
Linux. Only menu-* windows get the menu_* commands (menu.json).
In-app context menus get the same behaviour through a pure menu stack
(ui/menu-stack.ts): pin a menu, tear off a submenu, pinned panels
survive the next menu, are draggable and re-read their entries from
live sources so data changes update them in place.
Also drops a stray diff3 marker line from CHANGELOG.md.
2026-10-24 13:44:08 +08:00
5b6e0992ca
desktop: boot check finds unsaved marks on the sub views; neutral next-step lines before a read
2026-10-24 13:06:42 +08:00
0ef27cf2e4
desktop: five sections by job (Release, Store page, Revenue, Players, Health), Game services view, sidebar by attention
...
- app view: 12 tabs become 5 sections, each with a header (what it is for, the one next step from state
already read) and its sub views in a segmented control; 1-5 jump, Ctrl+Shift+[ ] cycle, Ctrl+K and the
context menu list sections and sub views; old tab ids, section and section/sub links all resolve
- Players > Game services (games only): both stores, one row per leaderboard / achievement with its
languages and each store's state, Game Center locale map, Play API-disabled state with the console plan
- games status --json: items, localeMap, playApiDisabled; inspect summary: games
- sidebar: apps grouped by attention / in progress / live / not on a store, one status line each, studio
filter, workspace as a footer icon row
- boot check opens places like a person (section, then sub view)
2026-10-24 13:06:42 +08:00
26f9559e1a
play-publish-changes: a release is ready only when the store page shows an older version; unknown reads are not determined, never a mismatch
2026-10-24 12:12:37 +08:00
1bb43fd4a0
play managed publishing: console plan/verify play-publish-changes, ready-to-publish items in play status, desktop hint
2026-10-24 11:56:07 +08:00
39b2f73ad7
desktop dev update channel: every push to main builds dev bundles (<next patch>-dev.<UTC>), the VDS signs and publishes dev/latest.json (newest 5); app channel setting stable|dev, background updater at start / 15 min / resume / channel switch, deferred while in use, no downgrade, autostart rewritten on every start, card shows version and channel
2026-10-23 23:14:08 +08:00
987f0775b3
tray card: per-icon Phosphor imports; teaser pins the current app-privacy step 5 text
2026-10-23 14:07:44 +08:00
f3e7c98994
desktop reads: a card that joins a read or gets the 'read just now' answer applies it (no bus event for those: a tab opened again stayed on its skeleton); invalidate before a write's after-refresh, editor save re-reads with force
2026-10-23 11:22:26 +08:00
60a72e6947
Desktop: tray mini card on left click (store status at a glance next to the tray icon; Refresh runs the main window's Refresh all)
2026-10-23 11:15:35 +08:00
c03938f9dc
desktop: one read registry for every read button: single-flight per canonical key, broad reads cover narrow keys, overlapping buttons all busy and disabled (useReadState), 20 s 'read just now' memo, quota pause on the buttons, every read through the scheduler (Check again, Import apps, account Test, Read the stores, Dependencies), writes invalidate only the reads they change; tests/read-registry.test.ts; fixtures ?blocked and window.__fakeCalls
2026-10-23 11:09:51 +08:00
26ebb64458
Desktop: tab row measures the room inside the sticky bar's padding (the More button was clipped); editor saves skip the in-app preview (their Review step already showed the dry run)
2026-10-23 10:44:45 +08:00
ebd64e0f76
Desktop: tab row reserves enough room for the More menu button
2026-10-23 09:54:20 +08:00
0e693b7f74
Desktop: portfolio card ids show the full id as a tooltip
2026-10-23 09:50:11 +08:00
c0a13b5f87
Desktop: wide tables keep their first column in view while scrolling; compact table density (Settings > Appearance, Ctrl+K)
2026-10-23 09:49:47 +08:00
364b8ec0d4
Desktop: every write shows a styled in-app dry-run preview (command, changed rows) before the native confirm dialog; i18n house style fix for the developer id hint
2026-10-23 09:48:48 +08:00
c86b583830
Desktop: Settings search filters the sections (nav and body), Enter jumps to the first match
2026-10-23 09:47:29 +08:00
78b1b599a5
Desktop: More tools gets a command search across groups and a compact list layout
2026-10-23 09:46:55 +08:00
e32d0772e9
Desktop: Reviews keyboard: J/K move, R reply, C copy, O open in the console, with a key hint
2026-10-23 09:46:09 +08:00
ef6651c8d2
Desktop: Prices sheet panel is one row (Export primary, Compare a sheet, rest in ...)
2026-10-23 09:45:19 +08:00
5b6d5cdac2
Desktop: pill tabs stay one row; tabs that do not fit go into a More menu, the active tab always stays visible
2026-10-23 09:44:43 +08:00
83b8ce8869
Desktop: sidebar reader as short rows with a progress bar; one Refresh (top bar) instead of two; rolling-out tile lists versions on their own lines; cards without screenshots show live versions per store
2026-10-23 09:43:08 +08:00
6a9f9f36c0
Desktop: compact hero drops its min height; app tabs fit one row at 1440 (tighter pills below 1560 px); hero screenshots only on wide windows so the pipeline labels never overlap
2026-10-23 09:32:51 +08:00
936ee15e38
Desktop: unique option keys in editor selects (App info page error); long package names no longer push App folders cards wide
2026-10-23 09:30:22 +08:00
43e394ef7d
Desktop: account and studio secondary actions move to ... menus; one Import apps button on the home; App folders header keeps one primary action
2026-10-23 09:26:02 +08:00
7c18b3f7dd
Desktop: compact app hero on every tab but Releases; Ctrl+K lists the current app's menu actions; Alt+Up/Down switches apps; shortcuts list; no focus ring on code-focused headings
2026-10-23 09:26:01 +08:00
a656240bfb
Checks: findings with a skill get Open guide (context menu and a link on the card) to the shipped skills/<name>/SKILL.md; known-skill list kept equal to skills/ by a test
2026-10-23 09:22:22 +08:00
4a74989a95
Open in Google Play Console deep-links the app: Play developer id per credential profile (accounts play-developer, desktop Accounts), shared playAppUrl builder for desktop, CLI and watch; developer chooser instead of the console root
2026-10-23 09:20:35 +08:00
7c769c18f4
Desktop: folders keep claiming their store records before the config read returns; a store app with a folder's id is never listed twice
2026-10-23 09:18:03 +08:00
5e82010ace
Desktop: app page no longer overflows (page grid minmax, wrapping tabs); app ignore/unpair actions move to a ... menu; unique keys in App info
2026-10-23 09:08:23 +08:00
dece83c3e8
Desktop: custom context menus everywhere, never the browser's menu
...
One ContextMenu in the design system (keyboard, type-ahead, submenus, check items,
disabled reasons, Shift+F10 / Menu key, viewport placement, light and dark). The
native menu is prevented globally; text fields keep Cut / Copy / Paste / Select all.
Menus on sidebar and portfolio apps, app hero, releases, store art, live art,
reviews, checks, editor fields, catalog, prices, accounts, app folders, ignored.
2026-10-23 08:59:14 +08:00
707db2ebc6
Desktop: app hero without screenshots no longer shows a cropped second copy of the icon
2026-10-23 08:39:51 +08:00
4a0bce64a1
Desktop: live store thumbnails load right away (an IntersectionObserver may never fire in a hidden tray window)
2026-10-23 02:36:01 +08:00
9610c9477e
Desktop: per-store ignore (hide only the App Store or Google Play side), N ignored show toggle in sidebar and portfolio, Unignore in the app controls; ignore flags sync with the shared app list
2026-10-23 01:35:27 +08:00
75bf62e125
Reviews: a store read that failed everywhere is an error, not an empty fresh list; Reviews tab says Apple's API can lag and Play returns 7 days; pitfall 106
2026-10-23 00:33:27 +08:00
f131de9df2
Desktop v2 screens: releases (store cards, stage stepper, rollout ring), submit checklist, TestFlight cards; listings as store pages with completeness, framed screenshots with issue badges, product cards, price matrix with gap shading; health tiles and issue cards, store-style review feed with rating distribution, growth funnel, readiness score with fix-first, tools grid, store-info sheet; settings, accounts, folders, dependencies and onboarding in the v2 language
2026-10-22 23:31:22 +08:00
bd316723f5
Desktop v2 design system (design.css tokens for both themes, ui/ds.tsx: PageHeader, Hero, Section, StatTile, Pipeline, StatusPill, EmptyState, Toolbar, Tabs, Dialog, tint and screenshot hooks), app shell: sidebar status dots, frosted top bar, app page Hero with screenshots and the two-store pipeline, pill tabs with blocker counts
2026-10-22 23:12:03 +08:00
03ef999dac
Desktop: background store reads from the tray (no document.hidden skip, backoff), notifications by kind (rejected, approved, live, halted, crash, reviews) with switches, quiet hours and mute, click-through on next show; tray menu with apps and their states, read now, mute, updates, settings, tooltip summary and attention dot; tray_update command; tests
2026-10-22 22:24:05 +08:00
27db41c3f0
Desktop portfolio v2: greeting with what is moving, store-style app cards (rendered screenshots or the icon on its tint), two-store release pipeline, crash sparkline, one next-step button; What changed feed and Fix first queue; Cards / Table switch keeps the old table
2026-10-22 21:24:24 +08:00
2598c4953a
doctor: build dependencies (JDK with the version the project needs, Android SDK command-line tools, CocoaPods, Node, Bun, bundletool), too-old status, doctor --install <tool> --yes runs the package-manager command (never sudo); desktop Dependencies shows too old; gen-flags works on Windows paths
2026-10-22 02:21:26 +08:00
22286c7e02
desktop: Game services card in App info (Game Center and Play Games Services status, ids, counts vs config, pending changes, sync buttons through the confirm-token write, PGS setup plan, console links); en + tr strings; dev fixture
2026-10-21 05:29:02 +07:00
a95aa6dd49
desktop: More tools tab, one typed form per CLI command without a screen (schema from system.methods; reads run, writes dry run + native dialog + token) and the owner steps with their terminal command; en + tr
2026-10-21 05:14:16 +07:00
9db7180eb9
merge origin/main (cross-store text checker); macOS platform pitfall renumbered to 79
2026-10-20 03:06:16 +07:00
47dfd372fe
apple: macOS (tvOS, visionOS) versions are no longer invisible: every version and review submission lookup is per platform; status, listing, listing pull, resubmit, submit, release and screenshots take --platform and otherwise pick the platform that has the version they need (refuse naming both when several do); status, validate, release status, the report and the desktop label versions with their platform; MCP and owner actions get platform; pitfall 77
2026-10-20 03:00:05 +07:00
edabbec874
cross-store text: other platforms named in App Store text (2.3.10: Android, Google Play, ...) or Play text (Metadata: iOS, App Store, Game Center, ...) are refused by every text write (apple / play listing, play release / upload notes, listing set, whats-new, storebound edit, desktop editor), blockers in check / validate, scan other-platforms / play-other-platforms; listing.allowPlatformMentions for the owner's functional mentions; whats-new splits [apple] / [play] lines per store; storebound api --yes without a TTY is refused (exit 1, stderr) instead of a silent dry run; pitfalls 77, 78
2026-10-20 02:57:25 +07:00
af349b3db1
report: storebound report writes one shareable, self-contained readiness page (.storebound/reports/readiness-<date>.html; --md, --json, --no-open, --offline, --out) from scan, check and validate: a verdict per store (Ready to submit / N blockers / Not checked with the reason), findings per store by severity with guideline, evidence, fix and console button, the owner's compliance questions as a checklist, secrets masked; storebound.dev look, light / dark, print; desktop Checks > Report (same code path, opens through project_reveal) and its Markdown export on the same renderer; read-only MCP tool report
2026-10-18 01:42:03 +08:00
e500e88e40
Console pages as absolute deep links: cli/lib/console-links.ts builds the URL of every App Store Connect / Play Console page from apple.appId, play.developerId and play.appId (app list / developer chooser when unknown); every plain 'App Store Connect > ...' / 'Play Console > ...' direction in cli/ and templates/ now carries it, validate / scan / declarations / release plan JSON carry url, the desktop shows an Open button; tests/console-links.test.ts guards it; AGENTS rule 11, pitfall 71
2026-10-15 19:55:37 +08:00
5ed787a8ca
desktop AI fix: a claude CLI without a sign-in ("Not logged in · Please run /login", seen in a real headless run) shows 'not signed in' with the copy-for-AI fallback instead of a bare failure; the flags were checked against a real claude run (it edited the file)
2026-10-15 06:28:52 +08:00
c95f2af8ff
desktop: Fix with AI on scan findings that need a code change (aiFix: true, AI_FIX_RULES). The host (src-tauri/src/ai_fix.rs) runs the owner's local Claude Code headless in the app folder with Read / Edit / Write / Grep / Glob only (Bash, web tools, sub-agents disallowed) and a prompt it builds from the finding's fields; it refuses while the folder has uncommitted files, streams progress, times out after 10 min with a heartbeat, kills the process group on Cancel or exit, and records the run's changed files so Undo restores exactly those; the window shows the diff with Keep / Undo and rescans. Without claude the button copies the prompt (Copy for AI). Only the claude binary, git and kill / taskkill are started there (tests/security.rs); tests/ai_fix.rs covers the prompt, dirty-tree refusal, undo scope, timeout and cancel
2026-10-15 06:26:29 +08:00
992f5bcc0e
desktop: a Fix button on scan and validate findings storebound can fix itself. Findings carry action { method, args } (cli/lib/fix-actions.ts); privacy-labels runs scan.write (scan --write-only, the dialog shows the config diff), Play listing gaps play.listing, a missing App Store localization or copyright apple.listing (editable version only), the App Review contact apple.review_details; each a dry run, the native dialog, then the confirmed run. --write-only is forbidden for MCP tools; tests pin the mapping, the round trip on a fixture and that no fix reaches a submit, release or publish
2026-10-15 06:14:49 +08:00
bd83d036ba
desktop: long findings wrap inside the Store readiness card (a build-folder path pushed the store chips out); the release timeline's rail no longer breaks after the current step; the rollout bar stays under its stage. scan: function words of the listing languages (German eine / der, French les, Turkish bir, ...) are not repeated keywords; the dev fixture has a long-path finding
2026-10-15 06:07:01 +08:00