atriumatrium

Changelog

What's new in atrium

All notable changes, documented version by version.

v0.36.02026-04-03
Added
  • ·Unified state persistence protocol (`atrium://state/{scope}/{namespace}`) replacing ad-hoc per-feature persistence
  • ·`StateRegistry` — single in-memory source of truth for all namespaced state with per-namespace dirty tracking
  • ·`StateHandler` for protocol-level state access (GET/PUT via `atrium://state`)
  • ·`get_state`/`set_state` Tauri commands as frontend fast-path to the registry
  • ·Automatic `state:dirty` and `state:changed` Tauri event emission on every state write
  • ·Registry hydration from snapshots on startup and projection back to snapshots on flush
  • ·`useAtriumState` React hook — `useState`-like interface backed by the state protocol
  • ·`useAppSettings` hook for unified app settings access
  • ·`signalWorkspaceDirty` helper for structural dirty tracking via Tauri events
Changed
  • ·Journal system now reacts to `state:dirty` events instead of watching Jotai dirty atoms
  • ·All feature state (git panel, file tree, editor mode, adapter sessions, app settings) persisted via `useAtriumState`
Removed
  • ·Dedicated persistence fields from `AppState`, `WorkspaceSnapshot`, and `PaneSnapshot` Rust/TS types (state now flows through `extra` HashMap)
  • ·`dirtyWorkspacesAtom`, `appStateDirtyAtom`, `markWorkspaceDirty()`, `markAppStateDirty()` dirty tracking atoms
  • ·Feature-specific hydration and serialization logic from `useRestore`/`usePersistence`
  • ·`useAppSettingsSync` bridge hook and individual settings atoms
v0.35.02026-04-03
Added
  • ·Branch name indicator in git-changes pane header (⎇ icon + branch name)
  • ·Dynamic adapter accent colors in mini layout diagrams (reads from adapter registry instead of hardcoded)
Fixed
  • ·File tree expanded folder state not restoring across sessions (TreeItem now derives expanded from persisted atom, not local state)
  • ·Rust persistence types missing fields (expandedPaths, filesCollapsed, gitViewState, diffRef, gitRepoRoot, sidebar/git prefs) — caused silent data loss on round-trip
v0.34.02026-04-03
Changed
  • ·Journal system is now event-driven: state flushes within 500ms of any change instead of polling every 10s
  • ·10s interval retained as safety net only; primary persistence is debounced on dirty flag changes
  • ·Added `appStateDirtyAtom` so pure app-level changes (sidebar, git diff prefs, launcher settings) trigger persistence immediately
  • ·All previously un-tracked state changes now mark dirty: file tree expand/collapse, sidebar toggle/resize, git diff controls, launcher overrides, close-session confirmation preference
v0.32.02026-04-03
Added
  • ·Git changes panel persists view state: section toggles, selected file, and expanded commits survive pane close/reopen
  • ·File tree expanded folders and collapsed state persist across restarts
  • ·Graceful fallback when git state changes between sessions (selected file resets if no longer present)
v0.31.02026-04-03
Added
  • ·Two-line workspace sidebar items with name, path, open folder icon, and mini zone layout diagrams
  • ·Shared `MiniLayout` component extracted from TabBar for reuse
Fixed
  • ·CSS zoom causing tab drag ghost to drift from mouse at non-default zoom levels
  • ·CSS zoom causing file tree drag ghost offset at non-default zoom levels
  • ·CSS zoom causing workspace sidebar drag ghost offset at non-default zoom levels
v0.29.02026-04-03
Added
  • ·"Don't show this again" checkbox on "Close AI Session?" confirmation dialog, persisted to app settings
  • ·General tab in Settings dialog with "Confirm before closing AI sessions" toggle
v0.26.02026-04-03
Added
  • ·**atrium:// protocol system** — URI parser, namespace resolver, and handler dispatch for extensible internal protocol
  • ·**Inter-pane communication** — agents can list panes, read terminal output, and send messages to each other via MCP tools
  • ·**atrium-mcp sidecar** — standalone MCP JSON-RPC bridge binary, auto-built and bundled by Tauri
  • ·**MCP auto-configuration** — atrium MCP server registered automatically via `claude mcp add` / `codex mcp add` on app startup
  • ·**Ring buffer capture** — 64KB per-pane circular buffer for terminal output, ANSI-stripped for clean reads
  • ·**Pane registry** — backend metadata tracking with scope-aware filtering (same-tab, same-workspace, all)
  • ·**Access control** — visibility and scope enforcement for inter-pane operations; lock/unlock button in pane header
  • ·**Command system** — 16 core actions (pane, workspace, tab, config, theme, launcher) as atrium://commands/ URIs
  • ·**Keybinding URI support** — `uri-command` action type connects keybindings to protocol dispatch
  • ·**Inter-agent message framing** — `[Message from ... via atrium]` headers with reply instructions for cross-agent communication
  • ·**Codex MCP support** — `env_vars` config for ATRIUM_PANE_ID inheritance from shell
  • ·**Layout path tracking** — mosaic tree position synced to pane metadata for spatial awareness
Changed
  • ·Hook server gained `/resolve` POST endpoint for protocol-based dispatch
  • ·Adapter manifests now support optional `hooks` field with atrium:// URIs
  • ·Bundled adapters auto-update when version changes (was seed-once-only)
  • ·Both adapter hooks.sh use jq for JSON generation (fixes heredoc escape issues)
  • ·Hook payload reads from request body, not just URI query params
  • ·CI pipeline lints/tests both `src-tauri/` and `atrium-mcp/` crates
  • ·Release pipeline triggers on `atrium-mcp/` changes
Fixed
  • ·Session-end hooks now properly reset pane adapter type to Terminal
  • ·Legacy aiterm hooks cleaned up during install (expanded dedup filter)
  • ·MCP sidecar found in dev mode via `src-tauri/binaries/` lookup
  • ·Data directory respects `.atrium-dev` in dev builds throughout
v0.24.02026-04-02
Added
  • ·Repo search — search file contents and filenames with regex, case sensitivity, whole word, include/exclude globs
  • ·Search results stream in real-time as files are scanned with animated progress bar
  • ·Cmd+Shift+F keyboard shortcut to open search in a new tab
  • ·Search button on workspace sidebar branch selector (draggable to create split panes)
  • ·Monaco preview for selected search result files
  • ·Cmd+click on search results opens file in new tab (scrolls to line for content matches)
  • ·"Hold ⌘ to open" tooltip on search result hover
  • ·ResizableSplit component — reusable two-panel layout with draggable divider
  • ·Resizable split applied to search pane (results / preview) and git-changes pane (file list / diff)
  • ·Pane type registry — centralized definitions for all pane types (component, icon, controls, needsPty)
  • ·Git-changes pane now has a GitCompareArrows icon in pane header and tab bar
Changed
  • ·Uniform divider styling: 1px theme-aware line at rest, widens to 4px accent on hover with smooth transition (mosaic splits, sidebar, ResizableSplit)
  • ·Delay sidebar and launcher git hydration during rapid pane/tab creation bursts
  • ·Keep Source Control and workspace switching responsive by preferring stale cached repo data first
  • ·MosaicLayout, PaneHeader, useRestore, and TabBar all use registry instead of hardcoded type checks
  • ·GitDiffControls extracted to standalone component
v0.23.42026-04-02
Changed
  • ·Optimize LauncherBar and useGitWorktree to reduce redundant renders and IPC calls
v0.23.32026-04-02
Changed
  • ·Further optimize shared repo overview and workspace hooks to reduce unnecessary work
v0.23.22026-04-02
Changed
  • ·Simplify FileTree and WorkspaceSidebar with reduced re-render surface and leaner state management
v0.23.12026-04-02
Changed
  • ·Further reduce redundant IPC calls in file tree root detection and git worktree hooks
  • ·Diagnostics recorder captures more granular timing for async git operations
v0.23.02026-04-02
Added
  • ·Diagnostics source tagging on IPC calls for tracing call origins
  • ·Activity notes in diagnostics for file tree root resolution and git worktree detection
Changed
  • ·IPC calls accept optional diagnosticsSource for per-call origin tracking
  • ·useFileTreeRoot and useGitWorktree annotate all IPC calls with source context
v0.22.02026-04-02
Added
  • ·Interaction tracing in diagnostics — startInteraction/stepInteraction/endInteraction for multi-step operations
  • ·Diagnostics instrumentation for pane split, close, file open, tab create, and editor lifecycle
  • ·Change tracing hook (useDiagnosticsChangeTrace) for tracking component re-render causes
  • ·Editor diagnostics: content load timing, surface ready/dispose, scroll event sampling
Changed
  • ·Pane close logic refactored with scoped equalization for the affected direction group
v0.21.02026-04-02
Added
  • ·Consolidated repo overview IPC — single get_repo_overview call replaces separate git status, detailed status, and ahead/behind calls
  • ·Memory stats capture in diagnostics profiler
  • ·Diagnostics export and session listing commands
Changed
  • ·Git panel, branch selector, and file tree all use the consolidated repo overview for fewer IPC round-trips
  • ·Refactored git commands to share parse_status_output and load_ignored_paths helpers
v0.19.02026-04-02
Added
  • ·Performance diagnostics recorder — opt-in IPC timing, render stats, terminal stats, memory stats, and long task capture with NDJSON trace output
  • ·Diagnostics settings panel in Settings with toggle controls and output directory link
  • ·Query cache layer for IPC calls with stale-while-revalidate and force-refresh support
  • ·Dev builds use ~/.atrium-dev to avoid colliding with production data
Changed
  • ·Load adapter registry once at app startup instead of refreshing it from every pane
  • ·Git status and file tree queries use the query cache to reduce redundant IPC calls
Fixed
  • ·Suppress module resolution squigglies in Monaco editor (no project context)
  • ·Markdown editor checkboxes use accent color instead of gray
  • ·Stop background workspace trees and hidden Source Control panes from doing unnecessary refresh work
  • ·Avoid dirtying workspace state when terminal CWD reports haven't actually changed
v0.18.02026-04-02
Added
  • ·Cmd+Click to open file paths from terminal output as editor tabs in Atrium
  • ·Cmd+Click to open URLs from terminal in default browser (previously any click)
  • ·"Hold ⌘ to open" tooltip on terminal link hover
  • ·Periodic 10s auto-refresh for git changes panel
Changed
  • ·Terminal links now require Cmd held to activate (matches VS Code behavior)
Fixed
  • ·Diff viewer not loading in Source Control panel (editor created before container was in DOM)
v0.17.02026-04-02
Added
  • ·File type icons in pane headers for editor/markdown/diff panes (replaces adapter dot)
  • ·Miniature layout diagram on all tabs reflecting actual mosaic split structure
  • ·Layout diagram leaves colored by content type (language colors, adapter accents, tool colors)
  • ·Numeric badge on tabs with 5+ panes
v0.16.02026-04-02
Added
  • ·Outgoing/Incoming commit sections in Source Control panel with Push/Pull buttons
  • ·Drill into commits to see changed files and view per-file diffs
  • ·Context menu on Source Control file list: Refresh, Fetch, Pull, Push
  • ·Relative image paths in markdown editor now resolve correctly in production builds
Fixed
  • ·Invisible bullet markers in markdown editor (Tailwind preflight reset)
  • ·Git changes panel stuck on "Loading..." when restored from older snapshots
v0.15.12026-04-02
Fixed
  • ·Pane split, close, drag-rearrange, and resize-handle double-click now equalize only the affected directional pane group instead of rebalancing every pane in the tab
v0.15.02026-04-02
Added
  • ·Integrated diff viewer in Source Control panel — file list + Monaco diff in one pane
  • ·Up/down arrow keys navigate the file list, diff updates inline
  • ·Inline diff by default with side-by-side toggle in pane header
  • ·Horizontal/vertical layout toggle in pane header (persisted)
  • ·PaneHeader rightControls prop for custom pane-type-specific header buttons
Changed
  • ·Source Control panel no longer opens diffs in separate tabs — all in-pane
Fixed
  • ·Git viewer button drag-to-split now works (global pointerup clears drag state)
  • ·Source Control panel auto-focuses on open so arrow keys work immediately
v0.14.02026-04-02
Added
  • ·Git Source Control panel — view staged, unstaged, and untracked files grouped by section
  • ·Monaco diff viewer — click any changed file to see side-by-side diff with syntax highlighting
  • ·Branch selector shows change count and commits ahead/behind upstream
  • ·Git viewer button in branch selector, draggable to mosaic panes to open as a split
  • ·Cmd+Shift+G keyboard shortcut to open Source Control in a new tab
  • ·Cmd+L (Show Launcher) and Cmd+Shift+G (Source Control) appear in configurable keybinding settings
v0.12.02026-04-01
Added
  • ·Real-time file tree updates via recursive directory watching
  • ·Git status indicators in file tree — M, D, A, U badges on files with color coding, propagated to parent folders
  • ·Gitignored files shown grayed out at reduced opacity in file tree
  • ·File tree context menu with Open, Rename, Delete, New File, New Folder, Copy Path, Copy Relative Path, Reveal in Finder
  • ·Drag and drop to move files and folders within the file tree, with ghost label and auto-expand on hover
  • ·Terminal-aware file tree — automatically switches to the focused terminal's branch/worktree
  • ·Branch/worktree selector above the file tree with dropdown to switch between worktrees
  • ·File pane titles now include the branch name (e.g., "App.tsx (main)")
  • ·File type icons shown in tab bar for editor and markdown panes
  • ·Global zoom — Cmd+/- now scales the entire app UI, not just terminals
  • ·Resizable sidebar — drag the right edge to resize, auto-collapses below threshold
  • ·Sidebar width and collapse state now persist across sessions
  • ·Drag files from the file tree onto mosaic panes to open them as editor splits
Fixed
  • ·Comment modal in markdown editor now opens within the editor pane bounds instead of covering the full viewport
v0.11.32026-04-01
Added
  • ·Cmd+L keyboard shortcut to toggle the launcher bar
Fixed
  • ·Restored adapter sessions now re-establish child exit watcher so adapter state clears correctly on exit
  • ·End hook events verify session ID before clearing adapter state, preventing stale events from resetting active sessions
  • ·Snapshot paneType no longer incorrectly saved as adapter name (was writing "claude-code" instead of "vanilla")
  • ·Cmd+V no longer crashes when clipboard contains malformed TIFF data from clipboard managers or enterprise tools
  • ·Launcher no longer reappears on terminal clear (Ctrl+L, `clear` command), which interfered with TUI tools
  • ·Hook routing now uses per-PTY ATRIUM_HOOK_PORT env var so multiple Atrium instances (release + dev) don't cross-talk
v0.11.22026-04-01
Fixed
  • ·Initialize Prism explicitly at app startup so markdown code blocks do not crash with `Can't find variable: Prism` on some macOS WebKit/Tauri runtime combinations
v0.11.12026-04-01
Added
  • ·Lightweight metadata journaling for faster persistence of pane, tab, layout, and markdown UI state changes
  • ·Persisted global markdown editor preferences in config, including default view mode, book view, width, margin, font, font size, and text alignment
Changed
  • ·Native Find now routes to the active markdown pane so `Cmd+F` opens markdown search instead of terminal search when a markdown doc is focused
  • ·New markdown files now open using the current global markdown editor defaults instead of always starting in rich text mode
Fixed
  • ·Speed up Claude recent-session listing by replacing the `awk` + `jq` pipeline with a faster Perl-based implementation
  • ·Markdown editor dirty state, save handling, pane-scoped search, and multi-pane watcher behavior
  • ·Markdown TOC/comment controls and floating comment button positioning/styling inside the pane
v0.11.02026-04-01
Added
  • ·Rich text markdown editor (MDXEditor) for .md/.mdx files opened from file browser
  • ·RTE/Source toggle in pane header for markdown panes (source view uses Monaco)
  • ·File watcher for external change detection with conflict resolution toast
  • ·Comment directive system for inline markdown comments
v0.10.02026-04-01
Added
  • ·Periodic update checks configurable in settings (default: every 24 hours)
Fixed
  • ·Persist launcher settings (worktree mode, overrides, last adapter) across restarts
  • ·Kill entire process group on pane/tab close so AI tool child processes terminate
  • ·Prevent launcher from appearing during active AI tool sessions
v0.9.02026-04-01
Added
  • ·Monaco editor for file browser — files open in an inline editor pane instead of nano
  • ·Tab titles show pane name when tab has a single pane and default "Zone #" name
Fixed
  • ·Sanitize XML tags in session names (e.g. `<command-message>` → `/` prefix)
  • ·Dark text on accent-background install update button for readability
  • ·Prevent launcher from showing when an AI tool is active
  • ·Dev mode title bar glow for visibility
v0.8.02026-03-31
Added
  • ·File drag-and-drop support for terminal panes
Fixed
  • ·Cmd+V image paste detection and drop-to-correct-pane targeting
v0.7.02026-03-31
Added
  • ·Pre-set adapter state on launcher resume and session title in pane header
v0.6.02026-03-31
Added
  • ·Deterministic pane detection via `ATRIUM_PANE_ID` environment variable
v0.5.12026-03-31
Fixed
  • ·Prevent keyboard events from propagating through dialogs to terminal
v0.5.02026-03-31
Added
  • ·Reshow launcher when terminal is cleared (no active AI session)
v0.4.22026-03-31
Fixed
  • ·Use adapter displayName and accentColor from registry, not hardcoded values
v0.4.12026-03-31
Fixed
  • ·Remove legacy Rust hook installer — adapters own their config files
v0.4.02026-03-31
Added
  • ·"Restart now" button on update toast
v0.3.12026-03-31
Fixed
  • ·Force thin dark scrollbar across all macOS scroll bar settings
v0.3.02026-03-31
Added
  • ·Persist launcher state to `~/.atrium`, remember last tool selection
  • ·Auto-version bump in release pipeline
Fixed
  • ·Read app version from package.json instead of duplicating
  • ·Sync Cargo.toml version to match package.json
v0.2.02026-03-31
Added
  • ·File browser in workspace sidebar
Fixed
  • ·Show launcher on first-run pane
  • ·Restore OSC 7 CWD tracking via ZDOTDIR (no double prompt)
v0.1.42026-03-30
Fixed
  • ·Add "app" bundle target for updater artifacts
v0.1.32026-03-30
Fixed
  • ·Add includeUpdaterJson to tauri-action for auto-updater support
v0.1.22026-03-30
Fixed
  • ·Revert updater target — createUpdaterArtifacts is sufficient
v0.1.12026-03-30
Fixed
  • ·Worktree post-create waits for directory instead of setTimeout
  • ·Restore .worktreeinclude copy for inline worktree creation
  • ·README corrections and updater artifacts config
v0.1.02026-03-30
Added
  • ·Initial release: terminal workspace for AI-powered development
  • ·PTY management with xterm.js + WebGL rendering
  • ·Workspace persistence and crash recovery via write-ahead journal
  • ·AI session detection and auto-resume via adapter system
  • ·Split panes with react-mosaic drag-to-rearrange
  • ·Theme system with 5 built-in themes and custom theme support
  • ·Keybinding system matching iTerm defaults
  • ·Git worktree integration