← Back to brtdv.com
OpenSolo app icon

OpenSolo

A native macOS workspace for your coding agents and dev stack.

v0.12.12 · macOS 15+ · Apple Silicon
Audit pane teardown · Claude pid 65113 · 1.1 GB · 12.5%
$ claude
Wiring up OpenSolo hooks & MCP…
Connected to OpenSolo · 11 tools available
 
Audit the pane teardown path: confirm SIGTERM grace before SIGKILL, no orphan workers holding ports.
 
Read( Sources/OpenSolo/Process/ProcessTree.swift) → 86 lines
Spawning sub-agent · Investigator (Claude)
Sub-pane opened beside this one

Sidebar

One sidebar, every moving part

Agents, scheduled tasks, dev-server commands and free shells group under each project. Every pane is a real PTY terminal with full colour, TUI and mouse support, powered by GhosttyKit.

A sonar pulse next to each pane shows live status. Tap ⌘19 to jump between them.

Coachbox Platform
▾ Agents2/3
Claude Code · Claude 501 MB
Codex · GPT-5 312 MB
Investigator · Claude 394 MB
▾ Tasks2/3
Nightly release notes Daily 02:00
▾ Commands 1/2
dev · pnpm dev 186 MB
build · pnpm build

Agents

Claude Code wired up automatically

Spawn a Claude pane and OpenSolo injects hooks for live activity, the opensolo MCP server, and a system-prompt addendum. No config to copy.

From inside the pane the agent can read sibling panes, switch project scope, spawn sub-agents, and inspect open ports. Eleven tools available out of the box.

Claude Code · Claude
$ claude
Wiring up OpenSolo hooks & MCP…
Connected to OpenSolo · 11 tools available
What can you tell me about the dev server pane next to you?

Git inspector

See changes and history beside your work

A panel beside each project shows the working-tree diff plus the branch's commit history. Click a commit to inspect the files and lines it touched.

File list and diff pane are resizable; long lines wrap when you ask them to.

main 607c72ad 3h
M PaneRow.swift +24
M SidebarView.swift +12−3
M AppStore.swift +8
M PaneSession.swift −5
142 HStack(spacing : 8) {
143 StatusDot(status : …)
144 Spacer (minLength: 6)
145 memoryReadout
144+ Spacer()
145+ HStack(spacing : 3) { sparkle; memoryReadout }

Process lifecycle

Honest stop, every time

Stop a pane and OpenSolo kills the whole forked tree: zsh pnpm node → every worker. SIGTERM first, SIGKILL after a short grace.

No orphan workers holding ports between restarts. No mystery EADDRINUSE next time you try to dev.

Stop signal sent → tree-kill in progress
zsh -lic 'pnpm dev' PID 14213
pnpm dev PID 14218
node vite PID 14224
node esbuild worker PID 14231
node esbuild worker PID 14232

GitHub Projects

Your project board, in the sidebar

Connect a GitHub account, pick which Projects v2 boards belong to a project, and open one in a native Kanban view. Move a card by keyboard or drag, and the new column and position write straight back to GitHub.

Set assignees with A and labels with L from a searchable picker, narrow the board to the people and labels already on it, or hand a card to a fresh Claude agent with C.

Coachbox Platform
Todo2

Tree-kill leaves no orphan ports

bug 3 BD

Lockfile-aware script runner

enhancement JV
In Progress 2

Filter board by assignee & label

feature 5 MK BD

Write card moves back to GitHub

enhancement BD
Done1

Keyboard column navigation

done JV

More than meets the menu

Pop the hood

The rest of the iceberg — every action mapped to a menu, every menu mapped to a shortcut, every shortcut backed by something real.

⌘⇧K · Action palette

Every action, two keys away

  • Restart dev · pnpm dev OpenSolo App
  • Restart api · cargo run Sparkle Appcast
  • Start build · pnpm build idle
  • Switch to Audit pane teardown running
  • + New project… ⇧⌘N

Fuzzy-matched. Running panes float to the top, idle ones sink. Enter to act, no mouse needed.

Right-click anything

Menus that know what you clicked

Pane, project, section header, git file — each surface shows only the actions that make sense for it.

Hands on keyboard

Jump anywhere

  • 19Jump to pane
  • K Action palette
  • NNew project
  • 19Alt pane set

Tasks · cron-style

Schedule Claude like a coworker

  • Nightly release notes Daily · 02:00
  • PR triage & labels Mon-Fri · 09:00
  • Sparkle appcast publish On release

Each task spins up a fresh Claude pane on its schedule and tears it down clean. Logs land in the sidebar; failures bounce the Dock.

TodoWrite · mirrored

Watch Claude tick the boxes

  • Read ProcessTree.swift
  • Identify SIGTERM grace
  • Verify pkill -P walks subshells
  • Write regression test
  • Open PR

Claude's TodoWrite tool feeds into a live Tasks panel beside the pane. Updates arrive over MCP — no list echoed in the terminal.

Sparkle · signed

EdDSA + delta updates

v0.7.0 v0.8.0 412 KB delta

Only the bytes that changed get downloaded. Every release signed and verified before it lands.

Lockfile-aware

npm scripts, ready to add

pnpm detected via pnpm-lock.yaml
  • devvite dev
  • buildvite build
  • test vitest
  • linteslint .
  • typecheck tsc --noEmit

npm / pnpm / yarn / bun runners picked from the lockfile present. Composer scripts too.

Auto-start · commands

Your stack, up before you ask

Start automatically

  • Manually
  • On app start when OpenSolo launches
  • On first agent or task when you start working

Bring a dev server or watcher up the moment OpenSolo opens, or the first time you touch its project. Command panes only.

Native drag

Drop anywhere

OpenSolo App
→ Finder · Terminal · Editor

fileURL drag sources, Finder icon and all.

Pulls focus, doesn't yell

Dock badge + bounce

2

Counts waiting agents. One bounce on 0 → 1.

FAQ

Questions worth answering

Does OpenSolo send any data back to you?

No analytics, no telemetry, no usage stats getting shipped home, and no tracking SDK bundled with the app. Two things do leave your Mac. Sparkle asks the appcast whether a newer version exists, and when OpenSolo crashes or hangs it sends a crash report to Sentry (hosted in the EU) so the bug can get fixed.

Crash reports are scrubbed on purpose: a stacktrace and the build number, nothing more. No IP, no username, no breadcrumbs, and never your pane contents, command output, or file paths. They show where the code broke, not what you were doing.

How much does OpenSolo cost?

It's free. No paid tier, no license to validate, no project or process caps, no upgrade nag waiting to land in the next release. Download it and use it.

What do I need to run it?

macOS 15 (Sequoia) or newer, on an Apple Silicon Mac.

Which agents does it support?

Claude Code, Codex, Gemini CLI, OpenCode, Aider, Cursor Agent and Crush each have a built-in entry in the Add Agent sheet, so picking one is enough to spawn it with the right command. For anything else the Custom option lets you point at any CLI you have on your machine, or you can run it as a regular Command pane.

Do I need a Claude subscription?

OpenSolo doesn't bundle any AI of its own. It hosts the agent CLIs you've already installed locally, so the keys, subscriptions and login flows you set up for those tools are the ones being used.

Where is my config stored?

Locally, in ~/Library/Application Support/com.brtdv.OpenSolo/config.json . It's plain JSON, so you can back it up, hand-edit it, or sync it through iCloud Drive or git like any other dotfile.

How is this different from Warp or iTerm?

Warp and iTerm are mostly there to give you a nicer terminal. OpenSolo sits one level above that: a workspace that organises agents, dev servers and shells per project, tracks their state in the sidebar, and feeds that state back to the agent over MCP. You can keep your favourite terminal app open next to it.

Is it really native, or another Electron wrapper?

Fully native. The app is written in Swift and SwiftUI, and terminal rendering goes through GhosttyKit, which draws directly to Metal. There's no embedded browser engine inside the bundle, which is why it boots quickly and sits at idle memory usage closer to a Finder window than to a typical cross-platform IDE.

Windows or Linux support?

No, and it isn't on the roadmap. OpenSolo leans on macOS-only APIs (AppKit, Metal, Sparkle, the Dock) so the app feels at home on a Mac rather than landing on a portable lowest common denominator.

How do updates work?

Through Sparkle with EdDSA-signed delta updates. OpenSolo checks the appcast roughly once a day, downloads only the bytes that actually changed between versions, and verifies the signature before installing anything.

Changelog

0.12.12

Fixed

  • A Freshdesk support pane keeps its place when you switch spaces. Swiping to another space and back used to reset the open ticket to the top of the list and wipe the scrollback of any agent running in the ticket's drawer, because the whole pane was rebuilt from scratch on each space switch. The pane now stays alive in the background, so your selected ticket and the agent's history are still there when you return.
0.12.11

Fixed

  • A Freshdesk ticket you leave open now picks up new replies. The ticket list refreshed on its own, but the conversation kept showing whatever was loaded when you first opened the ticket, so replies added afterwards stayed hidden until you closed and reopened the support pane. The open thread now reloads whenever the list reports new activity on that ticket, keeping the current conversation on screen until the fresh one arrives.
0.12.10

Fixed

  • Scrolling back through a terminal and selecting text with the mouse work on macOS 26. The four earlier attempts each cleared another helper layer out of the way, but the real cause was that macOS 26 stopped routing mouse events to the terminal surface at all, even though it was focused (which is why typing kept working and it looked scroll-only). OpenSolo now forwards scroll and click-drag events to the terminal directly, so scrollback and text selection respond right away. macOS 15 was never affected.
  • The sidebar filter bar no longer shows up as a grey band on macOS 26. It blends into the sidebar like the list below it again, instead of stacking a second translucency layer that read as grey.
  • The status dot next to the pane title no longer sits in a white pill with a shadow on macOS 26. It lies flat against the toolbar, next to the process metrics.
0.12.9

Fixed

  • Scrolling back through a terminal's history works on macOS 26. The 0.12.8 fix made the per-pane helper layers transparent to the mouse, but the invisible layer that carries the pane's toolbar and title sits above those and still swallowed the scroll wheel and trackpad on macOS 26. That layer now passes every mouse event straight through to the terminal, so scrollback responds right away. macOS 15 was never affected.
0.12.8

Fixed

  • Scrolling back through a terminal's history works again on macOS 26. The 0.12.7 rewrite of click-to-focus reintroduced the same problem 0.12.6 had fixed: a helper layer that sits in front of the terminal on macOS 26 and swallowed the scroll wheel and trackpad. That layer is transparent to the mouse again, so scrollback responds right away. This covers both regular panes and the embedded agent in a Freshdesk ticket drawer. macOS 15 was never affected.
0.12.7

Fixed

  • Scrolling back through an agent's output after you click away and back works again on macOS 26. The 0.12.5 fix for this relied on where the system placed the click in the view stack, and macOS 26 orders that stack differently, so the click never refocused the terminal and the pane stayed frozen. Refocusing no longer depends on that ordering, so the scroll wheel and trackpad scroll the history right away. The embedded agent in a Freshdesk ticket drawer now refocuses on click too.
  • The sidebar filter field no longer renders as a lighter band with a seam toward the title bar. It now uses the same material as the rest of the sidebar, so it blends in while still hiding rows that scroll up behind it.
0.12.6

Fixed

  • The mouse works again in the terminal pane on macOS 26. Clicking, selecting text, and scrolling were all dead because an invisible helper layer added in 0.12.5 sat in front of the terminal on macOS 26 and absorbed every mouse event. The layer is now transparent to the mouse.
0.12.5

Fixed

  • Scrolling back through an agent's output works again after you click away and back. Clicking into a terminal pane now gives it focus, so the scroll wheel and trackpad scroll its history right away. Before this, once focus moved elsewhere (for example after a click in the sidebar), the pane stopped scrolling until you switched agents.
  • Sidebar rows no longer slip under the filter field during a fast scroll. The filter bar now has a solid background that hides any row scrolling past behind it.
0.12.4

Fixed

  • A support ticket that gets resolved while its agent is still running no longer disappears from the ticket list. The ticket stays in the queue as long as its agent is live, so you keep a way back to that agent's drawer. Its status badge turns green to show why a resolved ticket is still listed.
0.12.3

Fixed

  • Collapsing a section in the sidebar no longer crashes the app. A background change, such as an agent spawning a sub-agent or a pane starting or stopping, could land in the middle of the collapse animation and trip a SwiftUI assertion. The sidebar now holds that refresh back until the collapse has finished.
  • A support ticket's embedded agent no longer shows up as a separate row in the sidebar AGENTS section. It stays in its ticket drawer where you started it.
0.12.2

Fixed

  • Typing into a Freshdesk agent drawer no longer drops the C key. The support pane was claiming C (and the arrow keys) for its own shortcuts even while you typed in the embedded agent, so any input with a C went through incomplete. The agent now receives every keystroke once you click into it.
0.12.1

Fixed

  • Switching between two Freshdesk tickets that each have a running agent no longer scrambles or blanks the agent terminal in the bottom drawer, and no longer crashes the app. The drawer now keeps every running agent painted and shows the selected ticket's, so switching tickets never rebuilds a terminal.
0.12.0

Added

  • A new Support section per project, off by default, that you turn on in the project settings. Its first integration is Freshdesk: add a provider with your helpdesk domain and API key (checked on the spot and kept in the Keychain, never in the config file) and you get an Apple Mail style pane. The unresolved ticket queue sits on the left with the sender, ticket number and a preview; the selected ticket's full conversation is on the right, with replies, private notes, attachments and inline images. A blue dot marks tickets still waiting for your first reply, and an orange or red dot marks ones that have gone quiet for three or seven days.
  • Filter and sort the ticket queue, and drive the whole pane from the keyboard: the arrow keys walk the list, left and right switch between the list and the conversation.
  • Spawn a Claude agent to resolve a ticket straight from the pane, with the toolbar button, the C key, or a right-click. It opens in a resizable drawer at the bottom, one agent per ticket, and keeps running in the background while you read other tickets. A dot on the ticket row and on the sidebar Support row shows when an agent is working, has finished, or is waiting on you.
  • Command panes can now start on their own. Pick "On app start" to bring a dev server or watcher up when OpenSolo launches, or "On first agent or task" to start it the first time you work in its project. The option is in the pane's form and applies to command panes only.
  • "Restart running" in a section's menu restarts only the panes that are currently running, and leaves stopped ones alone.

Fixed

  • Dragging the last card out of a board's "No Status" column no longer leaves an empty "No Status" column hanging until the next refresh.
0.11.2

Added

  • A new "Include focused pane" option under Sound preferences. Agent sounds normally stay silent for the pane you're looking at, since its terminal is already in view. Turn this on to hear the needs-input and finished cues for the focused pane too, handy when you keep an agent pane open while working elsewhere on screen.
0.11.1

Fixed

  • Opening a board and switching back to an agent pane no longer leaves the terminal blank until you resize the window. The 0.11.0 fix kept the surface mounted but did not repaint it on return; this release redraws it the moment the board closes.
0.11.0

Added

  • Board cards now show who is assigned (avatars), the issue or pull request labels (coloured pills), and a comment count. Press A on a focused card to set assignees, or L to set labels: pick one or more from a searchable list with the keyboard or the mouse, and the change saves to GitHub on its own. Assignees work on issues, pull requests and draft cards; labels apply to issues and pull requests.
  • A filter button in the board toolbar narrows the board to one or more assignees and/or labels, drawn from the people and labels already on the board.

Fixed

  • Returning to an agent pane after opening a board or switching spaces no longer shows a blank terminal until you resize the window.
  • Swiping away from a board and back now returns to the board, and keeps its cards on screen without a reload spinner, instead of jumping to the last selected agent.
  • The keychain sign-in check no longer runs on the main thread, so the app stays responsive at launch.

Changed

  • The "spawn an agent for this card" shortcut moved from A to C, freeing A for the new assignee picker.
0.10.0

Added

  • GitHub Projects integration. Connect a GitHub account to a project and pick which of its Projects v2 boards show in the sidebar. Open a board in a native Kanban view inside OpenSolo: navigate columns and cards with the keyboard, move a card by keyboard or drag (the new status and position are written back to GitHub), and add or remove issues right from the board. Connecting uses GitHub's device login, and the board picker lives in the Edit Project sheet.

Fixed

  • The background opensolo-mcp helper no longer spins using CPU after its connection closes. It now exits cleanly when the socket reaches end of file.

Changed

  • The global pane switcher (double-tap Command) no longer plays a splash animation when it opens. It now appears instantly.
0.9.11

Fixed

  • Switching between projects no longer briefly freezes the app. Setting up the file-system watcher behind the git changes panel ran on the main thread, so a large project or a slow volume could stall the UI for a moment.
  • Swiping between spaces in the sidebar is smoother and no longer freezes mid-swipe. The pager was rendering and laying out three copies of every space on every frame. Swiping past the first or last space now springs back at the edge instead of looping around to the other end.
0.9.10

Fixed

  • Alert sounds no longer cut each other off when two agents finish at the same moment. Before, the second sound silenced the first, so you saw two pulses in the sidebar but heard one ding. Each sound now plays to the end, the custom clips included.
0.9.9

Fixed

  • A running agent's row in the sidebar no longer flickers or drifts sideways. The pane's activity dot was animating the whole row along with its pulse, so the title and the "· Claude" label visibly slid and faded while the agent worked.
0.9.8

Added

  • Agents can now open a terminal for you over MCP: a new shell appears in the project's Terminals list, ready to use. You can type in it and close it like any other terminal, and the agent can run commands in it too, so you share one shell.

Changed

  • The global pane switcher (double-tap Command) now shows each pane on two lines: the title on top, the agent and project below. Long titles no longer get cut off to make room for the project name.
0.9.7

Fixed

  • The sidebar stays responsive in long sessions instead of slowing down the longer the app runs. Scanning terminal output for links now happens off the main thread, the per-pane memory readout only refreshes when it actually changes, and clicking a pane no longer redraws every row.
  • Memory no longer creeps up as finished agents and task runs pile up: a pane that has exited releases its terminal view when you are not looking at it, and reopens with its scrollback intact.
0.9.6

Added

  • Background agents can play an alert sound when they finish a turn or start waiting for you, so you don't have to keep watching the pane.
  • ⌘N creates another pane of the same kind as the one you have focused: a fresh shell, a new agent of the same type, or a copy of the selected command. Hold ⌥ (⌥⌘N) to open the form and adjust it first.
  • OpenSolo now reports crashes automatically so they can be found and fixed without you sending anything by hand. No personal data is included.

Changed

  • The Pane Switcher shows the pane title before the project name, and the action palette and the switcher no longer open on top of each other.
  • Raised the limit on concurrently spawned sub-agents to 10.

Fixed

  • Fixed a crash when collapsing a project in the sidebar.
  • A sub-agent's spawn slot is now freed whenever its pane closes by any route, so closing panes by hand can't leave you unable to spawn.
0.9.5

Added

  • Removing a space that still has running processes now asks you to confirm first, and spells out that its projects move to another space while the processes keep running.

Fixed

  • Fixed a crash when adding or removing spaces in Preferences while the Arc-style sidebar was active.
0.9.4

Added

  • Switching between spaces now returns you to the pane you last had open in that space, instead of leaving you on the previous space's pane. A space you haven't opened yet shows an empty "no pane selected" state rather than jumping into a pane on its own.

Fixed

  • Fixed a crash that could happen when editing a pane's settings restarted its session, where an in-flight terminal update reached the surface while it was being torn down.
  • A restarted agent pane now boots at the correct terminal size, so tools like Codex and Claude no longer render one glyph per line until you resize the window.
0.9.3

Changed

  • The Pane Switcher now lists only the panes that plain ⌘1–⌘9 reaches, so commands and terminals no longer clutter it (hold ⌥ with the number keys to reach those, as before). If you've turned off the agents-only setting, the switcher keeps showing every pane to match.
0.9.2

Fixed

  • The Pane Switcher now keeps the keyboard while it's open. Escape and the number keys reliably close it or jump, instead of sometimes slipping through to the terminal underneath and interrupting the agent running there.

Changed

  • Softened the ripple highlight so the wave reads more subtle, and added a second wavefront trailing the first for a fuller splash.
0.9.1

Added

  • Global Pane Switcher. Tap ⌘ twice (or View → Show Pane Switcher) to open a centered overlay listing every running pane across all your spaces, numbered 1–9 so you jump straight to one with a single key. It opens on the pane you're already in, works in both the Normal and Spaces layouts, and lets you hop to a pane in another space without first switching spaces. Arrow keys, Return, and click work too.
  • The window behind the switcher ripples with a Metal splash as the card drops in, toolbar included. The whole effect is skipped when the system Reduce Motion setting is on.
  • Per-space activity on the Spaces proxy-icon bar. A space holding an agent that needs your input pulses orange on its icon, one that has finished its turn pulses green, so a space you aren't looking at can still get your attention.

Fixed

  • Fixed a crash that could occur when a section filter hid the project that owned the selected pane.
0.9.0

Added

  • New optional Spaces sidebar layout (General preferences → Sidebar → Layout). Toggle between the flat Normal sidebar and a Spaces layout where projects are grouped into user-defined spaces and one space is visible at a time. Existing projects land in an auto-created Default space on first activation, so nothing disappears.
  • A dedicated Spaces tab in Preferences for managing spaces: name, SF Symbol icon (5 starter symbols with a Show more to reveal the full 70), and which projects belong where. A project lives in exactly one space; moving it elsewhere is one click.
  • A proxy-icon bar at the bottom of the sidebar shows every space; the active one is highlighted, hover reveals its name, click jumps to it with a spring-physics animation. Swipe with two fingers on the trackpad to drag-and-snap between spaces; wrap is circular so swiping past the last space lands on the first.
  • ⌃1–⌃9 activates Space N. The existing ⌘1–⌘9 pane shortcuts now scope to panes in the active space when Spaces is on, so the shortcuts always line up with what's visible.
0.8.3

Added

  • The sidebar's section-filter toggles (Agents, Tasks, Commands, Terminals, Inactive Projects) are now mirrored under the View menu, so they're reachable via the menu bar and the Help → search field. Inactive Projects has a ⌘⇧A shortcut.
0.8.2

Added

  • Per-project section visibility. The new Edit Project sheet (right-click a project, Edit Project…) lets you toggle Agents, Tasks, Commands, and Terminals on or off for that project alone, so a docs-only project stays clean of sections it never uses. The same toggles are in the New Project sheet. Both sheets follow the modern macOS Settings look — grouped rows with switch toggles, full-row click target.
  • Hiding a section with running processes asks for confirmation first and lists the per-section count, so a tap can never silently kill agents or dev-servers. Definitions inside a hidden section are kept on disk: re-enable the section to bring them back.
  • A Restart button on the MCP preferences pane. When the unix-socket gets wedged (stale fd, peer-closed connections that didn't clean up), one tap stops and re-starts the server in a single tick. Live clients reconnect on their next request; the button asks first when there are connected clients.
  • A logfile for the `opensolo-mcp` helper at `~/Library/Logs/OpenSolo/opensolo-mcp.log`. Captures start-up, socket connect, and fatal errors with a 256 KB rotation, so a generic "-32000" from Claude Code has something to grep against when the host's UI stays silent.

Added

  • Stopping or removing a pane that has sub-agents now asks first. Stop offers a choice between stopping the whole subtree or only the parent (leaving the sub-agents running); Remove confirms that every sub-pane underneath will be torn down too.
  • The task schedule preview understands more shapes. Weekdays-only, weekend-only, and multi-time patterns now read as "Weekdays at 9h, 17h" instead of falling back to "Custom schedule".

Fixed

  • Removing a pane with several sub-agents no longer freezes the sidebar for a beat per subtree. The process-tree teardown now happens off the main thread, so the UI stays responsive while children are signalled.
0.8.0

Added

  • A fourth sidebar group: Tasks. Define a prompt with an agent (Claude, Codex, Gemini, or a custom command) and trigger it manually with Run Now (⌘R) or on a schedule. The schedule editor offers presets (every minute, hourly, daily, weekly, monthly) plus a raw cron expression for power-users. Each task run is a regular agent pane parented to the task, so status dot, hooks, MCP server, the OpenSolo system prompt, and `opensolo_spawn_agent` all apply unchanged. The Quit dialog warns when active task runs would be lost.
  • An OpenSolo MCP server. Claude (and other MCP clients) can now list and switch projects, find the active pane, read viewport output, scan a pane's open TCP ports, spawn or close sub-agent panes, send keystrokes, control pane lifecycle (start, stop, restart), and long-poll for sub-agent events. Setup snippets per client live under Settings, MCP.
  • Tools to create, list, edit, and remove tasks via MCP, so an orchestrator can self-schedule recurring work in the project it's running in.
  • A panel under each project tree mirrors Claude Code's task checklist live, so you can see what the agent is working on without switching to the pane.
  • Show in Finder, Open in Terminal, and Open in editor toolbar buttons in the detail pane. The terminal and editor buttons honour your configured defaults from Settings.

Fixed

  • The sidebar keeps its scroll position when projects or panes are added, removed, or reordered. Earlier versions reset it to the top on every structural change.
  • Resizing the window or sliding the git inspector no longer makes terminal panes feel heavy. PTY resizes are now coalesced onto the trailing edge of a resize, so a TUI like Claude Code does one full repaint at the end of the drag instead of one per frame.
  • Git diff line numbers no longer wrap onto two rows in very large files.
  • Collapsing or moving a sub-agent under another pane no longer leaves an overlapping ghost row in the sidebar.
0.7.0

Added

  • A Git Changes inspector. Toggle it from the detail toolbar to see the files changed in the selected project's working tree, with a built-in diff view. Files show as a flat list or a folder tree, and the diff pane is resizable and can wrap long lines.
  • Commit history in the inspector. The History panel lists the current branch's commits; click one to inspect the files it changed and their diffs, and hover a commit for a tooltip with its full message, author, date, file and line counts, and any pull-request number.
  • An "Open in Terminal" action in a project's context menu, which opens the project folder in your preferred terminal.
  • The CPU and memory graphs in the process popover are now iStat-style bar histograms with a peak label.
0.6.0

Added

  • A project's context menu now has "Open in" actions for the editors installed on your Mac, such as Cursor, Zed, VS Code, or Xcode. A new Editors tab in Settings lets you choose which ones appear and drag them into the order you want.

Fixed

  • Fixed a rare crash at startup caused by a setting changing on a background thread.
  • On macOS 26, the detail toolbar no longer draws empty rounded capsules around the status dot and the process metrics.
  • Terminal panes now have a little padding, so the prompt and scrollback are no longer flush against the edge.
0.5.2

Fixed

  • The sidebar activity indicator now pulses when an agent is waiting for you to approve a tool, such as a command it wants to run. Previously it lit up only for questions and plan approvals.
0.5.1

Added

  • The About panel now links the OpenSolo website.
  • A new setting controls what makes the Dock icon bounce: an agent waiting for your input, an agent finishing its turn, or both. It lives under Settings, on the General tab.

Fixed

  • Collapsing a project or section in the sidebar no longer leaves overlapping leftover header text behind.
0.5.0

Added

  • Automatic updates through Sparkle. From this version on OpenSolo checks for new releases on its own and installs them with your consent; there is a "Check for Updates…" item in the OpenSolo menu.
  • Action palette (⌘⇧K): a keyboard-driven overlay to jump to any pane or run a common action without reaching for the sidebar.
  • The Dock icon bounces and shows a badge when an agent pane is waiting for input.
  • A sidebar filter to hide inactive projects.

Fixed

  • Sidebar rendering artefacts when scrolling and collapsing sections.