con

Release history

Changelog

Track what changed in con, from shipped app behavior to installer and platform fixes.

con is still in beta, so notes are grouped by release train while the product settles.

Channel
Beta
Archive
55 releases
Platforms
macOS · Windows · Linux
Release

v0.1.0-beta.76

Changed

Sidebar

  • Polished the Files/Search sidebar controls, file-tree hover treatment, and dark-mode chrome affordances so sidebar tools stay readable without adding extra visual weight. (PR #215 by @wey-gu)

Fixed

Build

  • Hardened Windows and Linux libghostty-vt builds against transient Zig package fetch failures during both zig build -h probing and the actual VT build, so release builds retry after prewarming Zig's package cache instead of misreporting a package-fetch error as a missing libghostty-vt build knob. (PR #215 by @wey-gu)

Sidebar

  • Fixed a sidebar hover performance regression by keeping file-tree hover state on stable row elements and explicitly occluding sidebar surfaces from the embedded terminal underneath. (PR #215 by @wey-gu)

Settings

  • Corrected the Settings unsaved-state colors in light and dark themes so the warning status uses the semantic warning color instead of the foreground color intended for text on warning backgrounds. (PR #215 by @wey-gu)

Release

v0.1.0-beta.75

Fixed

macOS

  • Changed the default Next/Previous Surface shortcuts from Cmd+Option+] / Cmd+Option+[ to Cmd+Control+] / Cmd+Control+[ because macOS resolves Option+bracket to punctuation before Con can receive it as a shortcut. Existing configs with exactly the old default values are migrated on load. (Issue #211, PR #214 by @wey-gu)
  • Fixed macOS IME commits in Ghostty terminal panes so Chinese/Pinyin and WeChat IME text repaints immediately, candidate windows stay anchored to the current cursor bounds, and marked preedit text is rendered at the terminal cursor. (Issue #210, PR #213 by @sundy-li)

Release

v0.1.0-beta.74

Changed

Linux

  • Polished the Linux integrated titlebar and terminal surface so one-tab and multi-tab windows keep consistent titlebar controls, sidebar actions remain reachable from the chrome, X11 rounded corners match tiled/free-corner states more closely, and transparent terminal panes avoid double-tinted backgrounds. (PR #203 by @wey-gu)

Fixed

Sidebar

  • In vertical tabs mode, creating or duplicating a tab while the left sidebar is hidden now reveals the compact tab rail, keeping existing tabs visible without opening the Files/Search drawer or the full session panel. (PR #212 by @wey-gu)

Terminal

  • Hardened startup environment handling so terminals launched from wrapper shells do not inherit Conductor's temporary zsh integration directory as their own ZDOTDIR, preserving the user's normal prompt and shell rc loading. (PR #212 by @wey-gu)

Release

v0.1.0-beta.73

Fixed

Terminal

  • Improved terminal input responsiveness by keeping normal keypresses out of workspace focus-change handling, making input-bar pane metadata sync idempotent, reasserting the active input target when returning to a Con window from another app, and moving skill discovery filesystem work off the render path. (PR #208 by @wey-gu)
Release

v0.1.0-beta.72

Changed

Sidebar

  • New installs and configs that omit appearance.tabs_orientation now default to vertical tabs. Explicit tabs_orientation = "horizontal" configs still keep the horizontal top tab strip. (PR #205 by @wey-gu)

Fixed

Build

  • Made the macOS libghostty build retry path prefetch Zig package dependencies into the same global cache used by the retry build, and use shallow git fetches for git-backed Zig packages, so transient Zig package fetch failures are less likely to block local or CI builds. (PR #204 by @sundy-li)
Release

v0.1.0-beta.71

Added

Editor

  • Added the first built-in code editor surface, with editable multi-file editor panes, file-tree and search panels in the left sidebar, syntax highlighting, basic diagnostics, save/undo/selection support, and editor panes that participate in the existing split-pane flow. (PR #179 by @sundy-li)

Fixed

Sidebar

  • Restored vertical tabs inside the left sidebar and brought back full sidebar hide/unhide behavior. appearance.tabs_orientation again controls horizontal vs. vertical tabs, and Files/Search now opens as a lightweight drawer instead of a permanent second sidebar beside vertical tabs. Follow-up normalization made Files/Search and sessions one left-sidebar system, so the active panel sits beside the tool/session rail instead of overlaying terminal content, uses the same total width as the unfolded session list, and folds cleanly back to the rail from any active panel. (PR #194 by @wey-gu, PR #200 by @wey-gu, PR #201 by @wey-gu)
  • Added first-class Files and Search Files commands, menu items, command palette entries, editable keybindings, and defaults (Cmd+Option+E for Files on macOS, Ctrl+Shift+E for Files on Windows/Linux, and Cmd/Ctrl+Shift+F for Search). Search Files focuses the search query immediately. (PR #201 by @wey-gu)

Editor

  • Closing the last file in an editor-only pane now returns the tab to a terminal instead of leaving an empty editor surface behind. (PR #201 by @wey-gu)
  • Softened inactive editor and pane titles so unfocused file/editor chrome no longer renders with a heavy outlined look. (PR #201 by @wey-gu)

macOS

  • Bundled Ghostty's compiled xterm-ghostty terminfo database inside the macOS app, so release builds can use the same terminal capabilities as local cargo run builds. The macOS verifier now fails the release if the terminfo entry is missing. (PR #195 by @sundy-li)

Tabs

  • Fixed vertical tab titles so changing directories clears stale AI-generated labels immediately and ignores late summary responses for the previous directory. (PR #192 by @iknowu10)

Changed

Workspace

  • Replaced vertical tabs with an always-visible left activity rail and a collapsible Files/Search panel while keeping horizontal tabs as the tab surface. Existing toggle_vertical_tabs keybindings and vertical_tabs_width session values are accepted as compatibility aliases. (PR #179 by @sundy-li)

Docs

  • Added shell-integration troubleshooting to the install guide, with manual zsh, bash, and fish fallback snippets for users whose startup files prevent Ghostty's auto-injection from loading. (PR #187 by @iknowu10)
Release

v0.1.0-beta.70

Fixed

AI Providers

  • Fixed MiniMax, Moonshot, and Z.AI provider settings so switching a provider between OpenAI-compatible and Anthropic protocol modes preserves the intended endpoint preset. Domestic/China base URLs no longer fall back to the global endpoint after saving and reopening Settings. (Issue #178, PR #189 by @wey-gu)
  • OpenAI Compatible providers can now be saved and used without an API key, so local services such as OMLX do not require a fake sk-... credential just to pass Settings validation. Explicit keys and env-var credentials still work for hosted endpoints. (Issue #147, PR #189 by @wey-gu)

UI

  • Fixed UI font-size scaling in terminal-adjacent chrome: the bottom input bar, agent panel messages, and run-trace cards now follow the Appearance → UI Size setting instead of staying at small fixed system sizes. (Issue #190, PR #191 by @wey-gu, reported by @leek_ed)

macOS

  • Set GHOSTTY_RESOURCES_DIR from the installed app bundle when the build-time Ghostty resources path is unavailable, so manual shell-integration source fallbacks work in release builds as well as cargo run builds. (PR #188 by @wey-gu, following PR #187 by @iknowu10)
Release

v0.1.0-beta.69

Added

macOS

  • Added the standard M shortcut and Window menu action for minimizing Con windows, including terminal-focused windows. (PR #175 by @chenghuzi)

Developer Experience

  • Added a mise-pinned contributor toolchain for Rust, Zig, and CMake, and updated the hacking guide so new contributors can bootstrap the exact supported build tools with mise install before running the usual checks. (Issue #174, PR #183 by @tao12345666333)

Changed

Windows

  • Improved the default Windows terminal pane presentation with a small content inset and native-edge caption alignment, so the prompt no longer sits flush against the window edge, the inset gutter matches the terminal background, and the close button reaches the right edge of the titlebar. (Issues #131 and #34, PR #169 by @wey-gu)

Fixed

Keyboard Shortcuts

  • Fixed shortcut lifecycle issues in Settings: changed shortcuts now apply immediately without restarting Con, duplicate assignments are blocked with a clear conflict warning, and the command palette shortcut now refocuses the palette instead of getting stuck when pressed repeatedly while modifiers are held. (Issue #182, PR #186 by @wey-gu)

Panes

  • Fixed pane-local surface tab strips so they use the same themed chrome backing as split-pane title bars instead of leaking transparent window content, and tightened their spacing, typography, and active/hover states. (PR #184 by @wey-gu)

Windows, macOS, and Linux

  • New windows opened from an existing Con window now inherit the focused terminal's current directory instead of falling back to the shell default home directory. (PR #185 by @iknowu10)

Windows

  • Improved Windows CJK rendering by anchoring fallback CJK glyphs to the terminal cell baseline, drawing East Asian text through a medium-weight DirectWrite format, and applying only a moderate CJK-specific grayscale contrast boost. This reduces vertical drift and thin-looking Chinese strokes without over-darkening Latin text or Nerd-Font prompt icons. (Issues #124, #78, and #34, PR #169 by @wey-gu)
  • Raised the Windows alternate-screen background opacity floor for full-screen TUIs such as htop and vim to a solid app canvas, so their default-background screens match Windows Terminal/Ghostty instead of compositing with shell content underneath. Ordinary shell panes still keep the configured terminal glass effect. (Issue #34, PR #169 by @wey-gu)
  • Polished Windows and Linux caption-button hover states so minimize and maximize/restore give visible feedback instead of only the close button feeling interactive. (Issues #18 and #34, PR #169 by @wey-gu)
  • Stopped stale Windows terminal frames from stretching while panes close, split, or resize, so existing terminal content no longer appears briefly zoomed before the next renderer frame arrives, and covered newly exposed stale-frame gaps with the terminal background instead of leaking transparent window content. (Issue #34, PR #169 by @wey-gu)
  • Fixed restored Windows sessions so the saved working directory remains the ConPTY launch/current-directory fallback until shell integration reports a newer path. Con now also installs a lightweight PowerShell/pwsh prompt hook that emits cwd updates, so restored Windows sessions follow directory changes made after startup; the portable VT wrapper now captures OSC 7 directly because libghostty-vt's terminal-only stream intentionally ignores cwd reports. (Issue #34, PR #169 by @wey-gu)

Windows and Linux

  • Tightened portable terminal chrome coverage so pane dividers, vertical-tab edges, input bar motion, and agent-panel drag/show/hide transitions use terminal-colored seam covers and terminal-matched backing instead of transparent hit areas that could leak the desktop/window backdrop during fast movement. (Issues #18 and #34, PR #169 by @wey-gu)
  • Matched macOS terminal behavior on the portable backends: when a user has scrolled back and then types or pastes input, the viewport now returns to the live prompt instead of leaving the terminal parked in history. (Issues #18 and #34, PR #169 by @wey-gu)
  • Fixed terminal selection copy semantics on the portable backends: Ctrl+C now copies and clears the current selection when text is selected, while still sending interrupt when nothing is selected. The Linux preview also now supports left-drag text selection in the terminal pane and clears stale highlights when fresh terminal output replaces the grid. (Issues #177, #18, and #34, PR #169 by @wey-gu)
  • Made portable terminal selections scrollback-stable: when the viewport moves while text is selected, the highlight now remains attached to the selected terminal content instead of staying pinned to the same screen rows. (Issues #18 and #34, PR #169 by @wey-gu)
Release

v0.1.0-beta.68

Added

Developer Experience

  • Added con-test, a sqllogictest-style E2E runner for driving real Con sessions through con-cli, with inline match modes, rewrite support, macOS E2E CI, and initial control-plane coverage for system, tab, pane, workspace, and agent-panel flows. (PR #170 by @sundy-li, PR #173 by @sundy-li)

Agent and Settings

  • Added control-plane commands for opening the agent panel for a request and reading panel state, plus [network] proxy settings that can override or clear shell-inherited HTTP_PROXY / HTTPS_PROXY values. (PR #173 by @sundy-li)

Changed

Panes

  • Refined split-pane chrome so the active pane gets a compact accent-colored dot and pane title bars use the theme title-bar surface instead of transparency, keeping them readable over translucent windows. (PR #173 by @sundy-li, PR #176 by @sundy-li)

Docs

  • Added the code editor integration design for the activity bar, file tree, and editor area layout that will host future editor work.

Fixed

Startup Environment

  • macOS and Linux GUI launches now inherit the user's login-shell environment before applying Con config, so PATH, language toolchains, and proxy variables match terminal-launched sessions more closely. (PR #173 by @sundy-li)
Release

v0.1.0-beta.67

Fixed

Tabs and Panes

  • New panes created by Con's agent/control plane now inherit the focused pane's working directory, and new tabs inherit the active terminal's restored working directory instead of dropping back to the shell default. (Issue #171, PR #172 by @wey-gu)
Release

v0.1.0-beta.66

Changed

Settings

  • Matched the standalone Settings window titlebar to Con's main macOS window chrome while leaving the existing Windows and Linux settings-window frame behavior unchanged. (PR #166 by @wey-gu)

Docs

  • Added the Quick Terminal screenshot to the user guide and screenshot gallery, credited its original contributor, and linked the hosted docs, changelog, and llms.txt agent index from the README. (PR #167 by @wey-gu; Quick Terminal was introduced in PR #135 by @sundy-li)

Fixed

Tabs and Panes

  • Preserved user-assigned tab accent colors across inactive tabs, vertical tab entries, and split-pane title bars at lower emphasis, and shortened pane titles to the final path component on Unix and Windows-style paths. (PR #168 by @sundy-li)
Release

v0.1.0-beta.65

Added

Tabs

  • Added tab context actions for Rename, Duplicate Tab, Close Tab, Close Other Tabs, Close Tabs to the Right, and per-tab accent colors across the horizontal tab strip and vertical sidebar. Duplicate Tab now preserves the full pane layout and each pane's working directory. (PR #162 by @sundy-li)
  • Improved horizontal and vertical tab drag reordering with live drop previews and safer bounds handling, so fast drags clear stale drop targets instead of accidentally reordering after the cursor leaves the tab area. (PR #162 by @sundy-li)

Changed

Docs

  • Clarified official install paths versus community package-manager paths, including AUR con-bin maintainer credit for czyt, Scoop bucket credit for EFLKumo, and screenshot placement across the public docs. (PR #164 by @wey-gu)

Fixed

macOS

  • Fixed the remaining Intel Mac live-resize flash by ensuring Con no longer forces a synchronous Ghostty Metal draw before AppKit has committed the hosted surface's final layer bounds for that resize frame. (Issue #70, PR #163 by @wey-gu)

Windows

  • Fixed continuously updating TUIs such as Codex, top, watch, and btop freezing until the next click or key press. The Windows renderer now drains completed staging frames under sustained output, caps fallback presentation at the display cadence, and schedules the final catch-up frame when output stops. (PR #116 by @wey-gu)
Release

v0.1.0-beta.64

Added

macOS

  • Enabled Ghostty SSH shell-integration features for macOS terminal sessions, so remote SSH hosts can receive xterm-ghostty terminfo and terminal environment hints while Con still preserves its own cursor-style setting. (PR #159 by @chenghuzi)

Panes

  • Added pane title bars for split layouts, with direct close and fullscreen controls on each pane. (PR #149 by @sundy-li)
  • Added pane title-bar dragging. Drag a pane title to rearrange split panes, or drop it into the tab strip to promote that pane into its own tab. (PR #149 by @sundy-li)
  • Added an Appearance setting to hide pane title bars when you want the sparsest terminal-only layout. (PR #149 by @sundy-li)

Fixed

macOS

  • Fixed embedded Ghostty surface scale sync when moving a window between Retina and non-Retina displays. Existing panes now update display id, backing scale, layer scale, and pixel size together instead of keeping stale cell metrics. (PR #150 by @chenghuzi)
  • Fixed a live-resize flash regression on Intel Macs by committing embedded Ghostty backing size before moving the AppKit surface hierarchy, avoiding a one-frame mismatch between the Metal surface and terminal framebuffer. (PR #152 by @wey-gu)

Windows, Linux

  • Fixed terminal Ctrl+<punctuation> C0 chords such as Ctrl+], Ctrl+/, Ctrl+@, and Ctrl+Space, so tmux prefixes like set -g prefix C-] now send the expected control byte instead of being dropped or typed literally. The surface control API also accepts legacy ctrl-2..8 aliases for automation, while interactive Ctrl+1..9 remains reserved for tab switching on Windows and Linux. (PR #156 by @wey-gu)

Panes

  • Fixed pane-drag preview cleanup so canceled or completed drags do not leave a stale tab-promotion preview behind. (PR #149 by @sundy-li)
  • Fixed pane reordering so only true direct-sibling no-op moves are ignored; cross-subtree moves now land in the requested split position. (PR #149 by @sundy-li)

Developer Experience

  • Made the portable CI Zig installer retry against Con's mirror if the primary Zig download fails. (PR #149 by @sundy-li)
Release

v0.1.0-beta.63

Added

macOS

  • Added Quick Terminal to the command palette on macOS, matching the View menu entry so it can be opened while Con is frontmost even when the global hotkey is disabled. (PR #146 by @nowledge-co)

Fixed

macOS

  • Fixed pane-local surface geometry drift that could make TUI output appear clipped after switching between surfaces or changing pane layouts. Activating a surface now revalidates Ghostty's embedded terminal size against the current pane before exposing it. (PR #146 by @nowledge-co)

Linux

  • Fixed Linux preview terminal rows wrapping like prose in split panes. Rows now stay on one fixed terminal line and clip at the pane edge, which prevents TUI layouts from reflowing into later rows. (PR #146 by @nowledge-co)

Changed

Developer Experience

  • Added low-noise macOS surface geometry diagnostics behind CON_GHOSTTY_PROFILE, so reproduced pane/surface clipping reports can include a log file and con-cli surfaces list snapshot without requiring a special debug build. (PR #146 by @nowledge-co)
Release

v0.1.0-beta.62

Added

macOS

  • Added Quick Terminal, an optional macOS-only floating terminal window that slides down from the active screen, keeps its live tabs/panes while hidden, and can return focus to the app you were using before it appeared. It is off by default; enable it in Settings -> Keys and use Cmd-Backslash or your chosen shortcut.
  • Added public Quick Terminal documentation covering setup, hide/show behavior, live state, destruction, and the difference from Summon / Hide Con.
  • Added New Window to the macOS Dock menu, so right-clicking the Dock icon can open a fresh Con window without first focusing an existing one.

Developer Experience

  • Added a cross-platform justfile for common build, run, test, release, install, and cleanup flows. The default recipes now dispatch through the Windows-safe cargo w* aliases when needed while staying simple on macOS and Linux.
  • Kept project-local .con/workspace.toml profiles commit-friendly. Con still treats private runtime state separately, while generated layout profiles can live with the project when a team wants to share them.

Changed

Settings

  • Shortcut recording now temporarily suspends macOS global hotkeys and restores the previously active persisted shortcuts when recording is canceled, saved, or dismissed.
Release

v0.1.0-beta.61

Added

Tabs

  • Added inline rename for horizontal tabs. Double-click a tab title to edit it in place, with focus-time select-all, Enter/blur save, and Escape cancel.
  • Added browser-style drag reorder for horizontal tabs, including left/right drop slots and a real trailing drop target after the last tab.

Distribution

  • Bundled con-cli with every release artifact. macOS now ships it inside the app bundle and exposes it through Homebrew/script installs; Linux tarballs install both con and con-cli; Windows ZIP/script installs include con-app.exe and con-cli.exe.
  • Added a conservative macOS launch-time self-heal for ~/.local/bin/con-cli so manual-DMG installs and Sparkle-updated app bundles converge to the same CLI availability as installer/Homebrew installs without overwriting user-managed binaries.
  • Added release verification for the macOS app bundle so a signed/notarized build cannot ship without the control-plane CLI.
  • Added blocking release gates for installer/update safety. macOS and Linux release jobs now verify artifact layout before upload; Windows verifies the ZIP contains both con-app.exe and con-cli.exe; the finalizer refuses to publish a draft unless all expected assets, appcasts, and gh-pages installer scripts are present and point at the same tag.
  • Tightened those release gates after review: appcasts are now parsed as XML, each macOS architecture publishes its own checksum asset, the finalizer runs from the tagged revision, and the macOS CLI shim ignores transient DMG/test app bundles.
  • Hardened internal v*-dev.* release behavior so dev smoke tags are scoped to dev app names/bundle ids, never embed/update stable/beta appcasts, and never update Homebrew casks while the final gate still validates their artifact shape.
  • Aligned the Linux runtime app id, desktop entry filename, and StartupWMClass as co.nowledge.con so Wayland and X11 launchers can group running Con windows with the installed app entry.
  • Made the release finalizer sync hosted installer scripts from the tagged commit before promotion, so dev smoke tags can test the real install.sh / install.ps1 path without moving beta/stable appcasts or Homebrew casks.
  • Fixed macOS release signing order so the bundled con-cli executable is signed before the main app executable and notarized DMGs are not blocked by unsigned nested code.
  • Documented that con-cli is part of the normal install path for surface orchestrators such as pi-interactive-subagents.

Changed

Settings

  • Settings header now shows last-saved time — "Saved just now", "Saved Xm ago", or "Saved Xh ago" with a check-circle icon after a successful save. The timestamp is seeded from config.toml's modification time on init so the indicator persists across settings window reopens.
  • Added cmd-s (macOS) / ctrl-s (Windows/Linux) keybinding to trigger Save Changes from anywhere in the settings panel.
  • Added cmd-w (macOS) / ctrl-w (Windows/Linux) to close the standalone settings window or save-and-dismiss in panel mode. Closing via cmd-w now correctly reverts any unsaved standalone preview changes, matching the existing Escape path.
  • Save Changes button in the standalone settings window now shows a ⌘ S / Ctrl S keycap hint.

Fixed

Tabs

  • Made sidebar and horizontal tab rename lifecycles consistent: unchanged rename blur restores terminal focus without pinning smart AI/SSH/CWD labels, while real edits still persist as explicit user names.
  • Prevented Escape-cancelled rename editors from committing through delayed blur events, even if the user immediately reopens rename on the same tab.
  • Kept macOS titlebar dragging from stealing tab drag/click interactions while preserving the normal double-click titlebar behavior.
Release

v0.1.0-beta.57

Added

Restorable Workspaces

  • Added the first restorable-workspace implementation slice. Private session layout now round-trips every pane-local surface, including surface id, title, owner, cwd, active surface, and close-pane-when-last policy, instead of restoring only the active surface in each pane.
  • Added the first private screen-text continuity slice. Con now snapshots bounded recent terminal text per pane-local surface and seeds it back through the terminal parser before the shell starts on macOS, Windows, and Linux, so restored text lives in terminal content instead of a UI overlay. This does not replay commands or export terminal text into workspace layouts.
  • Added a typed, validated, layout-only .con/workspace.toml schema for future Con-generated export/import flows. The schema covers tabs, panes, surfaces, split geometry, cwd, and optional agent defaults, but deliberately excludes commands, conversations, history, scrollback, credentials, and trust decisions.
  • Added the first layout-profile workflow. Use Command Palette or the Workspace menu to save the current window as a .con/workspace.toml, add a project folder/profile as tabs in the current window, or open a project folder/profile in a new window.
  • Added project layout startup for explicit paths: con <project-folder> opens <project-folder>/.con/workspace.toml when it exists, while con <workspace.toml> opens that profile directly. Plain con still prefers private session restore.
  • Documented the production restore model: local continuity and project-local memory come first, exported layouts are generated from user-tuned workspaces, and command/task files remain a separate future workflow.
  • Documented the layout-profile "aha" flow and gesture semantics so users can distinguish automatic private restore, scratch windows, and explicit project layouts.
  • Added a Restore Terminal Text privacy control in Settings -> General -> Continuity and a Clear Restored Terminal History Command Palette action that disables the feature and wipes saved restored text.

Changed

Startup

  • When a second Con process sees an already-live control endpoint, it now opens a fresh window session with shared history instead of cloning the last restored layout and agent conversation again. Full single-instance forwarding remains a follow-up under the app-state workspace model.
  • Debug builds now use an isolated default control endpoint (/tmp/con-debug.sock on Unix and \\.\pipe\con-debug on Windows). This lets cargo run -p con coexist with an installed Con without suppressing the dev build's private workspace restore.

Fixed

Startup

  • Bounded the Unix and Windows control-endpoint probes used during second-process startup so a stale or wedged socket/pipe cannot hang Con while deciding whether to restore the saved workspace or open a fresh window.
  • When con <path> cannot open the requested workspace profile, Con now opens a fresh shell with a visible terminal-layer error message instead of silently falling back to unrelated private restore state.
  • Kept the workspace-profile error message visible even when restored terminal text continuity is disabled, without re-enabling private terminal-text restore for normal panes.

Workspace Layout Profiles

  • Fixed cross-platform layout export so repo-relative cwd values are written with stable slash-separated paths on Windows, macOS, and Linux.
  • Avoided capturing terminal text when exporting layout profiles, since exported profiles deliberately exclude runtime text history.
  • Honored the Restore Terminal Text privacy setting when adding tabs from an imported layout profile, and prevented imported inactive native terminal views from staying visible behind the active tab.
  • Kept terminal-text continuity default-on for existing beta users as well as new installs, while preserving the explicit Settings opt-out and Clear Restored Terminal History wipe action.
  • Rejected edited layout profiles that define multiple panes without a layout tree, and made Con synthesize a safe split tree when exporting legacy private sessions that still have panes without layout metadata.
  • Persisted shell cwd changes as soon as Ghostty reports OSC 7/PWD, so restored tabs, panes, and surfaces come back in the last reported directory instead of depending on a later unrelated save or graceful quit.
  • Kept restored terminal text out of cwd decisions. Con now treats Ghostty's reported PWD as the authoritative path, avoiding stale restored prompt text overriding the live shell directory.

Terminal, Windows and Linux Backends

  • Hardened split-pane dividers on Windows and Linux by giving the resize seam a real hit target while keeping the visible separator at one pixel. This avoids fragile overflow hit testing around terminal panes.
  • Preserved restored terminal text on Linux when the IME system only prepares composition without actual marked text.

Terminal, macOS

  • Made the embedded Ghostty initial-output restore hook fail soft for local best-effort builds while keeping macOS release packaging fail-hard, so upstream anchor drift blocks a release instead of silently shipping without terminal text seeding.
  • Fixed cwd restore for macOS privacy-protected directories such as Documents and Downloads. Con's embedded Ghostty path now trusts the shell-integration cwd passed by the app instead of rejecting it during directory open/stat preflight, which macOS may deny even when the shell can cd there.
Release

v0.1.0-beta.54

Added

Control Plane

  • Added human-facing rename for pane-local surfaces. Surface names can now be changed from Command Palette, the terminal context menu, the app menu, or by double-clicking a surface tab in the pane-local strip. This complements the existing surfaces.rename CLI/API path for orchestrators.
  • Added configurable shortcuts for every human surface action: create in pane, split right/down, next/previous, rename, and close. These now show in menus, Command Palette, and Keyboard Shortcuts.
  • Polished pane-local surface chrome so humans can distinguish panes from surfaces: owned or named single-surface panes now show an in-pane surface rail, surface tabs use stable Surface N fallback names instead of duplicate terminal cwd titles, rename edits inline in the rail, and tabs expose close plus right-click Rename/Close actions.
  • Clarified the human surface model in menus and docs: surfaces are tab-like sessions inside one pane, while surface split commands create a new visible pane first. The terminal context menu now also includes Settings for direct access.
  • Refined the in-pane surface rail from a full-width header into compact local chrome, so a pane with multiple surfaces no longer looks like another nested pane split.

Changed

Command Palette

  • Normalized the command palette to Con's current design language: system UI typography, quieter selected-row treatment, a softer search well, and cleaner shortcut alignment.
  • Rendered shortcuts as separate keycaps in the Command Palette and terminal context menu, with platform-aware labels on macOS, Windows, and Linux.

Fixed

Control Plane

  • Kept inactive pane-local surfaces sized to their host pane while they are hidden. TUI coding agents launched in background surfaces now receive the same terminal rows/columns they will have when focused, avoiding incorrect layout assumptions in multi-surface orchestrator workflows. Fixes #108.
  • Fixed a crash when committing an inline surface rename from the pane-local surface rail.

Terminal, macOS

  • Fixed Clear Terminal from the app menu and Command Palette by passing the Ghostty binding action name correctly to the embedded terminal.

Terminal, Windows and Linux Backends

  • Wired Clear Terminal for the preview backends so the shared menu and Command Palette action clears the local VT screen and scrollback there as well.

Input Bar

  • Made AI command suggestions more tolerant of provider latency: if a completion arrives after the user has typed further into the same suggested command, Con now still shows the remaining ghost text instead of dropping the result as stale.
Release

v0.1.0-beta.53

Fixed

Terminal, macOS

  • Restored terminal glass after the macOS seam-leak hardening work. Modern macOS now lets Ghostty own terminal opacity/blur again instead of drawing a second translucent AppKit backing behind the Metal surface, while legacy macOS keeps its opaque fallback.
  • Restored configured UI chrome opacity for the tab bar, input bar, side bar, and agent panel. Opaque terminal-colored mattes now stay limited to seam guards; the native full-window transition underlay is disabled whenever terminal glass is active so hide/show animations no longer make the terminal temporarily opaque. Modern macOS now also uses GPUI's native blurred window backdrop when terminal blur is enabled, and terminal-adjacent bottom bar, agent panel, top tab strip, and vertical-tabs geometry snap with short reservation/release guards so native Ghostty views are not exposed before AppKit has resized them.
Release

v0.1.0-beta.52

Added

Control Plane

  • Added Command Palette entries for pane-local terminal surfaces. Users can now create the first surface as a visible split, create additional surfaces inside the focused pane, cycle between surfaces in that pane, and close the current surface without reaching for con-cli.
  • Added a terminal right-click context menu across macOS, Windows, and Linux. It exposes paste/copy/clear, pane split and zoom controls, pane-local surface controls, Focus Input, and Command Palette through the same action system as keybindings and the app menu.
Release

v0.1.0-beta.50

Terminal, macOS

  • Now zoom window can be done double-click on titlebar
  • Zoomed window fixed buttom one pixel spacing leaked

Fixed

Release

v0.1.0-beta.49

Fixed

Terminal, macOS

  • Fixed macOS window zoom/fullscreen behavior so Con no longer leaves a bottom gap from terminal cell-sized AppKit resize increments, and restored double-click titlebar zoom behavior on the in-app tab bar.
  • Improved macOS Monterey fallback for the embedded Ghostty terminal. On macOS 12 and older, Con now explicitly keeps Ghostty's hosted IOSurface layer geometry synchronized with the native surface view, addressing reports where old macOS showed an opaque black terminal area but no visible output. Modern macOS keeps Ghostty's existing layer ownership unchanged. Tracks #20.
Release

v0.1.0-beta.48

Fixed

Terminal, Linux Backend (preview)

  • Fixed Linux release artifacts so libghostty-vt is built for a generic Zig target instead of the CI runner's native CPU. This avoids Illegal instruction startup crashes on WSL and older x86_64 hosts whose CPUs do not expose the same instruction-set extensions as the release builder. Fixes #97.

Agent Panel

  • Fixed inline LaTeX in markdown responses so $...$ formulas are typeset through the same cached SVG pipeline as block math instead of being shown as raw formula text. Inline formulas now inherit the surrounding text color and sit inside the prose line box for cleaner spacing. Fixes #88.
Release

v0.1.0-beta.47

Added

Terminal, Windows and Linux Backends

  • Added CJK IME text input for Windows and Linux terminal panes. IME commits now enter through GPUI's platform text-input path, preedit state tracks candidate positioning at the terminal cursor, and terminal-local control / alt / special key handling remains unchanged. The macOS embedded Ghostty path is unchanged.

Workspace

  • Added a quick vertical-tabs toggle in the top bar, Command Palette, and Keyboard Shortcuts. Defaults: Cmd+B on macOS, Ctrl+Shift+B on Windows and Linux.
  • Added draggable resizing for the pinned vertical-tabs panel. The resized width is persisted in session state and restored across launches.

Control Plane

  • Added pane-local terminal surfaces for external orchestrators. Existing panes.* APIs, built-in agent tools, and benchmarks keep the active-surface pane contract, while new tree.get and surfaces.* RPC/CLI commands can create, split, wait for readiness, focus, rename, drive, read, and close terminal sessions inside a pane.

Fixed

Terminal, macOS

  • Reduced transparent-window flashes along moving chrome seams. Agent-panel transitions, input-bar transitions, the top-bar transition, the vertical-tabs edge, the input-bar edge, and pane dividers now use tiny opaque terminal-colored seam covers on macOS instead of exposing a transparent gap or UI-colored matte.
  • Restored visible macOS terminal pane dividers without reopening the transparent-window leak path. Split separators are now a subtle opaque foreground tint precomposed over the terminal background, so users can read pane boundaries while every separator pixel still stays fully opaque.
  • Polished the standalone Settings window's Save Changes action so it reads as compact header chrome: visible enough to find, but no longer a loud primary-blue slab.
  • Further hardened macOS transparent-window composition by precomposing chrome surfaces over the terminal color and letting the native Ghostty host backing slightly overdraw under GPUI seams. Fast sidebar, agent-panel, input-bar, split, and zoom motion should no longer reveal bright desktop pixels through clear backing gaps.
  • Stopped continuously reflowing the macOS terminal layout during the right agent-panel hide/show animation. The panel content still animates, but the terminal/panel boundary snaps to a stable geometry so fast toggles do not expose clear backing between GPUI and the native Ghostty view.
  • Added a temporary native underlay below visible macOS Ghostty surfaces during chrome transitions. It catches clear-window backing during rapid input-bar, agent-panel, tab-strip, and vertical-tabs toggles without drawing a matte over terminal text.

Control Plane

  • Hardened pane-local surface lifecycle behavior so owned ephemeral worker panes can close when their final surface closes, inactive surfaces keep correct pane membership, replacement surfaces are materialized before focus moves to them, and surfaces.wait_ready only reports ready once the terminal is live with shell integration.
Release

v0.1.0-beta.46

Added

Agent Providers

  • Updated Rig to 0.36.0 and added DeepSeek V4 model support. DeepSeek now defaults to deepseek-v4-flash, keeps deepseek-v4-pro available in the model picker, and preserves the legacy deepseek-chat and deepseek-reasoner aliases.

Settings

  • Settings now opens as a separate window. You can adjust appearance, shortcuts, and provider configuration, save changes, and keep the settings window open while checking the terminal.
  • Appearance controls now preview immediately while Settings stays open. Transparency, blur, background image strength, image layout, terminal font, UI font, and cursor style update live; Save Changes persists the current values.
  • Polished the Settings save action so it uses Con's active theme colors instead of the generic primary button treatment.
  • OpenAI-compatible providers can now fetch available models from the provider's /models endpoint when a Base URL and API key are configured.

Keyboard

  • Added direct tab selection shortcuts: Cmd+1 through Cmd+9 on macOS, Ctrl+1 through Ctrl+9 on Windows and Linux.
  • Added pane zoom for the focused split pane. Use Cmd+Shift+Enter on macOS or Alt+Shift+Enter on Windows and Linux to let one pane fill the tab's terminal area, then press it again to restore the split layout.
  • Added macOS window cycling with Cmd+Backtick and Cmd+Shift+Backtick.
  • Fixed macOS Cmd+Backtick window cycling when the terminal surface has focus.
  • Fixed macOS Cmd+Backtick window cycling at the native window-event layer so it works even when the embedded terminal NSView is first responder.
  • Fixed macOS Cmd+Backtick window cycling to also handle GPUI's shifted and localized symbol forms (~, <, >), matching the platform's keyboard-layout-aware shortcut behavior.
  • Pane picker shortcuts are now scoped to the picker: open it with the configured pane-scope shortcut, then use bare 1-9 to toggle panes, A for all panes, and F for focused pane. A/F are consumed before the input bar sees them, and global Cmd/Ctrl+1-9 remains reserved for tab switching outside the picker.
  • Fixed closing the last pane in one window so it closes only that window instead of quitting Con and killing sibling windows.

Fixed

Terminal, macOS

  • Fixed fast trackpad scrolling in macOS terminal panes so precise scroll events are sent through Ghostty's precision-scroll path instead of being treated as coarse wheel ticks.
  • Reduced macOS terminal scroll-path overhead by syncing the native Ghostty scroll container only for visible tab surfaces while still draining background-tab title and process events.
  • Fixed macOS split, nested split, zoom, and unzoom operations that could leave a blank or transparent pane region until the divider was manually resized.

Workspace

  • Fixed the bottom input bar layout so it spans only the terminal area, staying out of the vertical tab sidebar and right agent panel.

Settings

  • Fixed Settings live preview dismissal so unsaved appearance and theme changes are rolled back when the standalone Settings window is closed.
  • Fixed OpenAI-compatible model discovery so fetched model lists are scoped to the configured Base URL instead of leaking across custom endpoints.
  • Fixed OpenAI-compatible model discovery so newly fetched models immediately refresh all related Settings pickers, including active and suggestion model selectors.
  • Fixed OpenAI-compatible model discovery for Base URLs with required query parameters, preserving the query while deriving the /models endpoint.
  • Clarified OpenAI-compatible provider setup when /models is unavailable: fetching is optional, and users can type the model ID manually.
  • Fixed standalone Settings cleanup so closing the last workspace window also closes Settings on Windows and Linux instead of leaving an orphaned process.
  • Hardened OpenAI-compatible model discovery URL normalization so incomplete /chat/completions paths fail clearly instead of becoming relative /models URLs.

Keyboard

  • Fixed direct tab selection shortcuts so terminal panes hand Cmd/Ctrl+1-9 back to the app instead of forwarding them to the shell.
  • Fixed direct tab selection shortcuts so Cmd/Ctrl+1-9 keeps switching tabs while the pane picker is open; pane selection remains on bare 1-9 inside the picker.

Windowing

  • Fixed new Con windows opening exactly on top of the previous one. New workspace windows now cascade from the active window while staying within the visible display area when display bounds are available, and still cascade when the platform cannot report bounds.
  • Fixed new-window cascade wrapping so the 28px stagger is preserved on the axis that still fits when the other axis wraps to the display edge.
  • Unified macOS Window menu cycling with the same native AppKit path used by Cmd+Backtick, so menu actions and keyboard shortcuts share one ordering model.

Terminal, Windows Backend (preview)

  • Fixed Windows terminal text rendering to avoid RGB color fringing around glyphs. The DirectWrite atlas now uses grayscale antialiasing with neutral coverage compositing, making CJK and mono text look cleaner in screenshots, scaled displays, remote review, and transparent windows.
Release

v0.1.0-beta.44

Added

Terminal

  • Added terminal file-drop and file-path clipboard paste. Dropped files now paste quoted paths into the active terminal pane instead of being ignored.
  • Added image clipboard forwarding for TUI agents such as Codex. When the clipboard contains image bytes, Con forwards a native Ctrl+V keypress so the TUI can attach the image through its own OS-clipboard workflow.
  • Added conservative file-URI clipboard parsing so Linux file-manager copies exposed as text/uri-list paste as quoted file paths instead of raw file:// text.
  • Hardened terminal Copy/Paste action handling on Windows and Linux so menu/command-dispatched paste uses the same path as the terminal keyboard shortcut.
Release

v0.1.0-beta.43

Added

Terminal

  • Added terminal URL opening by modifier-clicking visible links: Cmd-click on macOS, Ctrl-click on Windows and Linux. macOS uses libghostty's native link action, while Windows and Linux use a bounded visible-row detector with pointer-cursor feedback so ordinary terminal rendering remains off the hot path.

Fixed

Agent Panel

  • Fixed generic Markdown code fences that contain shell prompts, including compact prompt forms like $amp --version, so they infer bash highlighting instead of rendering as unhighlighted code blocks.

Terminal

  • Fixed terminal font selection accepting GPUI-only pseudo font families such as .ZedMono, which could make macOS Ghostty text render with uneven spacing or overlapping glyphs. Existing bad configs now fall back to the default terminal font, and the Terminal Font picker hides those pseudo families.
Release

v0.1.0-beta.42

Fixed

Terminal, Windows Backend (preview)

  • Fixed Windows terminal scroll direction so wheel and touchpad gestures follow the platform scroll intent instead of feeling reversed against classic scrolling setups.
  • Fixed Tab and Shift+Tab in the Windows terminal so shells and TUIs receive completion/navigation keys instead of GPUI focus navigation swallowing them.
  • Fixed Windows terminal scrollbar rendering to cache libghostty-vt scrollbar state by terminal generation instead of polling the expensive scrollbar query during every paint.
  • Fixed Windows terminal scrollbar dragging so stale drag state is cleared if the mouse is released outside the terminal pane.

Terminal, Linux Backend (preview)

  • Fixed Tab and Shift+Tab in the Linux terminal preview with the same terminal-local key capture used on macOS and Windows, preventing GPUI focus navigation from swallowing shell completion keys.
Release

v0.1.0-beta.41

Fixed

Terminal, Windows Backend (preview)

  • Fixed custom terminal fonts on Windows resolving through the wrong DirectWrite collection, which could make glyphs appear incomplete or spaced apart when a system font such as JetBrains Maple Mono was selected.
  • Fixed Windows fallback rendering for CJK and missing default fonts by reserving Unicode-derived two-cell atlas slots for wide glyphs and falling back to installed monospace system fonts before proportional UI fonts.
  • Fixed new Windows terminals starting in con's install directory. New panes now honor a valid explicit cwd and otherwise start from the user's home directory instead of inheriting the launcher directory.
  • Fixed Windows terminal scrollback controls by adding a visible draggable scrollbar and wiring wheel gestures to libghostty-vt's viewport scrollback path when the shell has not requested mouse tracking.

Release

v0.1.0-beta.40

Added

Agent Panel

  • Added first-class rich Markdown blocks for Mermaid diagrams and LaTeX-style math. Mermaid code fences and display math now render off the UI thread into cached GPUI images with source fallbacks, while inline math uses dedicated math typography instead of being flattened into generic code.
  • Mermaid diagrams now render with light/dark-aware colors so diagrams remain readable in both light and dark themes.

Keyboard

  • Changed the input focus shortcut into a true Input / Terminal toggle. On macOS, Cmd+I now switches from the terminal to the input surface, then back to the first terminal pane when pressed from the input bar or agent-panel input.

Fixed

Agent Panel

  • Fixed Mermaid and display math inside nested Markdown containers such as blockquotes and lists so they use the same cached rich renderer as top-level blocks instead of falling back to source text.
  • Fixed inline math detection so hyphenated prose and dollar ranges such as $end-to-end$ or $3-5$ are not misread as math.
  • Fixed inline math rendering for identifier-style formulas such as $theta$ and $velocity$.
  • Fixed dark-theme Mermaid diagrams with custom light node fills so missing Mermaid color: styles are inferred from fill luminance instead of leaving white text on light shapes.
  • Fixed display math SVGs in dark mode so formulas use theme-aware foreground colors and re-render correctly after theme switches.
  • Fixed rich Mermaid and math render caching during streaming so replacing a parsed Markdown document with equivalent block content no longer discards already-rendered SVG images.
  • Fixed repeated rich-render source-string allocation during ordinary repaint, reducing avoidable memory churn when scrolling chats with diagrams or formulas.
  • Fixed display-math fallback styling so it uses the neutral block math style instead of inline-math chips inside an already styled block.
  • Consolidated blockquote and list layout rendering for cached rich blocks and fallback Markdown blocks so future spacing and typography changes cannot drift between the two paths.

Terminal

  • Fixed macOS IME English-mode commits in the terminal so direct ASCII input keeps the normal shell key path and does not disable shell ghost suggestions, while marked CJK composition still uses the IME text path. Buffered ASCII commits are now replayed as per-character key events instead of one synthetic multi-character key.

Keyboard

  • Fixed the Input / Terminal toggle fallback so Cmd+I never focuses a hidden input surface. If neither the agent-panel input nor the bottom input bar is visible, Cmd+I now reveals and focuses the bottom input bar.
Release

v0.1.0-beta.39

Added

Workspace — Vertical Tabs

  • Added a vertical-tabs layout for the workspace tab strip. Toggle in Settings → Appearance → Tabs → Vertical Tabs.
  • Two runtime states:
    • Collapsed (rail) — narrow icon rail (~44 px). Smart icon per tab. Hovering an icon pops a small floating tab card anchored to the cursor (name, optional subtitle, pane count, SSH / unread badges). The card is informational only — it never displaces the rail or the terminal pane and dismisses the moment the cursor leaves the icon. Drag an icon directly to reorder.
    • Pinned panel — full panel (~240 px) with two-line rows (name in system font, optional cwd / user@host subtitle in mono). Persisted across restart via session.vertical_tabs_pinned.
  • Smart per-tab naming. Priority: user override → AI summary → SSH host → focused process (parsed from the OSC-set terminal title — vim README.md, htop, less log.txt, etc.) → cwd basename → shell. Bare shells fall through so a row never reads as "bash" when there's something more useful.
  • AI labels and icons via a new TabSummaryEngine in con-core. Each tab's (cwd, recent commands, OSC title, recent terminal scrollback) is summarized by the user's already-configured suggestion model into a 1–3 word label and one icon from a closed Phosphor set: terminal, code, pulse, book-open, file-code, globe.
  • The AI summarizer uses a JSON response shape ({"label": "...", "icon": "..."}) with a tolerant bracket-balanced parser instead of the original LABEL|ICON plain-text format, so reasoning models and Markdown-fenced answers are handled without rendering malformed labels.
  • Periodic AI re-summarization now polls request_tab_summaries every 3 s. The engine stays gated on agent.suggestion_model.enabled, short-circuits SSH tabs to host + globe with no LLM call, and uses a per-tab context cache plus 5 s success budget so re-asks stay bounded.
  • Smart per-tab icons keyed off the focused process when no AI is available: terminal for shells, globe for SSH, </> for editors (vim/nvim/nano/emacs/helix/code), pulse for monitors (htop/top/btop/k9s), book-open for pagers (less/more/man/bat), file-code for git tools (git/lazygit/tig/gh). User-labelled tabs still get a smart icon picked from the live process / SSH signal — or from the AI summary when available.
  • No emoji anywhere in the panel — every glyph is a Phosphor SVG.
  • Long paths collapse to …/parent/last; $HOME collapses to ~.
  • Inline rename: double-click a row's label, or right-click → Rename. Enter commits, Esc cancels. The label is persisted via a new user_label field on TabState. Reset Name in the context menu clears the override and falls back to smart auto-naming.
  • Right-click context menu per row: Rename / Duplicate / Reset Name (if user-labelled) / Move Up / Move Down / Close Tab / Close Other Tabs.
  • Drag-to-reorder works in both rail and pinned modes. The dragged tab follows the cursor as a small floating chip; a 2-px primary-color line marks the drop target between rows in pinned mode; the rail uses a hover-bg pill to signal the drop target. Drop fires SidebarReorder, which the workspace applies in-place and persists.
  • Visual hierarchy follows the design language: a single selection signal (elevated white pill — no accent bar duplication), action affordances (rename pencil, close X) hover-only on every row including the active one, surface separation via opacity blending (no borders, no shadows), system font for labels (terminal-chrome consistency reserved for the row icon and subtitle).
  • Width tweens 220 ms ease-out cubic between rail and pinned; floating card appears instantly (Apple tooltip pattern, no transition).
  • Pinned/collapsed state and the orientation choice persist across restarts (vertical_tabs_pinned in session, appearance.tabs_orientation in config). Horizontal tabs remain the default for backward compatibility with every shipped beta. Switching orientation at runtime takes effect immediately.

Improved

Agent Panel

  • Reworked long restored agent replies to cache rendered Markdown by block, so typing, scrolling, and revealing more content no longer recreate every paragraph/table/code layout inside a large assistant response.
  • Fixed wide Markdown table scrolling so vertical transcript scroll no longer gets hijacked into sideways table movement, while preserving a structured rich-table layout with a native horizontal scrollbar for oversized tables.
  • Added more deliberate transcript gutters so user and assistant messages no longer collide with the panel edge or scrollbar.
  • Normalized con's embedded mono font family for GPUI-rendered code blocks and terminal chrome so Markdown code uses the intended IoskeleyMono face instead of platform font fallback.
  • Hardened restored-session Markdown caching so stale assistant views are cleared when switching or clearing conversations, and in-flight Markdown parses cannot attach to the wrong message after reruns or state swaps.

Terminal — Windows Backend (preview)

  • Made Windows command rendering feel substantially closer to native terminals by closing the full PTY-to-paint loop: ConPTY output wakes are preserved, stale readbacks are discarded with mailbox semantics, row-local D3D readbacks stay row-local through GPUI image handoff, and delayed command-start output remains latency-critical long enough to present fresh frames.
  • Aligned the default Windows shell choice with Windows Terminal when possible by reading its configured default profile before falling back to pwsh.exe, powershell.exe, %COMSPEC%, and cmd.exe; CON_SHELL remains the explicit override.
  • Added CON_LOG_FILE so Windows terminal profiling can write con's own logs directly to a file without PowerShell *> redirection, avoiding redirected standard handles that can steal shell output away from the ConPTY pane.
  • Fixed Windows ConPTY child process creation so shells do not inherit con's redirected stdout/stderr handles during profiling, which could send the PowerShell banner/prompt into con-profile.log instead of the terminal pane.
  • Reduced redundant Windows pre-echo repaint work by letting handled keyboard input wait for actual VT/ConPTY progress instead of forcing a speculative GPUI repaint on every key press.
  • Reduced Windows output batching by preserving successive ConPTY wake signals instead of draining them into a single repaint request before GPUI has had a chance to present intermediate progress.
  • Reduced Windows slideshow-style command redraws by treating the staging ring as a true mailbox during PTY-driven output: once a fresher VT snapshot is submitted, older completed readbacks are no longer presented ahead of it.
  • Tightened Windows staging mailbox behavior further so command bursts discard older in-flight readback cache entries and present the newest completed frame instead of replaying intermediate full-screen snapshots.
  • Extended Windows interactive low-latency mode long enough to cover delayed command-start output, so shells and TUIs that begin painting a few hundred milliseconds after Enter can still take the freshest-frame path instead of falling back to delayed non-blocking readback.
  • Reduced Windows input/readback latency by deriving exact changed VT rows even when libghostty-vt reports a full render-state dirty flag, then copying only those pixel rows from the D3D render target into the staging readback texture for small terminal updates.
  • Reduced Windows readback cost with dirty-row D3D copies while preserving translucent-terminal correctness by replacing dirty rows in a CPU backing frame instead of alpha-blending row overlays over stale pixels.
  • Expanded Windows profiling behind CON_GHOSTTY_PROFILE so one run now captures ConPTY read-chunk cadence, renderer sub-stage timings (drain/draw/submit/block-drain), RenderSession::render_frame, and the GPUI image-wrap stage alongside the shared VT snapshot timings; idle unchanged frames are filtered by default, with CON_GHOSTTY_PROFILE_VERBOSE=1 available for every-frame traces.
Release

v0.1.0-beta.38

Fixed

Interface

  • Completed pane-close keyboard handling instead of only showing dead UI. Close Pane is now a real configurable shortcut in Settings, with app-level defaults that do not collide with terminal EOF (Cmd+Opt+W on macOS, Alt+Shift+W on Windows/Linux). Windows/Linux pane split defaults now use Alt+D / Alt+Shift+D instead of fragile symbol-based bindings.
  • Close Pane now escalates cleanly when nothing smaller remains to close: last pane closes the tab, and the last tab quits the app.
  • Fixed the last-pane quit path so quitting through Close Pane or terminal-exit escalation uses the same session save and surface teardown path as the normal app quit action.
  • Fixed the command palette scroll behavior on all platforms. Mouse-wheel scrolling and scrollbar dragging no longer snap back to the selected row on every repaint.
  • Reduced agent-panel stalls on session-open, long live responses, and oversized reply expansion by making message markdown and persisted reasoning parse lazily, rendering in-flight replies as cheap plain-text previews, parsing full reply markdown off the UI thread when opened, and caching expensive inline markdown text-run transforms so repeated rich-render passes do less work.
  • Reduced severe hangs when expanding long real-world agent replies in markdown. Inline code inside long prose/table cells now renders through single StyledText runs instead of exploding into large flex-wrapped chip trees.
  • Reduced another major markdown-render cost for long agent replies. Assistant message bodies now live behind their own markdown-document entities, and fenced code blocks render as one highlighted text layout per block instead of one GPUI row per line.
  • Reduced agent-panel rerender churn further by isolating whole assistant rows behind their own entities. Old restored sessions and live token streaming no longer force the parent panel loop to rebuild every assistant message row on each update.
  • Moved the main agent transcript off a single flex-column scroll surface and onto GPUI's variable-height ListState path, so old long sessions no longer require the whole conversation tree to be measured and repainted as one document during scroll.
  • Reduced restored-session interaction lag by stopping ordinary composer keystrokes from notifying the whole agent panel, keeping long restored markdown from hydrating in the background, and rendering agent-panel inputs with the terminal mono font.

Terminal — Windows Backend (preview)

  • Reduced the first-frame flash when splitting a new pane on Windows. Brand-new panes now paint their configured terminal background while the first renderer image is still warming up, instead of briefly showing a transparent hole.
Release

v0.1.0-beta.37

Improved

Terminal — Linux Backend (preview)

  • Reduced Linux preview renderer CPU cost by caching per-row StyledText text/runs in linux_view and only rebuilding rows marked dirty by the VT snapshot, plus cursor-affected rows.
  • Reduced Linux command-to-paint latency by waking the terminal view directly from PTY output instead of waiting for the workspace idle poll loop to discover new output.
  • Added shared VT snapshot timing instrumentation behind CON_GHOSTTY_PROFILE so large command-start redraw costs on Windows/Linux can be measured directly.
  • Documented the remaining Linux performance constraint explicitly: after the row-cache and direct-wake changes, the longer-term fix remains the planned glyph-atlas grid renderer and a lighter-weight shared VT snapshot contract.

Fixed

Release pipeline — multi-platform race

  • Fixed irm https://nowled.ge/con-ps1 | iex (and the install.sh equivalents) failing with ✗ no ZIP found for windows-x86_64 when the Linux release job won the create-and-upload race ahead of the Windows / macOS jobs. Each release-{linux,macos,windows}.yml now creates the GitHub release as --draft, so /releases/latest and the public REST API stay blind to the tag while assets are uploading. A new release-finalize.yml workflow watches all three platform workflows via workflow_run and atomically promotes the draft to public only once every platform reports a success conclusion for the same head_sha. If a platform fails, the draft stays drafted on purpose — better to block than to ship an incomplete release.
Release

v0.1.0-beta.36

Fixed

  • Windows con no longer be laggy!!!
Release

v0.1.0-beta.35

Fixed

  • Fixed Linux con cannot support older GLIBC
Release

v0.1.0-beta.34

Added

Terminal — Linux Backend (preview)

  • Added the first real Linux terminal pane: Unix PTY, shared libghostty-vt parser, GPUI styled-cell paint path, and the same app shell/control socket as macOS and Windows.
  • Added Linux styled-cell rendering for SGR colors, bold, italic, underline, strikethrough, inverse, and block cursor state.
  • Added Linux theme propagation from app settings into the VT parser at spawn time and during live theme changes.
  • Added Linux client-side decorations, transparent rounded windows, and KWin Wayland backdrop blur where the compositor exposes it.

Release and Packaging

  • Linux now has the same one-liner installer + auto-update story as macOS / Windows. The single install.sh (curl -fsSL https://con-releases.nowledge.co/install.sh | sh) detects the host OS and routes Darwin to the existing DMG flow or Linux to a new tarball flow that drops con into ~/.local/bin, registers a .desktop launcher entry, and installs the 256x256 hicolor icon.
  • A new scripts/linux/release.sh builds the artifact (cargo build --release with CON_RELEASE_VERSION / CON_RELEASE_CHANNEL baked in via option_env!, --strip-debug, stage + tar.gz + sha256), and a new .github/workflows/release-linux.yml mirrors the Windows release workflow: builds on ubuntu-latest, publishes the tarball to the same GitHub release the macOS / Windows jobs share, and updates the Sparkle-shaped appcast at https://con-releases.nowledge.co/appcast/{channel}-linux-x86_64.xml so the in-app notify-only updater can discover new builds.
  • Added a notify-only Linux updater that polls the same Sparkle-shaped appcast XML the Windows backend uses, surfaces "Update now" in Settings → Updates, and re-runs install.sh with CON_INSTALL_VERSION pinned to the appcast's chosen version so beta-channel users do not silently get downgraded to stable when GitHub's /releases/latest skips prereleases. Sparkle itself stays macOS-only — Linux follows the Windows model (notify-only checker against the shared XML schema, then re-runs install.sh to apply).
  • All three release workflows (release-macos.yml, release-windows.yml, release-linux.yml) now mark v*-dev.* tags as --prerelease when calling gh release create. Dev tags are internal smoke tests and must not appear in /releases/latest. Beta tags stay as regular releases for now because con is still in an all-betas era — the latest beta is what every fresh install should download. When stable v0.1.0 ships, *-beta.* will move under the same --prerelease rule so beta and stable channels stop colliding on /releases/latest.

Improved

Terminal — Linux Backend (preview)

  • Resolved IoskeleyMono font-family lookup on Linux so the embedded mono font is used instead of a proportional fallback.
  • Reduced Linux terminal latency by replacing a full snapshot equality check with a generation-counter comparison and tightening the idle poll loop.

Terminal — Windows Backend (preview)

  • Reduced Windows renderer hot-path work by skipping redundant default-background blank-cell instances, avoiding full-frame zero-fill before D3D readback, and only sorting the instance stream when a frame contains overflowing wide glyphs.
  • Reduced Windows interactive terminal latency by marking user-driven updates latency-critical so the freshest submitted frame wins over stale readback, while keeping resize/fullscreen frames on the non-blocking staging path.

Fixed

Terminal — Linux Backend (preview)

  • Stopped the Linux "Waiting for shell prompt..." placeholder from flashing when long-lived shells enter alt-screen TUIs.

Terminal — Windows Backend (preview)

  • Fixed Windows settings, theme, session, history, OAuth, conversation, and global skills paths so they no longer use con as a filesystem segment, avoiding Win32 reserved-device-name failures such as os error 267.
  • Fixed Windows con-ghostty builds that failed in Ghostty/uucode with uucode_build_tables.exe: FileNotFound by defaulting Zig's global cache to a short path when ZIG_GLOBAL_CACHE_DIR is unset.
  • Hardened Windows Zig cache selection so con-ghostty only auto-selects a short cache path when the chosen directory is actually writable, falling back cleanly instead of failing later inside Zig.
  • Fixed Windows fullscreen/maximize redraws in alt-screen apps such as Neovim by forcing a full VT snapshot after resize/full invalidation instead of trusting per-row dirty flags for newly exposed rows.
  • Fixed a Windows maximize/fullscreen hang where the first interactive redraw after a large resize could block the UI thread trying to rescue stale readback slots; the staging ring now uses mailbox semantics, stays non-blocking under true backlog, and still allows low-latency interactive presents when a clean slot is available.
  • Fixed Windows resize/render-state drift by snapshotting Ghostty's actual render-state rows/cols during asynchronous resize catch-up and by including snapshot geometry in the renderer invalidation key so the corrected frame is not skipped as "unchanged".
  • Fixed Windows VT resize to report Ghostty the renderer's real cell metrics instead of re-deriving per-cell pixels from pane size and grid count.
  • Fixed a Windows input-latency hole where the low-latency hint could be consumed before ConPTY echo/prompt output advanced the VT; input-driven fast presents now stay armed until the next VT generation arrives.
  • Fixed a Windows typing-latency cadence issue where sustained local input could fall back to stale-frame presents mid-burst; interactive low-latency mode now stays armed across a short typing/paste burst instead of only a single echoed generation.
  • Fixed Windows terminal-pane bounds capture to measure a dedicated full-size wrapper during prepaint, avoiding zoom/maximize cases where sizing from image/layout children could stop the image quad short and hide the bottom command row.
  • Reduced Windows steady-state input latency by moving terminal image generation out of the prepaint callback and into the main render path, removing an extra frame where freshly rendered images previously only became visible on the following paint.
  • Reduced a Windows staging-ring latency edge where mailbox submission could miss an already-clean slot and unnecessarily disqualify the freshest-frame path during interactive typing.

Interface

  • Fixed the macOS 12 fallback layering path. Monterey keeps an opaque top-level window to prevent desktop bleed-through, but the GPUI root above the embedded Ghostty NSView stays transparent so the terminal surface is not painted over by the fallback background.

Documentation

  • Updated the Linux implementation notes, tracker mirror, and postmortem for the first real Linux terminal preview.
  • Updated build-system and Windows-port notes to document the shared con-paths crate and the current Windows renderer performance track.
Release

v0.1.0-beta.33

Improved

Terminal — Windows Backend (preview)

  • Tuned low-hanging renderer performance issues in the Windows D3D11/DirectWrite path.
  • Wired terminal theme colors, opacity, and transparency into the Windows renderer.
  • Hardened Windows resize/readback behavior, theme switching clear colors, and DWM backdrop behavior across the beta feedback loop.
Release

v0.1.0-beta.32

Added

Release and Packaging

  • Added Windows in-place auto-update flow and appcast support.

Fixed

Release and Packaging

  • Preserved the full beta tag in Windows release/appcast version metadata so beta update comparisons do not collapse to 0.1.0.
  • Made the PowerShell installer ASCII-safe for irm | iex usage.
  • Updated release/download documentation for the renamed con-terminal repository.
Release

v0.1.0-beta.31

Added

Interface

  • Added a titlebar gear button on Windows and Linux for opening Settings.

Release and Packaging

  • Added Windows PowerShell installer and release palette entries.

Fixed

Terminal — Windows Backend (preview)

  • Switched Windows builds to the console subsystem behavior needed for terminal process startup.
  • Baked the full release channel/version into the Windows binary for update polling and user-visible version display.
Release

v0.1.0-beta.30

Added

Terminal — Windows Backend (preview)

  • Shipped the runtime-validated Phase 3b Windows glyph-atlas renderer: ConPTY plus libghostty-vt, D3D11/DirectWrite rendering, HLSL shaders, glyph atlas packing, Nerd Font/PUA handling, wide-glyph ordering, and cursor z-order handling.
  • Promoted Windows from planned work to the first beta surface in the docs.

Fixed

Release and Packaging

  • Hardened the Windows release workflow against Defender interference, Zig/uucode spawn flakes, Windows runner instability, and MAX_PATH-sensitive cache paths.
  • Renamed in-tree repository URLs from nowledge-co/con to nowledge-co/con-terminal.
Release

v0.1.0-beta.29

Tag-only release workflow iteration folded into the v0.1.0-beta.30 GitHub release notes.

Changed

  • Renamed repository URLs to nowledge-co/con-terminal.
Release

v0.1.0-beta.28

Tag-only release workflow iteration folded into the v0.1.0-beta.30 GitHub release notes.

Fixed

  • Pinned the Windows release runner to windows-2022 and added on-failure diagnostics.
Release

v0.1.0-beta.27

Tag-only release workflow iteration folded into the v0.1.0-beta.30 GitHub release notes.

Fixed

  • Retried Windows release builds around intermittent Zig/uucode spawn failures.
Release

v0.1.0-beta.26

Tag-only release workflow iteration folded into the v0.1.0-beta.30 GitHub release notes.

Fixed

  • Disabled Defender real-time scanning during Windows release builds.
Release

v0.1.0-beta.25

Tag-only release workflow iteration folded into the v0.1.0-beta.30 GitHub release notes.

Added

  • Advanced the Windows beta port toward the first published Windows preview.
Release

v0.1.0-beta.24

Improved

  • Shipped CI fixes, documentation updates, and broad UI/terminal polish before the Windows beta push.
Release

v0.1.0-beta.23

Added

  • Landed Windows support phase 0: non-macOS build scaffolding, portability gates, and an initial Windows-renderable terminal path.
Release

v0.1.0-beta.22

Improved

  • Shipped a broad optimization pass across terminal/app behavior.
Release

v0.1.0-beta.21

Added

  • Added Kimi provider support for coding workflows.

Fixed

  • Fixed Homebrew promotion and release workflow YAML issues.
Release

v0.1.0-beta.20

Added

  • Added Homebrew cask and a one-line install path.

Improved

  • Shipped another beta optimization pass and Zig CI hardening.
Release

v0.1.0-beta.19

Fixed

  • Polished terminal cursor behavior for CJK IME input.
Release

v0.1.0-beta.18

Added

  • Added early installer work and beta feature polish.

Fixed

  • Fixed Vim quit handling, IME text input issues, macOS hotkeys, terminal flashing, and Ghostty Zig CI pinning.
Release

v0.1.0-beta.14

Improved

  • Optimized settings, markdown table rendering, and CJK rendering paths.
Release

v0.1.0-beta.3

Added

  • Added configurable UI font size.

Fixed

  • Fixed a markdown code-block rendering performance issue.
Release

v0.1.0-beta.1

Added

  • Initial public beta of con.
  • Added the first release workflow, app bundle/release infrastructure, documentation, and upstream dependency cleanup.

Fixed

  • Fixed early Sparkle startup/release-upload issues and ordered-list wrapping alignment.