Changelog
All notable changes to this project are documented here. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
0.1.43 - 2026-07-22
Added
- New sessions can now append custom CLI args (e.g.
--dangerously-skip-permissions,--settings <path>) when spawning Claude Code or Codex, plus named per-agent presets to reuse them; a denylist blocks flags the app itself manages, enforced independently in both the renderer and main. Custom args persist per session and are re-applied on resume and inherited on fork.
Changed
- The Session panel's Model and Git rows now wrap long values instead of truncating them to an ellipsis, and the Git row gained a copy button for the branch/sha.
- Sidebar session status marks are now unified on a single 4-slot bar shape across every state (working, waiting, idle, ended), varying only in color, motion, and height — replacing the previous mix of sweeping bars and mono characters.
Fixed
- The transcript feed no longer jumps to the bottom on every new event; it follows new events only while the reader is still parked at the bottom, and lands there once on open (selecting a session, flipping Claude Code ⇄ Transcript, drilling a subagent).
- Resize sashes on every pane seam now match hermes' behavior: sashes are no longer clipped to a ~2px strip by their pane's overflow, drag writes are coalesced to one per frame, double-click resets a pane to its default size, and seams no longer double-draw at sidebar and terminal edges. The footer terminal's top edge is also no longer painted over by the rail in row mode.
0.1.42 - 2026-07-20
Fixed
- Links now always open in the OS default browser instead of a bare
Electron window: main installs a
setWindowOpenHandler+will-navigateguard covering any link (not just the two CLI docs links, which also switched to the app'sopenExternalpattern), and real OSC 8 terminal hyperlinks (e.g. a PR link a CLI prints) now route through the same path instead of silently doing nothing. Settings → System's Claude Code and Codex CLI cards no longer print install/upgrade/login commands in the fault band, just the status detail and a docs link, so instructions come from the docs site instead of a possibly stale in-app copy. - The sidebar's Hidden projects section now always renders (with a "No hidden projects." empty state) instead of disappearing when empty, and its row indentation now matches the Sessions section.
0.1.41 - 2026-07-20
Added
- Sessions sidebar now organizes projects into durable pinned, ordinary, and hidden groups, with a persistent Sessions-only filter menu for activity, agent icons, and agent selection. Project rows gained a separate Quick Add action and a portaled menu for placement and path copying; pinned sessions stay independent of project filters and placement.
- Stats' agent/year picker and New Session's agent/model picker now use a
new reusable, accessible custom select component instead of native
<select>elements, showing agent icons and preserving disabled capability states.
Changed
- The inline New Session route no longer has modal-style Cancel/Escape behavior now that it isn't presented as a modal. Read-only detail modals (diff, tool result, shell detail, monitor detail) gained visible, translated Close controls while keeping Escape and backdrop dismissal, stay confined within the app window with overflow scoped to responsive command/output scroll regions, and got refined command presentation, selection behavior, copy placement, and spacing.
Fixed
- The Sessions filter menu now stays within the viewport and scrolls in short windows; the Hidden project count is derived from the groups actually being displayed; and Sessions' expand/collapse-all now applies to pinned, ordinary, and hidden projects alike (previously only ordinary).
- A newly created Codex session that hadn't completed a turn yet stayed stuck showing "working" instead of idling, and ending it before any prompt left a ghost row until the app relaunched — both traced to Codex writing nothing to disk until the first turn completes. It now surfaces as an idle candidate immediately, the same way Claude Code's registry-only sessions do.
0.1.40 - 2026-07-20
Changed
- Claude and Codex icons now render in their official brand colors everywhere (sidebar rows, pinned rows, agent picker, empty states, header toggle, Settings headings) instead of a theme-tinted mono glyph. Codex uses its official gradient on the same monochrome silhouette used elsewhere in the app, with no separate badge/backdrop shape.
- Settings → System replaces the single-agent dropdown with both agents'
sections always stacked and visible; the Stats database card is now
gated on a new
hasStatsDbcapability flag (Claude only, since Codex has no stats database yet). - The Pressure hero's context gauge now redlines in the app's danger red past the 85% threshold instead of just brightening to a second amber shade, and its zone-shading opacity is bumped from 12% to 32% for better legibility.
- README,
package.json, the website, and the in-app Settings → About tagline no longer describe the app as Claude-Code-only now that Codex CLI support has shipped; the About tagline itself is shortened to "Pilot coding agents from one cockpit." SECURITY.md's outbound-network claim now covers both Claude's and Codex's usage/rate-limit APIs. - The Chinese translation now uses 智能代理 for "Agent" (README and in-app, keeping 子代理 for "Subagent") and 词元 for "token" in the README, closing the last raw-English terms in the localization.
Fixed
- Pinned Codex rows no longer show a fabricated model badge ("opus"); the badge now shows the real model family when trustworthy, or falls back to the plain agent id otherwise — the same latent issue is fixed for adopted/observed Claude sessions too.
0.1.39 - 2026-07-19
Added
- Codex CLI is now a supported second agent throughout the app: pick Claude Code or Codex CLI when starting a new session (from the new-session form or a folder's quick-add), see which agent each session row belongs to via a persistent mark, and check Codex CLI's health from Settings → System alongside Claude's. Surfaces that don't apply to Codex (Duty stats, the model picker, resume/fork where unsupported) capability-gate cleanly instead of assuming Claude.
- Codex CLI session transcripts render in the Transcript pane, parsed from the session's rollout log — messages, reasoning, and tool calls with the same drill-in detail as Claude Code sessions (diff rendering for file edits is a planned follow-up).
- Codex sessions get right-sidebar telemetry: rate-limit pressure (via
ChatGPT's usage API, falling back to the local
codex app-serverwhen that's unavailable), token spend, context-window fill computed the same way Codex's own/statusreports it, and live throughput. - Resume now works for Codex CLI sessions, from the session menu, sidebar, and the observed-session hero. Fork remains unsupported for Codex and shows disabled rather than being hidden.
Changed
- The Stats view gains an agent dropdown; Codex shows a "coming soon" placeholder pane there for now.
- The right sidebar's panels are now composed per agent instead of one shared set with internal branching — Codex shows Pressure, Spend, Throughput, and Session (no Duty panel), and its Spend panel lists Input/Output/Cache read only, since Codex doesn't yet report cache-write tokens.
0.1.38 - 2026-07-18
Added
- Right-click a session row (or a pinned row) to open its action menu anchored at the cursor, as a second way to open it alongside the trigger button.
- The managed Claude Code terminal sends Option as Meta on macOS, so Claude
Code's built-in ⌥-bindings (⌥P model picker, ⌥O fast mode, ⌥M permission
modes, ⌥T thinking, ⌥Enter newline) work without running the unsupported
/terminal-setup. As a tradeoff, Option-typed characters (e.g.π, dead-key accents) no longer type in this terminal. - The Activity dock's Tasks/Subagents/Shells/Monitors tabs scroll once to the first live row when opened, instead of the top of a long list of ended sessions.
Changed
- The session action menu's labels are shortened in English and Chinese (Pin/Unpin/Copy ID/End), the Finder/File Explorer/File Manager row drops its redundant "Open in " prefix, and the menu narrows from 256px to 176px.
- The Transcript view's column widens to
max-w-5xl, giving long messages and code more room while inner content caps stay unchanged. - The "Adopt" action is renamed to "Resume" throughout the app — UI copy in English and Chinese, internal identifiers, the terminal IPC channel, tests, README, and website — while the underlying always-available "resume" machinery keeps its existing names.
Fixed
- The session menu's End/Adopt/Fork actions now close the dropdown once they actually complete, matching Pin/Copy ID/Rename/Open-in's existing behavior.
- Fork was incorrectly disabled in the session menu for ended/observed sessions that showed Fork enabled elsewhere (the "Claude Code" tab's Ended hero); both surfaces now share one gate.
0.1.37 - 2026-07-17
Added
- Worktree sessions get their own sidebar icon, distinct from a plain git branch; pinned rows show the real branch as a tooltip when it diverges from the worktree's directory name.
Changed
- Sidebar session status glyphs are redesigned as terminal characters (a
-\|/spinner,?,○,–) instead of SVG shapes, with a single shared timer driving every spinning row. The Activity dock's Tasks/Subagents/ Shells/Monitors tabs now read from the same canonical status-glyph table, so active/done states render consistently across all four.
Fixed
- The sidebar's 3-dot hover button no longer overlaps row content (worktree name, or pinned time/model chip) — content vacates instead of relying on a fade mask, which also fixed a corner-seam rendering artifact.
0.1.36 - 2026-07-17
Added
- Transcript messages typeset LaTeX math with KaTeX: inline
\(…\)/$…$and display\[…\]/$$…$$, plus```mathfences (latex/texfences stay syntax-highlighted code). A standalone single-line$$…$$promotes to true display math, currency like$5is guarded from misparsing as math, and malformed LaTeX degrades to muted source text instead of crashing. - The left sidebar gains a PINNED section, above Sessions: pin any session
from its context menu (Pin/Unpin is now the first item in all three menu
triggers) for an enriched two-line row — title + relative time, repo/branch
- model chip — sorted newest-pin-first. The session stays in its normal
folder too; pins persist durably in a
session-pins.jsonstore, so they survive a cache rebuild. The active-only sidebar filter now narrows sessions inside each project folder instead of hiding the whole folder, with an empty-state line shown only on manual expand.
- model chip — sorted newest-pin-first. The session stays in its normal
folder too; pins persist durably in a
Changed
- The dither glyph before "Activity" in the bottom dock and "Sessions" in the left sidebar switches from a checkerboard texture to evenly-spaced vertical stripes, echoing the app logo.
Fixed
- The Dock icon regressed to a hard-cornered square on macOS 15 and earlier after the app icon was made full-bleed to suit Tahoe's auto-squircle masking. The app now detects pre-Tahoe macOS at launch and swaps in the traditional padded/rounded Dock icon; Tahoe and later are unaffected.
0.1.35 - 2026-07-17
Added
- Settings → Appearance gains a language picker for Simplified Chinese, alongside a full app-wide translation: sidebars, footer, Activity dock, Stats views, Settings cards and CLI remedies, both terminals (chrome, exit/spawn-failure banners), workspace/transcript/modal surfaces, and the Session panel's PR status word. Chinese-locale number formatting uses native 万/亿 units instead of k/M, and dock/hero layouts were adjusted so the longer Chinese strings don't wrap or overflow. English stays the default; no existing install's language changes until a user opts in.
0.1.34 - 2026-07-16
Changed
- UI chrome — the left sidebar, right-sidebar telemetry, footer, Activity dock, terminal rail, and the Stats/Settings/New Session views — is no longer text-selectable, matching native apps (hermes-agent parity). Real content stays selectable: transcript bubbles, markdown/code blocks, detail-modal content, and every input.
0.1.33 - 2026-07-16
Fixed
- Copy and paste were broken in both terminals on Windows and Linux — xterm.js claimed Ctrl+C/Ctrl+V as raw control bytes with no keybinding to override them, so only macOS worked (by relying on the native app menu consuming Cmd+C/V). Both terminals now adopt VS Code's platform clipboard keybindings: Ctrl+Shift+C/V, Shift+Insert paste, right-click copy/paste, and a Ctrl+V image-paste fallback for the Claude CLI's clipboard-image support; macOS is unchanged.
0.1.32 - 2026-07-15
Added
- The footer shell-terminal gains macOS readline word-navigation (cmd/option+Left/Right, cmd+Backspace), matching the Claude Code terminal's existing key bindings.
Changed
- The global text-selection highlight color switches from a hardcoded yellow to the app's own teal accent.
- Both terminals' construction, resizing, and theming logic is now ported
from VS Code's
XtermTerminalimplementation and shared between the Claude Code terminal and the shell-rail terminal, replacing the@xterm/addon-fitdependency.
Fixed
- The Claude Code (Managed) terminal only overrode 3 of 16 ANSI colors, leaving text badly washed out against a light terminal theme; it now uses the full VS Code-default ANSI palette in both themes, matching the shell-rail terminal.
- Both terminals reserved extra blank space along their right edge for an invisible native scrollbar kept alive only to drive the custom overlay-scrollbar thumb, making the right-side gap read 2-3× wider than the left; both terminals also widen their right inset to 16px to visually balance the fix.
- Resizing the window immediately after a
/clear-triggered session rename no longer leaves the pty terminal at its pre-rename size.
0.1.31 - 2026-07-15
Added
- Settings → Appearance gains independent Dark/Light toggles for App theme (chrome, sidebars, settings, markdown code blocks) and Terminal theme (both xterm.js instances — the footer shell-terminal and the observed Claude-session terminal), backed by a full light theme port of hermes-agent's monochrome "Mono" skin. Dark stays the default for both settings; no existing install's appearance changes until a user opts in.
- Sidebar session rows gain a hover 3-dot menu (Copy ID, Rename, Adopt, Fork, End, Open in) matching the header's existing session menu, including in-place rename.
Changed
- Managed sessions now spawn
claudethrough the user's own login shell on macOS/Linux instead of a direct child process with app-pinned environment variables, soPATH/CLAUDE_CONFIG_DIR/everything else resolve exactly like a plain terminal. The persisted binary-override setting, its IPC channel, and the Settings CLI card's override UI are removed; Windows spawning is unchanged. - Icon consistency pass: resolved 3 icon-reuse collisions (subagent badge, VS Code menu item, sidebar active-filter), the dead GitHub icon mapping in Settings → About is now a real clickable mark with a tagline matching the README, the "New session" icon is retoned, and 2 unused icon names are dropped.
- The Throughput panel drops the redundant "total throughput" label, and the stats-db Reset button loses its trailing ellipsis.
Fixed
- Background subagents stopped by the user, or left running from a previous
CLI process, no longer stick at "working" forever in the Activity dock —
a
stoppednotification status is now recognized as terminal and distinguished from failed, rendered as the same calm grey square used for killed/stopped monitors. - A subagent's status could flap back to a stale stopped/done/failed reading if the user resumed it faster than the CLI delivered that agent's own queued notification: the notification's later delivery-time timestamp is now deduped against its earlier, correctly-timed enqueue twin.
- A background subagent whose completion was caught entirely by a live
TaskOutputpoll (bypassing the notification queue) showed "running" forever in the Activity dock; poll results now fold into subagent status the same way notifications do, and a subagent interrupted in the foreground (Ctrl+C/Esc) now settles correctly too. - Clicking "Claude Code" while drilled into a subagent no longer strands you in a stale drill when switching back to the Transcript view, and the transcript header's shadow no longer dims the subagent-drill breadcrumb.
- Windows now classifies a missing
claudebinary (cmd.exeexit code 9009) as "not found," the same as POSIX exit 127, instead of misreporting it as unknown.
0.1.30 - 2026-07-12
Fixed
- Quick-add per-folder session launches omit the
--modelflag when the selection is the default model, letting the CLI use its own configured default instead of passing--model default.
0.1.29 - 2026-07-12
Added
- The Activity dock gains a fourth Monitors tab that mirrors Shells:
harness
Monitorruns reconstructed from the transcript with a status pill, live output tail, and a details modal. - Dropping a file onto the Claude Code (Managed) terminal inserts its shell-quoted path at the cursor.
0.1.28 - 2026-07-11
Added
- A compaction counter row appears in the session panel, derived from transcript boundaries.
- The Pressure panel's rate-limit windows gain an "Extra" row for paid usage-based credit, alongside the existing windows.
Changed
- Background shell details now open in a centered "Shell details" modal instead of drilling into the center view; the drill-stack is subagent-only, and opening a shell from the Activity dock no longer force-switches the view.
- Scrollbars are visually consistent everywhere: both sidebars and the
tool-result/diff/shell-log modals now use the overlay-thumb style already
used elsewhere, and
OverlayScrollgains horizontal-axis support for the modals that scroll both ways. - Session metadata adopted several accuracy improvements from ccstatusline
parity work: context-window size now parses
[1m]model variants correctly (1M instead of a flat 200k), effort level falls back through a transcript scan andsettings.jsonwhen the capture doesn't have it, Ended and renamed sessions keep a session clock and their custom title, the PR row renders review state from a richer, 30s-cached query even without a live capture, and git branch detection now readssymbolic-ref --short HEAD.
Fixed
- The right sidebar's rate-limit windows — including the 7-day percentage that could latch onto a stale weekly high (e.g. showing 38% when the true value was 22%) — are now computed per-session from Claude Code's own usage API instead of aggregated across sessions.
- The main terminal's doubled scrollbar — a Chromium 121 regression where
setting
scrollbar-colorsilently disabled every::-webkit-scrollbar-*rule — is fixed, and the footer shell-terminal now shows a scrollbar at all. - The Activity dock's Subagents tab no longer marks a background-launched agent done immediately after dispatch, and a completed agent resumed via SendMessage correctly flips back to working instead of staying stuck on done.
- Subagent discovery no longer miscounts in transcript layouts where multiple sessions share a subagent directory, and token-speed totals no longer include API-error rows or main-transcript sidechains.
0.1.27 - 2026-07-10
Changed
- Removed the Stats page's Include cache toggle — token counts across Overview, Models, Projects, and Sessions now always include cache read and cache creation tokens (previously the toggle's default-on state; switching it off to see fresh-tokens-only is no longer possible).
0.1.26 - 2026-07-10
Added
- A background analytics scan pump ingests new Claude Code sessions continuously for the app's lifetime, so stats stay accurate even if Claude Code's automatic session cleanup deletes old transcripts before the Stats view is opened.
- A Stats database card in Settings shows the analytics database's location, size, and session history, and now hosts the Reset action (moved out of the Stats header); resetting wakes the background pump so it immediately resumes scanning.
0.1.25 - 2026-07-09
Added
- An amber dot badges the sidebar Settings gear and the Settings page's About row while a software update is pending (available, downloading, or downloaded), clearing once it installs.
Fixed
- The Subagents tab's token count now matches the CLI's own count — the last assistant message's usage across all four fields (input, output, cache read, cache creation) — instead of undercounting by summing uncached input/output alone. Its tool-count column also switches to the CLI's "N tool uses" wording, and the collapsed Activity tally drops the redundant done-count ("0/0 tasks" → just the count).
- The right sidebar's 5h rate-limit percentage no longer flaps (e.g. 45% ↔ 55%) between polls when multiple sessions run in parallel — each window now derives independently across every fresh capture, taking the highest used% within the latest reset generation instead of trusting whichever session's capture file has the newest mtime.
0.1.24 - 2026-07-09
Added
- A Caffeinate keep-awake toggle in the footer, immediately left of the
Terminal button. While on, the computer won't idle-sleep (long-running
Claude Code sessions, terminals, and downloads keep going) via Electron's
cross-platform
powerSaveBlocker; the display is still free to sleep. The button shows hermes' working-session arc-border effect while active (prefers-reduced-motionstops the motion), and state doesn't persist across launches.
0.1.23 - 2026-07-09
Added
- A per-folder quick-add button in the sidebar creates a new session directly inside that project folder.
Changed
- Git-worktree sessions now merge into their parent repository's sidebar folder instead of appearing as a separate, unrelated entry.
- The Activity dock's typography is harmonized across the Tasks, Shells, and Subagents tabs (metric rack sizing, label coloring, row grammar), and the Session panel's Git readout drops ahead/behind counts and reduces the PR row to just the number link.
Fixed
- Usage accounting now dedupes each turn's usage snapshots last-entry-wins, correcting subagent token totals in the sidebar and Stats page, token-speed calculations, and a rounding boundary where 999,950+ tokens misread as "1000.0k". The analytics database schema bumps to v5 to force a one-time rescan of existing sessions under the corrected math.
- The sidebar's session list window now stays in sync with the configured cleanup period instead of drifting from it.
- The README's Buy Me a Coffee button now uses proper markdown link syntax.
0.1.22 - 2026-07-06
Changed
- The right sidebar's Pressure panel gets an inline "context window" suffix on its hero %, matching the hero-suffix idiom Spend and Throughput already use. Spend's decorative token-kind swatches are dropped, and Throughput's Input/Output split into two stacked rows matching Spend's row style.
Fixed
- The right sidebar's telemetry panels (Pressure, Spend, Throughput, Duty) each
used a slightly different size/color combo for their secondary values —
standardized on
text-xs+text-(--ui-text-tertiary), with tabular-nums on the numeric ones so digit widths stay stable as values update. - The Settings software-update toggle knob stayed white regardless of state, reading as no visual change on the light "on" track — it now darkens when auto-check is on.
0.1.21 - 2026-07-06
Added
- A shell terminal pane, toggled from the footer or `Ctrl+``: a tabbed rail of background shells (new / switch / middle-click close), scrollback that survives an app restart, drag-and-drop file paths, and clickable links. It runs on its own IPC channel namespace, structurally isolated from managed Claude sessions so a shell can never surface in session discovery.
Changed
- Renamed the Structure dock to Activity and rebuilt its chrome: retoned onto
the app's
--ui-*design tokens, anACTIVITYoverline label, underline-style tabs, the collapse chevron pinned to the right in both the expanded and collapsed states, and a drag-to-resize top edge (persisted, 140px–60vh).
Fixed
- The left sidebar toggle no longer sits ~2px lower than the right panel toggle — a stray downward nudge from the hermes ghost-button restyle had only ever landed on the left cluster.
0.1.20 - 2026-07-05
Added
- A Statusline card in Settings → System, showing capture health as a
cockpit-style annunciator (
CAPTURING/STALE/FAULT/OFF), last-capture freshness, session coverage ("N of M live reporting"), an inline refresh-interval editor, a durable enable/disable toggle, and one-click Repair.
Changed
- Sidebar session list redesigned: a status lamp (filled = live, hollow = quiet) replaces the state dot, folder rows gain folder icons with the chevron moved to the row's right edge, and the header gains collapse/expand-all and an active-only toggle (persisted) that hides ended sessions and now-empty folders.
- The Claude Code CLI card in Settings is redesigned into the same subsystem grammar as the new Statusline card — state said once via a lamp and mono state word, remedies confined to a fault band, and the binary-path override folded into an inline edit.
- Corner radii tightened app-wide: the whole radius ladder now derives from a
single scalar (
0.6→0.3, hermes parity), sorounded-mdgoes 6px → 3px and the rest scale proportionally. Pills, avatars, status dots, and the scrollbar thumb stay fully circular.
Fixed
- A statusLine entry stripped by an external tool (e.g.
ccstatusline's uninstall) now self-heals from the last known state instead of silently losing the user's wrapped prompt command and its live Duty/effort/clock telemetry. - Upstream statusLine extras like
refreshIntervalnow carry through the wrap, so an idle session's capture — and the Duty/clock panels reading it — no longer freezes. - Two differently-located projects that share a folder name no longer merge into one sidebar group; grouping now keys on the full working directory (persisted in the index, schema v8), with a dimmed parent-path hint and full-path tooltip when a name collides.
- macOS traffic-light corner spacing equalized on both axes (
x: 24→10); the left pane-toggle cluster and header inset shift to match. - Sidebar and right-rail panel-label icons now match their title's color instead of a dimmer accent gray.
0.1.19 - 2026-07-03
Added
- Six activity metrics on the Stats page — active days, most active day, longest session, and longest and current streak — computed store-side over the existing turn history with no schema change or new IPC. Streaks are all-time; the other metrics respect the page range, and unknown-time turns never bucket onto a calendar day.
- A Default option in the New session model picker, pre-selected, that spawns
claude --model defaultso a session inherits your configured default model. It rides a spawn-time-onlyModelSelectiontype, so a running session's model still re-derives from its transcript as before.
Changed
- Redesigned the whole interface around a three-full-height-column layout: a collapsible left column (menu, search, project-grouped sessions), a middle column with an in-column session header over the transcript/terminal and the bottom dock, and a right column of session telemetry, above a full-width status-bar footer. Columns resize by drag with per-pane widths persisted, hover-reveal when collapsed, and auto-collapse on a narrow window. Replaces the old global header plus two-pane shell.
- Re-skinned to a neutral grayscale "Mono" palette with teal as the single live/active accent — amber stays scoped to Waiting, red and green stay functional — matching the hermes desktop app's Mono theme down to the 34px titlebar, project-grouped 26px session rows, dither-dot section headers, and thin scrollbars. Typography moves to the OS system sans for UI and a JetBrains-first mono stack over a principled nine-tier type scale; the bundled Inter and Cascadia Mono faces are dropped, and focus rings are retired app-wide as a hermes-parity tradeoff.
- Reworked the right sidebar into a live cockpit: Pressure (context fill plus
account rate-limit windows, each with a bar, percent, and countdown), Spend
(total tokens as the hero with Claude Code's own dollar figure and a
five-segment kind bar), Throughput (the token-speed panel, now always
rendered), Duty (new — API-in-flight time over session wall clock), and
Session (model, effort, a Git readout with PR review state, lines ±, and a
clock). Every field always renders, showing
-when data is absent. - Redesigned the Stats page into a single scroll of four cards — Overview (an 8-tile KPI grid over the contributions heatmap), Models (a model-stacked "Tokens per day" chart with the per-model breakdown merged in as its color key), and full-width Projects and Sessions breakdowns that reveal rows in batches. Page-global controls (Include cache, range presets, reset) scope every card, and clicking a heatmap day drills the whole page to that date.
- Redesigned the app logo as a "materializing cursor" mark — three fading
rectangles resolving into a solid block cursor, the
░▒▓█shade ramp, on a near-black tile — replacing the teal>_prompt glyph across the app icon, the in-app and About wordmarks, and the README. - Slimmed the bottom dock to Tasks, Subagents, and Shells, flattening the Subagents tab from a grouped Gantt timeline to a plain status list, and listing Model and Effort on separate rows in the Session panel.
- Simplified Settings to two sections, System and About, and aligned the left sidebar's Sessions header, project folder, and rows on one shared glyph rail, with new messages-square (Sessions) and scroll-text (Transcript) icons.
Removed
- All cost, pricing, and "equivalent API value" features — the pricing editor and
its per-kind and per-model rate overrides, the cost headline and rate columns in
the Tokens panel, and the cost KPI and columns across the Stats tables. Every
token-tracking feature is preserved, and Claude Code's own
total_cost_usdstill surfaces as a small dollar figure in the cockpit. No database migration — cost was always derived at read time, never stored. - The left-sidebar account rail and the API-billing provider detection. A live Claude subscription still surfaces its 5h/7d rate-limit windows in the cockpit's Pressure panel; anything that isn't a live subscription reads as "API Usage Billing".
- The Turns tab from the dock, which now rests on Tasks when no fan-out is running.
0.1.18 - 2026-06-26
Added
- Tokens panel shows a per-model breakdown assembled from both the main session transcript and any subagent transcripts, with in-rail attribution popovers. The breakdown re-summarizes automatically as subagent files grow.
- Five token kinds (input, output, cache-read, cache-write-1h, cache-write-5m) in the Overview KPI strip and daily chart, with the 5m/1h cache-write split threaded through parsers and both stores.
- Pricing editor in Settings. Per-kind and per-model rate overrides are persisted and wired through IPC and analytics, with live reflection in the Tokens panel headline and all totals.
Fixed
- Custom pricing now reflects in the Tokens panel headline, not just the per-kind rows.
- Pricing editor guards against zero rates, rejects invalid inputs, and clears cached sums on a version wipe.
- Session token rows are flattened, pricing columns relabeled, and Overview popovers no longer clip.
0.1.17 - 2026-06-25
Added
- In-app software updates. The app checks for a new version on launch and lets you trigger a check manually from Settings → About. A "Software update" card shows the current state; the settings gear gains an arrow badge when an update is ready to install. Download progress tracks in the card; the update installs on quit.
0.1.16 - 2026-06-25
Changed
- One-click downloads. Release artifacts are now stable-named, with the version dropped from the filenames (
Code-by-wire-arm64.dmg,Code-by-wire-Setup-x64.exe, and so on), so GitHub'sreleases/latest/download/...URLs always resolve to the newest build. The README swaps its releases-page links for a Download table that links straight to each file, and the Chinese README tracks the same change.
0.1.15 - 2026-06-25
Added
- Assistant transcript messages now render as Markdown: GitHub-flavored tables, lists, and inline formatting, with fenced code blocks syntax-highlighted by Shiki (vitesse-dark). Each code block leads with a language label that swaps to a copy button on hover, and every assistant bubble carries an icon-only copy button.
- The live terminal restores its screen on a window refresh. The terminal manager records each pty's screen state and replays it on reattach, so reloading the window no longer drops the terminal to a blank panel.
Fixed
- Dropped the border on the selected session row, along with the leftover transparent border on the others.
0.1.14 - 2026-06-25
Fixed
- The Overview's equivalent API value now honors the Include cache toggle everywhere it appears. Totals, per-model, per-project, per-branch, per-session, and per-calendar-day all recompute when the cache pill flips, instead of holding a stale cache-inclusive figure.
- The by-session cost sort follows the cache toggle, so the table reorders to match the values shown.
- Daily-usage tooltip model rows honor the cache toggle, and per-kind cost appears in the tooltip when the cache pill is off.
0.1.13 - 2026-06-24
Added
- Tool turns in the transcript render as compact status rows. Click to open the full command and output in a modal; edit turns open as a compact diff row that launches the same diff modal, with the full path and a copy button in a dedicated file bar.
- Subagent transcripts are now clickable from a parent session, using the same tool and edit detail modals.
- Daily usage buckets in the Overview are priced: total, per-kind, and per-model costs show in each bar, with the equivalent API value in the tooltip.
- The by-session table now shows the session name and a copiable session ID.
- Shell drill-in gains a status header, the shell description in the breadcrumb, and a calmer no-output note when the shell produced nothing.
Changed
- Transcript avatars switched from initials to icons — circle-user for the human, sparkles for the assistant — with accessible speaker labels.
- Dock tabs (Turns, Tasks, Shells, Subagents) rebuilt on shared dock-row primitives: hairline rows, a mono metric rack with dimmed units, and flat Gantt fill for the subagent timeline.
- Shell rows now lead with the description; the exit code cell is dropped.
- Subagent type and description appear in the drill-in breadcrumb.
- Annunciator cells rebalanced: model and effort split into separate cells; git is wider, effort and clock are narrower.
- Dropped the read-only corner tag from the transcript header.
Fixed
- Teal keyboard-focus ring restored on controls that had reverted to the OS accent color.
- Shell drill-in remounts when the active shell changes.
- Shell header status is now tied to its own row, not the last one in the list.
- Diff and tool-result copy buttons are disabled when there is nothing to copy and flash "Copied" on success.
- Transcript tool turns constrained to the message box width.
- Daily-usage cost readout calculation and by-session naming corrected.
- New session button is full-width and padded to match session rows.
0.1.12 - 2026-06-23
Added
- Apple Intel (macOS x64) and Windows ARM64 builds, bringing each release to four
download targets. The Intel Mac dmg cross-compiles on the Apple Silicon runner
instead of waiting on a scarce
macos-13runner, and every artifact now carries an explicit arch in its filename so the legs no longer clobber on upload or collide in the auto-update manifests.
Changed
- Replaced the in-app wire-mark logo with the terminal
>_glyph, so the header wordmark and the Settings About section now match the>_app icon. Regenerated the bundle icons from the SVG.
0.1.11 - 2026-06-23
Changed
- Redesigned the app icon as a
>_prompt mark — a chevron and an underscore cursor — on a teal tile, replacing the dark wire-mark tile.
Fixed
- The annunciator model readout no longer shows a stale family beside a fresh id.
After a mid-session
/modelswitch the live id updates immediately while the transcript-derived family lags, so switching Sonnet to Opus briefly read "Sonnet (claude-opus-4-8)". The label now takes its family from the live id.
0.1.10 - 2026-06-22
Added
- Fork —
claude --resume <id> --session-id <new> --fork-session— branches a conversation into a brand-new session, inheriting the source history while leaving the original transcript untouched. A labeled Fork button rides every session in the header; Adopt (resume under the same id) joins it once the session has ended. So Fork branches this conversation into a fresh session, Adopt takes the wheel of this exact one. - A Terminal tab on every session: the live xterm for a running managed session, otherwise a dark observed-terminal hero that offers Fork always and Adopt only once the session has ended. The Transcript stays the default tab for non-managed sessions.
- An End session button in the header that terminates a running, app-owned session. Ending an idle or waiting session is immediate; a session mid-turn routes through a danger-toned confirm, since the kill cuts the turn. The conversation is durable, so it stays recoverable via Adopt either way.
- Inline rename of the session title from the header. Hover to reveal a pencil,
click the pencil or the title to edit in place; Enter or blur saves, Esc
cancels, and an empty value clears the override to revert to the derived name.
The override lives in its own durable store, so a deliberate rename wins over
both the re-derived title and Claude's live
session_nameand survives the 3s re-derive, a cache rebuild, and app restart.
Fixed
- The Adopt button no longer flickers across the resume sync race. Adopting an
ended session now holds Working through the
--resumeboot instead of bouncing ended → working → ended → idle, and a just-exited session shows Adopt disabled with a tooltip instead of dropping it for a beat until the next sync lands.
0.1.9 - 2026-06-21
Added
- An "Open in" menu on the session header that opens the working directory in VSCode or the OS file browser (Finder on macOS, Explorer on Windows). It resolves the folder from the registry or the transcript, so it works for ended and observed sessions too, and surfaces a deleted or unresolvable folder as an inline error instead of a dead click.
- Drilling from a subagent's inline dispatch in a transcript straight into that
subagent's own transcript, and on through nested subagents. The breadcrumb
grows a level at a time (
Session › A › B) and pops back the same way, and a dispatch is clickable only when its agent resolves on disk.
Changed
- Redesigned the Git cell into a minimal branch readout that opens a detail popover. The cell shows the branch name, or the short sha on a detached HEAD, with an amber dot when the tree is dirty; the popover holds the repository link, copyable branch and commit, the pull request link, and sync, changes, and status rows.
- Widened API-billing detection to cover a bare
ANTHROPIC_API_KEYorANTHROPIC_AUTH_TOKEN(direct Anthropic) and the cloud-provider flags (Bedrock, Vertex, Foundry, and the rest), not just an explicit base URL. The rail names the gateway provider and gives cloud accounts a friendly name ("AWS Bedrock", "Google Vertex", "Microsoft Foundry"). Cost drops the~only for live, direct Anthropic spend; gateways keep the estimate framing. - Unified the By model and By project breakdowns in the Overview into one shared panel of full-width bars with a column header, both capped at the top 7 with a "+N more" note.
- Dropped the Saira display font. Labels now reuse Inter and lean on case, tracking, and weight for hierarchy, and the wordmark takes its own face, uppercase Cascadia Mono, for a stamped terminal-brand feel.
- Folded the standalone Sys lamp into the Settings gear, which now carries the CLI master-caution as a corner badge that stays dark until the CLI trips.
- Restyled the selected session card as a raised, teal-bordered card in place of the leading accent bar.
- The Model cell now shows the raw model id beside the family, like
Opus (claude-opus-4-8[1m]), truncated with the full id on hover.
Fixed
- The macOS app icon renders full-size on macOS Tahoe instead of shrinking into a grey rounded frame, by shipping the art full-bleed and letting Tahoe supply the corner mask.
- Tidied the Overview stats chrome: Y-axis tick labels trim a trailing
.00and center on their gridlines, the daily chart gains headroom under its title, and the year dropdown aligns without flashing on a year change. - The collapsed Structure tally now matches the expanded tab order (Tasks, Subagents, Shells, Turns) and includes the shells count it was missing.
0.1.8 - 2026-06-20
Added
- A Settings view, reached from a title-bar gear, with System, Account, Appearance, and About sections. System is the new home for the Claude Code CLI status: its detail, version requirement, binary-path override, and per-install remedy commands. A title-bar Sys lamp and a master-caution banner both deep-link into it. Account carries the subscription identity and rate-limit gauges.
Changed
- Rethemed the whole UI to an "Instrument" glass-cockpit direction: neutral graphite surfaces, a type stack of Saira Semi Condensed for placards, Inter for the UI, and JetBrains Mono for telemetry, with color reserved for live state. Dropped the Space Grotesk and Hanken Grotesk fonts.
- Flattened the rail's session list and moved the CLI status off it onto a title-bar Sys master-caution lamp.
- Reworked the session cockpit around an annunciator header (state, link, model and effort, git, and a clock) above a three-panel sidebar: a Context fuel gauge, a merged Tokens panel, and a token-speed sparkline.
- Ported the Overview to the Instrument palette with selective color. A fixed identity color per known model (Fable, Opus, Sonnet, Haiku) carries across the By-model breakdown, the daily stack, and the session log; input and output are tinted in the kind breakdowns; and the contributions calendar picks up an engaged-blue heat. The by-project breakdown flattened to a monochrome list, dropping the per-branch view.
Removed
- The standalone CLI status modal, now folded into Settings → System.
Fixed
- The daily usage by-kind chart now honors the page's "Include cache" toggle, folding cache out to leave input and output when the toggle is off instead of always rendering the full token composition.
0.1.7 - 2026-06-20
Added
- Windows (x64) support: a downloadable NSIS installer, plus parity for spawning, adopting, live telemetry, and CLI detection.
Changed
- Validate a session's working directory before spawn, surfacing the reason ("Starting directory does not exist") instead of a bare "[process exited]".
0.1.6 - 2026-06-18
Added
- A Shells tab in the dock that lists each session's background shells, reconstructed from the transcript, and lets you drill into any shell's full log on the main surface with a live tail and ANSI colors.
- A reset control in the Overall Stats view that drops and rebuilds the analytics index from scratch, behind a danger-tone confirmation.
- An email reveal toggle in the account rail that masks the subscription email by default, so you can demo the app without exposing it.
Changed
- Rebuilt the left sidebar as a single rail panel: the account card opens the Overview, sessions render as cards with a state-icon tile where the icon shape encodes session state and its tone encodes management, and the CLI status sits in a band below the account card with its version. The CLI status modal moved onto the shared modal shell around one dynamic banner.
- Split the session list into Active and Ended zones by creation time — a headerless Active list above a collapsible Ended section — and froze each session's creation time to its earliest transcript timestamp so the order holds across reparses.
- Reworked the dock tabs: underline and lozenge tab styles, Tasks folded into the dock as a tabbed section, and the idle dock defaulting to Tasks when a session has any.
- Restyled subagent lanes into single-row, description-first bands.
- Gave the session list, workspace, stats, and dock a VSCode-style overlay scrollbar that reveals on hover without taking layout space.
Fixed
- Spawned sessions now inherit the resolved
CLAUDE_CONFIG_DIR, so a relocated Claude config directory carries into sessions the app starts.
0.1.5 - 2026-06-17
Added
- A live CLI status block at the bottom of the rail that probes the local Claude
Code CLI on startup and classifies it as ready, not found, outdated, logged
out, or unknown. It resolves the binary across a saved override, your
login-shell PATH, and a fallback, recovers a relocated
CLAUDE_CONFIG_DIR, flags multiple installs, and enforces a minimum version (2.1.177). A spinner and Re-check button rerun the probe on demand, and a Troubleshoot modal explains the failure with per-install-method (native, Homebrew, npm) upgrade commands and a binary-path override. New session and Adopt are disabled while the CLI is unusable.
Changed
- Hide Claude Code background (
--bg) sessions from the session list, including ones that have already ended — read from the transcript's recorded session kind, since the registry entry is reaped the moment the session exits.
Fixed
- Keep the terminal prompt reachable at the bottom after a relayout or re-attach, not just a session switch, by rebuilding the xterm viewport geometry the way VSCode does.
0.1.4 - 2026-06-16
Added
- Subagent lanes in the dock: each session's subagents render as a live gantt timeline, grouped into collapsible per-batch bands ordered by start time, with the task description and tool count on each lane and a status tally. Drill into any lane to open that subagent's transcript on the main surface, with a breadcrumb back to the session.
- Shift+Enter in the terminal inserts a newline in the Claude Code prompt instead
of submitting, matching what
/terminal-setupwires for a native terminal.
Changed
- Recolored charts and telemetry with a token-kind palette: wire-blue is reserved for interaction and brand, with steel for Input, violet for Output, and teal as the analytics hue across the cost donut, token bars, KPI strip, contributions heatmap, model-mix donut, and right rail.
- Neutralized the text scale to graphite and lifted tertiary contrast.
Fixed
- Keep the terminal scrollback pinned to the bottom after switching sessions.
0.1.3 - 2026-06-15
Added
- Overall Stats view, pinned as an Overview entry at the top of the rail and served from the SQLite analytics index: a headline KPI strip, a GitHub-style contributions calendar with a metric toggle and year switcher, a daily usage chart, per-model, per-project, and per-branch breakdowns, a sortable session table, a date-range filter, and a single cache-token toggle.
- App version next to the header wordmark.
Changed
- Moved Tasks, Turns, and Subagents into a collapsible Structure dock.
- Reworked the model picker: it resolves its default from the configured override, offers model aliases (including Fable), shows each session's resolved id, and labels a session with no recorded model "Unknown".
- Capitalized the app display name to "Code-by-wire".
Fixed
- Hold a new session's picked model in the rail until its first turn lands, instead of briefly flickering to a default.
0.1.2 - 2026-06-12
Changed
- Releases are now signed with a Developer ID certificate and notarized by
Apple, so the downloaded
.dmgopens without a Gatekeeper warning.
0.1.1 - 2026-06-12
Added
- API billing mode in the account rail. It shows host and plan for API-billed accounts and tells them apart from Pro/Max subscriptions.
- macOS editing keys in the terminal (Ctrl-A/E, Esc-b/f, Ctrl-W/U/K), so the Claude Code prompt answers the usual readline shortcuts.
Changed
- Moved the New session button into the sidebar.
- Simplified the account rail to host and plan, dropping Auth and Via.
- Made the terminal borderless with an edge scrollbar so it fills its panel.
- Trimmed the global header to 40px.
- Anchored the wordmark top-left, sliding into the corner in fullscreen once the traffic lights clear.
- Tightened the Session and Git panel row spacing to match the rail.
Removed
- Intel (
x64) builds. Releases are Apple Silicon (arm64) only.
Fixed
- Self-heal a wrapped
settings.jsonwhen itsstate.jsongoes missing. - Drop the subscription label once every rate-limit window has expired.
- Force the sRGB color profile so packaged colors match dev.
0.1.0 - 2026-06-11
Added
- First public release. A dark macOS desktop app that monitors and controls local Claude Code sessions: one row per session, live state (Working, Waiting, Idle, Ended), and transcript, tasks, tokens, cost, and git panels, served from an embedded SQLite index.
- Unsigned
.dmgpublished to GitHub Releases.