Skip to content

Releases: Codename-11/SubFrame

v0.15.1-beta

07 Apr 20:26

Choose a tag to compare

Fixes the Windows ConPTY first-byte-drop bug at its root with quiescence-based shell detection, replacing fragile fixed delays with adaptive output polling.

What's Changed

Bug Fixes

  • ConPTY first-byte-drop (root cause fix) — replaced the 80ms fixed delay with waitForOutputQuiet, which polls PTY output timestamps and resolves once output has been silent for 100ms. Handles slow shell profiles (oh-my-posh 800ms+) without wasting time on fast ones
  • Shell-ready detection for non-standard prompts — added quiescence fallback for prompts that don't match regex patterns (oh-my-posh with custom glyphs, etc.). Terminal goes quiet for 250ms → considered ready
  • AI session launch reliability — interactive AI sessions now adapt to actual shell startup time instead of using a fixed delay

Improvements

  • TERMINAL_WRITE_SAFE IPC channel — new quiescence-aware terminal write used by agent launch and AI session manager
  • Workspace pill sorting — auto-sort now respects most-recently-selected order within activity tiers
  • Workspace pill component refactor — extracted WorkspacePillReorderItem for cleaner drag/reorder separation

v0.15.0-beta

03 Apr 20:52

Choose a tag to compare

This release makes code editing a first-class experience in SubFrame — files open as persistent tabs alongside terminals, the FileTree gains full CRUD operations and smart filtering, and workspace pills dynamically surface your most active projects.

What's Changed

Features

  • Editor Tabs in ViewTabBar — Files open as dedicated tabs alongside the Terminal tab. Both are accessible simultaneously — no more choosing between editor and terminal
  • Split Code + Preview — Side-by-side editing and live preview for Markdown, HTML, CSS, and SVG files via a new toolbar button
  • Breadcrumb Navigation — Clickable path bar above the inline editor for quick orientation in deeply nested files
  • File Linting — Real-time syntax diagnostics for JSON, YAML, CSS/SCSS/LESS, and HTML directly in the editor
  • New Language Modes — Syntax highlighting for Go, Shell/Bash, Dockerfile, TOML, and PowerShell
  • File CRUD Context Menu — VS Code-style right-click menu with New File, New Folder, Rename, Duplicate, Delete, Open in Terminal, Copy Relative Path, Copy File Name, and Collapse All — all with icons
  • .gitignore Filtering — FileTree respects .gitignore rules (including nested), significantly reducing noise
  • Lazy Directory Loading — No more 5-level depth limit. Directories load children on demand with loading spinners
  • File Watcher — Tree auto-refreshes when files change on disk (chokidar-based, debounced, gitignore-aware)
  • Dynamic Workspace Pills — Pills auto-sort by activity: running agents first (pulsing green), then terminals (blue), then idle. Smooth Framer Motion animations when order changes
  • Workspace Pill Settings — Toggle auto-sort and configure max visible pills. Manual drag reorder overrides auto-sort with a reset button

Improvements

  • Persistent Editor Sessions — Open editor tabs and the active file survive page reloads and project switches
  • Editor Settings Toggle — "Open Files in Tabs" setting (default: on) with overlay dialog as opt-in fallback
  • Inline Input for File Operations — VS Code-style in-tree text input for create and rename with smart filename selection
  • Delete Confirmation Dialog — Warns about recursive directory deletion before proceeding
  • Three-Tier Activity Indicators — Workspace pills distinguish between agent sessions (green pulse), terminal-only (blue dot), and idle (muted)

Bug Fixes

  • Path Traversal Hardening — File CRUD validates absolute paths and blocks cross-drive .. traversal
  • Dirty Tab Close Guard — Closing an editor tab with unsaved changes now prompts for confirmation
  • Session Restore Validation — Editor tabs filtered to current project scope, preventing ghost tabs from deleted files
  • HTML Linter Accuracy — Rewrote scanner to handle > in quoted attributes, skip comments, and ignore script/style contents
  • CSS Linter Windows CRLF — No longer falsely reports unterminated strings with \r\n line endings
  • File Duplicate Timeout — 5-second timeout prevents hanging on IPC failure
  • Editor State Race Condition — Atomic Zustand updates prevent duplicate entries from rapid double-clicks
  • File Watcher Resilience — Watcher initialization wrapped in try/catch to prevent incomplete state

v0.14.5-beta

03 Apr 13:59

Choose a tag to compare

Critical fix for the updater download that never starts — the root cause of the "Starting download..." stuck toast across all previous 0.14.x releases.

What's Changed

Bug Fixes

  • Updater download never startssetupIPC() runs before init() sets isPackaged, so the if (!isPackaged) early return in setupIPC always triggered in packaged builds. This registered dev-mode no-op stubs (() => {}) for UPDATER_DOWNLOAD, UPDATER_CHECK, and UPDATER_INSTALL instead of the real autoUpdater handlers. The download mutation resolved instantly with undefined, no download ever started, and no error was reported. Fixed by moving the isPackaged check inside each handler (evaluated at invocation time when init() has already run)

v0.14.4-beta

03 Apr 13:38

Choose a tag to compare

Hotfix for the Ctrl+Shift+Enter AI tool launch dropping the first character on Windows.

What's Changed

Bug Fixes

  • Ctrl+Shift+Enter drops first character — launching an AI tool via keyboard shortcut no longer types "laude" instead of "claude". Root cause: on the reuse-terminal path, the command was written to the PTY only ~5-20ms after the keypress (just IPC round-trip time). ConPTY on Windows interpreted the first byte 'c' as Ctrl+C (0x03) because the physical Ctrl key was still held, and the shell silently swallowed it. Added an 80ms delay before the PTY write to allow modifier key release

v0.14.3-beta

03 Apr 02:32

Choose a tag to compare

Stability release fixing the terminal bell/character-drop when launching AI tools via Ctrl+Shift+Enter, and a workspace deactivation bug that could leave the entire UI unresponsive.

What's Changed

Bug Fixes

  • Terminal bell on AI tool launch — Pressing Ctrl+Shift+Enter to start an AI tool no longer triggers a terminal bell or drops the first character of the command (typing "laude" instead of "claude"). Root cause: xterm's attachCustomKeyEventHandler returning false skips xterm's key processing but does not call preventDefault(), so the browser's default textarea input still leaked through to the PTY
  • Workspace deactivation UI freeze — Deactivating a workspace no longer leaves the entire UI unresponsive to clicks. Radix modal context menus set pointer-events:none on <body> while open; if the workspace pill (menu trigger) unmounted before the close animation completed, this style was permanently orphaned. Added post-operation safety cleanup for workspace deactivation and deletion

v0.14.2-beta

03 Apr 01:19

Choose a tag to compare

Stability release focused on fixing the updater download toast lifecycle, filling the nearly-empty Output panel with meaningful system logs, and improving editor keyboard handling.

What's Changed

Bug Fixes

  • Updater toast download flow — Clicking "Download" on the update notification no longer silently dismisses the toast. Fixed three independent root causes: sonner action auto-dismiss race condition, TanStack Query mutation identity churn causing spurious effect re-runs, and updater status loss after renderer hot-reloads
  • Editor F11 fullscreen toggle — Global keydown listener for fullscreen no longer tears down and re-registers on every settings mutation, eliminating brief gaps where the shortcut wouldn't respond
  • SystemPanel layout — Refactored to sidebar-nav settings layout with categorical grouping

Improvements

  • Output channel coverage — 7 managers now write to the Output panel (updater, plugins, settings, agent state, sessions, AI sessions, pipeline). The Extensions channel is no longer permanently empty. System-level events like update checks, plugin operations, AI session lifecycle, and pipeline errors are now visible in the Output tab instead of only in Electron DevTools
  • Updater hot-reload recovery — The main process now tracks and re-broadcasts the last updater status when the renderer reloads, so download progress or "Restart Now" notifications survive hot-reloads
  • Global hooks IPC — New GET_GLOBAL_HOOKS channel reads hooks configuration from ~/.claude/settings.json with source label extraction for the System panel

v0.14.1-beta

02 Apr 03:07

Choose a tag to compare

Fixes workspace pill scrollbar glitches, terminal bell on first input, and adds UI/UX polish across the workspace and terminal systems.

What's Changed

Bug Fixes

  • Workspace pill scrollbar — Vertical and horizontal scrollbars no longer appear on the workspace pill container. Root cause was a CSS spec quirk where overflow-y: visible computes as auto when the other axis is auto.
  • Terminal bell on first input — Bell sound now suppressed by default (opt-in via Settings). Previously, async settings load could leave the bell handler unregistered, causing beeps from shell OSC sequences.
  • Multi-project workspace mixing — Workspaces with multiple directories now default to combined terminal view. No more clicking "Mix" every time you switch workspaces.

UI/UX Improvements

  • Workspace pill overflow indicator — Ellipsis icon appears when hidden pills exist, fades out as they animate in on hover.
  • Workspace pill keyboard navigation — ArrowLeft/Right cycles focus between pills (WAI-ARIA toolbar pattern).
  • Terminal tab rename buttons — Confirm and cancel buttons alongside rename input for pointer/touch users.
  • Terminal creation loading state — Spinner replaces empty state during creation; New Terminal button shows loading indicator and prevents double-clicks.
  • Grid overflow badge — Readable "overflow" text badge replaces the barely-visible dot on terminals exceeding grid capacity.
  • Project badges in combine mode — All terminal tabs show project name badge when workspace mixing is active, with 3-tier styling (native/foreign/pinned).
  • Sidebar workspace selector moved above Projects/Files tab bar for clearer scope hierarchy.
  • StatusBar agent tooltip shows dynamic agent count and click action hint.

Added

  • AI tool capability model — Structured AIToolFeatures interface tracks hooks, streaming, event names, config paths, and docs URLs for Claude Code, Codex CLI, and Gemini CLI.
  • Pipeline agent status feedback — Running pipeline stages show active AI agent tool usage in timeline and log view.

v0.14.0-beta

31 Mar 01:35

Choose a tag to compare

Fixes update notification reliability and connects all output channels to their subsystems for real-time logging in the Output panel.

What's Changed

Bug Fixes

  • Updater 404 error spam — Background update checks no longer show raw stack traces when CI artifacts aren't uploaded yet. 404s are silently swallowed for automatic checks; manual checks show a friendly "try again in a few minutes" message.
  • Download button disappears — Clicking Download in the update toast no longer silently fails. The download handler now immediately reports status and properly surfaces errors if the download can't start.
  • Settings Download no feedback — The Download button in Settings > Updates now shows a disabled/loading state while the download initializes, with a "Connecting..." indicator before progress percentage appears.

Improvements

  • Output channels wired to subsystems — The Output panel (ActivityBar bottom bar) now shows real-time logs from five previously-dormant channels:
    • System — updater events (available, downloaded, errors), session snapshot save/restore
    • Agent — terminal create/exit lifecycle events
    • Pipeline — run start and completion with status
    • API — server startup confirmation
    • Git — branch checkout and create operations

Installation and Update

Grab the latest installer from GitHub Releases.

  • Windows: SubFrame-Setup-0.14.0-beta.exe
  • macOS: SubFrame-0.14.0-beta.dmg

If you already have SubFrame installed, update through the in-app updater or the System Panel.

v0.13.0-beta

30 Mar 23:16

Choose a tag to compare

This release introduces hot-update support so terminal sessions survive app restarts, plus stable workspace pills and shell-ready detection for AI tool launch.

What's Changed

Features

  • Terminal Session Snapshot/Restore — Active terminal sessions are serialized (CWD, shell, scrollback, dimensions, AI agent state) before app quit or update and automatically restored on next launch. Uses atomic file writes to prevent corruption. Respects restoreOnStartup, restoreScrollback, and autoResumeAgent (auto/prompt/never) settings.
  • Renderer Hot Reload — UI-only updates reload the renderer without killing the main process or terminal sessions. PTYs stay alive; xterm instances resync from backlogs via the new TERMINAL_RESYNC IPC channel.
  • Pinned Workspace Pills — Collapsed workspace pills now maintain stable positions using LRU slot tracking. Switching between pinned workspaces just moves the active highlight — no reordering. Selecting a workspace from the expanded overflow replaces the least-recently-used pill.
  • Shell-Ready Detection — Starting an AI tool now waits for shell prompt detection (TERMINAL_SHELL_READY IPC) instead of a blind 1-second delay, with a 3-second fallback. Fixes garbled first command on slow-starting PowerShell sessions.

Bug Fixes

  • Double-save race conditionbefore-quit snapshot is now skipped if graceful shutdown already saved, preventing file corruption from concurrent writes
  • Terminal dimensions — Session snapshots now capture actual PTY cols/rows instead of hardcoded 80x24
  • Per-tool agent resume — Snapshot restore uses claude --continue for Claude Code and plain relaunch for Codex/Gemini
  • Session ID on resync — Hot reload now passes sessionId through to the Zustand store for proper session tracking

Installation and Update

Grab the latest installer from GitHub Releases.

  • Windows: SubFrame-Setup-0.13.0-beta.exe
  • macOS: SubFrame-0.13.0-beta.dmg

If you already have SubFrame installed, update through the in-app updater or the System Panel.

v0.12.1-beta

29 Mar 20:39

Choose a tag to compare

Patch release adding AI tool configuration management and UI polish.

What's Changed

Features

  • AI Tool Configuration — new section in System panel showing config file status for Claude Code, Gemini CLI, and Codex CLI at both global (~/) and project levels. Collapsible per-tool sections with inline summary (files found + warning count). Detects and validates: CLAUDE.md, GEMINI.md, AGENTS.md, settings.json, instructions.md — with warnings for invalid JSON, empty files, and large files. Open existing files in editor or create from templates.

Bug Fixes

  • Panel dropdown indicator — the right panel group selector now shows a ChevronDown chevron so it's clear the active panel name is a clickable dropdown
  • AI Analysis shortcut conflict — changed from Ctrl+Shift+I (conflicts with Electron DevTools) to Ctrl+Shift+J

Installation and Update

Grab the latest installer from GitHub Releases.

  • Windows: SubFrame-Setup-0.12.1-beta.exe
  • macOS: SubFrame-0.12.1-beta.dmg

If you already have SubFrame installed, update through the in-app updater or the System Panel.