Changelog
Release notes
Release notes for Raven. Entries through v0.4.0 describe the notch companion, which is now one surface of a larger product; each note describes the build shipped at the time, and the current download details live on the downloads page.
v0.9.6
Latest listed release- Remote spaces appear alongside local spaces. Connect a host with its connection token, open or create remote spaces from the command palette, and retry unavailable hosts without leaving Raven.
- Settings shows the running version of each connected daemon and offers Restart and Update & restart, with a confirmation explaining what will stop or may be lost.
- The note composer groups the writing and its properties, with an audience picker for personal and team notes. Inbox rows keep a stable order as their ages update.
- Terminal text softly blends into place when a pane resizes or splits, respecting Reduce Motion. Video supports double-click fullscreen, seeking while fullscreen, and Escape to return.
- GitHub settings makes the active account clearer, and signing out suppresses inherited credentials until a new sign-in. Pull-request lists handle monitored repositories more consistently.
v0.9.5
- Raven Teams renews expired access tokens automatically when the device is still authorized. Rejected credentials offer Sign in again; a network or service outage offers Retry connection and keeps your saved account details.
- Account errors explain what happened and what to do next. Device approval and team creation wait until the connection is verified, and team creation stays hidden while disconnected.
- Signing in after a device was revoked registers a new device ID instead of trying to reuse the revoked identity.
- Remote hosts can print a reusable connection token with raven-term remote token. Tokens automatically use the hosted team relay when available, and the device approval flow now uses platform-neutral language.
- A standalone Linux daemon and CLI download makes headless installation possible without a desktop or Rust toolchain. The website documents running raven-muxd on a headless Linux server and connecting the Raven desktop client through the hosted team relay, including systemd setup, secure pairing, and reconnecting.
v0.9.4
- Merged branches have purple pull-request icons in the left sidebar, in both single-pane and multi-pane spaces. The hover card’s Merged badge uses the same purple; approved reviews and passing checks stay green.
v0.9.3
- Panes can run in a sandbox. A sandbox is an isolated microVM, on this Mac or on Raven’s managed service, with its own daemon; `split --sandbox` and `new-tab --sandbox` put its panes in your spaces beside this machine’s, marked with the sandbox’s name, and they survive either daemon restarting. `raven-term sandbox checkpoint` fetches its work home, and `bring-back` lands it as a worktree beside the repository.
- Managed sandbox sessions start from the app. ⌘K offers New managed sandbox session… and New managed sandbox shell…: pick a project and Claude, Codex or both, and Raven sends the project to a private runner for your team. API keys travel over pinned TLS to the runner’s in-memory broker and never enter the image, the repository or a snapshot.
- Raven updates itself. A release build checks in the background at most every six hours, verifies the download’s checksum, version and Apple signature, and replaces the app beside where it is installed without stopping a running window or daemon; the new version starts the next time you open Raven. Settings › General shows the running version and a Check now button. Versions before this one need this update installed by hand once.
- Closing a Claude or Codex pane is undoable all the way back to the conversation: reopening it, or a whole closed space, resumes the exact saved session instead of starting a new one.
- Sending feedback shows a receipt with the category and summary you sent, a failed send can be retried without retyping, and Done leaves an empty form for the next one.
- Video plays with familiar controls under the picture — play and pause, elapsed time, mute and a seek bar — and the scrubber moves smoothly between frames. Playback no longer stalls across pauses and gaps in the decoder.
- Smaller changes: a new pane is drawn out of the one it came from in a quick handoff while its content and input arrive at once, and the sidebar fades at its edges as it scrolls under the mode picker.
v0.9.2
- A pull request opens on its description. The detail used to wait for one request carrying every comment, review, commit and check; the description now arrives first and the other tabs fill in as their sections land, with the tab you picked next in line. A section that fails leaves the rest readable, and the merge box never calls a pull request ready on facts it has not received yet. The pull request list shows its rows before their status and fills that in as it arrives.
- Pull requests survive a restart. Lists and every section of a detail you have opened are kept on disk and shown at once when Raven starts, then refreshed; a failed request never replaces something you could read with an empty page.
- The sidebar shows which pull request belongs to a pane: its number and a status icon sit at the end of the row, hovering them shows the checks, the review, the branch and the author, and clicking the number opens it.
- A note can link any pull request Raven has seen, not only the ones in the current dashboard. The picker fuzzy-searches titles, repositories, numbers, branches and authors locally, and Return takes the best match. The Project and Worktree pickers search the same way.
- Lists and pages stretch past their edges and settle back, as the rest of macOS does: the sidebar, tabs, Settings, the pull request list and detail, notes and the palette. Reduce Motion turns it off.
- Settings has a Repositories page for the repositories Raven watches, with filtering and Tab completion against your GitHub account. Long pages show a scrollbar and fade at the edge that has more; model pickers group providers, models and custom entries with each provider’s logo; list entries are removed with a trash can; and text fields select by dragging, Shift-click and double- or triple-click, with Save as the filled button on the right.
- Automatic space names read the task you linked, its title and the start of its notes, instead of its id, so a space is named for the work in it.
- Smaller changes: the palette’s footer says what Return will do; the note composer grows with its text and shows one command hint; the merge button is green; stacked space cards no longer draw borders; a new split grows out of the pane it was split from; and the design editor now opens only from ⌘K.
v0.9.1
- A pull request reads as one page. Whether it can merge used to be split across a red sentence, a disabled button, a conflicts button and a sidebar of check counts; it is now one merge box under the title, with a headline (Ready to merge, Checks are failing, Changes were requested, Merging is blocked), a line each for checks, reviews and the branch that opens the matching tab, and Close on the left of a merge split button named for the method it will use. The sidebar and the description’s comment card are gone, and the whole pane scrolls, header included, with the Files diff taking over once the header has left.
- The notes pane can be a board. ⌘K over a notes pane offers “Show notes as a kanban board”: the same notes, filters, search and selection laid out as one column per status, each note a card. Drag a card to another column to change its status, or use ←/→ to move between columns. “Show notes as a list” puts it back.
- Every property of a note is always shown. The “More properties” button is gone, because an empty chip already says what it would do. In a narrow detail the properties fold under a Properties row that opens and closes like Associations.
- Settings opens on a new General page, which holds your Raven Teams account, Trusted devices and your teams, plus one switch: Bring your own keys. While it is off and you are signed in, agent panes, Adaptive and Jev send their requests through Raven’s key gateway instead of the keys pasted on this Mac. Raven-provided keys come with a paid Raven plan; on the free plan, turn on Bring your own keys to keep using the OpenRouter and TypeSafe keys you pasted. Signed out, your pasted keys answer as before.
- Folder fields suggest folders. The default shell directory and the search and assistance folder lists drop a list of matching folders as you type: a path starting with / or ~ lists its parent live, and a few letters find a folder anywhere under your home folder. ↓/↑ highlight, Return saves, Tab completes.
- Your phone signs in to Raven and reaches every Mac on your account, over the internet, without Tailscale. A new device is approved on one you already trust by matching a six-digit code, and Settings › General lists your Trusted devices. `raven-term devices` does the same from the shell.
- Each Raven installation keeps its own Raven Teams sign-in, in its own `~/.raven` (or `RAVEN_HOME`), so a second installation beside this one no longer signs this one in to another account.
- Video plays reliably and has familiar controls: play and pause, elapsed time, mute and a seek bar under the picture, with a scrubber that moves smoothly between frames. A new split now carries your eye from the pane it came from.
- Faster in places you would notice on a large machine: search ingestion writes only the records that changed instead of the whole catalog, agent detection no longer builds a table of every line to read a footer, and typing into a busy terminal confirms its echo once per batch instead of once per character. Claude panes and Anthropic models are marked with the Claude spark.
v0.9.0
- Copying a long command gives back one command. ⌘C used to end every row of a selection with a newline, so a path the terminal had wrapped pasted as two lines; it now rejoins the rows the terminal wrapped, as every other terminal does. ⌘⇧C goes further and also joins the breaks a program like Claude Code makes when it wraps text to the pane itself, putting back a space where the wrapper broke at one and nothing where it cut a word. Copying the pull request link moved to ⌘⇧Y.
- Leaving a space no longer puts its agents to sleep. Switching spaces is an ordinary thing to do and should not end a process, so `suspend_offscreen_spaces` now defaults to off, like `suspend_idle_agents`. Turn on “Suspend agents in spaces you leave” in Settings to get the old behaviour back.
- Settings has a search field. Typing narrows the rail and the page to the settings that match, so finding one no longer means knowing which section it lives in.
- A Work pane no longer slows the window down the longer it is open. Every note you opened left its editor behind, and each frame re-encoded all of them; after a couple of hundred notes that was 2 ms a frame, and every note you had typed in kept syncing and kept you listed as editing it. The pane now keeps the open note and the eight most recent, and a note you leave stops announcing you.
- A source build installs as Raven Dev beside the released Raven, with its own bundle id and its own `~/.raven-dev`, instead of replacing the app the disk image installed.
- Chidori’s JavaScript engine agrees with the spec in about thirty places it did not — three of them could crash the host — and gains `Intl.DateTimeFormat`, emoji sequences and the RegExp `v` flag. Deleting from a Map or Set while iterating it no longer skips entries.
- A long list of smaller fixes, most found by checking the code against formal models: an array in `config.toml` may span several lines, and a `#` or comma inside a quoted string stays part of it; a split too small for its divider keeps both panes; a NaN divider ratio is refused instead of stored; the find bar keeps every match as you narrow; wrapped Markdown no longer adds a space where the source had none; and the agent shell allowlist no longer lets a command sneak a second line, a parent directory or another program past review.
v0.8.0
- Creating a note is one line again. The composer used to open a whole modal for what is usually a sentence; it now opens as a single field, where ⏎ files the note as it stands, ⇥ grows it into a body, and ⌘⏎ files it from anywhere. In the body, `/` sets the note’s own status, priority, project and labels from the same registry the chips draw from. A “Hand it to” row lists the agent panes that are actually running, and Create & start sends the title and body straight on to one of them.
- Merging a pull request says which merge it will do. The merge control is a split button now: the caret chooses among merge, squash and rebase and remembers it for the pane, a plain press uses the remembered method, and the confirmation asks one question about one answer instead of naming a method you never picked. A pull request whose branch conflicts draws Merge disabled, with the reason, rather than offering a press GitHub would refuse.
- Send feedback is built from the same controls as everything around it. The modal used to draw its own body, summary field, category picker and buttons, and drifted from every surface it sits beside; it now composes the shared design-system components, with the note composer’s own editor for the body. The ⌘⏎ chord moved onto the Send button’s hover hint, where a shortcut belongs to the control it fires.
- The PR pane’s compact section menu draws above the document instead of under it — it was batching into the detail’s own draw list, so the text it covered showed through it.
v0.7.0
- Raven is now the one place you manage work from. The release before this one had a fleet, an orchestrator, a conductor and an agent session, and nobody could say which was which — four words for what turned out to be two things. The orchestrator role is deleted: every session is an agent session, direction comes from Raven, and *the fleet* is the machinery those sessions run on rather than a place you visit. The Fleet index draws inside Raven and `@fleet` is gone.
- Pull requests became somewhere you finish work rather than somewhere you look at it. Comment on a PR, close it, and merge it without leaving the pane; checks show why they failed instead of only that they did; and the description editor is the note editor, so writing a PR body and writing a note are the same act. Note creation was rebuilt along Linear’s lines — a real composer with a title and a body, local drafts that survive a restart, and an explicit audience. The embedded web browser is gone: a link opens in the GitHub pane or in your own browser, which is where you wanted it.
- The site grew a pricing page that asks rather than sells, documentation that uses the app’s own keycaps instead of its own spelling of them, and a redesign that makes it look like the company that makes it. It also measures itself now, without a third party: no analytics product, no cookie, no consent banner, and a privacy page that lists exactly what is recorded and what is not — a reader is a salted daily hash and no address is ever stored.
- Feedback from inside the app: ⌘K or Settings › Feedback opens a modal that sends a report straight to us, with the version and platform already filled in. Reports are kept rather than relayed into a log nobody reads, which is what happened to every report sent before this release.
v0.6.0
- This is the release where Raven stopped being an overlay on someone else’s terminal and became the terminal. `raven-muxd` is a daemon that owns every pane and outlives the window that drew it, `raven-term` drives the same daemon from the command line, and the window attaches as one client among several. A session now survives the window closing, the app crashing, and the app being rebuilt underneath it — which is the whole reason for the rearrangement.
- Having a terminal that outlives its window made it worth hosting agents inside it. Chidori runs a coding turn in the terminal’s own process rather than as a guest in a shell, so an agent pane keeps its transcript, its approvals and its working directory across all of the above. Approvals grew into the composer instead of taking the pane; the status mark learned to say working, waiting for you, and idle in shape rather than colour, so it reads at 8px and without depending on green and red.
v0.5.0
- Reconstructed from the commit history: this release shipped before the changelog had an entry for it. The terminal became a real multiplexer — a persistent server you detach from and attach back to, rather than a window that owned its own panes. Everything in v0.6.0 was built on this; it is the release where a session first outlived the thing drawing it.
- The terminal started reading itself. Panes were scraped for branch, worktree and pull-request references and drew them as chips you could click, with hover popovers and ⌘-click to open. A Worktree Status page joined the ⌘K palette, worktree management arrived with up/down environment scripts, and the picker stopped waiting on GitHub before it would open.
- The Agent Inbox appeared in the sidebar — the first version of the surface that would become the Inbox — and the phone stopped re-presenting prompts already answered at the desk. Panes gained notes through ⌘K, and closing one with a running foreground job started asking first.
- A long rendering and memory pass: what a grid row really costs was measured and written down, five ranked fixes from that audit landed, and per-frame CPU came down through seqno-gated snapshots and allocation reuse. A pixel-grid abstraction made subpixel drift something that could not recur rather than something to fix again. Rich in-pane viewers for Markdown and org-mode, mouse-wheel forwarding for apps that want it, and a fix for the crash when vim scrolled the alt screen.
v0.4.0
- Resizable expanded notch now narrows the shell and side padding together after the 50% height cap, preserving content bounds while clamping padding at 5pt.
- Session cycling follows the focused or pending iTerm session and keeps active / attention-needed sessions in the notification list.
- Codex hook setup migrates from the deprecated codex_hooks flag to hooks when supported, and auto-install repairs missing bundled shims on launch.
- Bundled settings fonts are staged inside the signed app resources, with scale-aware Metal SDF snapping for crisper notch edges and strokes.
v0.3.0
- Usage panel rewritten: per-model token rollups, 5-hour rate window, and plan-aware budgets read straight from the rollout file.
- New animation module hosts spring and tween primitives shared across every notch transition — replaces a half-dozen ad-hoc lerps.
- Codex log monitor watches rollout rotations without a polling thread. Restart-safe.
- Install / uninstall scripts harden file permissions and verify the launchd plist before swapping it.
v0.2.0
- Consolidation. The Hammerspoon init.lua, the browser extensions, the Python Codex bridge, and the standalone Swift agent are gone. The Rust agent plus the RavenSettings SwiftUI helper are now the only runtime surface.
- Metal-only renderer with JetBrains Mono shaped in-process; no AppKit overlay, no WebView fallback.
- Hooks fire from a single Rust path — approval prompts surface the working directory and tool name without a shell hop.
v0.1.0
- First seed. Hammerspoon-based notch overlay for Claude Code with iTerm focus integration and a shell notification wrapper.
- Local-only from day one — no telemetry, no network calls, no off-device state.