AgentSeal
43a938ff9e
feat(mac): add Connect Claude button to Plan pane
...
The Plan pane previously told users to "run claude login in your
terminal, then retry" with no way to start the flow from the app.
Added a primary Connect Claude button on both the no-credentials and
failed states that launches Terminal.app with `claude login`, so the
OAuth flow is one click away.
TerminalLauncher.openClaudeLogin() uses a hardcoded literal, so no
user input reaches AppleScript. Refactored the common path into
runInTerminal(command:preValidated:) which re-validates any non-
literal input against CodeburnCLI.isSafe as defense-in-depth.
On machines without Terminal.app (iTerm/Ghostty/Warp), the button
surfaces an inline instruction to run `claude login` manually instead
of failing silently.
2026-04-18 06:54:57 -07:00
Resham Joshi
495a254338
feat(mac): native Swift menubar app + one-command install
...
Introduces mac/ with a native SwiftUI menubar app that replaces the
previous SwiftBar plugin entirely. Install via `npx codeburn menubar`,
which downloads the .app from GitHub Releases, strips Gatekeeper
quarantine, and drops it into ~/Applications.
Highlights
- mac/ SwiftUI app: agent tabs, Today/7/30/Month/All period switcher,
Trend/Forecast/Pulse/Stats/Plan insights, activity + model
breakdowns, optimize findings, CSV/JSON export, Star-on-GitHub
banner, live 60s refresh, instant currency switching with offline FX
cache.
- Security: CodeburnCLI argv-based spawn (no shell interpretation),
SafeFile symlink guards + O_NOFOLLOW writes, FX rate clamping to
[0.0001, 1_000_000], keychain filtered to account == "default",
removed byte-window credential log, in-flight refresh guard, POSIX
flock on config.json writes, TerminalLauncher validates argv before
AppleScript interpolation.
- Performance: shared static NumberFormatter (thousands of allocations
per popover redraw eliminated), concurrent pipe drain with 20 MB cap
+ 60s timeout in DataClient, Observation-tracked reactive UI, 5-min
payload cache keyed on (period, provider).
- CLI: new `codeburn menubar` subcommand that downloads + installs +
launches the .app (no clone, no build). New `status --format
menubar-json` payload builder. `export` rewritten to produce a
folder of one-table-per-file CSVs with a `.codeburn-export` marker
so arbitrary -o paths cannot be silently deleted.
- Removed: src/menubar.ts (SwiftBar plugin generator),
install-menubar / uninstall-menubar subcommands, `status --format
menubar` directive output, tests/menubar.test.ts,
tests/security/menubar-injection.test.ts.
- Release: .github/workflows/release-menubar.yml builds universal
binary, assembles .app, ad-hoc signs, zips, uploads on mac-v* tag
push. Runs on the free macos-latest runner.
Tests
- 230 TypeScript tests pass
- 10 Swift CapacityEstimator tests pass
- TypeScript typecheck clean
- Swift release build clean
2026-04-17 16:55:56 -07:00