Skip to content

Ship sawyer-next: desktop UX + provider CLI health toasts + arm64 build + bundle slimdown#49

Merged
SawyerHood merged 7 commits into
mainfrom
sawyer/ship-2026-05-22
May 22, 2026
Merged

Ship sawyer-next: desktop UX + provider CLI health toasts + arm64 build + bundle slimdown#49
SawyerHood merged 7 commits into
mainfrom
sawyer/ship-2026-05-22

Conversation

@SawyerHood
Copy link
Copy Markdown
Collaborator

Summary

Ships accumulated sawyer-next work onto main. Seven squash commits:

  • fix(app): suppress update toast in desktop — the npx-rerun toast is silenced when running inside the desktop wrapper (the desktop already shows an auto-update toast for the same condition).
  • fix(desktop): exclude source maps from packaged app — strips .js.map files from the packaged .app (≈125 MiB savings on the universal build, ≈70 MiB on arm64).
  • desktop: build arm64-only mac artifacts — drops the universal mac build, ships arm64-only. CI runner pinned to macos-15. Combined with the source-map strip, the bundle goes from 805 MiB → ~336 MiB (-58%). Intentionally drops Intel Mac support.
  • app+host-daemon: add provider CLI health toasts — startup toast when codex or claude (Claude Code) is missing or outdated, with Install/Update buttons. Detection respects npm vs external install source; install/update commands stream NDJSON output to a dialog. Missing-CLI install uses npm install -g @openai/codex@latest for codex and curl -fsSL https://claude.ai/install.sh | bash for Claude Code. Outdated CLIs use <cli> update (self-update) for both.
  • fix(app): persist provider CLI toast dismissals — corrects an over-sticky dismissal bug: persistence now only happens on explicit cancel-button click, not on auto-close after successful install. Resolved issues actively dismiss stale toasts and clear localStorage. Storage prefix bumped to bb:provider-cli-toast:dismissed-v2: to abandon buggy entries.
  • desktop: add developer tools menu item — View → Toggle Developer Tools + Cmd+Option+I accelerator (previously unavailable in packaged builds).
  • fix(desktop): refresh packaged renderer cache — production server now sends Cache-Control: no-store for index.html/SPA fallback (and immutable for hashed /assets/*), and the packaged Electron shell calls session.clearCache() once on launch. Fixes the bug where bb-next loaded a stale renderer bundle from prior bb.app installs (same bundle ID, shared Electron HTTP cache).

Test plan

  • Run pnpm exec turbo run typecheck and pnpm exec turbo run test across all touched packages (server, app, host-daemon, host-daemon-contract, desktop). All passed locally on each constituent commit.
  • Build desktop locally: pnpm exec turbo run desktop:build --filter=@bb/desktop --force — produces bb-X.Y.Z-arm64.dmg, bb-X.Y.Z-arm64.zip, latest-mac.yml, no source maps in bb.app.
  • Smoke the packaged bundle: launch, observe provider-cli toasts react correctly to codex/claude install state, confirm View → Toggle Developer Tools works.
  • Confirm CI signed/notarized desktop build passes on the next post-merge release.

🤖 Generated with Claude Code

Skip the npx bb-app rerun update toast when the renderer is running inside bb desktop.
Add regression coverage so desktop update state does not trigger the server-update toast path.
Source: bb/don-t-show-npx-rerun-server-toast-inside-desktop-thr_k7ggqdj9v3 (thr_k7ggqdj9v3).
Exclude generated source maps from electron-builder packaged desktop files.
Add config and build tests so map files remain produced for local builds but omitted from app packaging.
Source: bb/electron-desktop-strip-production-source-maps-fr-thr_rxa6kx5ces (thr_rxa6kx5ces).
Switch desktop packaging and CI from universal macOS builds to Apple Silicon arm64 artifacts.
Pin the workflow to macos-15 with an arm64 runner check and rename uploaded artifacts accordingly.
Update electron-builder targets and desktop docs to reflect arm64-only macOS builds.
Source: bb/electron-desktop-arm64-only-build-drop-universal-thr_n4fiu5rihf (thr_n4fiu5rihf).
Detect missing or outdated Codex and Claude Code CLIs through the host-daemon local API.
Surface dismissible app toasts with install/update actions and progress dialog output.
Use provider CLI self-update commands and cover contract, local API, and UI behavior.
Source: bb/toast-for-codex-claude-code-missing-or-outdated-thr_xpi6p9ywmg (thr_xpi6p9ywmg).
Update provider CLI health toast dismissal keys so dismissed warnings remain hidden across refetches and reloads.
Dismiss stale warning toasts when the underlying provider CLI issue clears.
Add UI coverage for dismiss, reappearance, stale cleanup, and localStorage failure behavior.
Source: bb/provider-cli-toast-dismissal-v2.
Add a View menu toggle for Electron developer tools with the Cmd+Option+I accelerator.
Cover the desktop menu template so the toggle remains wired to the built-in toggleDevTools role.
Source: bb/desktop-enable-devtools-menu-item-cmd-option-i-s-thr_kzjvkt4mzx (thr_kzjvkt4mzx).
Clear the Electron default session HTTP cache on packaged desktop startup.
Serve index HTML with no-store while keeping hashed static assets immutable.
Add desktop session-cache and server static-header coverage.
Source: bb/fix-prod-server-no-cache-headers-desktop-session-thr_9fmhce2btp (thr_9fmhce2btp).
@SawyerHood SawyerHood merged commit 9f922dd into main May 22, 2026
6 checks passed
@SawyerHood SawyerHood deleted the sawyer/ship-2026-05-22 branch May 23, 2026 00:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant