Commit graph

34 commits

Author SHA1 Message Date
CRT
e77f2b68f5 storebound 0.8.29: version in package.json and every copy, CHANGELOG 0.8.29 section 2026-10-22 19:51:07 +07:00
CRT
294fa322e2 storebound 0.8.28: version in package.json and every copy, CHANGELOG 0.8.28 section 2026-10-22 15:03:45 +07:00
CRT
17535d4b7a storebound 0.8.27: version in package.json and every copy, CHANGELOG 0.8.27 section 2026-10-22 05:05:48 +07:00
CRT
25c2d5cd1e storebound 0.8.26: version in package.json and every copy, CHANGELOG 0.8.26 section 2026-10-22 01:33:30 +07:00
CRT
62eb010998 storebound 0.8.25: version in package.json and every copy, CHANGELOG 0.8.25 section 2026-10-22 00:59:03 +07:00
CRT
e03cbbe8aa storebound 0.8.24: version in package.json and every copy, CHANGELOG 0.8.24 section 2026-10-21 23:40:26 +07:00
CRT
164182012f storebound 0.8.23: version in package.json and every copy, CHANGELOG 0.8.23 section 2026-10-21 11:21:56 +07:00
CRT
0d1926f7d7 storebound 0.8.22: version in package.json and every copy, CHANGELOG 0.8.22 section 2026-10-21 05:42:04 +07:00
CRT
a6dab8f3aa storebound 0.8.21: version in package.json and every copy, CHANGELOG 0.8.21 section 2026-10-21 04:03:24 +07:00
CRT
2d7cf6ec2b storebound 0.8.20: version in package.json and every copy, CHANGELOG 0.8.20 section 2026-10-21 03:16:27 +07:00
CRT
2ba8278ab7 storebound 0.8.19: version in package.json and every copy, CHANGELOG 0.8.19 section 2026-10-20 13:44:41 +07:00
CRT
ac84ad4bbf storebound 0.8.18: version in package.json and every copy, CHANGELOG 0.8.18 section 2026-10-20 13:11:36 +07:00
CRT
2fdd96e68c storebound 0.8.17: version in package.json and every copy, CHANGELOG 0.8.17 section 2026-10-20 12:44:41 +07:00
CRT
3949ff1531 storebound 0.8.16: version in package.json and every copy, CHANGELOG 0.8.16 section 2026-10-20 12:16:54 +07:00
CRT
9805582278 storebound 0.8.15: version in package.json and every copy, CHANGELOG 0.8.15 section 2026-10-20 03:31:36 +07:00
CRT
7b4b716fc6 storebound 0.8.14: version in package.json and every copy, CHANGELOG 0.8.14 section 2026-10-20 03:09:33 +07:00
CRT
d006f8d932 storebound 0.8.13: version in package.json and every copy, CHANGELOG 0.8.13 section 2026-10-18 13:13:16 +07:00
CRT
9909b3df73 storebound 0.8.12: version in package.json and every copy, CHANGELOG 0.8.12 section 2026-10-18 01:43:07 +08:00
CRT
37cda2a39a storebound 0.8.11: version in package.json and every copy, CHANGELOG 0.8.11 section 2026-10-17 14:29:27 +08:00
CRT
b84538e4cb storebound 0.8.10: version in package.json and every copy, CHANGELOG 0.8.10 section 2026-10-16 06:35:47 +08:00
CRT
dcb553fd16 storebound 0.8.9: version in package.json and every copy, CHANGELOG 0.8.9 section 2026-10-16 05:51:05 +08:00
CRT
dcca4e86e4 storebound 0.8.8: version in package.json and every copy, CHANGELOG 0.8.8 section 2026-10-16 00:09:06 +08:00
CRT
bc85dabf90 storebound 0.8.7: version in package.json and every copy, CHANGELOG 0.8.7 section 2026-10-15 19:38:32 +08:00
CRT
dc387f6ffb storebound 0.8.6: version in package.json and every copy, CHANGELOG 0.8.6 section 2026-10-15 06:33:52 +08:00
CRT
a64a7f198d storebound 0.8.5: version in package.json and every copy, CHANGELOG 0.8.5 section 2026-10-15 02:24:45 +08:00
CRT
af858a3f36 storebound 0.8.4: version in package.json and every copy, CHANGELOG 0.8.4 section 2026-10-14 23:40:40 +08:00
CRT
c3fed8efa2 storebound 0.8.3: version in package.json and every copy, CHANGELOG 0.8.3 section (docs: no private account names in the published package) 2026-10-14 07:54:56 +08:00
CRT
2e32377a0d storebound 0.8.2: version in package.json and every copy, CHANGELOG 0.8.2 section with the release summary; site teaser cache key v=7 2026-10-14 06:32:32 +08:00
CRT
6b91cc58a9 storebound 0.8.1: version in package.json and every copy, CHANGELOG 0.8.1 section with the release summary 2026-10-13 09:59:18 +08:00
CRT
8fd4ac741e storebound 0.8.0: one version for the CLI and the desktop app (package.json, plugin manifests, the app's copies), CHANGELOG 0.8.0 section with the release summary, teaser v8 on the site and README poster (img/teaser.mp4, teaser-poster.webp, cache key v=4) 2026-10-13 08:17:16 +08:00
CRT
d2ce185441 One product per machine: the CLI and the desktop app share one version, the store accounts and the app folder list
- one version: package.json's version is the desktop app's too (desktopVersion removed); tools/desktop-version.ts
  keeps the plugin manifests and the app's copies equal, desktop-release publish refuses another version, release
  order app first then npm publish; the unpublished desktop 0.1.0 candidate is noted in the docs and CHANGELOG
- storebound desktop installs (per user, no admin: macOS DMG -> /Applications or ~/Applications, Windows NSIS /S,
  Linux AppImage + .desktop with the storebound:// handler), updates an older app, notes a newer one (downgrade only
  with --force), asks once ([Y/n], --yes, exit 3 without a terminal), opens on the folder; --dry / --json / --download;
  the install steps are pure plans (cli/lib/desktop-install.ts); the version's own manifest dl/<version>/latest.json
- credentials: one store, the CLI's credential profiles in ~/.storebound/credentials; the desktop writes and reads
  them (profiles.rs, files 0600), moves old keychain accounts into profiles on first start, shows profiles the CLI
  made; precedence env > named profile > project file > default profile; config `account`, "account" in the
  project's credentials.json; storebound accounts list | import (dedup by key id / service account e-mail, key files
  copied 0600, project file keeps keystore and review contact, backup, --dry, never prints values) | use
- app folders: one list ~/.storebound/projects.json shared by the desktop (registry.rs), storebound desktop,
  apps folders | add | remove, ws init and ws without a workspace file
- desktop: notice when a folder pins another storebound version; storebound-desktop --version
- tests: version drift, desktop decisions and per-OS plans, credential precedence and import, registry (TS + Rust),
  keychain migration and profile round trip (Rust), boot check with old keychain state and the new shared state
2026-10-13 06:17:37 +08:00
CRT
ae2ffd8dbf Phosphor icons and the real store marks
Desktop icons move from lucide to Phosphor (@phosphor-icons/react, per-icon imports, regular weight; fill for the
active nav item, notices and rating stars). The site's icons and the fixture art use Phosphor's own files from
@phosphor-icons/core. App Store and Google Play are shown with their marks from simple-icons (CC0 data), vendored
unchanged by tools/site-icons.ts and rendered as a mask in the neutral text colour next to the store's name; the
trademark note is in docs/desktop.md and the site footer. lucide-react and lucide-static removed. The
no-hand-written-SVG guard allows only the vendored files (byte-equal to their packages) and per-icon Phosphor
imports. Site stylesheet ?v= bumped.
2026-10-11 09:00:46 +08:00
CRT
035efa9fa1 No hand-written SVG: visx charts, lucide icons, Mermaid journey diagram
- desktop: Growth chart, Health and portfolio sparklines and the rollout bar drawn with visx (responsive width,
  crosshair tooltip with real values, arrow keys, theme tokens, no animation); icons from lucide-react behind the
  existing Icon names; empty states are lucide icons on token tiles; store marks are generic lucide icons; stars are
  lucide; the brand mark moves to ui/brand.tsx as the one allowed inline SVG
- fixtures: app icons and store art stand-ins are PNGs rendered by tools/fixture-art.ts (lucide on gradients)
- site: icons are lucide's own files in site/img/icons (tools/site-icons.ts, with the ISC licence) shown as CSS masks;
  the journey diagram is rendered from docs/diagrams/journey.mmd by tools/diagrams.ts (Mermaid CLI), with a tall
  variant for phones
- tests/no-handmade-svg.test.ts fails on new inline SVG drawing in apps/desktop/src and site/*.html
- desktop bundle: 598.7 -> 695.5 kB minified, 174.6 -> 206.0 kB gzip
2026-10-11 08:49:30 +08:00
CRT
61a1e832a0 Desktop app shell (apps/desktop): Tauri 2 + React 19 around the storebound sidecar
- Rust host: spawns storebound serve --stdio with fixed args, hands over a per-session secret,
  mints confirm tokens only after a native dialog showing the summary and the dry run
- every app command re-checks window label and page origin; one capability (main window, app
  commands + event listen only, no plugin API in the webview); strict CSP; tests/security.rs pins it
- store keys picked in native dialogs, kept in the OS keychain, passed per call in memory only
- plugins: shell (Rust only), single-instance, deep-link storebound://, window-state, opener,
  dialog, notification, updater (placeholder endpoint and key until signing), process
- app-centric UI: Portfolio, App (Releases, Catalog, Listings, Health, Reviews, TestFlight),
  App folders, Accounts, Dependencies, Settings; light / dark with the storebound.dev tokens,
  reduced motion, home folder shown as ~
- macOS menu: Cmd+Q quits, Edit menu, Window menu keeps the main window; Linux DMABUF fix
- Bun workspace (npm files unchanged), ci runs desktop typecheck, build, cargo test and clippy;
  scrub covers home paths; docs/desktop.md (protocol, safety, dependency sources and licenses)
2026-10-11 01:57:33 +08:00