Aquí hi ha 82 versions de TermCanvas, des de 27 de març del 2026 fins a l’actual, 0.39.10. Cadascuna enllaça amb els instal·ladors del mateix desenvolupador.
| Versió | Data | Mida | Fitxers |
|---|---|---|---|
| 0.39.10Darrera versió | 31 de maig del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióFixed
- Legacy Computer Use cleanup no longer removes user-managed Codex MCPs: Codex computer-use MCP entries are now removed only when they contain TermCanvas legacy signatures, preserving custom or third-party MCP servers that use the same generic name. |
| 0.39.9 | 31 de maig del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióChanged
- TermCanvas no longer ships its own Computer Use stack: removed the unfinished helper, MCP server, settings page, CLI commands, launch injection, and packaging path so Codex sessions use the bundled OpenAI Computer Use plugin instead.
Fixed
- Legacy Computer Use MCP entries are cleaned up on skill install: TermCanvas now removes stale Claude and Codex MCP registrations from older builds, including orphaned Codex TOML args / env lines that could keep pointing agents at the retired TermCanvas server. |
| 0.39.8 | 18 de maig del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióFixed
- Unicode paths stay readable in Git-backed views: the file tree and Git diff now parse git ls-files output as NUL-separated records, so Chinese and other non-ASCII filenames render as real paths instead of escaped octal strings.
- File tree refresh prunes stale empty directories: after tracked or ignored paths disappear, the file tree now removes empty ancestor folders that no longer exist in the refreshed path snapshot. |
| 0.39.7 | 9 de maig del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióAdded
- Pins can render rich HTML: pin bodies now accept full HTML documents in addition to Markdown, preserving local attachments for embedded media while keeping preview/render surfaces sandboxed.
- Pin screenshots for visual agents: termcanvas pin render <id> --json renders a pin's Markdown or HTML body to a stable PNG under .termcanvas/pin-renders/, so agents with image-reading capability can inspect visual pins directly from the generated file path.
- Independent pin HTML preview window: pin details now expose an Open preview / 独立预览 action that opens rich pin content in a resizable 1280×900 standalone window for human inspection.
Changed
- Pin render cache is cleaned during rendering: stale render snapshots and orphaned pin render directories are pruned opportunistically when a new pin render is requested.
- Agent pin instructions mention visual rendering: injected pin guidance now teaches agents when to call termcanvas pin render <id> --json and how to use the returned image path.
Fixed
- Codex hook trust registration is documented and generated: generated Codex hook setup now records the trusted command pattern and documents the registration behavior for future agents. |
| 0.39.6 | 8 de maig del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióAdded
- Worktree label grid columns: settings now let you choose how many terminal tiles are placed per row when a worktree label gathers its terminals.
Fixed
- Codex hooks feature flag migration: Codex hook setup now preserves compatibility with both current and legacy feature flag names. |
| 0.39.5 | 1 de maig del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióAdded
- Usage dashboard period views: the usage overlay now supports richer period views with range trends, quota status, and cloud usage included alongside local usage.
Changed
- Usage dashboard readability: metric labels, quota rows, trend captions, and supporting text now use stronger contrast, with more vertical spacing between cards and clearer billion-token formatting.
- Usage dashboard layout rhythm: the overview cards, quota panel, heatmap, and trend sections have been tightened for responsive grouping while keeping the panel easier to scan.
Fixed
- Codex reasoning tokens are counted correctly: Codex usage now includes reasoning token accounting in totals and display rows.
- Usage heatmap labels stay on one line: active month labels no longer wrap into two lines. |
| 0.39.4 | 30 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióAdded
- Stashed terminals can be previewed and controlled without restoring them: hover a stashed terminal in the left panel to open a live xterm preview, inspect running output, type directly into the terminal, and select/copy text while keeping it off the canvas.
Changed
- macOS keeps TermCanvas running after the last window closes: closing the final window now keeps the app alive in the Dock/menu bar, matching standard macOS app behavior.
Fixed
- Force branch deletion requires confirmation: destructive branch deletion from the Git panel now goes through an explicit confirmation step. |
| 0.39.3 | 30 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióFixed
- Git history graph colors are restored: the right-panel commit graph now uses a dedicated graph palette, so topology lines, branch markers, selected nodes, and ref badges stay readable after the neutral theme update.
- Usage dashboard visualizations are colored again: the Cmd+Shift+U usage overlay now uses a dedicated usage palette for hourly bars, monthly trends, heatmaps, quotas, device rows, and insight progress instead of inheriting the neutral app accent.
- Git history can be resized from the changes pane: the Git panel now has a draggable split between Changes and History, matching the adjustable history panes in Cursor and VS Code while preserving a minimum visible history area. |
| 0.39.2 | 30 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióChanged
- Left panel hierarchy is easier to scan: the project / worktree / terminal tree uses a quieter visual hierarchy and more consistent row rhythm across sessions and history surfaces.
- File tree keeps more context visible: gitignored files now render dimmed instead of disappearing, and file-tree state is preserved across tab changes, panel collapse, and worktree switches.
Fixed
- OpenCode terminals now report real lifecycle state: OpenCode sessions are discovered from the current database without binding stale same-directory sessions, tool-calls steps stay active instead of being treated as full turn completion, and the first user prompt is pushed through telemetry so left-panel titles update.
- Pin dispatch keeps dropped pins as context: dropped pins remain available as conversation context when dispatching work, instead of disappearing from the handoff.
- Workspace save and external URL handling is stricter: Electron now restricts external URL opens and workspace save paths to the intended surfaces.
- Diagnostics logs rotate predictably: renderer diagnostics log rotation is covered and kept within the expected behavior.
- Terminal resize and drag-scroll hit areas are stable: resize handles stay outside terminal content, and terminal selection drag-scroll keeps its scale guard.
- Light theme terminal colors remain readable: the xterm light grayscale hierarchy stays visible across CLI roles. |
| 0.39.1 | 29 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióFixed
- Long-running tool calls no longer false-trigger waiting-for-input attention: the PreToolUse fallback timers now align with Codex's stream idle timeout, so long tests, builds, and large edits stop producing premature red "awaiting input" signals.
- Light theme terminal colors are readable again: the xterm light palette now uses darker ANSI colors where needed, and the OpenCode terminal type badge now uses a theme-aware accent with sufficient contrast in both themes. |
| 0.39.0 | 29 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióAdded
- In-terminal find (Cmd+F): Claude, Codex, and shell terminals now expose an inline find bar with next/previous navigation, case-sensitive / whole-word / regex toggles, live match counts, and focus hand-off from the terminal into the search input.
Changed
- Select mode no longer starts drags from text selection: selecting text inside a terminal no longer hands off into tile dragging, and select mode no longer drags annotations. This removes an interaction conflict that made ordinary selection feel unsafe.
Fixed
- Headless workflow + remote CLI compatibility: the headless workflow layer now correctly bridges the current Hydra workbench/dispatch API back onto the legacy workflow/node HTTP and CLI contract, so init / dispatch / watch / approve / reset / cleanup work again in server mode.
- Telemetry keeps exit-state evidence: terminal telemetry now preserves the final exit snapshot and contract status after detach, instead of dropping the useful terminal-ended state too early.
- Dialog focus and localization regressions: confirm dialogs now move focus inside the modal reliably, and user-facing / accessibility copy that leaked hardcoded English has been localized again.
- Release-gate regressions: canvas entity-anchored annotations resolve against the current project/worktree positions again, syncWorktrees no longer emits a synthetic update on true no-op scans, and stale release tests/docs were brought back in line with the current terminal-level canvas and Pin instruction model. |
| 0.38.4 | 28 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióChanged
- Pin capture guidance is now issue-like: the injected agent instructions now tell agents to record high-density pins with Background, Observed / Request, Expected / Goal, Evidence / References, Next action, Why pinned, and Unknowns when the item is more than a lightweight memo. Thin context should be resolved by cheap local inspection or a concise user question before recording.
- Bottom toolbar no longer shows the canvas tool picker: removed the Move / Hand dropdown from the bottom toolbar while keeping keyboard-driven canvas navigation.
Fixed
- Literal \n leaked into pin detail views: pin bodies now normalize agent-style escaped line breaks at the store boundary while preserving single literal newline-escape mentions.
- Terminal cursor stayed as a grab hand in default hand mode: the canvas still defaults to Hand, but terminal tiles opt out of the inherited pan cursor and xterm text areas keep the text-selection cursor.
- Terminal tile window controls were hidden until hover: minimize and close controls now stay visible while hover-only state marks still use the existing reveal behavior. |
| 0.38.3 | 27 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióFixed
- Right-click menu in file tree did nothing: every menu action (Reveal in Finder, Rename, New File, New Folder, Delete, Copy Path) opened the menu but the click never ran. The @pierre/trees library has a document-level mousedown capture handler that closes the menu when the click target isn't inside the file-tree host or a container the library recognizes. Our menu portals to document.body for styling reasons (Tailwind doesn't reach into the shadow DOM), so the library treated every menu click as outside-the-menu — mousedown closed it, the menu unmounted, and the button's click never fired. Fixed by wrapping the portaled menu in a div carrying data-file-tree-context-menu-root="true", the marker the library's isEventInContextMenu check looks for.
- Drag-from-file-tree-to-terminal: the @pierre/trees migration left the dragstart listener on a useRef-based container that was null on the first commit (loading skeleton). The effect ran once with a null ref, bailed, and never re-attached when the tree finally mounted. Switched to a state-based ref so the effect re-runs when the container actually appears, restoring file-to-terminal drag.
- Clicking the file tree could open files mid-drag: opening files via the library's onSelectionChange meant drag-start (which auto-selects), keyboard navigation, and programmatic API calls all triggered the editor. Replaced with a dedicated click listener on the container scoped to data-item-type="file".
- "New File" / "New Folder" inside a directory created the wrong path: the library uses canonical paths with a trailing slash for folders (src/), so the temp path was src//__pierre_new_… and downstream fs.mkdir / fs.createFile saw an invalid relative path. Strip the trailing slash before building child paths. Same fix flowed into Delete / Copy Path / Reveal so they no longer paste paths with a stray slash.
- Rename input fought the row button for focus: context.close() defaults to restoreFocus: true, which synchronously focuses the row button right before startRenaming mounts the input. Pass { restoreFocus: false } for the rename and create paths.
- Empty-area right-click had no menu: the hand-rolled tree showed New File / Folder / Reveal / Copy Path on right-click below the rows; the library only handles row right-clicks, so the menu disappeared after the rewrite. Restored a worktree-rooted menu when contextmenu reaches the container with defaultPrevented still false. Skips text inputs so the search box keeps its OS clipboard menu.
Docs
- README hero: swapped the single dark mock for two new screenshots — the wide multi-terminal canvas and the Hub knowledge-graph view. Same change in the Chinese README. |
| 0.38.2 | 27 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióAdded
- Markdown sanitization: rendered markdown (session replay, agent bubbles, etc.) now passes through DOMPurify before insertion via dangerouslySetInnerHTML. Defense-in-depth against any future provider that ships HTML in message text.
- Copy buttons in session replay: every user prompt and assistant text row gets a muted copy icon at the bottom-right (brightens on hover, swaps to ✓ for 1.2s on success). Source is TimelineEvent.textPreview, capped at 16 KB by the scanner — covers the 95th-percentile message.
- Zustand setState-loop debug middleware (wrapSetState): traces high-frequency setState calls during dev so future "max update depth" regressions surface as a counter instead of a crash.
Changed
- Session replay footer: removed the progress bar. The highlighted-row indicator already shows position, and the bar crowded the footer. Play/pause/seek controls stay for keyboard stepping.
Fixed
- Title input dragged the whole tile: clicking-and-dragging inside the custom-title input was moving the node instead of selecting text — onMouseDown stopPropagation doesn't help because React Flow detects drag from pointerdown. The title container now carries the nodrag opt-out; rest of the header stays draggable.
- Pin drawer never reopened after a transient list failure: pinStore.openDrawer cached an empty array on rejection, short-circuiting every subsequent open for that project. The cache key now stays unset on failure so the next open retries.
- One corrupt pin file aborted the whole list: PinStore.list() threw on the first malformed .md, hiding every other pin in the repo. Per-file errors are now caught, logged, and skipped. readFile also validates required string fields and ID_REGEX before constructing a Pin.
- Invalid pin status silently accepted on create: PinStore.create skipped the status validation that update already had, so a CLI-created pin with a bad status would write to disk and then vanish from list/get. create now throws PinStoreError 400, matching update's contract.
- Pin dispatch errors said "Task": legacy "Task not found" copy and [Task] log prefixes leaked through pin.dispatch.failed toasts after the rename. Renamed to "Pin" everywhere; stale TERMCANVAS_DIR/tasks/ comments updated to pins/.
- pnpm test skipped the entire Pin feature: the script still listed deleted task-*.test.ts files instead of the renamed pin-* equivalents. Replaced.
- wrapSetState broke the release-build typecheck: the wrapper's forwarded (partial, replace) didn't match either zustand setState overload. Single function-cast at the forwarded call; runtime semantics preserved.
Docs
- CLAUDE.md: documented the TermCanvas Pin system — when to record a pin, the termcanvas pin CLI surface, and conventions for capturing user-deferred work. |
| 0.38.0 | 27 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióA coordinated visual + capability release. The design system grew a motion layer; every long-lived surface (settings, toolbar, side panels, agent bubble, search modal, drawer family, terminal tile chrome) was rebuilt against it. New capabilities round out the spatial-memory premise: named multi-canvas workspaces, spatial waypoints, a global command palette, drag-handoff of terminal output, snapshot history with diff, status digest, activity heatmap, and pan-to-recent-activity. Onboarding collapses to one canonical first-impression surface plus quiet contextual cues.
Added
- Motion system: role-based duration / easing tokens (--duration-instant|quick|natural|deliberate, --ease-out-soft|out-snap|in-soft|in-out-soft) plus .tc-enter-fade, .tc-enter-fade-up, .tc-enter-pop, .tc-enter-slide-right, .tc-stagger. Honors prefers-reduced-motion.
- Multi-canvas workspaces: each canvas owns its viewport / projects / waypoints. ⌘⇧] / ⌘⇧[ cycle, ⌘⇧N opens management modal. Existing single-canvas state migrates forward as a "Default" canvas. Hub adds a "Canvases" section.
- Command palette at ⌘P: single-file action registry with four sections (actions / terminals / projects / waypoints). Visual rhyme with SearchModal but distinct IA — sync, action-oriented.
- Hub (right-anchored command center, ⌘⇧J): active terminals + recent-activity feed with sparklines + waypoints + pinned items + capability inventory. Toolbar gains a paired pressed-state trigger.
- Spatial waypoints: ⌘⇧1..9 save current viewport, ⌥1..9 fly back over --duration-deliberate. Per-project, up to 9 slots, dot-strip indicator at canvas bottom-center.
- Snapshot history at ⌘⇧T: browse and restore the last 20 canvas snapshots; pre-restore captures current state so a wrong restore is itself reversible. Optional diff mode (added / removed / moved / renamed terminals between two snapshots).
- Status digest at ⌘⇧/: one-keypress quiet chip listing the 3–5 most relevant terminals (just-completed, stuck, busy, focused, pinned). Click row to fly camera there.
- Activity heatmap at ⌘⇧A: each tile gains a 5-minute output-volume sparkline in its header. Quiet by default, fades in via canvas-level toggle.
- Pan-to-recent-activity at `Alt+``: flies to the terminal with most recent PTY output; LRU-cycles on rapid re-press.
- Drag terminal selection → another tile or composer: select text in any xterm, drag, drop on another tile (writes to that PTY) or composer (fills draft). Cyan-tint drop ring distinguishes from folder drop.
- Cluster-link layer: hairline curves between parent ↔ child agent terminals, fades in when canvas zoom < 0.6 (map mode). Hover any tile to outline its whole agent family.
- Quiet capability cues (DiscoveryCue): contextual hints registry of 8 cues with priority order (Hydra setup, pinning, search, palette, pan-to-recent, status digest, Hub, snapshot history). One chip at a time, dismiss-on-action, never reappears once acted on.
- Drag-over canvas affordance: 1px hairline accent inset + folder chip when an OS folder is dragged over the canvas. Empty-canvas hero responds in-place by lighting up its ⌘O chip.
- Composer submit feedback: 4-state Send button (idle / ready / submitting / sent), input-halo on success, press feedback. All motion-token-driven.
- ⌘, settings shortcut that toggles the modal from anywhere, including text fields.
Changed
- Empty canvas: redesigned as a labeled spatial document (eyebrow + two-line tc-hero + drag/⌘O affordance), not a centered marketing popup. New --text-hero token + .tc-hero + .tc-kbd utility classes.
- Settings modal: rail-based IA (Canvas / Workflow / Ambient / Input), tc-enter-fade-up entrance, focus-trap, arrow-key rail navigation. Pinned to constant height across tabs.
- Toolbar: cut 5 buttons (Tutorial / Sessions / Usage / Refresh / Add-browser) — moved to the command palette where they belong. Left workspace name + dirty dot + theme + settings + Hub trigger. Reads as document chrome.
- Terminal tile chrome: paired focus ring (outer |
| 0.37.0 | 26 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióAdded
- Collapsible project groups: history panel groups sessions by project with expand/collapse chevrons.
- Per-project show-more: each project defaults to 7 rows; clicking "N more" reveals one batch at a time without affecting other groups.
Changed
- Permanent hide: two-step hide (eye-slash → armed red → execute) is now permanent — hidden sessions have no restore path.
- Pin placement: pin indicator moved to left side of session row for clearer semantics.
- History visual density: row height, font size, indentation, and hover style aligned with the left panel project tree.
Fixed
- Show-more fetches full per-project session list from server when local cache is exhausted.
- Canvas dot grid overlay removed (was rendering a duplicate fixed layer).
- Port file now guarded with PID to survive crashes without stale lock. |
| 0.35.0 | 26 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- Figma-style canvas controls: bottom-centre floating toolbar with Move/Hand tool selector, zoom in/out, zoom percentage, zoom presets (50 / 100 / 200 %), and Fit All button.
- Hand tool: persistent pan mode — left-drag pans instead of selecting; terminals remain focusable by clicking in Hand mode.
- Space-bar pan: hold Space anywhere on the canvas to temporarily activate Hand mode; release to restore the previous tool.
- Keyboard shortcuts: V (Move), H (Hand), Shift+1 (Fit All), Cmd/Ctrl+0 (100 %), Cmd/Ctrl+= (zoom in), Cmd/Ctrl+- (zoom out).
- Composer height awareness: bottom toolbar lifts above the composer bar as it resizes.
- Task terminal badge and drawer filter for completed tasks.
- Drag a task onto a terminal to inject its title and body as a composer prompt (without auto-submitting).
Changed
- Default canvas tool is now Hand (was Move/Select).
- Move tool restricts left-drag panning to middle-button only; left-drag on empty canvas triggers marquee selection.
- Zoom controls removed from the top toolbar; they now live in the bottom floating toolbar.
- Update-ready indicator dot uses design token --green instead of Tailwind green-500.
Fixed
- Shift+1 (Fit All) now uses e.code instead of e.key so it works on non-US keyboard layouts.
- Cursor correctly shows grab/grabbing over terminal content in Hand mode (overrides xterm's cursor: text !important).
- Space-bar pan no longer intercepts button or menu-item activation.
- Cmd/Ctrl+0/=/− no longer intercepts keypresses inside editable fields.
- Zoom preset popover and tool popover can no longer both be open simultaneously.
- fitAllProjects bails early when window geometry is degenerate (tiny window or zero-size content) to prevent NaN viewport.
- Dead isSelected subscription removed from TerminalTile after selection ring revert.
- useT memoised per locale to prevent keyboard shortcut listeners from re-attaching on every render.
- getCanvasLeftInset, getViewportCenterClientPoint, and zoomAtClientPoint now receive taskDrawerOpen so zoom/fit math accounts for the Task drawer width.
- TaskDrawer participates in left-chrome layout so canvas origin is correct when the drawer is open. |
| 0.34.0 | 25 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- Computer Use MCP overhaul: full desktop-control toolkit with virtual cursor overlay, no-focus-steal input path, AX-first click strategy, keyboard scroll, cursor move action, foreground mouse hardening, and text input tuning.
- ScreenCaptureKit preferred for screenshots with zoom coordinate mapping and stale-coordinate rejection.
- Trajectory recording and replay with debug crosshair output.
- Window-scoped observation, space membership exposure, and Chromium AX activation strengthening.
- Background app launch tool and persistent capture config.
- Agent shim injection into shell terminals with CLI agents taught AX-first workflow.
- Global MCP registration and common CUA tool exposure with operation path capabilities.
- macOS permission flow: guided stale permission repair, setup-time permission request, and CLI repair hints.
- Viewport-fixed focus caret overlay for canvas navigation.
Fixed
- Terminal link activation now requires Ctrl/Cmd modifier to avoid accidental navigation.
- Blank terminals after visibility loss or WebGL context loss now recover automatically.
- Focus ring in overview mode uses stronger desaturated style for clarity.
- Focus navigation overhead reduced in the renderer.
- Hook stdin consumed before exit to prevent Codex Broken pipe errors.
- Computer Use fixes: AX press preferred for element clicks, screenshot coordinate mapping from captured window, helper signing identity kept stable, MCP credentials loaded from state file, Claude reserved MCP name avoided, TOML env config for Codex MCP, bundled packaged MCP server. |
| 0.33.0 | 25 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- Stash button on terminal cards in the sidebar: hover any terminal to reveal a tray icon that stashes it, symmetric with the restore icon in the stash section.
- Stash section in the left sidebar with dedicated collapsible area, explicit restore/destroy buttons, and confirmation dialog for destructive actions.
- Cmd/Ctrl+Click on URLs in the terminal now opens them in the default browser.
- shadcn component system initialized (Radix + Nova) with alert-dialog, collapsible, button, and tooltip primitives.
Changed
- Project tree always shows the branch row (removed flat-mode special case). Single-worktree projects display the branch name as a second level, matching multi-worktree layout.
- Renamed isMain to isPrimary across the worktree data model to clarify it means "primary git worktree" (directory identity), not "main branch".
- Terminal title resolution rewritten: customTitle stands alone (no longer concatenated with process title), extractIntent() extracts meaningful titles from prompts by stripping code blocks, file paths, and polite prefixes.
- Project-level [+] button now creates a worktree (terminal creation moved to each branch row's own [+]).
- Canvas edge resize handles restyle as Figma-style midpoint rectangles.
Fixed
- ConfirmDialog redesigned: added close button, smooth hover transitions, and danger button now uses project color tokens (var(--red)) instead of raw Tailwind red.
- Branch row was hidden for single-worktree repos on feature branches because isMain (git worktree identity) was conflated with "is main branch". |
| 0.32.2 | 23 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- macOS release builds now use ad hoc signing instead of skipping code signing entirely. This keeps the bundle identity as com.blueberrycongee.termcanvas and produces a codesign --verify-valid app, which avoids the unstable Screen Recording and Accessibility permission behavior seen in unsigned builds. |
| 0.32.1 | 23 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- Dragging a worktree label to compact its terminals now lays them out horizontally first instead of collapsing into a tall vertical stack.
- Hydra standalone workers now get a short natural-exit grace period after writing result.json, so stdout telemetry can flush the session_id before cleanup and hydra ask can resume the session reliably.
- Usage cost estimates now explicitly include GPT-5.5 and Claude Opus 4.7 pricing. |
| 0.32.0 | 23 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- Usage now includes Kimi and WUU sessions: Kimi wire.jsonl StatusUpdate.token_usage events and WUU meta token_usage records are scanned into daily summaries, heatmaps, cache-rate rows, and model breakdowns.
- Clicking a worktree label, either on the canvas or in a terminal header, now enters that worktree's overview mode so double-clicking a terminal zooms into it, matching the ⌘E overview flow.
Fixed
- Kimi and WUU usage cost estimates now use the Moonshot API-aligned rates instead of the initial rough defaults.
- Kimi/WUU heatmap parsing now returns the wrapper records correctly, so their token usage contributes to heatmap totals.
- The Settings general tab keeps the app version row pinned to the bottom instead of drifting into the main settings content. |
| 0.31.1 | 22 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- Left panel history and ⌘K session search appeared completely empty on 0.31.0 even when local session files existed, and replay could not resolve a session for any terminal. The Kimi CLI integration added in 0.31.0 called findKimiSessionFiles() inside electron/session-search-index.ts#listSessionFileCandidates without importing it, so every call to listSessionsForProjects / listSessionsForProjectsPaged threw a ReferenceError. The main-process IPC handlers had bare catch {} blocks that silently returned { entries: [], total: 0 }, making the regression look like "no sessions exist" instead of an error. Import restored; both IPC handlers now log the error instead of swallowing it so the next regression of this shape is not invisible. Two related type errors from the same Kimi commit were also fixed in session-scanner.ts (undefined wd.kaos fallback short-circuit) and session-watcher.ts (unnarrowed call.function.name access) |
| 0.31.0 | 21 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- feat(session): add Kimi CLI support across session pipeline — 为 Kimi CLI 添加跨 session 管线的支持
Fixed
- fix(session): use findKimi instead of getKimiLatest for Kimi session attachment — Kimi session 附件改用 findKimi 而非 getKimiLatest
- fix(renderer): 修复 WebGL 终端乱码问题 — 修复 WebGL 终端乱码问题
- fix(ci): run postinstall bins via shell on windows — Windows 上通过 shell 运行 postinstall 脚本
- fix(session): remove weak fallback in findBestCodexSession — 移除 findBestCodexSession 的 weak fallback,当 cwd 匹配失败时返回 null 而非绑定到全局最新 session |
| 0.30.7 | 21 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- Live session rows in the left panel no longer keep a stale session identity after a terminal detaches from its session or switches to a new one. Detach now clears the terminal's session-backed telemetry state (session_id, session_file, first-user-prompt, turn/tool fields), and renderer-side telemetry diffing now treats session identity fields as meaningful changes, so a pushed snapshot from a new session cannot be collapsed as "unchanged" and leave the old session title stuck on the tile |
| 0.30.6 | 20 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- Terminal glyph corruption during ⌘E overview transitions and ⌘[ / ⌘] focus cycling is now significantly reduced. Two lifecycle changes landed together: scene-internal terminals no longer get parked just because they temporarily fall outside the viewport during a camera animation, and when a viewport animation settles the app now runs one recovery pass across every attached live WebGL terminal instead of only the source / target tile. This removes the most disruptive remount churn from the transition path and closes a gap where non-focused live terminals could still keep a stale WebGL atlas after the animation finished |
| 0.30.5 | 19 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- Windows 11: resuming a session could crash the whole app with an A JavaScript error occurred in the main process dialog reading Error: Cannot resize a pty that has already exited. node-pty's Windows backend queues resize() calls in an internal _deferreds list until the named-pipe socket connects; if the underlying winpty agent has already exited by the time the queue is flushed, the replayed call throws from inside a Socket event handler, past any try/catch at the call site (see microsoft/node-pty#375). Main process now installs a narrow uncaughtException handler that swallows only that exact error (and the matching Cannot write to a pty that has already exited variant) and rethrows everything else. Note: this stops the crash dialog — the tab whose pty already died is still dead and needs to be closed and reopened; it does not fix the underlying node-pty race |
| 0.30.3 | 19 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- Terminals sometimes showed blank or garbled glyphs after switching back to the app from another window, waking the laptop from sleep, or on cold start. Root cause was the WebGL glyph atlas going stale without the GPU firing any signal. The fix rebuilds the atlas automatically on the four triggers that most commonly invalidate it: window.focus (catches Cmd+Tab back, lid-close-and-reopen, screen lock/unlock), initial tile attach after the host has laid out, theme change, and font / size / contrast change
Added
- Toolbar "Refresh terminal rendering" button (circular-arrow icon, immediately left of the dark/light toggle). One-click rebuild of every terminal's glyph atlas — a manual escape hatch for the rare edge cases the automatic triggers can't detect (driver partial crash, GPU hot-swap, etc.). Replaces the old workaround of toggling the theme to force a redraw |
| 0.30.1 | 19 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- Welcome demo rewritten for the v0.30 layout: shows project management + "+" in the left panel, code navigation + Monaco editor drawer on the right, session replay as a left-anchored drawer, Usage dashboard as a canvas-gap panel. Both side panels now demo their collapsed → expanded transitions on click, matching how the app actually boots
- Welcome demo Usage mock is now a dense five-row dashboard (4-card stat strip → hourly + 30-day charts → cache / projects / models bar lists → quota meters → heatmap ribbon) so it looks like the real UsageOverlay at small scale instead of a sparse placeholder
- Typography hierarchy across agent surfaces (agent chat, ChatPanel, MessageBubble, AgentStatusBar, ThinkingBlock, Hub, Diff, StatusBadges): semantic type tokens (tc-display / title / body / ui / label / eyebrow / caption, tc-mono / num) replace ad-hoc px sizes and hardcoded zinc greys so the agent subsystem no longer drifts from the rest of the app under either theme
Fixed
- Demo: drawer animations start flush against the panel seam instead of leaving a thin grey vertical line (border-l + border-r stacking at width=0 rendered as 2-px chrome)
- Demo: cursor click positions measured from DOM refs rather than hardcoded pixels, so they land on the correct targets regardless of container width |
| 0.30.0 | 18 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- Editor: full-canvas Monaco drawer — click any file in the right panel to open it in a real VSCode-style editor with syntax highlighting, Cmd+S save, dirty tracking, and a two-level half/full width toggle. Replaces the cramped preview tab
- Editor: custom Monaco themes tuned to the app's warm palette — dark mode uses the charcoal #1a1918 surface (not VSCode's stock cool grey); light mode gets an overhauled syntax palette (warm violet keywords, green strings, amber numbers, teal types) that reads naturally on the cream surface instead of the over-saturated stock vs colours
- Left panel: project management + session history in one place. "+" button (in the header and in the collapsed strip) adds a project in a single click; History section below ProjectTree lists past Claude/Codex sessions scoped to the current canvas
- Canvas-gap overlay system: Usage dashboard and Session replay now render as panels anchored in the gap between the left and right side panels, so both nav surfaces stay visible while you read code, dashboards, or transcripts. Three tenants (Usage / File Editor / Session Replay) are mutually exclusive in that slot
Fixed
- Sessions: Claude Resume button is no longer grayed out — projectDir now reads the real cwd from inside the Claude JSONL instead of the dash-encoded directory name, so worktree matching succeeds
- Sessions: Codex Resume actually resumes the past session now — sessionId is extracted from session_meta.payload.id (which codex resume accepts) instead of the filename stem (which Codex rejected, falling back to a fresh session)
- Sessions: Resume closes the replay drawer before panning, so the newly spawned terminal is visible on the canvas instead of being hidden behind the drawer
- Left panel: the entire collapsed sidebar strip is now a click target — previously only the small chevron at the bottom expanded it
- Usage: overlay sizing tightened — individual components (stat cards, quota meters, device rows) no longer stretch beyond their readable width; the dashboard auto-hides when the canvas gap falls below a usable threshold and reappears when the side panels are narrowed again
- Usage: aligned chart heights and axis margins so side-by-side cards match; removed duplicate section titles; heatmap extended to a full year and centred within its card
Changed
- Layout: the left and right panels swapped responsibilities. Files / Diff / Git / Memory tabs moved to the right panel (resizable, collapsible). The left panel is now dedicated to project management + history
- Sessions: replay view is now a left-anchored drawer that pulls out from the right edge of the left panel, with half / full expand levels. The old full-screen modal is gone — the session list lives in the left panel and stays visible while a replay plays |
| 0.29.0 | 17 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- Terminal: new terminals stick to your preferred size — the first manual resize is learned and used for every subsequent "+ Terminal", regardless of sidebar width or collapse state
- Pet: refreshed capybara sprites with more expressive face, contour, and animation cadence
- Pet: ground shadow + heart/dust particle system for richer visual feedback
- Pet: richer idle behaviors including emotes, walk dust, bobbing question marks, and a spa-yuzu scene
- Pet: offline sprite preview script (pet-preview) for inspecting animations without running the app
- Telemetry: event-driven awaiting_input detection for Claude and Codex, replacing timer-based polling with signal-driven accuracy
- Hydra: PTY shell pid and capture time now persisted on each assignment run for post-hoc debugging
- Hydra: surfaces stall_advisory as a DecisionPoint to the Lead when a worker stops making progress
Fixed
- Telemetry: first session attach now discards any ps-contaminated state left by previous unknown-provider detection
- Telemetry: derived state is reset when a terminal's provider flips from unknown to a known agent, preventing stale indicators
- Telemetry: MCP daemon churn no longer masquerades as agent progress or active tool calls
- Hydra: cleanup guarded against non-Lead callers to prevent orphaned workbench state
- Hydra: dispatch prompt strengthened; skill install failures now surface to the Lead instead of failing silently
- Hydra: watch loop probes PTY liveness directly rather than inferring it from polling cadence
Changed
- Internal: every timing threshold centralized into shared/lifecycleThresholds so behavior adjustments don't require hunting through the codebase |
| 0.28.3 | 16 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- Pet: richer telemetry-driven reactions for tool running, tool pending, workflow start/completion/failure, stall, and stuck states
Fixed
- Keyboard: Cmd/Ctrl+A now scopes "Select All" to the active context, selecting the focused input/editor or the focused terminal buffer instead of the wrong surface
- Pet: suppress repeated completion alerts after a finished terminal has already been seen |
| 0.28.2 | 16 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- Pet: attention queue with priority-based terminal notifications, plus attention movement that brings the capybara inside the target terminal instead of parking on the title bar
Fixed
- Terminal: overview mode (Cmd+E) now keeps single-click focused for immediate typing, uses double-click anywhere on the terminal to zoom back in, and suppresses accidental xterm text selection during overview navigation
- UI: remove the focused terminal side glow and keep the focus state indicated by border only
- Pet: refine capybara sprite shading, contour, detail, and movement sizing to match the larger sprite scale |
| 0.28.1 | 16 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- Canvas: click anywhere on a terminal tile to zoom in when zoomed out (Cmd+E), using fit-all scale as adaptive threshold
Fixed
- Canvas: commit compact positions to store on label click without drag
- Terminal: prevent stale "Copied" toast from re-appearing on re-mount after zoom-to-fit
- UI: refine terminal focus indicator from hard ring to soft glow
- Focus: make spatial focus cycling (Cmd+]/Cmd+[) worktree-group-aware |
| 0.28.0 | 15 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- Git: comprehensive git panel with stash, amend, merge, rebase, tags, remotes, file diff, and hunk staging
- Search: experimental global search (Cmd+K)
- Pet: pixel-art capybara desktop pet (experimental)
Fixed
- Preview: stop click-to-edit, use button toggle instead
- Sessions: move early return after hooks to fix React rules violation |
| 0.27.8 | 15 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- Canvas: summon-style label drag with collision detection — dragging a worktree label repositions it with automatic avoidance of overlapping labels
Fixed
- Canvas: stop label drag preview update loop that caused unnecessary re-renders
- Canvas: preserve node position while resizing
- Renderer: restore missing getProjectBounds export
- Git panel: initialize viewport height with ResizeObserver on mount to prevent blank bottom area
- CI: rezip-electron requires -o flag for output path |
| 0.27.7 | 15 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- Updater: blockmap-based differential downloads for macOS — subsequent updates now download only changed blocks (~3-5 MB) instead of the full ZIP (~120 MB), with automatic fallback to full download on failure
- Hydra: hydra spawn --role <name> dispatches any role (not just dev) into an isolated terminal
- Hydra: hydra scan convenience command — spawns a janitor role for codebase entropy scanning
- Hydra: role-specific model and reasoning effort are forwarded from role definitions to spawned agents
Fixed
- Updater: skip directly to the latest version instead of updating through every intermediate release
- Updater: preserve pending update when offline so users can still install an already-downloaded version
- Updater: download to a temp directory so a failed download does not destroy a previously valid pending update
- Canvas: main worktree is no longer dropped when project scanner syncs worktree list
- CI: macOS ZIPs are re-compressed with rezip-electron for efficient differential updates; latest-mac.yml hashes are recomputed after optimization
Changed
- Hydra: CLI cleanup — consistent reset behavior, cleanup state preservation, SubAgent renamed to Run |
| 0.27.5 | 11 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- Clicking a worktree label on the canvas now also focuses that worktree, so a follow-up cmd+t creates the new terminal inside the worktree you just clicked instead of whichever one happened to be focused before. The label click handler now pairs panToWorktree with focusWorktreeInScene, matching the convention already used by Hub and cmd+] / cmd+[ worktree-level navigation. The LOD project-label fallback (extreme zoom-out) also focuses the first populated worktree, so click-then-cmd+t works at every scale |
| 0.27.3 | 10 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- Dragging the left sidebar width no longer force-zooms the focused terminal back to fit-scale when the canvas is in plain (non zoom-focus) focus mode; the resize cleanup now consults the shared viewport focus state and only re-fits the viewport when the user is actually in zoom-focus mode
Changed
- The "zoomed out vs zoom-focused" flag previously kept as a local ref inside the keyboard shortcut hook is now lifted into a shared viewportFocusStore, so any surface that mutates the viewport (sidebar resize today, future panels tomorrow) reads the same source of truth instead of guessing the mode |
| 0.27.2 | 10 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- Terminal tiles can now use the first real user prompt from telemetry as the default title, so new Codex/agent sessions are easier to distinguish in the canvas and sessions panel
Fixed
- Telemetry title extraction now skips injected context so agent terminals do not pick a synthetic bootstrap message as the visible title
- Sessions wait one poll cycle before accepting Codex session data and reject the baseline session, reducing false-positive terminal matches during initial discovery
- Terminal resize handles now appear on hover instead of only on selected tiles, making free-resize discoverable without bringing back the always-on frame
- Cmd+T placement now anchors from the focused terminal when possible, keeping new terminals closer to the user’s current working area |
| 0.27.0 | 10 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- Free resize of terminal tiles: drag any corner or edge of a terminal node to reshape it live; the inner xterm refits cols/rows on release
- Double-click the terminal header to zoom-to-fit that terminal (restored after the flat-canvas refactor, now respects the tile's current freely-resized dimensions)
- Clicking a worktree or project row in the session panel activates it, so a subsequent cmd+t targets that row without having to click back on the canvas first
- Right-clicking a session panel row also activates it before opening the context menu so cmd+t after dismissing the menu still lands on the right row
- Viewport-aware grid placement for cmd+t: new terminals now fill the visible canvas row-major (top-left → bottom-right), stepping past user-resized wide tiles instead of getting stuck behind them; the old rightmost-sibling anchor is kept as a fallback only when the viewport is saturated or smaller than a default tile
- Spatial (y asc, x asc, id) navigation order shared between cmd+] / cmd+[ and cmd+d's "next focus after close", so prev/next and post-close focus both follow what the user sees on screen instead of the array insertion order that only made sense on the old grid layout
Changed
- cmd+t no longer stacks new terminals vertically below the worktree's bounding box; the no-parent placement path anchors off the rightmost sibling first (when the viewport grid is unavailable) instead of its bottom
- Session panel row click only activates the row; collapse/expand is now a dedicated chevron button so the two gestures don't stomp on each other
Fixed
- cmd+d lands focus on the spatial next terminal to match cmd+] / cmd+[, instead of whichever terminal happened to be array-adjacent inside the same worktree
- Restored CLI tiles fall back to a default shell when the original CLI process is already gone during session rehydration, instead of leaving a dead tile behind
Removed
- cmd+1 / cmd+2 / cmd+3 / cmd+4 tile-size presets (tileSizeDefault / tileSizeWide / tileSizeTall / tileSizeLarge): the hardcoded 640x480 / 1288x480 / 640x968 / 1288x968 dimensions ignored the adaptive tileDimensionsStore and interacted badly with focus zoom. Free NodeResizer drag-resize replaces them end-to-end. Removed shortcut definitions on both mac and win/linux defaults, the handler loop, the SettingsModal / ShortcutHints rows, the en/zh i18n strings, and the now-unused updateTerminalSizeInScene action. The localStorage migration helper strips any leftover span* / tileSize* keys on load |
| 0.26.0 | 10 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- Free canvas layout: terminals are now flat top-level ReactFlow nodes that can be freely positioned, replacing the nested project/worktree containers
- Clustering toolbar with rule picker (by project / worktree / type / status / custom tag) and an undo for the last cluster
- Custom Tags… popover on each terminal for managing user tags
- Auto-placement for newly created terminals so they land in a free spot on the canvas
- Collision resolver to nudge tiles apart when they overlap (also applied when unstashing)
- Add Project Folder entry in the canvas right-click menu and a + button in the session panel header
- Inline + button on session panel rows for creating a new terminal in that project/worktree
- Hover × button to remove a non-main worktree directly from the session panel
- Hover × button to close a single terminal directly from its session panel card
- Remove Project entry in the project context menu (panel-only removal, files untouched)
- Delete Project from Disk… entry with a typed-name confirmation modal that calls a guarded project:delete-folder IPC
- Auto-migration from legacy v1 (nested) snapshots into the free canvas layout on load
- End-to-end integration test suite for the free canvas
Changed
- Session panel strings (context menus, notifications, delete-project modal) are fully internationalized; added panel_* keys to en/zh dictionaries
- Worktree row now exposes Remove via the hover × button instead of a right-click menu
- Canvas right-click menu uses the shared ContextMenu component for consistency
- Shortcut identifiers renamed from span* to tileSize* (existing keybinds preserved)
Fixed
- Popovers (canvas right-click menu, cluster dropdown) no longer stay stuck open: dismiss listeners now run in the capture phase so React Flow's stopPropagation can't swallow them
- Cluster toolbar now positions itself below the toolbar and respects the right-panel inset
- Terminal tile border restored after the free-canvas flatten refactor
- Session panel now shows projects and worktrees that have no terminals
- Cluster toolbar gained Escape-to-close support
Removed
- Dead grid-pack helpers superseded by the free canvas layout
- Orphaned compactFocusedProject shortcut |
| 0.25.23 | 9 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- Separated terminal focus semantics from viewport zoom semantics:
- Clicking a terminal now keeps focus highlight without forcing viewport zoom.
- Cmd+E now toggles zoom state while keeping terminal focus highlight.
- Cmd+T and Cmd+D now preserve current zoom scale and only pan the viewport.
- In non-zoomed mode, Cmd+[ and Cmd+] now preserve scale and only pan to the previous/next focused terminal. |
| 0.25.22 | 9 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- Sessions panel terminal ordering is now stable within project/worktree groups instead of dynamically reordering by activity updates |
| 0.25.20 | 8 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versió- Awaiting input detection now works reliably: fixed snapshot push failure when the 5s timer fires, and prevented late JSONL session events from clobbering the awaiting_input state
- Sessions panel keeps focused terminals visible in the project tree instead of hiding them
- Panel turn elapsed timer now counts from actual turn start instead of showing zero |
| 0.25.19 | 8 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióFixed
- Sessions panel now shows the provider name (e.g. "Claude", "Codex") instead of generic "Terminal" when no custom title is set
Fixed (zh-CN)
- 会话面板在终端没有自定义标题时,显示 provider 名称(如 "Claude"、"Codex")而非通用的 "Terminal" |
| 0.25.18 | 7 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióAdded
- Sessions panel now uses a tree layout grouped by Project → Worktree → Terminal, replacing the flat status-based grouping
- Terminal tile header shows the project name instead of the telemetry badge
- Awaiting input detection: when an AI agent (Claude Code / Codex) waits for user interaction (tool approval, answering questions, plan review) for more than 5 seconds, the sessions panel shows a red "Awaiting input" status instead of the orange "Running" status (WIP — detection may not trigger in all cases)
Added (zh-CN)
- 会话面板改为按 项目 → Worktree → 终端 的树形结构分组,替代原来的扁平状态分组
- 终端标题栏显示项目名称,移除遥测徽章
- 等待交互检测:当 AI 代理(Claude Code / Codex)等待用户交互(工具批准、回答问题、计划审批)超过 5 秒时,会话面板显示红色"等待交互"状态,而非橙色"运行中"(WIP — 部分场景下可能未触发) |
| 0.25.17 | 7 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióFixed
- File tree now shows dotfiles and previously hidden directories (node_modules, dist, build, out); only .git is hidden |
| 0.25.16 | 7 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióFixed
- Viewport focus switching no longer produces a zoom bounce effect; animation uses JS frame interpolation instead of xyflow's smoothstep
- Closing the focused terminal with Cmd+D now pans the viewport to the adjacent terminal
- Plain shell terminals no longer show as "Thinking" / "PROGRESSING" in the sessions panel and tile badge
- Live xterm containers no longer capture scroll wheel events intended for the canvas |
| 0.25.15 | 7 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióChanged
- Restored the right sidebar Sessions panel interaction model to match v0.25.12 (focused/attention/progress grouping, inspector trace, jump-to-terminal flow)
- Worktree focus navigation now applies focus before viewport pan so focus-switch animation behavior matches v0.25.12
Fixed
- Codex sessions in in_turn state are no longer treated as indefinitely progressing when session events are stale
- Session scanner now downgrades stale generating/tool_running history entries to idle to avoid misleading live-state labels |
| 0.25.14 | 6 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióAdded
- Git status badges in file tree: VS Code-style letter badges (M, U, A, D, R, C) with color-coded file names and folder dot indicators
- File name coloring matches git status (yellow=modified, green=untracked/added, red=deleted) |
| 0.25.13 | 6 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióAdded
- Inject Codex CLI lifecycle hooks (PreToolUse, PostToolUse, SessionStart, Stop, UserPromptSubmit) for real-time telemetry via Unix socket
- Auto-enable codex_hooks feature flag in ~/.codex/config.toml on skill install
- Parse additional Codex JSONL events (exec_command, patch_apply, web_search, mcp_tool_call, turn_started, turn_complete, error) as telemetry fallback layer
- Surface task_status and active_tool_calls in telemetry UI
Fixed
- deriveTelemetryStatus no longer falsely reports stall_candidate when Codex is doing long inference or has active tool calls
- Hook-driven session attachment now preserves the registered terminal provider instead of hardcoding to "claude"
Changed
- Simplified main-brain telemetry polling instructions to trust derived_status and task_status as primary decision signals |
| 0.25.12 | 6 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióChanged
- The sessions panel now focuses on canvas terminals, groups them by attention and progress state, and keeps only unread completions highlighted as fresh results
- The sessions panel now includes a focused terminal inspector with recent trace, jump-to-terminal, and history actions
Fixed
- Git status and diff panels now stay stable while refreshes are in flight
- Live terminals now refresh xterm after fit so the canvas redraws correctly after layout changes |
| 0.25.11 | 5 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióFixed
- Stashed terminals no longer affect worktree and project sizing, terminal packing, or drag reordering calculations |
| 0.25.10 | 5 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióChanged
- Offscreen unfocused terminals now park their live runtime while tile rendering stays tied to actual viewport visibility
Fixed
- Parked terminal previews no longer break on ANSI escape boundaries and resumed terminals now recover more reliably without unnecessary resize, font, or WebGL churn
- PTY login shell environment seeding now strips host-session variables like TERM_PROGRAM, CODEX_*, and P9K_* before spawning the shell |
| 0.25.9 | 5 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióFixed
- Bundled skills are now available to Codex after app startup, including challenge, hydra, investigate, and using-termcanvas
- Skill discovery now scans both Codex and Claude skill directories and supports both SKILL.md and skill.md
- Bundled skill installation no longer depends on CLI registration succeeding first |
| 0.25.8 | 5 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióChanged
- Sessions in the right sidebar are now grouped by current canvas visibility, recent activity, and history, with on-canvas sessions prioritized ahead of off-canvas sessions
- Session cards now show shorter activity labels instead of raw long command paths
Fixed
- Duplicate session entries are now deduplicated before the sessions panel updates |
| 0.25.5 | 4 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióFixed
- Release builds no longer fail when Codex session discovery imports node:sqlite; the SQLite dependency is now loaded lazily in the Electron main process path |
| 0.25.3 | 4 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióFixed
- Windows app startup no longer fails when the hook receiver tries to bind a Unix .sock path; it now uses a Windows named pipe
- App startup now degrades safely if the hook receiver cannot start, instead of blocking the main window from opening |
| 0.25.2 | 4 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióAdded
- Automatic CLI integration on first app launch, including Codex/Claude skill installation
Changed
- Settings modal toggles and status text polished for more stable async feedback and localized copy
Fixed
- Hidden unfinished agent message bubble from the app UI
- CLI integration toggle now respects explicit user opt-out while still allowing manual re-enable |
| 0.25.0 | 3 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióAdded
- Live sessions panel and session replay in right sidebar
- Session scanner with managed session discovery
- Session store with IPC subscription
- Right panel tab system with Usage and Sessions tabs
- i18n for sessions panel and replay view
Fixed
- Race guard, error handling, async IO, and user prompt issues (challenge findings)
- Summary CLI stderr capture increased from 200 to 500 chars for better error diagnostics
Changed
- Stable socket path for hook receiver |
| 0.24.2 | 3 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióFixed
- Terminal white screen on spawn and after layout changes: runtime-side usesAgentRenderer guard blocked xterm attachment for claude-type terminals
- Instrument WebGL context loss with toast notification and localStorage counter for observability |
| 0.24.1 | 2 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióFixed
- Terminal white screen: xterm never created because containerRef was null when useEffect ran; switched to callback ref so container availability triggers attachment |
| 0.24.0 | 2 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióAdded
- Challenge gate: 4 parallel adversarial workers review evaluator success verdicts before completing Hydra workflows
- Evaluator skepticism rules: independent assessment before reading implementer claims, no-evidence-no-pass, default to fail when uncertain
Changed
- Browse CLI is now mandatory for Hydra evaluator UI verification (Playwright/Puppeteer/Cypress as fallback only)
- QA skill added to evaluator skill set
Fixed
- Browse CLI missing from Linux symlink registration (CLI_NAMES) |
| 0.23.0 | 2 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióAdded
- Claude Code headless driver via stream-json protocol
- AgentRenderer component suite with theme, status bar, error handling, and auto-scroll
- Agent output rendered inside TerminalTile on canvas
- Slash command autocomplete in agent input box
- Instant slash command loading via filesystem scan
- Session resume across app restarts
- Streaming event coverage for agent messages
- Smooth LERP zoom on Cmd+scroll
Fixed
- IME composition guard for agent input
- Agent mousedown propagation and canvas event isolation (nopan/nodrag/nowheel)
- IPC key separated from Claude Code session ID
- Non-blocking agent start with ref-stable event subscription
- Canvas zoom broken by undefined constant reference |
| 0.22.0 | 2 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióAdded
- Auto-compact worktrees after user opts in via Cmd+Shift+G
Fixed
- Toolbar workspace name overlapping control buttons on narrow windows |
| 0.21.0 | 2 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióAdded
- Hook-first agent observation: push-based telemetry replaces 2s polling as primary state source
- Hook script hardening: 10s timeout, single retry on connection failure, error logging to tmpdir
- HookReceiver health metrics (eventsReceived, parseErrors, lastEventAt) exposed via IPC
- Hook-based CLI type upgrade: shell terminals auto-detected as Claude via SessionStart hook
- Event-driven auto-summary triggered on turn completion instead of 10-minute scan
- Missed hook event detection via pendingPreToolUse tracking with console warnings
- Adaptive telemetry polling: 5s fast fallback when push events go silent, 30s when healthy
Fixed
- foreground_tool guard uses semantic pendingPreToolUse flag instead of 5s time window
- Stale pendingPreToolUse auto-resets after 5 minutes when CC crashes without PostToolUse
- Turn completion deduplication prevents double-firing from session watcher and hook listener
- Process polling reduced from 3s to 15s; session file polling from 2s to 10s
- SessionWatcher fallback polling relaxed to 60s delay / 30s interval |
| 0.20.0 | 2 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióAdded
- SuperHydra P0/P1 agent runtime with filesystem tools, model registry, cost tracking, compaction, o-series adaptation, streaming, fallback model, tool hooks, context injection, and session persistence
- API key encryption at rest via Electron safeStorage
- Approval bridge with policy-based auto-approve and escalation
- JSONL session persistence with append-only transcript and resume
- Composable pre/post tool hooks with permission decisions
- Fallback model and max_output_tokens recovery with progressive retry
- OpenAI o-series adaptation with max_completion_tokens, developer role, reasoning_effort
- Auto-compaction with circuit breaker
- Cost/budget tracking with per-turn USD calculation
- Error categorization and loop-level retry
- Static model capability registry
- ReadFile, GlobFile, GrepFile read-only filesystem tools for agent
- Async/background tool execution with pending task registry
- Structured coordinator system prompt builder
- Challenge skill
- Hydra telemetry enrichment and retry for agent watch
- Hydra watch support for spawned agents
Fixed
- Network errors classified as retryable; compaction same-size loop guarded
- 5 agent review-round bugs: cost model, approval crash, callback imbalance, stale context, dead code
- currentModel passed to provider.stream() so fallback model switch takes effect
- Consecutive same-role messages merged in Anthropic conversion
- Synchronous settled flag for pending task detection
- Provider-level retry removed to eliminate double retry
- HTTP 413 categorized as prompt_too_long
- termcanvas-hook.mjs moved to skills/scripts/ to match registered path
- Hydra spawn uses hydra list instead of hydra watch |
| 0.19.0 | 1 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióAdded
- Smooth stepless zoom and pan with lerp interpolation for fluid canvas navigation
- OpenAI-compatible provider and provider preset definitions for agent runtime
- Agent session isolation, horizontal tab bar, stop button, and auto-scroll active tab
- IPC handlers, preload bridge, and AgentService for main-process agent runtime
- Summarizing indicator in terminal title bar
- CC hook-based lifecycle monitoring pipeline with StopFailure API error detection
- Versioned manifest for skill lifecycle management
- Scrollback buffer increased from 5k to 50k lines
Fixed
- Stashed terminals excluded from keyboard focus cycle and panToTerminal layout
- Native select replaced with custom dropdown for provider picker
- Hub pointer events passed through container to terminal below
- Collapsed hub dropdown no longer blocks terminal title bars
- Text cursor wildcard selector reverted to fix cursor override
- Stale customTitle cleared when session changes
- Summary OAuth auth fixed by replacing --bare with --no-session-persistence
- Socket bind awaited and fallback timer stored on hook runtime
- cleanupOldHydraSymlinks no longer deletes newly-created hydra symlink
Changed
- Agent migrated to unified provider config model |
| 0.18.0 | 1 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióAdded
- Agent runtime: BYOK orchestration engine based on async generator loop with streaming tool_use cycle
- Anthropic BYOK provider with streaming, retry, and abort support
- 9 TermCanvas orchestration tools: CanvasState, Diff, Telemetry, ProjectManage, WorktreeManage, TerminalManage, HydraWorkflow, HydraAgent, BrowseAction
- HTTP client for tools with 3-tier connection resolution and exponential backoff retry
- Floating agent bubble UI: collapsible chat panel with drag, 8-direction resize, ESC to close
- Agent bubble Zustand store for message and task state management
- Terminal auto-summary: AI-generated one-line summaries with session resume and locale-aware prompts
Fixed
- Auto-summary: skip Hydra sub-agent terminals, increase interval to 10min, skip already-summarized
- Terminal: focus terminal after file drop from file tree |
| 0.17.1 | 1 d’abril del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióFixed
- Text selection in terminal top-left area: xterm v6 scroll shadow overlays intercepted mouse events, and mousedown bubbled to Canvas pan handler |
| 0.17.0 | 31 de març del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióAdded
- Terminal stash box: park running terminals and restore them later with PTY kept alive
- Drag-to-stash: drag a terminal past its worktree boundary to stash it
- Right-click context menu "Stash" action on terminal tiles
- StashBox panel (bottom-right) to manage stashed terminals
- Browse tool: headless Chromium sub-package with CLI client and HTTP daemon
- Browse commands: navigation, interaction, screenshots, snapshots, cookies
- QA skill for browser-based testing workflows
- File tree watcher: per-directory fs.watch with IPC bridge
- Rescan watched directories on window focus
- Investigate, security-audit, and code-review skills
Improved
- CLI type detection runs on fixed 1-second interval instead of 3-second idle debounce, no longer blocked by active output
- Stashed terminals stay in worktree with TerminalRuntimeHandle mounted (same as collapse), preventing PTY interruption
- Remaining terminals reflow when a sibling is stashed
Fixed
- xterm v6 text cursor override
- Canvas willChange hit-test offset during animation
- Keyboard Backspace terminal delete now requires confirmation
- React state updater side effect in file tree hook
- xterm scrollToBottom crash on disposed instance during restore |
| 0.16.14 | 30 de març del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióAdded
- Detect Codex bypass state (approval_policy + sandbox_policy) from session JSONL
Improved
- Scan JSONL backwards in 64KB chunks (up to 512KB) instead of fixed tail read |
| 0.16.13 | 30 de març del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióFixed
- Read Claude permissionMode from session JSONL to persist bypass permissions across restarts
- Refresh Claude sessionId and permissionMode before save to capture /resume switches |
| 0.16.12 | 30 de març del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióFixed
- Read Claude permissionMode from session JSONL to persist bypass permissions across restarts |
| 0.16.11 | 30 de març del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióFixed
- Persist CLI auto-approve flag (e.g. --dangerously-skip-permissions) across app restarts
Improved
- Stagger non-focused PTY spawns on restore to reduce fork storm |
| 0.16.10 | 30 de març del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióAdded
- Click collapsed sidebar to expand, with hover highlight
- Enable autoplay on welcome overlay |
| 0.16.9 | 30 de març del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióFixed
- Minimized terminal tile showing xterm content over header instead of title bar with restore button |
| 0.16.8 | 30 de març del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióFixed
- Resolve worktree overlaps when tile dimensions change (window resize, sidebar drag) |
| 0.16.5 | 29 de març del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióFixed
- Left panel resize handle sticking after pointer capture loss |
| 0.16.3 | 29 de març del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióFixed
- Kill process group before removing PTY instance on resize error
- Restrict token and device-id file permissions to owner-only
- Resolve theme-related visual issues across multiple components
- Add 8px inset to terminal tiles within worktree containers
- Remove selection outline from terminal tiles
- Do not trigger onOpenFile when deselecting a memory graph node
- Register welcome drag listeners on step 4 instead of step 3
- Add try/catch to login() to prevent permanent loginPending lock
- Remove terminal tile border classes and inner padding
- Remove terminal tile border and light-only box-shadow
- Deduplicate SessionStart hook by script name to prevent dev/prod double registration
- Account for left sidebar in viewport centering calculations |
| 0.13.0 | 27 de març del 2026 | — | 64 bits EXE (NSIS)64 bits EXE (NSIS) Notes de la versióAdded
- Hydra plan approval gate: --approve-plan flag pauses workflow after planner for user review
- hydra approve command to continue approved plans to implementation
- hydra revise --feedback "..." command to re-run planner with structured feedback
- Human-in-the-loop plan cycle: user → main brain → planner → review → revise/approve → implement → evaluate
Fixed
- Hydra requeue now only deletes done marker, preserving result.json for downstream agents (evaluator findings for implementer, old plan for revised planner)
- Git panel graph rail tightened to shift visual weight toward text |