Releases: joelmoss/workroom
Release list
v2.0.0-beta.22
Choose your update channel
This beta adds release channels — decide how bleeding-edge you want Workroom to be — and
gathers everything version- and update-related into a new About settings pane. Plus a
native-toolbar fix that kills a macOS 26 app-hang, and a livelier History panel.
⚠️ Still a beta — expect rough edges.
Release channels
- Stable ↔ Pre on the main app, switchable at runtime — pick it in Settings ▸ About ▸
Release channel or withworkroom update --channel stable|pre - Nightly ships as a separate, side-by-side product — a "Workroom Nightly" app (violet icon,
own bundle id) and aworkroom-nightlyCLI, pinned to nightly by build identity so it never
drifts into or collides with your main install - Prerelease-aware updater: per-channel selection, checksum-verified downloads, nightlies ordered
by commit count and everything else by semver - Upgrading beta users are opted into pre automatically on first launch
About settings pane
- New About section in Settings gathers the app version, repository + Releases links, "Check
for Updates…", the auto-update toggle, and the channel picker in one place - General keeps its three toggles; nightly builds hide the channel picker (fixed by build identity)
History
- The History panel now auto-refreshes on VCS changes — commit in the terminal and the log
updates live, no reselect or manual refresh needed - Rich hover card on history rows, with branch/bookmark refs kept off the wrapping line
Fixes
- Killed a macOS 26 title-bar AppHang (≥2s main-thread stalls) and a stray » toolbar-overflow
popup — the window toolbar is now hidden in AppKit, with the chrome living in the titlebar
accessory
v2.0.0-beta.21
Source control comes to Workroom
This beta turns Workroom into a place you can read your code's history, not just run
terminals in it. A new native VCS engine — jj via jj-lib
and Git via SwiftGitX (libgit2), unified behind one Swift seam — powers two new inspector
panels: History and Changes, with rich, GitHub-style diffs. Both backends, one UI.
⚠️ Still a beta — expect rough edges.
History
- New History section in the activity bar: a paged commit log for the selected workroom
- Click a commit for a changeset detail view — identity, refs,
+/-line counts, a
resizable file list, and per-file diffs - Back/forward navigation restores the exact commit and file you were viewing
- jj: divergent changesets are surfaced; short change ids throughout
- User avatars on commits, with a privacy toggle to turn avatar fetching off
Changes
- One unified Changes sidebar for both git and jj (bookmarks/branches, jj commit chips
- message)
- A dirty dot on the activity bar's Changes icon when the working copy has edits
- Working-copy diffs routed through the new engine, with content caching and size limits
Diffs
- GitHub-style diffs: two-column line-number gutter and full syntax highlighting
- Commit-scoped and working-copy diffs share one viewer and diff source
Window & polish
- Window chrome reorganized around the activity bar (leading hairline divider dropped)
- Uniform sidebar row sizing with a secondary project name; more breathing room above the
first project - Terminal tab titles now truncate with a full-title tooltip
- libghostty focus is now driven from app + window-key state (fixes dead nav keys after
refocus)
Reliability
- VCS reads hardened for concurrency and clearer error surfacing
- jj CLI shell-outs moved off the Swift cooperative pool (GCD) — fixes History/Changes
hanging on the loader forever - Inspector empties cleanly when the selected workroom has no tabs
Under the hood
- Rust VCS core wired into the app and CI as a universal (arm64 + x86_64) build
- The repo is now framed around the macOS app, with the CLI as the bundled engine
v2.0.0-beta.20
workroom 2.0.0-beta.20 — a redesigned Settings window, plus split & terminal fixes
This beta reorganises Settings into a themed, grouped sidebar and clears a batch of
split-view, terminal, diff-pane, and workroom-setup bugs in the macOS app.
⚠️ This is a beta — expect rough edges.
macOS app
- Settings, redesigned. The Settings window (⌘,) moves from one flat Form to a
source-list sidebar with four groups — General, Appearance, Terminal, Agent — each
showing its own pane. Every control keeps its existing binding; the window is now
themed to match the app, and ⌘W closes it.
Fixes
- Drag-to-split works again with the left sidebar open (the drop target was mis-measured
while the sidebar was expanded) - Collapsing a split back to a single pane keeps the surviving terminal surface alive
instead of tearing it down - Clicking over diff lines now focuses the diff pane (text selection was swallowing the tap)
- Workroom setup no longer triggers an FSEvents probe storm
- Closed a lost-signal race in the run supervisor's parked phase
Build & CI
- The app CI job now caches and retries Swift package resolution, so a transient
github.com clone timeout no longer fails the whole build
v2.0.0-beta.19
workroom v2.0.0-beta.19 — unified title bar, inline terminal agent, PR merge
The macOS app moves its chrome into a real unified toolbar, gains an inline agent that
diagnoses failed terminal commands, lets you merge a pull request without leaving the app,
and reworks the workroom-creation flow.
⚠️ This is a beta — expect rough edges.
Title bar & window chrome
- Unified toolbar — the title-bar chrome now lives in a real unified
NSToolbar, with
breathing room around the controls and centered traffic-light buttons - Fixed the title-bar flash and traffic-light jitter, and restored the terminal-strip toolbar
hover
Terminal
- Inline terminal agent (#49) — when a command fails, diagnose it in place with your local
claude/codexCLI and get a suggested fix in the pane's status bar - Split down button on the terminal tab bar (#114)
- Terminal focus now syncs when a surface is created after the first responder is set
Pull requests
- Merge from the app (#88) — a split Merge button on the PR panel: pick Create a merge
commit, Squash and merge, or Rebase and merge; the choice persists across projects and
restarts
Workrooms
- Reworked creation flow (#116) — a cleaner new-workroom UI, and fixed create/delete races
- Context menu on the split title bar (#112), and a workroom label change now reflects in the
split title bar too (#113)
Files & Markdown
- Open changed files in-app (#117) — open a changed file straight from the Changes sidebar
- Themed Markdown preview — rendered in a themed
WKWebViewwith tables, mermaid, and HTML,
plus a source/preview toggle in the tab bar
Notifications
- Moved to the left sidebar (#118)
Under the hood
- Minimum macOS raised to 15 (Sequoia)
- Inspector section resize is preserved when you collapse another section
v2.0.0-beta.18
workroom v2.0.0-beta.18 — file inspector, Markdown & syntax-aware viewing
The macOS app grows a read-only file browser: inspect any file in a workroom from a tree,
read Markdown rendered or raw, and get syntax highlighting driven by the file's shebang.
Plus create projects in brand-new directories and label workrooms.
⚠️ This is a beta — expect rough edges.
macOS app
- File tree inspector + read-only viewer — browse a workroom's files in a tree and open
any file in a read-only viewer (#61) - Markdown source/preview toggle — read
.mdfiles rendered, or flip to the raw source - Shebang-aware language detection — the file and diff viewers detect script language from
the shebang line, so shebang scripts get the right syntax highlighting - Create new project directories — the New Project flow can create and git-init a brand-new
directory, not just adopt an existing repo (#103) - Display-only workroom labels — attach labels to workrooms in the sidebar (#41)
- Workroom split group title bar — a title bar for split groups (#110)
CLI
- Reconcile stale VCS type on list —
listcorrects a workroom's recorded VCS type when it
no longer matches what's on disk
v2.0.0-beta.17
workroom v2.0.0-beta.17 — safer deletes, drag-to-split, terminal find
A round of macOS app polish: deleting a project now moves it to the Bin instead of
erasing it, you can split a workroom straight from the sidebar, and the terminal gains
scrollback search.
⚠️ This is a beta — expect rough edges.
macOS app
- Delete moves to the Bin — removing a project (and its workrooms) now sends the
directories to the macOS Bin via Finder, so a deletion is recoverable (#108) - Split from the sidebar — drag a workroom out of the sidebar to open it in a split (#101)
- Terminal scrollback find (⌘F) — search terminal output, with next/previous that
wraps and steps in the right direction - Reliable run supervision — the run command executes under an in-terminal supervisor,
fixing the phantom "a server is already running" respawn (issue #7) - Reorder tab chips by dragging — drag workroom tab chips to reorder without dragging
the window (#23) - Steadier close-tab confirm — the close-tab prompt is now a window-modal sheet, so
Return reliably confirms - Open the project root terminal automatically after adding a project
v2.0.0-beta.16
workroom 2.0.0-beta.16
Another macOS app round: the Changes panel grows file actions, a new Open Workroom
picker lands on ⌘O, the inspector and title-bar chrome get a refresh, and every
shortcut now shows up in its control's tooltip.
⚠️ This is a beta — expect rough edges.
macOS app
- Changes-panel file actions (#93) — hover a changed file for an inline toolbar, and
⌘-click (or the toolbar button) opens it in your editor. Open-file labels are tidied up,
and.other(untracked) changes are now covered too - Open Workroom picker (⌘O) — jump to any existing root or workroom from a searchable
picker. ⌘O now opens it (and Open-in-Editor moves to ⇧⌘O); the workroom tab strip got a
pass of polish alongside it - Refreshed inspector & sidebar chrome — the inspector and sidebar now read as distinct
surfaces, sitting under a taller single-row title bar - Keyboard shortcuts in tooltips (#99) — every control whose action has a key equivalent
now shows it in the tooltip (⌃⌘S sidebar, ⌘[ / ⌘] back/forward, ⌘R/⌥⌘R/⇧⌘R run, ⌘T new
terminal, ⌘N new workroom, ⌥⌘C/⌥⌘P/⌥⌘N inspector sections, …), and two stale hints from
the ⌘O reshuffle were corrected
v2.0.0-beta.15
workroom 2.0.0-beta.15
Mostly macOS app polish this round — title-bar fixes, steadier window and notification
handling, and refreshed dependencies.
⚠️ This is a beta — expect rough edges.
macOS app
- Update pill moved to the trailing title bar — it no longer overlaps the sidebar
divider, so hovering it shows the normal cursor instead of the resize splitter (and a
drag no longer resizes the sidebar) - Workroom menu trimmed — removed "What's New in Workroom…"; "Check for Updates…" now
sits directly beneath "About Workroom", and "Install workroom Command" / "Keyboard
Shortcuts…" sit just below Settings… - Removed the stray
»toolbar overflow chevron from the title bar - Double-click an empty title bar to zoom or minimize (#85)
- ⌘` cycles all windows now, including the Quick Terminal (#87)
- Title bar no longer jumps while a workroom tab streams output (#90)
- Notifications from unfocused split panes now surface (#89)
- Live run toast is scoped to the selected workroom (#73)
- Root branch/bookmark labels live-refresh via per-project FSEvents
- No more false "GitHub CLI not signed in" warning on network blips (#86)
Dependencies
- Sentry 9.19.0, Sparkle 2.9.3, Defaults 9.0.9
CLI & docs
- CLI release archive name kept as
workroom_so it matches the documented install paths - Expanded README with build, architecture, and release docs
v2.0.0-beta.14
What's new in 2.0.0-beta.14
This release moves the workroom tab bar into the title bar and polishes
workroom splits across the macOS app.
⚠️ This is a beta — expect rough edges.
Title bar
- The workroom tab bar now lives in the title bar, stretched between the leading controls (sidebar toggle + history nav) and the trailing toolbar — reclaiming a full row of window height
- Trailing title-bar controls regrouped for a tighter layout
- The focused workroom tab gets an underline-style indicator, keeps its dividers, and the workroom + terminal tab strips got an all-round polish
Workrooms & splits
- New workroom picker dialog (⌘N) for creating a workroom from any project (#81)
- Workroom tab context menu plus a dedicated new-workroom button on the bar
- Closing a workroom's last panel now opens the next workroom instead of leaving an empty detail (#80)
- Unfocused workroom splits dim so the active one reads instantly (#82) — and the backgrounded pane's tab strip now fades with it, not just its terminals
- Wider split-resize divider and new "Resize Evenly" menu items (#83)
- The trailing tab divider no longer doubles up against a split group pinned to the far-right edge
Updates
- The Update pill now appears after a manual "Check for Updates…" finds one
- The Sparkle update dialog shows the curated release notes rather than the raw commit list
Under the hood
- Split
RootView.bodyinto smaller sub-views so it type-checks within the compiler's budget — Xcode 26.3 on CI was timing out on the single large expression
v2.0.0-beta.13
What's new in 2.0.0-beta.13
This release is all about the pull-request panel and run-command feedback in the macOS app.
⚠️ This is a beta — expect rough edges.
Pull requests
- The PR panel now lists individual GitHub CI checks — glyph + name per check, not just a single roll-up
- Sidebar and tab CI aggregate reflects every check, so a failing check anywhere shows through
- PR header improvements with optimistic state changes — actions update the UI immediately instead of waiting on the round-trip
- New "Go to Pull Request" item in the PR header menu
- Leaner rows throughout: dropped the open-in-browser chevron from reviewer rows, and stopped grouping the PR number into the section badge
Run commands
- Run commands now detect success vs. failure: a non-zero exit shows a red
xmark.octagonglyph (run-tab chip + workroom-tab dot) and a failure toast; a clean exit shows a success toast. Stop / Restart / Ctrl-C count as user actions, not failures.- Fixes a gap where GhosttyKit 1.2.3 always reported exit code 0 — the real
$?is now captured via an EXIT-trap.exitfile.
- Fixes a gap where GhosttyKit 1.2.3 always reported exit code 0 — the real
Live status
- The selected workroom's VCS status live-refreshes via FSEvents — no manual refresh after a commit or branch change