Skip to content

v2.0.0

Choose a tag to compare

@github-actions github-actions released this 09 Sep 23:12
· 1396 commits to master since this release

Workroom 2.0 — the native macOS app, out of beta

Workroom 1.x was a CLI that made Git worktrees and JJ workspaces pleasant. 2.0 is a native macOS app built on that same engine: a sidebar of every project and workroom you're working on, a live terminal in each one, and a VCS inspector that reads Git and JJ structurally instead of scraping CLI output. The CLI ships bundled inside the app — and stays fully standalone for terminal-first use on macOS, Linux, and Windows.

This is the first stable release since 1.3.0, after 28 betas and a release candidate. Requires macOS 15 Sequoia or later on Apple Silicon. The app is Developer ID-signed and notarized, and updates itself.

The app

  • A project → workroom tree sidebar showing each row's branch or bookmark, change badge, and CI state, with layout, selection, and expansion remembered across launches.
  • Embedded terminals powered by libghostty, already cd'd into the workroom: multiple tabs per workroom, split panes, drag-to-reorder, copy-on-select, scrollback find (⌘F), and ⌘-click to open a file path in your editor.
  • Terminals that outlive the app. A background session daemon keeps your dev servers, builds, and REPLs running across quit — reopen Workroom and every window, panel, layout, and scrollback comes back as you left it, with an offer to resume an agent session in a restored pane.
  • Workroom tabs and splits in the title bar: quick-switch between active workrooms, drag one onto a pane edge to co-display two side by side, and hold several split groups per window across as many windows as you want.
  • ⌥Tab / ⌃Tab quick switching by recency, through a Liquid Glass rail of stacked, per-target cards.
  • Notifications you can act on. A running command animates its tab and sidebar row; a backgrounded terminal that posts a notification lights up its tab and project, raises a desktop banner when Workroom isn't frontmost, and lands in a notifications panel you can click to jump straight back to the terminal that raised it.
  • Agent-aware terminals — a recognized CLI or TUI shows its own favicon on its tab, the footer reports agent quota usage with a detail popover, and an inline agent can diagnose a failed command.
  • Per-project run commands executed in the background with success/failure detection and a status toast.
  • A first-run onboarding wizard, a grouped Settings window, a Keyboard Shortcuts dialog, and VoiceOver selection reporting.

VCS, read natively

The inspector reads each workroom's repository directly — jj through jj-lib (Rust, over UniFFI) and Git through libgit2/SwiftGitX — so history, status, and diffs come from the repository's own data structures rather than parsed terminal output.

  • History — a paged commit log with hover cards, avatars, unpushed and divergent-changeset markers, auto-refreshing on VCS changes.
  • Changeset detail — message, authors, refs, changed files, and per-file diffs, in one unified layout for both Git and JJ.
  • Changes — a live working-copy view with +N/−M line counts, rename and copy detection, and commit straight from the inspector.
  • Diffs — unified or side-by-side, tree-sitter syntax highlighting, GitHub-style two-column gutters, and shebang-based language detection.
  • Pull requests — create, merge, ready/draft, close and reopen; per-reviewer status, individual CI checks, and links out to GitHub.
  • A file explorer with a read-only viewer, syntax highlighting, and a Markdown source/preview toggle that renders tables and mermaid.
  • Live refresh via FSEvents on both the workroom and its project root.

Themes and appearance

58 theme families with dark and light variants, applied live across terminals and app chrome — title bar, sidebars, inspector and all — plus ⌘⇧L for a quick dark/light toggle and system/light/dark following.

Updates and channels

Workroom ships as two products. The main install tracks either stable (GA only) or pre (betas and release candidates), switchable at runtime from Settings or workroom update --channel. Workroom Nightly is a separate side-by-side install with its own icon and bundle id, built daily from master, so it can never collide with your main one. Updates are delivered through Sparkle with a "What's New" dialog, and CLI downloads are verified against the release checksums.txt.

The CLI

  • A machine-readable --json API (create, list, delete, add-project, delete-project) that the app drives, with a versioned envelope contract.
  • WORKROOM_PATH and WORKROOM_ROOT_PATH environment variables for setup and teardown scripts.
  • workroom update with channel selection, and install.sh / install.ps1 channel support.
  • Moving a project and its workrooms to the Bin, and creating new project directories that aren't repositories yet.

Upgrading

workroom update from 1.x picks this up as the new latest release. GA ships on the default channel, so every existing install — beta, release candidate, stable — is offered it automatically. If you've been running prereleases and would rather only see GA builds from here, pick Stable under Settings ▸ General ▸ Release channel.