Changelog

All notable changes to Atlas (CLI, TUI, MCP server and Atlas Desktop). Versions follow SemVer; the CLI and the desktop app always ship together with the same version.

[Unreleased]#

Added#

  • Updates, shown properly. When a newer release exists, a soft-glow Update to X.Y.Z pill appears in the sidebar footer and you get one native notification per version (same switch as agent notifications). It opens a What’s new sheet with the release notes of every version between yours and the latest, Update and relaunch with live steps (Download and verify → Install → Update the app, raw output under Details), Later, and Skip this version (remembered until a newer one ships). The first launch after an update shows a one-time Updated to X card with See what’s new.
  • Settings → General → Updates: current versions, channel, last check, Check now, an automatic-check switch (on launch, on returning to the app at most every 6 hours, and every 6 hours) and a link to the full changelog. Command palette: Check for updates and What’s new.
  • Project icons: every project gets an icon (your emoji or Lucide icon, the repo’s own favicon/logo auto-detected, or a monogram) and an optional color, via right-click → Change icon and color…; shown in the sidebar, header breadcrumb, panel, palette, Files header and tray.
  • Sidebar: shows the active project’s worktrees; other projects collapsed under “Other projects”; the bottom strip is now project icons instead of dots.

Changed#

  • The big Dev build card in the sidebar is gone. Dev builds (atlas link, cargo tauri dev) now show a 2 px amber line across the top of the window, a small Dev chip next to the version in Settings and in the menu-bar popover, and a tooltip on the top edge: Dev build X — updates paused (atlas unlink to resume).

[1.0.1] — 2026-10-11#

Changed#

  • Dependencies updated to their latest versions: Rust crates (clap 4.6, tempfile 3.27, flate2 1.1, insta 1.49, pollster 1.0, toml_edit, serde_json, syn, cc) and the desktop frontend packages. @codeatlasdev/ui is already at its latest release (0.7.1). A few transitive crates (the toml 0.8 family, psm, generic-array, brotli-decompressor) stay where their parent crates pin them.
  • TypeScript stays on the latest 6.x: TypeScript 7 (the native Go compiler) no longer ships the JavaScript API that SvelteKit’s sync uses.

[1.0.0] — 2026-10-11#

Atlas 1.0 turns Atlas Desktop into a full development environment: a native GPU terminal, a Zed-style workspace around it, and a log viewer built for real traffic, in both the desktop app and the TUI. atlas.yaml, the CLI, the TUI and the MCP tools stay compatible with 0.6.

Highlights#

  • A GPU terminal built into Atlas Desktop. Terminals are drawn natively with Metal (wgpu) instead of a web view: 120 Hz, under 1 ms of render work per frame, images, color emoji, ligatures and shell integration. On by default for local terminals.
  • A Zed-style workspace. Left, right and bottom docks, pane zoom, a command palette with every action, go to file and go to symbol, rebindable shortcuts, Zed themes, file icons, and a settings page for fonts, terminal and panels.
  • Logs built for real traffic, in the TUI and the desktop. Search like a terminal (match counter, next/previous, highlights), jump to the next error or warning, click a URL or path:line to open it, full color fidelity, and no freezes under bursts of hundreds of thousands of lines.

GPU terminal#

  • Rendering: Metal through wgpu. Each terminal is a native view over its pane, with its own render thread that sleeps until there is output. Frames are vsync-paced at 120 Hz on ProMotion displays; render work is ~0.2–0.3 ms p95 for a 144×44 grid in an optimized build.
  • Text: bundled JetBrains Mono with a Nerd Font symbols fallback, bold/italic, programming ligatures (->, !=, =>, ===; toggle in settings), color emoji including ZWJ sequences, flags, skin tones and VS16, a minimum-contrast option (WCAG ratio), and pixel-exact box drawing, block elements, braille, sextants and powerline glyphs that tile without gaps.
  • Underline styles: single, double, curly, dotted and dashed, in color (SGR 58), plus strikethrough.
  • Images: the Kitty graphics protocol (PNG, RGB/RGBA, zlib, chunked transfers, files, placement ids, z-order above or below text, quiet mode) and sixel. Images scroll with the text and leave with the alternate screen.
  • Shell integration: OSC 133 prompt marks (⌘↑ / ⌘↓ jump between prompts, exit codes), OSC 7 working directory (Restart reopens there), titles, bell (flash, Dock attention when unfocused).
  • Interaction: native selection (character, word, line and ⌥ block), 10,000 lines of scrollback (configurable) with a scrollbar, ⌘F regex search with match counter and highlights, clickable URLs and OSC 8 links (⌘-click), copy and bracketed paste, dropping a file pastes its path.
  • Keyboard and modes: the Kitty keyboard protocol, synchronized output (mode 2026), grapheme clusters (mode 2027), cursor shapes and blinking (hollow when unfocused).
  • Clipboard safety: a program writing the clipboard with OSC 52 now asks first (terminal.osc52: ask, allow or deny). Reading the clipboard is always denied.
  • Live settings: theme, font size, cursor, scrollback, ligatures and contrast apply to open terminals.
  • Backpressure: the terminal host now slows a program down when the screen cannot keep up, like a native terminal, instead of buffering its output in memory. A client that stops reading for 2 s is dropped so it cannot freeze the program.
  • Terminals of SSH-host worktrees keep using the classic (xterm.js) renderer, as does a terminal host started by an older Atlas until it restarts (Settings → Editor & terminal → Restart terminal host).

Benchmarks against Ghostty on the same machine are in docs/terminal.md.

Workspace#

  • Docks: ⌘B left (project or git panel), ⌘R right, ⌘J bottom (its own terminal tabs), ⌥⌘Y all docks, ⇧Esc zooms the focused pane, plus a centered layout. Docks are resizable by dragging and remember their size; header buttons show their state.
  • Palettes: ⌘⇧P command palette (every command with its current shortcut, recently used first, matched characters highlighted), ⌘K jump to worktrees and terminals, ⌘P go to file with file icons, ⌘⇧O go to symbol in the open editor.
  • Shortcuts: every shortcut is a named command with Zed’s names and defaults. Rebind or unbind them in Settings → Keyboard shortcuts, or under keymap in ~/.atlas/desktop/settings.json.
  • Themes: Zed theme files (v0.2.0 format) color the whole app, the code editor and the terminals. Bundled: Atlas Dark/Light and One Dark/Light; add your own in ~/.atlas/desktop/themes/. Separate light and dark choices follow the system appearance.
  • File icons: the Material Icon Theme in the explorer, tabs and go to file.
  • Settings → Editor & terminal: editor and interface fonts, terminal font size, cursor, scrollback, OSC 52 policy, ligatures and contrast, explorer side, icons and indentation, active-pane border and inactive-pane dimming (Zed setting names).
  • Polish: welcome screens for a first run and for an empty worktree, loading skeletons, in-app confirmation dialogs instead of browser prompts, tooltips that show the current shortcut, tidier sidebar, explorer, agents and dashboard views.

Logs#

  • Robust ingestion (runner): real lines are assembled from the raw pipe. Partial lines (prompts) show after 150 ms of silence, \r\n is one line break, a lone \r keeps only a progress bar’s last state, invalid UTF-8 is replaced, and lines over 16 KiB are cut with … [truncated]. Level, timestamp and sequence number are computed once per line.
  • Restart separators: a dim ──── HH:MM:SS restarted ──── rule separates a service’s runs.
  • Bursts never cut the desktop off: a client that falls behind skips log lines and gets a “N lines skipped” marker (the full output stays in .logs/), instead of being disconnected. Output reaches the app in ~16 ms batches.
  • TUI: / find with n/N counter and highlights across the whole buffer, ]e/[e and ]w/[w jump between errors and warnings, }/{ move between URLs and path:line[:col] links and o opens them (browser or your GUI editor at the line; copied otherwise), y copies a link. Rendering is O(visible rows) with a cached wrap index.
  • Desktop: ⌘F find with regex/case toggles, n/N counter, Enter/⇧Enter and highlights; filter mode hides non-matching lines; e/w jump to the next error/warning; ⌘-click opens URLs in the Atlas browser and path:line in an editor tab at that line; error counts on service chips; timestamps and wrap toggles; a “N new lines” pill while scrolled up; Copy for AI of the filtered view. The view keeps 50k lines, filters incrementally (a filter change re-scans in idle slices) and parses ANSI only for visible rows. Colors follow the theme’s terminal palette, including 256 colors, truecolor, underline styles and OSC 8 links.
  • MCP: atlas_logs_search uses the same matcher as the TUI and stays case-insensitive.

Changed#

  • Shortcuts follow Zed: the jump palette is ⌘K only (⌘J opens the bottom dock), restart the focused service is ⌥⌘R (⌘R toggles the right dock), the right sidebar is ⌘R (was ⌘⌥B), the git panel is ⌃⇧G. Any of them can be rebound.
  • The GPU terminal is on by default; turn it off in Settings → Editor & terminal.
  • Release notes now come from this changelog.

Fixed#

  • The desktop Logs tab could stay empty when the service filter from another project did not exist in the current one.

  • First-run project discovery could throw when the registry had already loaded.

  • The sidebar showed ⌘J for the jump palette.