Skip to main content
Vortex
The loop How it works Control Docs Compare Changelog FAQ
Join the waitlist
The loop How it works Control Models Docs Compare Changelog FAQ Join the waitlist

Changelog

Vortex release notes

What shipped in each macOS closed-beta build. Updates install automatically on the Beta channel.

0.2.0-beta.115 · October 2, 2026

Updates install themselves, and automations get a schedule

Vortex can now check for a new build in the background and install it on its own once nothing is running and nothing is unsaved. Automations gain a weekday filter, a daily run cap, and a retry budget, and the agent can tell you whether a job is healthy. This build also makes the browser pane stop stealing your keyboard focus and speeds up the Usage dashboard.

New

  • Vortex can check for updates in the background and install them without asking. Settings → About → Updates has an "Automatic checks" interval (off, hourly, every 6 hours, or daily) and an "Install updates automatically" switch. Auto-install waits until no agent is running and no editor buffer has unsaved edits, because a restart discards unsaved buffers; while it waits, Settings says so. Choosing "Keep for now" is respected — a later background check will not install the update you just declined.
  • A daily automation can run only on the weekdays you pick, and every automation can carry a daily run cap and a bounded retry budget for a transient failure.
  • list_automations now reports a compact lastRun ({status, finishedAt}, or null when it has never run), so the agent can answer whether a job is healthy instead of guessing.

Fixed

  • The browser pane no longer steals your keyboard focus. An agent action that clicks or fills a control in the page no longer focuses that control, so your typing stays where it was. Opening a browser tab yourself still focuses the address bar once; an agent-opened tab never does.
  • A native click that fails or whose delivery is unknown is reported instead of being silently retried as a JavaScript click, which could have clicked twice.
  • Restoring the previous keyboard owner after a browser action now runs atomically on the main thread and is verified, so a failed restore is reported rather than leaving focus in the wrong place.
  • A scheduled focus move into a working surface is scoped and cancelable. A newer request, a different view, a session or workspace switch, or any input from you invalidates a pending one, so a stale open can no longer steal focus from what you are doing now.
  • The Usage dashboard loads faster: the five breakdowns are computed in one grouped pass instead of five separate queries over the same rows, and the derived figures are memoized.
  • The handled-ids list an automation keeps is bounded to the 200 most recent, so {{handled_ids}} no longer grows without limit in every future run's prompt.

0.2.0-beta.114 · October 2, 2026

The agent can watch a video

The agent can now look at a video: it samples frames from a clip into one contact sheet it can see, so it can check a demo it just recorded or analyse a screen recording you drop in the workspace. This build also hardens the run, provider, filesystem, and MCP paths.

New

  • read_video samples frames from a clip and returns them as one contact-sheet image the agent can see. Use it to verify a clip recorded with record_browser_video, or to analyse a video file in the workspace. By default it samples the clip's own markers; otherwise it spreads frames evenly across the duration. The result lists each tile's timestamp, so the agent can map a tile to its moment. macOS only, and local to this Mac.

Fixed

  • The tab-drop preview on a split edge is no longer clipped behind the pane's content. It now paints above the pane's own layers, including the plan card, and still below an open modal or palette.
  • A run's saved state is written in order and coalesced, so a burst of updates cannot land out of order or lose the newest one. A run that ends twice keeps its first terminal outcome, and a resumed run cleans up only its own state.
  • The verification requirements a run was given survive the display cap and a restored checkpoint, so a resumed run is still held to the same bar.
  • Recovery stops asking for an action it cannot take: an unavailable action is not consumed, and exhaustion is measured against progress rather than attempts.
  • Streaming responses are bounded. A single SSE frame and an error body are capped, so a malformed or hostile provider response cannot grow without limit. Legacy line-delimited and EOF-terminated gateways still work, and partial usage is still recorded, including for a failed or cancelled review.
  • Provider routing is scoped to the provider, so a model-name prefix no longer vetoes a route. Saved legacy base URLs are preserved, and transport URLs are redacted from diagnostics.
  • Filesystem writes stage atomically and exclusively, preserve permissions, refuse a copy onto itself or into its own subtree, and read only up to the requested limit. Existing symlink behaviour is unchanged.
  • Login and PATH bootstrap is bounded, and a cancelled command is not spawned.
  • MCP sessions are scoped to the workspace, config, and account, with generation fencing, atomic private config writes, and bounded idle retention. A mutation is never replayed ambiguously, and the desktop and the host agree on a missing session and an explicit 404.

0.2.0-beta.113 · October 2, 2026

A follow-up after a plan is sent

A message you send after a plan is ready shows up in the chat. If the chat is still working, the text stays in the composer and Vortex says why.

Fixed

  • Sending a follow-up after a plan no longer disappears. The chat is busy only while it is running or waiting for your answer, so a plan that is ready accepts the next message.
  • A finished run cannot block the next send. A message that cannot start stays in the composer, with the reason.
  • A queued follow-up is not left waiting on a run that has already finished.
  • A worker's start no longer replaces the chat's active run.

0.2.0-beta.112 · October 2, 2026

One status per chat

The sidebar reads one status for each chat, written by the app itself. A worker cannot finish the parent chat, and a run that disappears marks the chat failed. A fleet task that was running when Vortex quit is marked interrupted and keeps its lane.

Fixed

  • The sidebar, the Running filter, and the mind map share one status for a chat: running, waiting for your answer, plan ready, finished, failed, or idle. Opening the chat clears a finished, failed, or plan-ready mark. Stopping a run yourself returns the chat to idle. A plan that is ready for review stays marked until you open it.
  • A sub-agent's finish leaves the parent chat running. A newer run stays running when the previous one ends. A run that disappears without a finish marks the chat failed, with reason interrupted.
  • An approval or a question keeps the waiting dot until the last wait ends, including when a worker is the one asking. Cancel wakes the wait immediately.
  • Starting a chat or resuming a run uses an id the app minted, and a second start with the same id is refused. Every event for that run carries the chat, workspace, and parent, so a late event lands on the row it belongs to.
  • A fleet task that was running when Vortex quit is marked failed with reason interrupted and keeps its branch. Queued tasks start again. A task waits until the ones it depends on have landed or been kept. The stored task does not keep your API key.

0.2.0-beta.111 · October 1, 2026

The status row stops pinning on a finished command

The live status row no longer keeps naming a command that has already finished, and one block no longer retitles the row "Blocked" for the rest of the run. The agent works in one browser tab per chat instead of opening a new one for every task, and a workspace that fails to load offers a retry instead of an empty pane.

Fixed

  • The live status row no longer pins on a command that has already finished. A command that yields to a background job keeps its tool call open until the job's own completion arrives, and that completion is now reported to the row directly instead of being inferred from a stream that may never carry it. A run whose finish was dropped is treated as stale rather than busy forever, so the watchdog can still recover it.
  • One block no longer retitles the row "Blocked" for the rest of the run. A block is a moment: the next step, tool call, or model response clears it.
  • Two tools in one step can no longer be mistaken for each other. The local model path now gives each tool call a stable id, and the fallback key includes the tool name, so one call's finish cannot delete another's.
  • The agent works in one browser tab per chat. A new task in the same chat reuses the tab that chat was already working in instead of opening another one, and sending a task while you are looking at a tab hands that tab to the agent. A tab you have taken control of is never adopted, and an agent-originated open no longer moves focus off the composer.
  • A workspace that fails to load shows the error with a "Try again" button instead of an empty chat with no way back. A transient failure while preloading a chat is no longer cached as "this chat has nothing", which used to leave that pane blank for the rest of the session.
  • A background run that ended in a pause shows its dot before you open the chat. A buffered finish now settles the run's status, and a stream that ends without one is settled too, so the sidebar stops pulsing for a run that is over.
  • The sidebar's Running filter and the status dot now agree, so a row showing an attention dot cannot be hidden by the filter. The session cap also protects a running or needs-input session from being evicted, so a just-started run cannot lose its row.
  • The take-control and annotate chrome is hidden while a clip is being recorded, so it stays out of the video. The cursor, highlight, and border stay, because they are what shows what the agent did.

0.2.0-beta.110 · October 1, 2026

The agent can record a demo of the browser

Ask the agent to demonstrate something in the embedded browser and it records the pane to a private clip, marks the moments worth keeping, and links the result in chat. A control inside a cross-origin iframe can be clicked and typed into. A follow-up question is no longer held back until you press Stop, each chat remembers its own model, and a finished plan shows the review dot.

New

  • The agent can record the embedded browser pane to a private local video with the new record_browser_video tool (macOS 12.3 and later). Starting a recording asks for its own consent and names the reason; an ordinary browser or tool approval never stands in for it. start, stop, status, mark, and trim are separate actions: a take can run up to 30 minutes, mark records a labelled moment in the clip's own timeline, and trim cuts a finished clip down to the spans you keep and publishes a new clip that links its source, leaving the original untouched. A clip is never uploaded, never recorded headless, and never written to an SSH host.
  • A recordings sheet in the browser pane lists every clip for the workspace with a poster frame, duration, size, creation time, markers, and how it was edited, with a search filter. The selected clip plays and seeks, can be saved wherever you choose, and can be deleted. The toolbar button carries a count instead of an empty disclosure.
  • The finished clip is linked in chat as a vortex-video:// chip, and the agent is instructed to always link it. Opening the chip brings up the sheet on that clip. A start row stays compact and offers "Watch recording" rather than mounting a second player beside the stop row's card.
  • browser_action can now reach a control inside a cross-origin iframe, which no ref or selector can address: take a screenshot, then pass its screenshotId with x/y to click or hover there, or focused with type/press to send to whatever the page has focused. That delivers a real OS-level event, so it is blind — the result reports where the event was delivered, never what it hit — and it always needs its own approval. A screenshot stops being addressable after two minutes, and a page that has moved since the screenshot is refused rather than clicked blind.

Fixed

  • A follow-up question or approval request is no longer held back until you press Stop. A request that names the chat you are looking at renders immediately, a run that has gone quiet is polled for pending requests, and a request whose run has already ended settles into "the run ended before this was answered" with no input — so it stops blocking the session and stops offering a Send that could only fail.
  • Each chat remembers its own model. Picking a model in the composer pins it to that chat and no longer moves the default for every other chat, Settings → Models sets the default for new chats, and a new "Set as default for new chats" action promotes a per-chat choice without re-finding it in Settings. The pin survives switching chats, parking a generating chat, and restarting the app.
  • A Plan-mode run that finished by handing back a plan shows the solid amber "Needs review" dot, matching the "Plan ready for review" notification it already sent. A run that is genuinely blocked keeps the pulsing dot.
  • Dropping an image from Finder into the composer works in an SSH workspace. The path came from this Mac, so it is read from this Mac instead of being asked of the host, and a real failure now says why instead of a bare "Couldn't attach". A dropped folder is reported as unsupported rather than silently treated as a file, and the editor previews a dropped local image.
  • The empty strip under the browser toolbar is gone. The recording controls moved into the address bar as a fixed-height chip, so nothing is drawn while idle and the pane's bounds never change — which is what keeps a resize from revoking a recording mid-take.

0.2.0-beta.109 · October 1, 2026

A finished plan is not a blocked session

A session that stopped to hand back a plan reads as idle instead of needing attention. A pull request check says what it found, and a neutral check is not read as pending.

Fixed

  • A Plan-mode run that finished by handing back a plan no longer lights the amber dot in the sidebar. The run's terminal reason now travels with its status, so a deliberate pause is told apart from a genuine block. A run that is genuinely waiting on you keeps its dot.
  • A check that reported neutral or skipped is no longer read as pending, and a neutral required check counts as satisfied. A check with nothing to report offers no disclosure.
  • A chat switch that never reaches the screen is written to the app log with the step it is waiting on, so a blank pane can be diagnosed.

New

  • A pull request check's findings are shown behind a disclosure. A reviewer bot attaches its findings to the check run, where gh pr checks cannot see them, so they are read from the check-runs API and joined to the row by check name.

0.2.0-beta.108 · September 30, 2026

Characters you type stay in the editor

Characters typed while the editor is catching up stay. Search uses ripgrep when it is installed. A busy remote host still answers a stop or a status check.

Fixed

  • Characters typed while the editor is saving its snapshot stay. An edit from the agent, a reload, or a revert still replaces the document. Blame and diagnostics that have not changed no longer rebuild the editor on every keystroke.
  • Search uses rg when it is on PATH, and the built-in walk when it is not. They agree on ignores, globs, and a bad pattern. A search that hits its cap stops reading. A file is not walked as if it were a directory.
  • A burst of changes to the same file collapses to the last one, so the Explorer does not rebuild its list for every event. Ignored directories do not wake a rescan.
  • Pasting an API key waits until you stop typing before the model catalog is fetched. A failed automation poll keeps the list you already have. File and git automations only watch the workspace they belong to.
  • Chat tabs and working-panel tabs share one strip. The close control shows on hover, focus, and touch, and the scroll arrows appear only when the row overflows.
  • A command that prints a lot keeps a bounded tail without recopying it on every chunk. After the command exits, a grandchild holding the pipe open cannot keep the run waiting. On a remote host, a stop or a status check is not stuck behind a long command.

0.2.0-beta.107 · September 30, 2026

A folder in the breadcrumb opens in Explorer

Clicking a folder in the editor breadcrumb reveals it in the Explorer. A code block that already knows its language is colored on the first paint, and a file path in chat looks like the other inline code.

Fixed

  • Clicking a folder in the editor breadcrumb opens the Explorer, expands the folders above it, and scrolls that folder into view. Clicking the same folder again does it again. It no longer tries to open the folder as a file.
  • A code block whose language is already loaded is colored on the first paint, instead of flashing as plain text. While a plan is still streaming, its code blocks wait to highlight until the text settles.
  • A file path written as inline code looks like the other inline code, and it still opens the file.

0.2.0-beta.106 · September 30, 2026

A worker's question shows in the chat

A worker that needs your approval or an answer says so, and the request lands in the chat that started it.

Fixed

  • A worker waiting for approval or an answer says so, and the approval card is in the inspector. When workers are waiting and none are still running, the group line counts the ones waiting.
  • That request is routed into the parent chat, including one that arrives before the worker has started, and including a worker in a chat you are not looking at. Answering or deciding clears the wait.
  • A worker's finished report attaches to that worker, not to the others started beside it.

0.2.0-beta.105 · September 30, 2026

A stalled model recovers before it pauses

When a model stalls, Vortex works back from it before pausing. It lowers the reasoning effort, compacts, starts from a fresh summary, and asks for one next step. A path in chat opens the file that owns it.

Fixed

  • A stuck reply — repeating text, a reasoning budget spent with no answer, an empty response, or the same short line while the run is not moving — is recovered in that order. Reasoning loops lower the effort first. The timeline names the cause and the step. The looping text is not kept. Repeated lines inside a code block are not treated as a loop. The run pauses only after that ladder makes no progress, and the next time the same cause appears it starts from the step that last helped. A configured fallback model is tried last. vortex stats prints how often each recovery was tried and how often it got the run moving again.
  • A path in chat opens the file in the workspace root that owns it, including when the workspace has more than one root and when the files are on an SSH host. Backticks, file://, and a leading ./ are ignored. If the lookup fails, the link still opens.
  • Deleting an agent removes it from the workspace row immediately. Switching workspaces keeps the list you just left instead of blanking it until disk is read.
  • A status line from the previous run, such as "Creating plan…", does not carry into the next one. A command the run left running stays.
  • The count on the working panel's Open button sits beside the magnifier, so that cell grows to fit it. A two-digit count no longer covers the icon or crowds the first tab. It is announced as a count of changes to review.

0.2.0-beta.104 · September 29, 2026

A stuck model stops repeating itself

When a model starts repeating the same text, Vortex drops that stream and retries once, with less reasoning when a lower setting exists. If it repeats again, the run pauses. In an SSH workspace, Explorer can download a file to this Mac.

New

  • In an SSH workspace, right-click a file in Explorer and choose Download… to save it on this Mac. A folder does not offer it, and a local file uses Reveal in Finder. A file larger than 8 MB is refused rather than saved short. A remote server from before this release can still download text; binary files ask you to redeploy it.

Fixed

  • A stream that is repeating itself — reasoning, visible text, or tool arguments — is stopped, and that text is not kept. Vortex retries the step once, lowering the reasoning effort when the model has a lower setting, then pauses and asks you to switch models or lower the effort. The timeline says what happened. A sub-agent that gets stuck reports that back to the parent. The same short assistant line on three steps in a row is named back to the model. File contents that repeat on purpose are not treated as a loop. output_loop_guard in config.toml, or VORTEX_OUTPUT_LOOP_GUARD, turns the check off.
  • A two-digit count on an icon badge has a little more room inside the pill.

0.2.0-beta.103 · September 29, 2026

Screenshots stay out of the chat payload

A browser screenshot or a read image is stored once as a file and shown in the chat. The message no longer carries the image bytes, so a long browser session stays light. A folded tool card waits until you open it to build its body.

Fixed

  • A screenshot or read image is written under the workspace and the chat keeps a reference. The same bytes are stored once. The prompt does not receive the image. A screenshot already saved inside an older message still shows. If the file is gone, the card says it is no longer available. The row reserves the image's size before it loads, so the transcript does not jump.
  • A folded tool card builds its body the first time you open it, and keeps it after you close it.

0.2.0-beta.102 · September 29, 2026

The title bar stays still

The title bar stays still while CPU, memory, and today's spend update. Jump to latest lands on the last message. A question from a chat you are not looking at shows its amber dot immediately.

Fixed

  • Title-bar host readings and today's spend sit in reserved cells. The digits change; the separators and the chips beside them stay put. A reading wider than its slot still shows. Once a GPU has been reported, its cell stays even if a later poll misses it.
  • Jump to latest scrolls to the real bottom. A growing transcript no longer stops the jump short, with the last row behind the composer.
  • A parked chat that is waiting for an answer or an approval shows the amber dot immediately, including after a reload mid-run. It no longer waits until you open that chat.
  • A browser pane that is covered shows a still at the pane's own size. A popup from the headless browser does not open a tab. A popup from a tab you are using still opens, and it loads the page it asked for.

0.2.0-beta.101 · September 29, 2026

A PR number in chat opens the pull request

A chat mention of PR #42 opens that pull request when the workspace has one GitHub repository. The agent includes the full URL when it creates one.

New

  • In chat, PR #42 and pull request #42 open the pull request when the workspace has exactly one GitHub repository. Two repositories, or none, leave the mention as text. A full GitHub URL still opens.
  • When the agent creates or mentions a pull request, it includes the full URL. gh pr create prints that URL.

0.2.0-beta.100 · September 28, 2026

Today's spend sits in the title bar

The title bar shows today's spend. A reply that announces unfinished work keeps the run going. Best of N is gone.

New

  • The title bar shows today's spend and token use across every chat. Click it for this month, the request count, and the top models. Right-click to show cost, tokens, or hide it. Settings → Appearance has the same switch.
  • The helper model decides whether a text reply is finished, and whether an instruction asked only for documentation. A continue score at or above 0.5 keeps the run going. A docs-only instruction that then edits code warns, and the edit still runs. The stop check is skipped when that helper is the main model. A failed check does not trap the run. vortex stats prints the mean continue score. The question text is not logged.

Removed

  • best_of_n is gone. Parallel work uses spawn_agent.

Fixed

  • The command palette no longer stacks a section header on the row above it. Each row keeps its own height when the results change.

0.2.0-beta.99 · September 28, 2026

Plan mode keeps its tools

Plan mode keeps search and read tools for the whole plan. Compaction stays at the point you picked, even when the answer allowance is large. A dead SSH connection is replaced instead of reused.

New

  • vortex stats prints why a run never finished, and groups backend request failures. Paths and numbers in those messages are masked.

Fixed

  • Plan mode no longer strips search and read tools after a long investigation. A sub-agent in Plan mode can only scout or explore. An edit or review child stays blocked until Build.
  • Compaction stays at the chosen point in the context window. A large answer allowance does not pull it forward. The summary, file reads, and search results grow with that window.
  • A cloud request shrinks its output budget so the prompt plus the allowance fit the model's window.
  • A dead SSH connection is dropped. The next call uses a new one, and the liveness check reports the drop once.
  • A chat that lost its workspace folders uses the folders saved for that workspace, so a relative path still resolves.
  • The agent closes every checklist item before it finishes, re-runs a check after a fix, and treats the edit diff as proof the edit applied. Correctness still needs the verification check. It may read a file again after an edit miss, or when the file may have changed.

0.2.0-beta.98 · September 28, 2026

A stuck check stops the run

A required check that keeps failing the same way stops the run instead of being accepted. Search covers every workspace root when no path is given. A reasoning model reserves a budget on top of the answer, and a retry names the lower effort.

New

  • The output setting is the allowance for the answer. A reasoning model adds a budget on top, and that budget shrinks first so the total stays inside the model's output limit. Auto leaves the effort field off. The budgets are reasoning_budget_minimal through reasoning_budget_xhigh in config.toml, or the matching VORTEX_REASONING_BUDGET_* variables.
  • vortex stats prints quality counters from the trace: tool failures, edit misses, completion-gate rejections by reason, and the top failure messages, with paths and numbers masked. Phase timing says how many runs it covers. Runs with no model are labeled as backfill.
  • File search runs across every workspace root when no path is given. A search that finds nothing for one identifier says where that name is defined.

Fixed

  • When a verification's expected text is missing, recovery says to print that text or drop expected_output. It suggests changing the expected exit code only when the exit code is what failed. A pass judged on the full output stays passed.
  • The same failed required check, retried until the nudge limit, stops the run. The chat says the run stopped because a required verification stayed blocked.
  • A dropped SSH connection is retried for a read or a search. A write is not sent again. If the host stays down, the run stops because the remote workspace disconnected.
  • When a model spends its output budget reasoning, the chat says it is retrying with less reasoning and names the effort. Usage records that billed attempt even when it produced no answer.
  • Plan mode asks what the plan covers at the start, after a short look, and does not offer a choice to build it.

0.2.0-beta.97 · September 28, 2026

A plan tab shows it is still writing

A plan tab shows that it is still receiving text, including how long it has been writing. Shell and git commands use the workspace root when no directory is given. A tool argument wrapped in an extra object is unwrapped when that reading is unambiguous.

New

  • While a plan is streaming, the tab shows how long it has been writing and how much text has arrived. Before the first field, it says it is waiting. If the draft is gone, it says the plan is no longer being written.
  • vortex stats also prints how tool arguments were shaped: repaired, rejected, or left as sent. It still prints counts only.

Fixed

  • Shell and git commands run in the workspace root when no directory is given. A missing working directory is no longer a failed call.
  • A tool argument wrapped in an extra object, sent as text, or closed with extra brackets is read as the object the tool expects when that reading is unambiguous. A broken argument is still reported, with where it failed.
  • Argument text that arrives before the chat is ready is kept, so a plan preview does not freeze partway through. A chat open beside the focused one keeps its own live stream.

0.2.0-beta.96 · September 28, 2026

MCP stays on the machine that owns it

A disconnected SSH workspace no longer answers MCP from this Mac. A failed integration test stays failed, and you can cancel a sign-in that is still open.

New

  • Settings → Integrations can cancel a sign-in that is still in the browser. When a token refresh fails, the row says the sign-in expired and offers Reconnect.
  • A local MCP process stays running between calls. When that server says its tools changed, the list updates.

Fixed

  • A remote workspace whose SSH session is down does not use this Mac's MCP config. Settings and the agent say the session is disconnected, and nothing is resolved locally. Reconnect the workspace.
  • A test that fails no longer leaves the row green. It says the last test failed and how many tools are still cached. An auth failure offers Reconnect. Switching workspaces does not show the other workspace's result.
  • A failed list load shows the error. A reply from the workspace you just left cannot replace the list you are looking at.
  • Signing in from the app and the CLI at the same time no longer overwrites each other's tokens. A refresh that fails does not erase the saved sign-in, and two calls refresh a rotating token only once.

0.2.0-beta.95 · September 28, 2026

Folded cards stay folded

Folded cards stay folded when you switch chat panes. Stopping a run while the provider is retrying clears the spinner. The model list groups by provider, and a price appears only when a catalog publishes one.

New

  • Settings → Models groups Explore rows by provider and shows a page of cards at a time. The quick picker groups the same way, so each provider heading appears once.
  • A cloud model's price is input / output per million tokens. A rate under a cent shows as <$0.01, a free model shows Free, and the tooltip names the source and a cached-input rate when the catalog has one. A model with no published price shows no figure.
  • The reasoning control shows Auto when the saved effort is one this model does not accept. Switching back to a model that accepts it restores the saved effort.

Fixed

  • A card you fold in a split chat stays folded when you focus another pane and come back. Opening a chat that is already building still shows its checklist the first time, unless you already folded it.
  • The window no longer scrolls sideways when a pane is narrower than its content. The extra stays inside the pane.
  • Stopping a run while the provider is waiting to retry clears the spinner. A run that ends without a finish event does the same.
  • A cloud provider that rejects a tool-schema keyword still receives the call. The constraint is written into the description, and Vortex still checks the original schema.

0.2.0-beta.94 · September 28, 2026

Compaction stays on the step

Compaction appears on the step where it happened, and the agent keeps the check after older steps are summarized. A plan must include its tasks.

New

  • Compaction is a row on the step where it happened. While it runs, the row says what it is doing. When the next step starts, it reads Compacted context or Trimmed context, with how long it took. Later messages continue below that row.
  • A model that can return several tool calls in one reply is asked to. A model that rejects that request is retried without it.
  • vortex stats also prints sub-agent runs in the same window: how many, prompt size, tools per step, and time to first token.

Fixed

  • The agent no longer treats its context as a reason to stop or weaken a check. Older steps are summarized by the runtime, and the prompt tells the model not to plan around context size.
  • A tool argument sent as text is read as a list or object when that is what the tool expects. Broken text is reported, with where it failed, instead of being ignored. A plan with no tasks is refused, instead of being saved with nothing to track.
  • A count on a full-height icon button sits on the icon, so the badge is not clipped by the strip.
  • A chat running in the background keeps its closing sentence on the answer that was streaming, even when a tool row landed after it.
  • An edit sub-agent is used only when the work splits into two or more independent slices started together. A single job stays on the parent, which also keeps tree-wide checks and the commit.

0.2.0-beta.93 · September 27, 2026

Switch chats without sending to the last one

The tab you pick is selected before the transcript loads. A send during that switch waits. A chat beside the focused one has a reply bar. After an edit, the agent keeps working while diagnostics finish.

New

  • The chat you click is highlighted immediately. A message sent while that switch is in flight waits, and the composer says it is restoring the session, until that chat is the one on screen. Resting on a chat prefetches it; a pointer that only crosses the list does not.
  • A chat open beside the focused one shows Reply to that chat. Choosing it focuses the pane and puts the caret in the composer. Only the focused pane’s tab is underlined.
  • After an edit, file diagnostics run in the background. The agent continues, and a finished report arrives as a later note. If that report has errors, the agent is asked to fix them or say they were already there. A still-running check is waited on only when the run is about to finish.
  • A cloud model’s output cap comes from its catalog. A thinking budget sits on top of the answer allowance. When the two do not fit, the thinking budget shrinks and the answer allowance stays.
  • vortex stats also prints phase timing, time to first token, cache hit rate, and edit misses. It still prints counts only.

Fixed

  • The agent reads a file again only when earlier output does not already show the text to replace. A checklist or a think step goes out with the work it tracks, and verification runs once near the end.

0.2.0-beta.92 · September 27, 2026

Split a pane by dragging

Drag a tab to the edge of the editor or a chat to split it. A terminal or browser keeps its session when you move it. Switching chats remembers where you scrolled until you quit.

New

  • Drag a tab toward an edge to split that pane. Dropping it on another group's tabs moves it. A split copies the tab you were looking at, and a pane that would be too small refuses the split. The same gesture splits chats. Option-Command-Left and Option-Command-Right move between chat panes. The Split editor command is gone.
  • A terminal or browser stays the same session when you move it between panes, and more than one browser tab can stay on screen.
  • A chat open beside the focused one keeps updating. Switching chats remembers the scroll position until you quit. After a restart a chat opens at the latest messages.
  • An empty working panel offers Quick open, files, a terminal, Changes, Source, and the browser, with your shortcuts.

Fixed

  • Hovering a list glides one highlight between rows. Reordering tabs slides them into place. Reduced motion skips both.
  • Reordering workspaces uses a wider drop zone at the ends of the list.

0.2.0-beta.91 · September 27, 2026

One tab strip

Chat and editor tabs are the same full-height cells. Browser sizes live in one menu. Search waits a moment, then filters.

New

  • Chat session tabs and working-panel tabs share one strip. The active tab is underlined. A dragged tab shows a full-height drop line. Scroll arrows appear only when the row overflows.
  • The browser address bar keeps viewport size in one menu: responsive, desktop, tablet, mobile, and rotate.
  • Settings, the command palette, and the model list wait a moment before filtering. Clearing the field updates immediately. Clearing Settings search returns you to the section you had open.

Fixed

  • A chosen menu item shows a check. A parameter popover closes as soon as you press Escape, and arrow keys stay with the control inside it.
  • When Changes is narrow, the review actions read Approve all, Reject all, and Review hunks.

0.2.0-beta.90 · September 27, 2026

Ask once for browser reads

Console and network reads ask once for the current run. The close control beside a tab catches the click next to the X.

New

  • In Ask mode, reading the browser console or network asks once for the current run. Allowing it covers those reads until the run ends. Always allow, and Developer mode, skip that prompt. A blocked site is still refused. A blank page does not ask.
  • Settings → Browser no longer has a separate Auto approve mode. A saved Auto approve setting is Always allow, which covers sites, sensitive actions, and console and network reads.

Fixed

  • The close control on a file tab, Changes, Source, and a surface pill has a larger hit area and stays a pointer, so a click beside the X closes it.

0.2.0-beta.89 · September 27, 2026

Watch a plan as it is written

While a plan is being written, a tab shows the markdown as it streams. Cloud chats start at a 256k working window and compact at 80% of the window you pick.

New

  • A plan call opens a tab and renders the plan as the arguments arrive. The view follows the bottom until you scroll up. When the file is written, that tab becomes the plan file.
  • The model picker’s context control lists a default window, then larger sizes up to what the model advertises. The default is 256k, or the model’s maximum when that is smaller. Older history is summarised at 80% of the window you pick. The chat’s context meter uses the same numbers. Both the default and the compact point are set in ~/.vortex/config.toml or with VORTEX_CLOUD_DEFAULT_CONTEXT_TOKENS and VORTEX_CLOUD_COMPACT_AT_PCT.

Fixed

  • Each plan task says what changes, which files, and how to tell it is done, so a parallel build can hand that task to a sub-agent. The build names the plan file, so the sub-agent can read the section when the task line is not enough. When the readings lead to different plans, Plan mode asks before writing one.

0.2.0-beta.88 · September 26, 2026

Finish the step you announced

A reply that only announces the next step no longer ends the turn. A reply cut off by the token limit continues from where it stopped. Live rows arrive once, and status text changes in place.

New

  • When a turn ends by describing work it did not do, the run continues and asks the model to call that tool or give the answer. A helper-model failure accepts the turn. The same check runs in Ask mode. After repeated stalls the run stops as incomplete.
  • A cloud reply cut off by the output token budget continues from the cut, including an OpenAI Responses reply marked incomplete for that reason. If the model keeps getting cut off, the run stops instead of looping. Reasoning that fills the budget before any text or tool call is still reported as a thinking-only failure.

Fixed

  • A new row in a live turn rises in once, and a finished turn settles with a short rise. Status labels, checklist ticks, and diff counts change on the same element, so the turn is not re-announced. Opening a saved chat, or a row remounting as you scroll, does not replay those animations. Reduced motion skips them.

0.2.0-beta.87 · September 26, 2026

Undo a deleted chat

Deleting an agent can be undone for eight seconds. Search matches a partial name, and a failure says what went wrong in plain language.

New

  • Deleting an agent removes it immediately and offers Undo for eight seconds. Quitting the app finishes the delete. Discarding a file's changes can be undone the same way when the previous contents can be restored.
  • You can edit a message you already sent and resend it, or edit a queued follow-up and save it.
  • While a run is live, the composer says whether the draft joins the current run or waits for the next turn.
  • The command palette, the file picker, and the agent list match a partial name, and the matching letters are highlighted. An empty agent filter says so and can show every agent.
  • Holding the shortcut modifier shows the rest of the shortcut on the control. An API key field can be revealed.

Fixed

  • A timeout, a dropped network, an SSH problem, a missing permission, or GitHub not being signed in is named in plain language. The original detail stays available.
  • A progress note that only announces the next tool stays out of the transcript. The answer leads with the outcome, including what was not verified.

0.2.0-beta.86 · September 26, 2026

Add Qwen, Gemini, and the rest

Settings → Models can add Qwen, Gemini, DeepSeek, Mistral, GLM, Kimi, or any other OpenAI-compatible provider. Each workspace keeps its own terminal. A long command stays visible until it finishes.

New

  • Add a provider from Settings → Models. Qwen, Gemini, DeepSeek, Mistral, GLM, and Kimi are listed first, and a provider with more than one region asks which one. Anything else that speaks the OpenAI API can be added with its own URL. Test the connection before you save. The key stays in ~/.vortex/provider-keys.json. Model lists and prices come from models.dev and stay usable offline. The picker can filter by provider. Docs: Models.
  • vortex run and vortex review accept that provider. --base-url is used when it is not already saved. The key can also come from the provider's own environment variable, such as GEMINI_API_KEY. Docs: Headless CLI.

Fixed

  • Each workspace remembers the terminal tab you were using. Switching workspaces does not show another workspace's terminal, and a renamed tab title stays.
  • A foreground command that outlives its block window stays in the live status until it finishes.
  • A spend under one cent shows as less than $0.01.
  • When a provider reports a smaller context window, later runs of that model in this session use the smaller window.
  • An OpenAI model that rejects tools together with a reasoning effort is sent through the Responses API, so the tools still run.

0.2.0-beta.85 · September 26, 2026

A tool call keeps its name

A streamed tool call is saved with its name, so the next message in that chat does not fail. The live plan stays at the top of the transcript while you scroll, and the chat keeps following the latest line.

Fixed

  • A tool call that arrives in pieces is saved as one call, with its name. A blank name is dropped instead of being written into the chat. That blank name was making every later request, including Retry, fail.
  • A chat that already saved one of those calls can be continued. The bad call is left out of the next request.
  • While a run is going, the plan checklist sticks to the top of the transcript as you scroll, and returns to its place in the chat when the run settles.
  • The transcript keeps following the latest line when the live status row appears. That row opening on its own no longer counts as you scrolling away. Opening a chat, or coming back to one, still lands on the latest messages.

0.2.0-beta.84 · September 26, 2026

See what your models cost

Settings → Usage shows tokens and cost for the models you run, and you can set a budget. While a run is live, Enter steers it. A long chat opens on the latest messages.

New

  • Settings → Usage records each successful model call in vortex.db: tokens, provider cost, and model. A call that ends before the provider reports usage is not recorded. Deleting a chat does not delete the spend. You can set a daily, weekly, or monthly budget, export a CSV, and open the same spend from the context meter on a chat. With an OpenRouter key, the page also shows that key's limit and credits. Those figures stay in the app and are not written to the ledger. Docs: Models.
  • While a run is live, Enter steers it, Option+Enter queues the next turn, and Command+Enter stops the run and sends now. A draft with attachments always queues.
  • Review by hunk lets you keep or drop individual hunks of a pending edit before anything is written. The Changes panel says whether a change is still pending or already on disk. Docs: Review mode.

Fixed

  • A long unchanged stretch in a diff folds to one row. You can expand it in place.
  • Command output follows the latest lines until you scroll up. Paths in the output open as files, and you can open the full output.
  • Opening a long chat loads the latest messages. Load earlier messages brings the rest.
  • A remote edit uses the same search-and-replace matching as a local one.
  • The reply you watched stream is the reply that is saved, so reopening the chat does not rewrite it.

0.2.0-beta.83 · September 25, 2026

A remote fleet task stays on its host

A fleet task on an SSH workspace connects that host without changing the workspace you are looking at. If the host is not connected, the run stops instead of treating the remote paths as files on this Mac.

Fixed

  • A fleet task connects the SSH workspace it belongs to, without switching the one shown in the window. The Mac must be awake and the host must accept SSH. A local workspace is unchanged.
  • An SSH workspace that is saved but not connected no longer runs on this Mac. The run stops and says that workspace is not connected.
  • Creating, applying, and cleaning up a lane uses the workspace that owns the task. A shared remote server checks the lane against that workspace's roots. Docs: SSH remote workspaces.

0.2.0-beta.82 · September 25, 2026

Automations keep running when Vortex is closed

An interval, daily, or one-time automation can run while Vortex is closed. An unattended run decides for itself instead of waiting on a dialog. A failed fleet task shows why it stopped.

New

  • An interval, daily, or one-time automation can run while Vortex is closed, through a macOS LaunchAgent. The Mac must be awake, the workspace must be local, and a cloud model and key must be set. Git and file-change triggers, and remote workspaces, still run only while Vortex is open. The automation stays pinned to the workspace you created it in.
  • Automations are stored in vortex.db, shared by the app, vortex run --automation-id, and the agent. Ones you already saved move there once. Docs: Headless CLI.
  • While nobody is watching, edits proceed and high-risk actions are denied: push, restore, delete, a browser override, a symlink that leaves the workspace, and a destructive command. The run cannot create another automation or change MCP settings. A question it cannot ask is answered with a stated default, and the run continues. If the model is rate-limited, the automation can try the next model you listed.
  • An automation can remember a value, or an id it has already handled, and read it on the next run. The prompt can include {{handled_ids}}.
  • A window you missed fires once when you are back. You can stamp that window without firing, and you can skip a run that would overlap one already going.

Fixed

  • A failed fleet task now shows why it stopped on the Agents rail.
  • A file or git trigger only watches the workspace it belongs to. If you are looking at another workspace, the row says it is waiting.
  • Fleet lanes are git worktrees the remote server can create too, so a remote workspace can run an isolated lane.

0.2.0-beta.81 · September 25, 2026

A rate limit waits in one row

A rate limit shows as one countdown, and Vortex keeps trying for ten minutes before it pauses the run. A foreground command that outlives its block window stays in the transcript. A session that needs attention stays ahead of idle history.

New

  • A rate limit, or a provider that is down, collapses into one live countdown. Vortex follows the provider's reset hint when it sends one, and otherwise waits longer between tries, up to a minute apart. It keeps probing for ten minutes, then pauses the run so the turn is not held open. Docs: Models and keys.

Fixed

  • A foreground command that passed the block window disappeared from the live narrative while it was still running. It stays until it finishes, including on a remote host. Stopping the run stops that command too.
  • A command card saved as unknown could stay that way after the job had actually finished. The next status from the owner repairs it. A job the owner cannot find is the only one marked unknown.
  • The terminal could go blank after its pane was hidden. It redraws when the pane is shown again.
  • A background run that needs you could look idle, and an idle chat could sort above one that still needs attention. The sidebar dot, the sort order, and the mind map share one answer. A session that needs attention stays ahead of idle history without taking focus.
  • A question that arrived before its chat was loaded could be missed. That session is marked so you can find it.

0.2.0-beta.80 · September 25, 2026

The Mac browser reaches a remote dev server

In a remote workspace, localhost in the Mac browser opens a tunnel to that port on the host. A model reply that keeps producing tokens is no longer cut off by a total time limit. vortex stats reports how recent runs finished.

New

  • In a remote workspace, opening localhost, 127.0.0.1, [::1], or 0.0.0.0 in the Mac browser tunnels that port over the SSH connection you already have. The tunnel binds on your Mac's loopback only and closes when the workspace disconnects. The same host port is used when it is free; otherwise the result says which local port was used. The address you see stays the host's address. Docs: SSH remote workspaces.
  • The browser's new-tab page lists loopback dev servers on a remote host that can report them. An older host shows no suggestions.
  • vortex stats prints a read-only summary of recent local runs: how they finished, and how many steps they took. It prints counts and reason codes only. --since 7d or 12h sets the window, and --format json prints the same report as JSON. Docs: Headless CLI.

Fixed

  • A long model reply could stop because the whole request hit a time limit, even while tokens were still arriving. Streaming now waits for the first byte, then for silence between chunks. Cancelling still stops it.
  • Reasoning tags and model control tokens no longer appear in the answer.

0.2.0-beta.79 · September 24, 2026

Keys leave preferences, and edits check the package they touched

Provider keys typed in Settings now live in a private file, and existing keys move there on launch. An edit that still finds its text is no longer blocked because the file changed, and a package-scoped typecheck follows a batch of edits.

New

  • Provider keys live in ~/.vortex/provider-keys.json (mode 0600). Keys you already saved in Settings move there on launch. The headless CLI still prefers environment variables and --api-key, and falls back to that file. Keys are not written to logs. Docs: Models and keys.
  • After a batch of local edits, Vortex runs a package-scoped typecheck — cargo check for the owning crate, or tsc against the nearest tsconfig — and attaches the result to the edit. A timeout, or a checker that did not start, attaches nothing, so a failed check is never reported as clean. Turn it off with VORTEX_POST_EDIT_TYPECHECK=0 or limits.post_edit_typecheck in ~/.vortex/config.toml.
  • Long pages from fetch_url come back in chunks. The truncation notice includes the next offset.

Fixed

  • A search-and-replace, line edit, diff, or multi-file edit could be refused because the file's hash changed, even when the text it was replacing was still there. Those edits use the text they match as the freshness check. A full overwrite still refuses when the file changed since the agent last read it.
  • A multi-file edit locks and snapshots every file it names.
  • A symlink that leaves the workspace asks you before the tool follows it.
  • Destructive commands hidden behind a shell, a full path, a wrapper, or aimed at your home directory are blocked. Ordinary project commands still run.
  • Code outlines for languages the parser understands come from the syntax tree. Other languages keep the previous outline.
  • Log lines that look like credentials are redacted before they are written.

0.2.0-beta.78 · September 24, 2026

One connection per machine, and stops that stay stops

SSH config aliases that point at the same machine share one connection. Stopping a run stops that run's remote commands and reports those tools as cancelled, not failed. Live tool rows stay with the chat that owns them.

New

  • Two SSH aliases that resolve to the same user, host, and port share one connection. A dropped connection is noticed without a round trip. After Vortex updates the remote server, the next call reconnects. The app never borrows another host's connection. Docs: SSH remote workspaces.
  • Stopping a run also stops the background commands that run started on the remote. A stop in one workspace cannot kill a job that belongs to another.

Fixed

  • Tools you stopped were counted as failures. The run summary now counts them as cancelled.
  • Live tool rows from a parked or background chat could show up in the chat you were looking at. Each chat keeps its own rows, including command output, even when another workspace is focused.
  • A finished sub-agent waited until its siblings finished before it appeared. It now shows as soon as it finishes.
  • An MCP server started over stdio could launch a second process when two tools called it at once. They share one process, and that process stops when the host session ends. Docs: MCP integrations.

Improved

  • Nested chats in the Agents rail line up with the workspace row without shifting their titles.

0.2.0-beta.77 · September 24, 2026

Review and the mind map follow the light theme

Pull request review and the mind map read correctly in the light theme. You can add several folders to a workspace at once. The mind map is one toolbar, and Show turn opens the chat turn behind a node.

New

  • Add several folders in one step, locally or on a remote host. A folder you already have is skipped. A parent that would swallow a folder already in the workspace asks once before it replaces those nested folders. Docs: SSH remote workspaces.
  • The mind map is one toolbar: Fleet or Run, search, All / Active / Attention, zoom, Fit, actual size, the minimap, and Export PNG. The controls stay reachable when the panel is narrow. Pin a node and the view follows it. Show turn scrolls the transcript to what the agent said there, and it is only offered when that turn exists.

Fixed

  • Review findings, checks, and notices used raw colors that turned pale on the light theme. They now use the same semantic colors as the dark theme. Severity sits on a thin rail and the icon, not a tinted card.
  • The mind map painted hardcoded colors, so the light theme could not retint it. It now follows the theme.
  • An edit from a background agent could highlight files in the workspace you were looking at. Highlights stay in the workspace that owns the edit.
  • A steer into a new run could be counted against the previous run. Each run keeps its own count.

0.2.0-beta.76 · September 23, 2026

One SSH connection per host, and a mind map you can search

Two workspaces on the same host share one SSH connection. The Agents rail keeps the last day of chats in view, and older ones wait behind Show more unless they still need you. The mind map can be searched and followed.

New

  • Search the mind map, filter nodes, zoom, and fit the graph or the causal path. Pin a node and the view follows it. A minimap sits in the corner. A large graph skips decorative motion.
  • Opening the editor or the terminal moves focus into that surface.

Fixed

  • Opening a second workspace on a host you were already connected to started another SSH process. They now share one connection. Closing one workspace leaves the other connected. The host closes when the last workspace does. Docs: SSH remote workspaces.
  • The Agents rail listed every chat. It now shows the last 24 hours, plus any older chat that is running, queued, or waiting on you. Show more reveals the rest.

0.2.0-beta.75 · September 23, 2026

Reorder a workspace, and see what a run is actually doing

Drag a workspace in the Agents rail to reorder it. Right-click a chat to mark it unread. While a run is working, the live activity groups what it is reading, editing, and checking, instead of one long list.

New

  • Drag a workspace row to move it. The keyboard can move it too, and the order is saved.
  • Right-click a chat and choose Mark as unread. The title stays emphasized until you mark it read, and that flag is saved with the chat.

Fixed

  • A queued follow-up sent the instant a run completed could be refused, because the finished run was still registered. It waits a moment, then sends.
  • A cloud model that stopped sending tokens could sit there. The run reports that the stream went idle.
  • On an SSH workspace, a missing local path was reported as the GitHub CLI not being installed. It now says the workspace root is not on this machine.
  • A partial checklist update could be shown as the whole list. The card follows the effective checklist.
  • A headless-browser response override with a scheme-less pattern matches the host and path.

0.2.0-beta.74 · September 22, 2026

A finished checklist reads as done, on the same surface as the chat

A finished checklist says so, with a green check, on the same surface as the rest of the chat. Status stays on the icon and the words, instead of painting the whole card. The top bar no longer adds a second SSH chip.

Fixed

  • Decision cards washed the whole panel in cyan, amber, or red: a plan ready to build, a finished checklist, an incomplete run, a failed verification. The status stays on the icon and the copy. The card uses the same border and surface as the rest of the transcript. Docs: Plan files.
  • A finished checklist looked like a list still in progress. It now reads All N tasks completed, with a green check, and it sits a little tighter. A failed or cancelled task does not get that treatment. Completed rows use the success color.
  • The file-status filters on a pull request's Changes tab clipped the edge of a chip.
  • The top bar showed an SSH chip whenever a session stayed connected while you worked in another workspace. That session already shows on its row in the Agents rail, so the chip is gone. Docs: SSH remote workspaces.

0.2.0-beta.73 · September 22, 2026

A follow-up keeps the checklist, and a run stays open until it is done

A follow-up keeps the checklist you already had, instead of shrinking it to the rows the model mentioned. A run does not call itself done while items are still open. Opening an SSH workspace no longer flashes a reconnect warning while the session is still connecting.

Fixed

  • A follow-up started a new run with an empty checklist. A later update that only changed status then replaced the whole list, so tracked items disappeared down to the ids the model sent. The new run starts from the session's checklist. Resuming a run, and building from a plan file, still use those sources. A subagent still gets its own list. Docs: Plan files.
  • The agent could finish with a written summary while checklist items were still pending. Those items keep the run going. A run that stops with unfinished checks and an unfinished checklist is marked incomplete, and the remaining items stay on the result.
  • The file tree showed a reconnect warning for each root the moment an SSH workspace opened, before the session had finished connecting. It waits through that window. Switching workspace stops the wait.

0.2.0-beta.72 · September 22, 2026

A plan that stays in its own chat, and a merge that can wait

Another chat's plan no longer appears on the chat you are looking at. Building a plan over SSH reads the plan file on the host, so the checklist is not empty. Merge can wait until branch protection passes, or an admin can bypass it after a second confirm. The headless browser can swap a live response for a file in the workspace.

Fixed

  • A run that belonged to another chat wrote its plan and todos into the session on screen. Opening that chat now drops planning the transcript cannot account for. The plan file on disk is left alone, and it still appears under Other plans.
  • Building a plan in an SSH workspace read the plan file on the Mac. The checklist started empty, and the run reported the plan as unreadable.
  • The top bar repeated the active workspace's SSH host, which the Agents rail already shows. The chip now appears only while a session is still connected and you are working in a different workspace. Right-click it to disconnect.
  • Pinning the live checklist re-rendered the whole transcript on every scroll frame.

New

  • Merge offers Auto-merge (it lands when the base branch's requirements are met) and Admin (it bypasses branch protection, and asks you to confirm). A merge GitHub refuses because the branch is not mergeable offers those two instead of stopping. Docs: GitHub pull requests.
  • Browser Developer mode can override a response in the headless browser with a workspace file or an inline body, the way DevTools Local Overrides do. The browser drawer lists the rules that are armed. The embedded panes are not affected.

0.2.0-beta.71 · September 22, 2026

Plan mode can call MCP, and a queued message that actually sends

Plan mode can call the MCP tools you already connected, so a plan can look something up before you Build. A queued follow-up sends when the run finishes, and it does not fire after a failure or a plan that is still waiting on you. The SSH chip is the host again: right-click it to disconnect.

Fixed

  • Plan mode told the model it could not call MCP tools, and the executor refused them. A plan could not look up an issue, a doc, or a database until Build.
  • A queued message could sit forever after a successful run, because the trace still said running at the instant the run ended. A message queued while the agent was already idle had the same problem.
  • A queued follow-up could also fire after a failed, cancelled, or Plan-ready run, and bury that outcome.
  • Starting a new chat left the previous run's context ring on the composer.
  • The live checklist pinned to the top of the transcript even when you had not scrolled past it, so it floated over the turn. It now stays in place until its row would leave the top, then holds there.
  • The SSH chip grew an Open button and an agent count. Disconnect is a right-click on the chip. The chip still stays visible when you switch to a local workspace.

New

  • Registered MCP tools are callable in Plan mode, the same set Agent mode has, including tools that are not marked read-only. Adding or configuring a server still waits until Build. An unknown mcp_* name is still refused. Ask mode still calls nothing. Docs: MCP integrations.

0.2.0-beta.70 · September 21, 2026

Tabs you can click, and a checklist that stays on screen

A click that drifts no longer starts a tab reorder, and the scroll arrows no longer cover the first and last tabs. While a plan is building, the Active Tasks checklist stays pinned to the top of the transcript. Deleting a chat removes it from the sidebar immediately.

Fixed

  • A click that moved a few pixels vertically was treated as a drag. The reorder ate the click, so the tab never selected.
  • When the tab strip overflowed, the scroll arrows sat on top of the outer tabs and stole clicks on the file icon.
  • Deleting a chat let the sidebar put the row back for a moment while the session finished tearing down.
  • The live plan checklist lived inside a virtualized row, so scrolling away hid the task that was in progress. A sticky element inside that row cannot pin to the viewport.

New

  • Dragging a tab follows the pointer. The strip keeps scrolling while the pointer rests at an edge, and the drop marker updates as tabs slide underneath.
  • While a build is running, the Active Tasks checklist stays pinned to the top of the transcript. When the run finishes, the card returns to the turn as its result. Docs: Plan files.
  • Stop on a background-agent row matches the other stop buttons: it appears on hover, and the glyph is a filled square.

0.2.0-beta.69 · September 21, 2026

Act on a pull request from the tab, and a plan checklist that ticks while it works

Merge, revert, close, reopen, mark ready, and convert to draft from the pull request tab, and Merge says why it cannot. Checks name what is required and what blocks the merge. A sequential plan build advances the checklist as it goes, instead of sitting at 0 of N until the last step. Another chat's run no longer narrates the one you are looking at.

Fixed

  • A sequential plan build only moved the checklist when the model called update_todos, and a busy model batched that into one final call. The Tasks card and the plan file both read 0 of N for the whole run.
  • Opening another chat could adopt that chat's live run, so the transcript showed the other chat's status and tasks.
  • The strip of agents in other chats also listed the chat you were already in.
  • A fan-out of child runs was headlined Running 3 tools. It now names the subagents, and the recap counts them per child — a best_of_n of three is three runs, not one call.
  • A run that started before its session was known was dropped. A later event could then write that run's plan into whichever chat was focused.
  • Merge disappeared with no explanation when the pull request was a draft or checks had not passed. The result of a merge, revert, close, or reopen lived only in a toast you could miss.
  • The Changes list is the remote pull request, and it looked like the local checkout. There was no way to filter by added, modified, deleted, or renamed.
  • Human reviews and the comment thread could render the same conversation twice.

New

  • Pull request actions: Merge, Revert, Mark ready, Convert to draft, Close, and Reopen, with a durable result row. Merge stays visible and says why it is blocked. Request reviewers by GitHub login. Docs: GitHub pull requests.
  • Checks open with a decision — merge blocked, still running, or passed — and badge required and merge-blocking runs. Refresh, Retry, and Details sit on the row.
  • Changes can be searched and filtered by status, and the header says the diff is this pull request, not the local checkout.
  • Commits can be searched, the SHA copied, and opened on GitHub, including the compare against the pull request's base.
  • The planning card shows this run's plan. Other plans in the workspace sit behind their own disclosure and are not read from disk until you open it. While a build is running, the checklist stays mounted if you scroll back through the turn. Docs: Plan files.
  • Settings model cards show a per-million price when the catalog has one (OpenRouter, models.dev, or the built-in list). A missing price stays blank. Docs: Models and keys.
  • An identical tool that keeps firing without changing the work is nudged, then stopped, and the stop names the unresolved verification when there is one.

0.2.0-beta.68 · September 21, 2026

List every plan in the workspace, and a review that can actually finish

The planning card lists every .plan.md in the workspace — Build, Continue, or delete — including plans from other chats and on an SSH host. AI Review shows a clock and Cancel, says why it failed, and no longer times out at 90 seconds on a large diff. Switching to a restored chat opens at the live tail, not the top of the conversation.

Fixed

  • AI Review of a busy PR timed out at 90 seconds and reported a JSON parse error. The output budget was 4096 tokens, so a long finding list was truncated and discarded.
  • Switching local ↔ SSH, or a restore that replaces the transcript scroller, opened the conversation at the top. A scroller that has never been positioned is now pinned to the live tail.
  • Deleting the last plan made it reappear from the session's leftover refs. A failed delete made the row vanish while the file was still on disk.
  • Listing plans in an SSH workspace ran against the Mac and came back empty — indistinguishable from "no plans exist". Listing and delete now run on the host.
  • Unsaved edits in an open plan file could be overwritten by checklist sync. Sync is skipped while the buffer is dirty.
  • Source Control's Review vs base and the PR tab showed different in-flight and failure UI. They share one status row now.
  • Review findings could stay after the PR or branch changed, with no warning.

New

  • A workspace plan list on the planning card: every .plan.md, with per-row Build / Continue / Parallel, and delete. Revision snapshots in history/ are kept unless their own plan is deleted. Docs: Plan files.
  • AI Review in flight shows a phase, an elapsed clock after 3 seconds, and Cancel. A failure is a framed headline plus Retry, with the raw diagnostic in a disclosure. A result whose source changed is labelled stale. Docs: GitHub pull requests.

0.2.0-beta.67 · September 20, 2026

Stop a background job from pinning the status line, and keep the queue when you switch chats

A yielded npm run stays on its own card instead of pinning "Running…" for the rest of the session. The recap no longer repeats the live status row, and both lines name a file the same way. Switching chats keeps queued messages. Folded tool rows stay in the same column as their labels.

Fixed

  • A yielded background job (npm run, a long-running server) headlined the status row for the rest of the session, with the job's age as the elapsed clock. Its own card still shows stdout and Cancel.
  • The recap echoed the live status row — two stacked lines saying they were editing the same file.
  • The recap labelled a file by basename while the tool card beside it used a path suffix.
  • Recap said Done · 10 files while skipped or failed tools were only visible by scrolling to their rows.
  • Switching away from a chat blanked the queued-message ledger. Pending intents are now parked and persisted; settled or rejected ones are not resurrected.
  • Nested fold bodies used five different insets, so expanding a row shifted its content out of the label column.
  • A collapsed long diff still mounted a virtualizer. Only an expanded diff over the line threshold does.
  • The transcript virtualizer rebuilt its measurement cache on every stream flush, and a ResizeObserver on the viewport forced layout mid-callback.

New

  • Expanding a command card shows an Output summary and cwd.
  • Read and search previews have a sticky header with the line range or match count.

0.2.0-beta.66 · September 20, 2026

Errors that stay until you act, and a notebook that actually refreshes

A failed load no longer looks like "nothing changed." Error toasts stay until you dismiss them and name what you were trying to do. An agent rewrite of a notebook refreshes the open viewer. Menus close on a second click of their trigger. A just-settled agent stays in the list.

Fixed

  • The 20-session cap trimmed by array position, so a just-settled agent could vanish from the active list while the inactive workspace row still showed it. Cap is by recency now.
  • A failed pending-changes read rendered the empty state — which claimed your edits were safe when the agent may have written to disk. That is now an error with Retry.
  • Error toasts faded after a few seconds, and git or browser failures were raw exception strings (or silent). They now stay, with a framed title and the diagnostic underneath.
  • An agent rewrite of a .ipynb left the notebook viewer on stale cells until Reload.
  • A failed run offered both Continue and Retry, and Retry sat at the far edge of a wide window.
  • MCP setup headings used the raw server key ("analytics needs a connection").
  • Clicking an already-open ⋯, toolbar, or Integrations menu closed it on mousedown and reopened it on click.
  • A single-folder workspace repeated its name on the second line of the sidebar row.
  • Reordering workspaces that failed to persist reverted on the next load with no explanation.

New

  • Error toasts persist until dismissed, carry a description, and can offer Retry.
  • A notebook open in two places stays in sync: agent tools and Save both emit a refresh.

0.2.0-beta.65 · September 20, 2026

Close Source for real, and name the last thing the agent actually did

Closing Source or Changes from the tab strip no longer jumps you to another pinned view, and the Source count can stay gone until you open Source Control again. Live chat rows enter as they happen; a patch file flashes only after the write lands. The strip above the transcript no longer says "Update" after every checklist tick.

Fixed

  • Closing Source or Changes called "open files", which fell back to Changes when no file was open — so × on Changes did nothing, and × on Source jumped to Changes. Close now returns to the editor, and closing a chip you are not on leaves you where you are.
  • The Source chip came back the moment you closed it, because dirty git was the only condition. Dismissing it hides it until you open Source Control again (chip, Go menu, palette, or shortcut).
  • The background-agents second line said Update after almost every step — that was update_todos, which lands after nearly every tool. It now names the last durable action.

New

  • Live transcript rows fade in once as they happen; settled rows do not replay on scroll. Queued messages enter and leave the same way. Copy uses one Check swap everywhere.
  • A patch file card flashes after a confirmed apply or reject. Rows that disappear on click do not fake a pulse.
  • The background-agents header uses three equalizer bars that breathe only while work is actually running.

0.2.0-beta.64 · September 20, 2026

Background agents that tell the truth, and a "needs input" dot that actually clears

The strip above the transcript names what other chats are doing in the same words as the live status line, sorts the ones that need you first, and can collapse. Answering a follow-up no longer leaves a stale amber dot. Parking a session keeps a real wait, and restoring it no longer resurrects a finished tool as still running. One Escape closes only the top overlay; a menu no longer fights its own trigger.

Fixed

  • Answering a follow-up question left the amber needs input dot on — the same run resumed in place, so nothing re-derived the flag.
  • Switching away from a session that was waiting on an approval or a question cleared the dot; switching away from one that was not waiting could not clear a stale one. Both are now derived from the transcript.
  • The background-agents strip rendered truncated session ids over "Waiting…" for chats it could not name, and its header said "running" even when every agent needed you.
  • Files-changed counted in-flight and failed writes. Only finished, successful edits count, and Stop is hidden once the run has actually ended.
  • Switching chats mid-flight dropped the in-flight spawn_agent card: the lanes kept running, the host card did not. Live tool previews are parked and restored with the session.
  • A chat save with no owning workspace was dropped silently, so the transcript vanished from the sidebar on the next load.
  • Clicking an open menu's trigger closed it on mousedown and reopened it on click.
  • Opening a modal focused the first control, then jumped to the intended one.
  • Arrow keys in a menu treated stray buttons (search-clear, header actions) as menu items.
  • Two Browser panes shared one address-bar id, so labels and datalists collided.

New

  • The background-agents strip uses the shared live-status line, sorts by urgency, persists collapse, and says Open / Stop instead of Focus. Parallel-lane runs stay in the Agents rail, not this strip.
  • Menus, dialogs, and hover cards keep a single focus target on open, restore it on close, and let one Escape dismiss only the topmost surface.

0.2.0-beta.63 · September 19, 2026

Revise a plan in place, without phantom agents or a Reload menu

A Plan-mode follow-up rewrites the plan file you already have open, instead of minting a second .plan.md. The sidebar no longer invents "Chat" rows from run placeholders, today's agents stay compact, and you can start a new agent in a workspace that is not open yet. Right-click Cut / Copy / Paste works in the editor; WebKit's Reload menu is gone everywhere else, because Reload discarded in-flight runs.

Fixed

  • Jump to latest appeared when you had not actually scrolled past the transcript — a nudge over the composer padding, or a pane that could not scroll, counted as "away".
  • A workspace you were not looking at grew extra Chat agents. Run and pending-interaction rows minted a session to satisfy a foreign key, and that placeholder was listed as a real chat once the workspace became inactive.
  • The per-workspace agent cap only applied while a workspace was active, so switching away made it look like it had more agents.
  • Switching workspaces rebuilt the inactive session lists from scratch, so rows flickered empty even when the data had not changed.
  • Right-click on chrome that had no custom menu opened WebKit's Reload / Inspect Element menu. Reload reloaded the whole app UI.
  • The editor context menu was AI-only. Cut, Copy, Paste, and Select all are on it now; a click outside the selection moves the caret first, like VS Code.
  • Parallel agents could each hold one file and wait forever for the other's next file. A run that already holds a lease is refused immediately instead of parking.
  • Asking the agent to change a plan created a second plan file, so Build, the editor tab, and the plan list pointed at different artifacts.
  • The Thinking chevron jumped sideways when reasoning text arrived, because the empty state did not reserve the same lead column as a tool row.
  • Clicking + on a workspace that was not active created an agent and then discarded it when that workspace hydrated. The click now waits for the destination to be ready.

New

  • Plan-mode follow-ups pass create_plan(path: …) and rewrite that file in place. The pause copy says the plan was updated, not created. Docs: Plan files.
  • + on an inactive workspace starts a new agent there after it activates and hydrates — one click.
  • The sidebar defaults to today's sessions plus anything that needs attention; older chats sit behind Show more.
  • A default-deny context-menu guard: text fields keep WebKit's editing menu, everything else does not.

0.2.0-beta.62 · September 19, 2026

Fix a review finding without editing the wrong branch

A finding on a pull-request review can start an Agent-mode run — or steer one that is already going. Clicking a finding opens that path at the line. Fix is refused unless this clone is on the PR's head branch, because the findings describe the PR's post-image; editing while sitting on main would be a confident, wrong edit. Checkout is the one-click escape.

Fixed

  • Clicking a review finding now opens the file at that line, instead of only focusing the file.
  • Starting a second fix while a run is live no longer races a new chat; it steers the in-flight agent.
  • Under Review Mode, the toast says the agent's edits wait for your review rather than implying they already landed.

New

  • Fix with agent on a finding, and Fix all for up to eight findings (errors first). Findings are treated as data, not instructions.
  • A fail-closed gate: if the owning root is on another branch, or the branch cannot be read, Fix is blocked and Checkout is offered. Foreign PRs cannot open or fix paths.
  • After a fix is handed off, the findings list is labelled as from before those edits.
  • Docs: GitHub pull requests covers AI Review, Fix with agent, and why Checkout is required before a fix.

0.2.0-beta.61 · September 19, 2026

MCP that runs on the SSH host, and AI review that actually starts

MCP now resolves on the machine that owns the workspace. Open a remote (SSH) workspace and the host keeps its own ~/.vortex/mcp.json, spawns stdio servers there, and sends HTTP requests from its own network — so a server wrapping a database on the host finally works. Settings → Integrations follows the workspace instead of refusing every server with "Remote MCP execution is not available yet". Run AI Review now gets the cloud key, keeps running if you switch tabs, and shows Fetching / Reviewing progress you can Cancel.

Fixed

  • "Set up <server> MCP" in a remote workspace wrote a plan instead of configuring anything. The two MCP config tools now work against the host.
  • The Connect button did nothing in a remote workspace. It read the server's URL and credential key from your Mac's config. Both now come from the host; the browser flow and the token still stay on your Mac.
  • A connected server could still fail with 401 because the token was stored under one key and read under another. Both sides now derive the key from one shared rule.
  • In a remote workspace, the "Global defaults" tab listed your Mac's servers while the caption said it was showing the host's.
  • "Test connection" failed on a server you had just signed in to. The token is now sent for the test too.
  • An mcp_* tool call in a remote workspace silently executed on your Mac. It now routes to the host, or fails loudly naming the host.
  • Settings → Integrations marked every server "Runs locally only" whenever the workspace was remote, leaving the panel unusable there.
  • A host running an older vortex-server now says so explicitly and tells you to redeploy, instead of quietly running the call on your Mac.
  • Run AI Review invoked with a blank key because the editor pane never forwarded the cloud model, so every click failed with "Code review needs a cloud API key."
  • Switching tabs or workspaces mid-review made it look idle (and offered a second concurrent run). Progress, Cancel, and the completion toast now outlive the tab.

New

  • MCP servers run on the remote host: its config, its stdio processes, its network. Per-workspace overrides work there too.
  • configure_mcp_server and inspect_mcp_servers read and write the host's config in a remote workspace, and the approval card names the machine it is writing to.
  • The Integrations panel names the exact file it edits (<host>:~/.vortex/mcp.json) and says where each server runs.
  • OAuth sign-in still happens on your Mac, and the token is sent per call — no OAuth token is ever written to the host.
  • Docs: an "In a remote workspace" section in MCP integrations, including the reverse-tunnel recipe for a server that must stay on your Mac.
  • AI review shows "Fetching the diff…" then "Reviewing the diff…" with an elapsed clock, and you can Cancel. A completion toast can take you back to the PR tab.

0.2.0-beta.60 · September 18, 2026

Add any folder over SSH, and a Parallel agent sheet you can actually read

The Remote Explorer can browse the whole host when you add a folder — it was stuck inside the workspace's existing roots and refused anything outside. Multi-root workspaces get a Folders glyph. The Parallel agent sheet groups inspect bursts, sizes file names like the transcript, and the terminal no longer clips its last row.

Fixed

  • Adding a folder over SSH no longer fails with "Path is outside workspace root" — the picker can browse anywhere the SSH account can read.
  • Picking a parent folder absorbs nested roots instead of producing a set the backend rejects; picking a folder already inside a root is a no-op.
  • The terminal no longer silently slices its last row (and right edge) because xterm was fitted including the pane padding.
  • Parallel agent sheet file names are the same size and colour as the transcript, not 16px near-white body text.
  • Consecutive reads and searches collapse into one inspect row (Read ×5 · 12 results) instead of a wall of repeated Read lines.
  • Sub-second inspect steps no longer print <0.01s on every line.
  • The worktree/copy lane chip is readable (was too faint on the dark surface).

New

  • Multi-root workspaces use a Folders glyph in the sidebar, empty state, and command palette.

0.2.0-beta.59 · September 18, 2026

SSH that stays up when you switch workspaces, and automations the agent can propose

Switching to a local workspace no longer hides a live SSH session — the title bar keeps the chip, names any agents still running, and lets you Open or Disconnect. The agent can list your automations and propose new ones in an approval card, including a pinned model. Plan tasks no longer show a doubled (depends: …) prefix, and the live N/M tasks count includes the task in progress.

Fixed

  • Switching to a local workspace no longer makes a live SSH session (and its running agents) look closed. Title bar and sidebar track sessions independently of the active workspace.
  • Plan task names no longer include a leftover (depends: x) marker when the model wrote the prefix and dependsOn together.
  • Live N/M tasks starts at 1/9 when the first task is in progress, instead of staying 0/9 until something completes.
  • Context menus opened at the bottom or right edge stay inside the viewport.
  • Closed-app automation scheduling is only offered when a cloud model is selected (and still not for SSH workspaces).

New

  • The agent can list automations and propose create, update, or remove in an approval card; nothing is written until you Approve.
  • Automations can pin a specific model, or follow the current one.
  • Parallel agents wait on file leases instead of skipping contended files; check_file_contention shows who holds what so the run can prioritise.

0.2.0-beta.58 · September 18, 2026

Remote roots that stay remote, and plan checklists that actually load

An SSH workspace whose session dropped no longer pretends the folders are missing on this Mac — the explorer says the remote is unreachable and offers Reconnect. Build-plan turns load the checklist even when the plan file has two ## Tasks sections, and if the file still cannot be read the transcript says so instead of showing no tasks.

Fixed

  • Remote file tree no longer reports SSH roots as missing local directories when the session is down. File IPC never falls through to the local disk for a configured remote workspace.
  • Explorer errors for an unreachable remote are compact (five roots no longer blow the panel) and offer Reconnect instead of a Retry that cannot succeed.
  • Plan files with a prose ## Tasks section plus the generated checklist now load every id-bearing task, so Build no longer starts with an empty todo list.
  • An unreadable plan checklist surfaces as a retained "Plan checklist unreadable" milestone instead of silently having no tasks.
  • Debug info includes a remote routing snapshot so "SSH says connected but the tree reports roots missing" is answerable from a pasted debug block.

New

  • The planning card opens the seeded checklist when a Build starts (stays collapsed if you close it mid-run, or if the card is plan-file-only).
  • create_plan keeps ## Tasks for the todos checklist and uses ## Steps in the plan body, so the two sections no longer collide.

0.2.0-beta.57 · September 18, 2026

Live status that names every in-flight tool, and edit counts that stay honest

While the agent is composing a call, chat names the work — Editing 3 files, Running a command — with a timer that starts when you first see it. File cards show the real +N/−M even when the diff preview is truncated.

Fixed

  • Large edits no longer show +20 because the badge counted a truncated diff. Counts now come from the full change.
  • The elapsed timer on live status starts when the work first appears, not when the tool actually starts.
  • Streaming "Thinking…" no longer duplicates the Thinking block, and no longer shows a fake token estimate.
  • The transcript tail and the active-turn status no longer disagree (one "Thinking…", the other naming the tool).
  • Editor toolbar Build/actions no longer clip off the right edge when Browser chips are pinned.
  • Working Panel resize keeps a usable chat column instead of overflowing the window.

New

  • Live status aggregates a batch ("Editing 3 files") and lists the files underneath.
  • Live status shows task progress (`2/7 tasks`) when the run has a checklist.
  • File paths in live status keep the directory tail so two files with the same name stay distinct.

0.2.0-beta.56 · September 17, 2026

Live status that names the work, not a frozen "Thinking…"

While the agent is working, chat shows what it is doing — editing a file, running a command — instead of a blank turn or a generic "Thinking…" covering the real work.

Fixed

  • An in-flight step with no prose yet no longer looks frozen; the live status line still has a home.
  • Streaming "Thinking…" no longer hides a status that names concrete work (Editing a file, Running a command).
  • A malformed plan envelope no longer wipes the rest of the assistant message after the turn settles.
  • The live plan card and the inline plan no longer vanish together while the envelope is still streaming.
  • A review patch that fails to apply is kept and logged instead of disappearing.

New

  • Live status can name the tool being composed before it starts, without drawing a ghost tool row.

0.2.0-beta.55 · September 17, 2026

Menus stay on top of Browser, and MCP you can scope

Opening a menu or tooltip over the Browser keeps the page visible underneath, MCP setup can target this workspace or every workspace, and the Integrations form picks that layer before you save.

Fixed

  • Menus, tooltips, and popovers over a Browser tab no longer hide behind the page.
  • The Browser pane does not blink blank when chrome overlaps it — a still of the page stands in while the native view is parked.
  • MCP Connect and OAuth in the approval card use the scope being configured, not always the current workspace.

New

  • Adding an MCP server requires a scope: this workspace, or every workspace. If you did not say which, the agent asks first.
  • Settings → Integrations lets you choose Global defaults vs This workspace when adding or editing a server.
  • Inspect MCP servers reports whether a server is global, workspace-only, an override, or disabled here.

0.2.0-beta.54 · September 17, 2026

Images you can paste, and file links that open the right root

Paste and copy images work through the native clipboard, chat file links open the file in the root that actually owns it, and follow-up answers stay answered after you pick one.

Fixed

  • Pasting an image into the composer no longer silently drops it.
  • Copy Image uses the system pasteboard, so it actually lands on the clipboard.
  • Chat file links in a multi-root workspace open the file under the root that holds it.
  • Clicking a missing file link shows the miss in the editor instead of closing the tab.
  • Follow-up question answers stay answered after you pick one.

New

  • Image preview can download the image to a path you pick.

0.2.0-beta.53 · September 16, 2026

Run history across chats, and live traces that stick

Run history can browse the whole workspace, past runs keep a readable activity timeline, and foreground traces are saved as they happen so you can inspect a run after restart.

Fixed

  • Empty chats are no longer persisted as workspace sessions.
  • Await on a long shell job can read output from a cursor instead of replaying the whole buffer.
  • Bug reports open the real Vortex issue tracker.
  • Stable workspace context is a separate internal message, so it does not rewrite the user's first prompt.

New

  • Run history can switch between this chat and the whole workspace, and jump to the chat that owns a run.
  • Agent timeline groups a run into readable activity rows.
  • Foreground runs append their trace as they execute, so history is available before the turn finishes.

0.2.0-beta.52 · September 16, 2026

Cheaper cloud turns with real cache accounting

Cloud requests keep a stable prompt prefix so providers can reuse it, context usage shows cache writes, and cost estimates bill those writes at the provider rate.

Fixed

  • Cloud turns no longer put volatile context into the cached system prefix, so later steps can reuse the prompt cache.
  • Cloud models keep the full tool schema by default instead of shrinking it every step.
  • Context cost estimates include cache-write tokens instead of billing them as fresh input.

New

  • Context usage shows cache-write tokens when the provider reports them.
  • Cloud requests send a prompt-cache key for the run so later steps can hit the same cache.

0.2.0-beta.51 · September 16, 2026

MCP you can copy, a clearer first run, and owned Browser tabs

Integrations can copy, move, or reset MCP servers per workspace without showing stored secrets, first-run onboarding is a three-step path, and agent Browser tabs stay tied to the run that opened them.

Fixed

  • Background chat streams keep the last tokens when a session seals instead of dropping them.
  • MCP setup approvals can finish OAuth and secret prompts in the card, with live status.
  • Stored MCP env and header values stay masked in the advanced editor.
  • Agent Browser actions keep multiple tabs per run instead of overwriting the last one.

New

  • Settings → Integrations: copy a server into this workspace, reset to global, move between scopes, and inspect tools.
  • Getting started walks workspace → model → first task, then offers Integrations.
  • Model picker shows download and lifecycle states more clearly.

0.2.0-beta.50 · September 15, 2026

Clearer updates, with a real DMG fallback

After a restart you see whether the update landed, Settings → About shows last-checked and install progress, and the DMG fallback comes from the signed manifest instead of a guessed URL.

Fixed

  • Download or install failures keep the checked update so Retry works without checking again.
  • The update chip stays visible for actionable errors, not only when a version is already known.
  • Restarting no longer looks like success before the new version is running.

New

  • After restart, a toast confirms the new version or offers the signed DMG if the update did not finish.
  • Settings → About shows last-checked time, download progress, and Download DMG from the updater manifest.

0.2.0-beta.49 · September 15, 2026

Hardened desktop, bug reports that reach admin

Production CSP no longer allows script eval, the Browser overlay is isolated from the main webview, and in-app bug reports can reach the Vortex Admin panel.

Fixed

  • Browser and MCP approval cards follow React hook rules, so those requests no longer skip state.
  • A cancelled verification run still counts as failed, so a stopped check is not treated as a pass.
  • Intel CI uses the current macos-15-intel runner instead of retired macos-13.

New

  • Report a bug can send categorized, authenticated reports to Admin, with local log plus retry when offline.
  • Browser overlay has its own minimal capability; Browser DevTools require developer mode.
  • Release Linux servers are built with the pinned Rust channel inside a digest-pinned zigbuild image.
  • Shipped binaries keep the symbol table so native crash backtraces stay useful.

0.2.0-beta.48 · September 15, 2026

SSH servers that match the remote Linux

Remote SSH probes the host libc and deploys a matching glibc or musl vortex-server, so Alpine and Home Assistant boxes no longer get a binary they cannot run.

Fixed

  • Alpine and Home Assistant Terminal & SSH hosts receive a static musl server instead of a glibc binary that fails to start.
  • If the remote libc cannot be identified, Vortex builds from source instead of guessing glibc.
  • Loader and libc mismatch errors tell you to redeploy a compatible server.

New

  • Release builds ship validated vortex-server artifacts for x86_64 and aarch64, glibc and musl.
  • SSH connect progress shows the remote libc (and version when known).

0.2.0-beta.47 · September 15, 2026

Stay awake and pick models you can run

Agent runs keep the Mac from sleeping by default, the model picker hides providers without a key, and approval cards update as soon as you decide.

Fixed

  • The model picker defaults to models you can actually run (a configured API key, or a local model). Switch to All to browse everything.
  • OpenAI and Anthropic catalogs load after you paste a key, instead of staying empty until you reopen the picker.
  • Tool approval cards mark the decision immediately instead of looking like they are still waiting.

New

  • Settings → General → Keep machine awake prevents idle sleep while an agent is running (on by default).

0.2.0-beta.46 · September 15, 2026

Workspace MCP, live local pages, and sturdier SSH

MCP can be customized per workspace, the new Browser tab finds running local pages instead of guessing ports, and remote SSH gets more compatible server binaries plus clearer failures.

Fixed

  • Parallel fleet runs keep composer images, context chips, and browser context instead of dropping them to prompt-only text.
  • Composer can send attachment-only messages (images or context without typed text).
  • Remote SSH explorer browsing is no longer limited to the session’s default root.
  • Remote vortex-server picks up your login-shell PATH, so tools available in an interactive SSH shell work for agent commands.

New

  • Settings → Integrations supports Effective, Global defaults, and This workspace MCP views, with Customize here to override a global server for the open workspace.
  • Browser new-tab Local pages discovers usable localhost HTTP servers (process name and page title) instead of a hard-coded port list.

Improved

  • Drag-reorder for editor tabs and saved workspaces uses before/after drop markers, edge auto-scroll, and Shift+arrow keyboard moves.
  • Remote deploy swaps the server binary atomically and turns common SSH startup failures into actionable messages.

0.2.0-beta.45 · September 15, 2026

Notarized installers

macOS builds are notarized and stapled so Gatekeeper accepts fresh downloads and in-app updates.

Fixed

  • Local macOS releases notarize the .app and staple the DMG, so first launch no longer shows that Apple cannot check the app for malicious software.

Improved

  • The agent keeps the Browser visible by default and only uses a background surface for read-only work.

0.2.0-beta.44 · September 15, 2026

Signed installers and a richer Browser

Installer DMGs are Developer ID signed so macOS no longer treats the app as damaged, and the Browser gained theater, downloads, dialogs, and Settings.

Fixed

  • macOS installers are signed with Developer ID so Gatekeeper no longer reports a corrupt or damaged app on first launch. The ~20 MB download is expected after dropping bundled Chromium.

New

  • Settings → Browser configures permission mode, allowed and blocked origins, download location, and WebKit vs CDP backend.
  • browser_action can list tabs, handle page dialogs and downloads, and read page annotations.
  • Agent overlay theater shows live cursor and highlights, and taking control pauses the run until you give the tab back.

0.2.0-beta.43 · September 14, 2026

Browser drag, uploads, and handoff

The agent can drag, upload files, and pause for you when a site needs a CAPTCHA or passkey.

New

  • browser_action supports drag-and-drop, file uploads, back/forward/reload, and request_user when a page needs CAPTCHA, passkey, or payment.
  • When the agent asks for help, chat shows Waiting for browser input and the overlay hands control to you.

Improved

  • Accessibility snapshots include iframes, and the agent dismisses cookie banners before clicking through.
  • Old screenshots are pruned from model context so long browser sessions stay within token limits.

0.2.0-beta.42 · September 14, 2026

Native Browser with agent overlay

The IDE Browser uses macOS WebKit instead of bundled Chromium, and you can take over when the agent is browsing.

New

  • Embedded Browser is a native WKWebView that opens any http(s) URL, including localhost.
  • While the agent browses, a cursor and highlight overlay show what it is doing; Take control (Escape or ⌘⌥K) hands the page back to you.
  • browser_action can target a specific tab, open a new tab, or run a background headless surface.
  • Chat tool results show screenshot thumbnails you can open in a preview.

Improved

  • Dropped the Playwright sidecar, bundled Chromium, and Node runtime from the app package.
  • Cloud vision requests skip non-raster images such as SVG so models do not reject the turn.

0.2.0-beta.41 · September 13, 2026

Browse files from the composer

Attach files from anywhere on your Mac through the composer’s Add Context menu.

New

  • Add Context includes Browse files… to pick files with the native dialog. Workspace files attach as paths, images as vision attachments, and other text files as inline context.
  • External text attachments reject binaries, directories, and oversized files, and truncate long notes to the composer limit.

Improved

  • Browse files… is hidden on remote SSH workspaces, where the local picker cannot reach the remote disk.

0.2.0-beta.40 · September 13, 2026

MCP Connect, unified Changes, and follow-ups

Remote MCP servers sign in through the system browser, agent edits live in one Changes home, and follow-ups queue above the composer.

New

  • Native MCP OAuth 2.1 Connect in chat and Settings → Integrations, with PKCE S256, token refresh, and Connect / Reconnect / Disconnect.
  • Mentioning a remote MCP server that needs sign-in pauses with a Connect card before the first model step.
  • Empty chat sessions include an inline API key paste field that detects your provider and picks a recommended model.

Fixed

  • After MCP Connect, follow-ups like “I authenticated” still load that server’s tools, and inspect reports callable mcp_<server>_<tool> names instead of telling you to refresh the client.

Improved

  • Follow-up messages queue as compact cards above the composer; ⌘Enter sends immediately by stopping the current run.
  • Unified agent edit review under a single Changes home across tabs, menus, palettes, and run recaps.
  • Run recap Changes opens the session's file changes even when Review mode is disabled.
  • Restoring from an agent checkpoint is labeled Continue across recovery cards and resume banners.
  • Streamable HTTP MCP responses parse both Server-Sent Events and JSON-RPC.
  • Greeting quick actions only show file-scoped chips when a file is open.
  • Maximized floating prompt bar displays labeled Queue and Steer buttons matching the chat composer.

0.2.0-beta.39 · September 12, 2026

Checks say what passing looks like

Verification checks can require specific exit codes and output phrases, and file formatting uses your project tools.

Improved

  • Polished Settings with a unified single-column layout, title-only headers, and streamlined controls across every section.
  • Simplified Model settings with live catalog search, helper setup upfront, and clear error states.
  • Verification checks show expected vs. actual outcomes and guide the agent on how to satisfy failing tests.
  • File formatting runs your project's local toolchains (such as Prettier, Ruff, or cargo fmt) before falling back to system binaries.
  • Verification status accurately scores all required checks against declared criteria before marking work complete.
  • The agent persists through required verification checks until tests pass.

0.2.0-beta.38 · September 12, 2026

Your GitHub account in the title bar

A profile menu in the title bar shows your signed-in GitHub account with quick access to settings and sign out.

New

  • Title-bar profile avatar shows your signed-in GitHub account with quick access to Account settings and sign out.
  • Settings → About displays your matching account avatar alongside session details.

Improved

  • Settings search indexes account keywords (account, github, sign out) to jump directly to session controls.

Fixed

  • Signing in via device authorization reliably waits through approval without interruption.

0.2.0-beta.37 · September 11, 2026

Clear run status and session safety

Runs with unfinished verification finish as incomplete instead of looking done, and starting a new run interrupts the previous one cleanly.

Improved

  • Runs with unresolved verification checks clearly show as incomplete rather than finished.
  • Starting a new prompt in the same session safely cancels the active run first.
  • Session restore preserves your active run state when reopening the workspace.
  • Temporary network or environment glitches are no longer marked as project test failures.
  • The privacy policy explicitly documents EU hosting for all Vortex-operated services.

0.2.0-beta.36 · September 11, 2026

Hold ⌘ to see shortcuts

Hold modifier keys to reveal available keyboard shortcuts across toolbars and menus, customize your keybindings, and switch agents quickly.

New

  • Hold ⌘/Ctrl to display shortcut badges across toolbars, menus, and the agents rail.
  • Settings → Keybindings lets you search, rebind, unbind, and view shortcut conflicts.
  • ⌘1–9 switches directly between agents in the current workspace.

Improved

  • Shortcuts for the composer, diff review, and source control are fully customizable.
  • Export conversations to Markdown files in any folder on your machine.
  • Find in conversation respects custom keyboard shortcuts.
  • Streamlined editor toolbar with shortcuts replacing redundant save and reload buttons.

0.2.0-beta.35 · September 10, 2026

Flexible model settings and context breakdown

Configure context windows and reasoning effort directly in the model picker, and view detailed context token usage from the composer.

New

  • The model picker offers choices for context window size, reasoning effort, and local vs. worktree environments.
  • Click the composer context ring for a live breakdown of token usage and cache efficiency.
  • Past runs, rules, skills, memory, and notes are now accessible directly from the workspace sidebar.

Improved

  • Model pools let you configure fast helper models alongside primary reasoning models.
  • Voice dictation includes an optional setting to automatically stop when you finish speaking.
  • File path suggestions help correct typos in workspace paths.

0.2.0-beta.34 · September 9, 2026

Clearer run summaries and cleaner completions

The agent delivers clear concluding summaries even when follow-up items remain, and runs finish in a dedicated response bubble.

Improved

  • Completed runs provide a thorough summary of what was accomplished, including any remaining items.
  • The agent provides immediate answers instead of stalling on intent narration.
  • Run summaries seal cleanly into a distinct message bubble rather than appending onto tool output.
  • Command job completion and cancellation appear as clean system status notices.
  • Session restore reliably loads transcripts without overwriting active answers.

0.2.0-beta.33 · September 8, 2026

Smarter code search and resilient multi-file edits

Code search ranks the most relevant files across your project, and multi-file edits apply matching changes even if one section fails.

New

  • Codebase search ranks relevant files with match counts, keyword hits, and context excerpts.

Improved

  • Batch edits apply all matching changes across files and report only the lines that missed, instead of failing the whole update.
  • Regex search automatically handles special search characters and limits context lines for readability.
  • The agent batches independent searches and file reads for faster exploration.

0.2.0-beta.32 · September 8, 2026

Stacked diffs and vision model protection

Inspect changes with unified collapsible diffs, and enjoy safeguard warnings when sending images to text-only models.

New

  • Unified collapsible diffs across Changes, Source Control, and PR reviews with inline word highlighting and folding.
  • Review recent edits in the Changes tab and revert individual files without needing a pending patch.
  • Keyboard shortcuts for diffs: jump between changed blocks, files, and hunks with ease.
  • Prompts can consist of images alone without requiring accompanying text.

Improved

  • The composer prevents sending image attachments to text-only models and offers automatic text-only retry.
  • In-app browser views smoothly yield to dropdown menus and overlays so everything remains interactive.

0.2.0-beta.31 · September 8, 2026

Fast Go navigation and persistent conversation history

Jump to any file, view, URL, or job from the tab bar Go menu, and enjoy seamless conversation memory across restarts.

New

  • Go menu on the tab bar jumps instantly to files, views, web URLs, new tabs, and running jobs.
  • Window split and fullscreen controls are easily accessible right from the tab bar.

Improved

  • Long-running conversation history and summaries persist across app restarts without recomputing from scratch.
  • Completion decisions rely on real verified tasks and test outcomes rather than extra evaluations.
  • Terminal tabs open cleanly without empty placeholder flashes.

0.2.0-beta.30 · September 8, 2026

Refined composer controls and clear recovery actions

Larger, consistent action buttons in the composer, and clearer distinction between resuming an existing run versus starting a new instruction.

Improved

  • Composer send, stop, voice, and overflow buttons use larger, consistent touch targets.
  • Clear action labels distinguish between resuming a checkpoint and continuing with new instructions.
  • Status messages separate context compaction from final summary generation.
  • Source control diffs remain clean when files have no unstaged changes.
  • Automatic context compression runs smoothly and preserves recent discussion details.

0.2.0-beta.29 · September 8, 2026

Robust in-app browser and accessible settings

In-app browser navigation preserves draft addresses, and settings controls include complete descriptions for assistive technology.

Improved

  • The in-app browser shows host and port, retains your typed address while navigating, and handles back/forward smoothly.
  • Settings controls, tooltips, and search clear buttons include full accessibility labels and Escape-to-dismiss.
  • Composer drafts and attachments stay safely saved across session switches, and queued prompts keep their order.
  • Connecting over SSH can run quietly in the background without blocking the explorer.
  • Settings for external tool integrations show unsaved edits and validate connections before saving.

0.2.0-beta.28 · September 7, 2026

Dedicated voice settings and in-chat tool setup

Configure voice dictation in a dedicated settings section, and add external integrations with safe secret prompts right in chat.

New

  • Dedicated Voice settings section with speech engine selection, language options, and live microphone testing.
  • The agent can propose tool server integrations directly in chat, letting you enter credentials securely.
  • Composer context bar displays active files, folders, and terminals with a quick-add menu.

Improved

  • Parallel agent runs coordinate file access safely without overwriting concurrent edits.
  • Streamlined configuration storage under your user directory.

0.2.0-beta.27 · September 7, 2026

Coordinated subagents and focused dialogs

Parent agents seamlessly incorporate subagent check results, and dialog overlays stack cleanly with keyboard focus management.

Improved

  • Parent agents receive clear change summaries and test outcomes from subagents without duplicating checks.
  • Nested dialogs stack predictably: pressing Escape closes only the topmost overlay and maintains proper focus.
  • Duplicate file tabs show minimal path hints to easily tell identical filenames apart.
  • Onboarding checklist helps you pick a folder, select models, and complete your first run.
  • The composer ignores accidental submission while typing with IME composition.

0.2.0-beta.26 · September 7, 2026

Stable verification tracking and reliable settings saves

Verification checks maintain stable tracking across re-runs, and settings reflect exact on-disk save status.

Improved

  • Verification commands track outcomes consistently so passing a re-run immediately satisfies the check.
  • Settings and API keys display exact save states (Saving, Saved, Error) rather than guessing on a timer.
  • Bug report dialog preserves your drafted description even when changing diagnostic scope.
  • Clearer clipboard error notifications when copying diagnostic details fails.

0.2.0-beta.25 · September 7, 2026

Sandboxed visual canvases and independent panel tabs

Generate sandboxed HTML canvases directly in your workspace, and enjoy isolated tabs across editor, browser, and terminal views.

New

  • Sandboxed visual canvases render interactive diagrams and HTML artifacts safely in your workspace.

Improved

  • Working panel tabs stay scoped to their respective view so switching between Explorer, Browser, and Terminal keeps your place.
  • Getting started guide simplifies setup into a 3-step checklist (folder, model, first run).
  • Clear, single-verb recovery actions (Resume, Retry, New chat) when an agent run needs attention.

0.2.0-beta.24 · September 7, 2026

Fluid layout resizing and faster chat rendering

Layout width settings synchronize instantly with live panels, and chat transcripts render smoothly during rapid scrolling.

Improved

  • Appearance settings stay in sync with custom panel widths adjusted by dragging.
  • Chat transcript scrolling performs smoothly on long conversations with optimized rendering.
  • Workspace panels and planning views resize with minimal overhead.

0.2.0-beta.23 · September 7, 2026

Multi-model helper pools and cleaner run logs

Assign multiple helper models for fast background tasks, and enjoy cleaner chat transcripts free of unnecessary cancellation notices.

New

  • Custom helper mode lets you pick multiple models: fast models for lightweight checks, and capable models for deep exploration.

Improved

  • Run recaps hide cancellation clutter and stay updated without continuous re-rendering.
  • Chat diagnostic traces are saved efficiently alongside your conversation history.
  • Canceling a run stops immediately without leaving generic placeholder messages.

0.2.0-beta.22 · September 7, 2026

Dedicated command cards and subagent controls

Watch command execution in live dedicated cards, steer or pause background subagents, and enjoy automatic retry on rate limits.

New

  • Terminal commands display in dedicated cards with live output, elapsed time, copy controls, and a button to open in a full tab.
  • Subagent inspector displays elapsed duration, tool steps, and controls to steer or stop background workers.

Improved

  • Cloud API requests handle rate limits gracefully with automatic retry headers.
  • Subagents handle complex multi-step workflows without restrictive fixed step limits.

0.2.0-beta.21 · September 6, 2026

Unified tool rows and code fence actions

Consistent presentation across search, edits, and plans, plus quick buttons to insert or apply suggested code blocks.

New

  • Markdown code blocks in chat include quick buttons to apply changes directly to a file or insert them at the cursor.
  • Command output from any tool card can open directly as an independent terminal tab.

Improved

  • Tool rows share a unified design with clear status indicators, collapsible details, and copy actions.
  • Chat transcript scrolling operates smoothly without wheel events getting trapped in code blocks.

0.2.0-beta.20 · September 6, 2026

Multi-file edits and bidirectional code references

Apply coordinated edits across multiple files in a single step, and explore code references by callers, callees, or usages.

New

  • The agent can apply search-and-replace edits across multiple files in a single coordinated action.
  • Code reference search supports finding callers, callees, and symbol usages in any direction.

Improved

  • Run recaps clearly indicate when tasks are complete or still pending follow-up.
  • When reaching context capacity, Vortex clearly explains options to compact history or start a fresh session.

0.2.0-beta.19 · September 5, 2026

Resilient task follow-through and nested workspace chats

The agent persists until all pending tasks are resolved, replies stream with live Markdown formatting, and sessions group neatly by workspace.

Improved

  • The agent automatically checks for unfinished checklist items or failing tests before concluding.
  • Responses stream with smooth word boundaries and live Markdown rendering.
  • The sidebar displays all workspaces with nested chat sessions, relative timestamps, and search filters.
  • Code search inspection previews preserve full file context.

0.2.0-beta.18 · September 5, 2026

Integrated terminal tabs and reliable session storage

Open full terminal sessions alongside editor tabs, and save workspaces, chats, and traces with robust database storage.

New

  • Terminals open directly in the main tab bar alongside code files, browsers, and pull request reviews.

Improved

  • Chat sessions, runs, and checkpoints are stored in a local database for reliable recovery across launches.
  • Switching workspaces keeps chats, terminals, and remote SSH connections cleanly isolated to the selected workspace.
  • Tool cards for file reading and searching show rich, structured previews.

0.2.0-beta.17 · September 3, 2026

Smarter verification re-runs and focused run summaries

Re-running a test updates existing check status without clutter, and run summaries focus on your code changes.

Improved

  • Re-running a test or lint check updates the existing record instead of stacking duplicate failure logs.
  • Background jobs maintain their verification context automatically across subsequent check calls.
  • The agent is prompted to re-evaluate any previously failing tests before declaring a job finished.
  • Clean run summaries present completed edits without redundant verification tags.

0.2.0-beta.16 · September 1, 2026

GitHub PR review tabs and lightweight project diagnostics

Review GitHub pull requests in full interactive tabs, and get fast diagnostic feedback from project CLI checkers.

New

  • Paste a GitHub PR link or open from the command palette to review diffs, comments, commits, and checks in a dedicated tab.

Improved

  • Git, browser, and memory activity cards render clean, structured summaries instead of raw terminal dumps.
  • Code diagnostics run quickly through project command-line tools (such as TypeScript, ESLint, or Cargo), both locally and over SSH.
  • Live command streaming recovers smoothly during quiet periods or file updates.

0.2.0-beta.15 · September 1, 2026

Live prompt steering and remote workspace reconnect

Steer queued prompts directly into active agent runs with ⌘Enter, and quickly reconnect to your last SSH workspace from the welcome screen.

New

  • Press ⌘Enter to steer a follow-up prompt immediately into an active run without waiting in the queue.
  • Welcome screen provides a one-click option to reconnect and resume your previous remote SSH session.

Improved

  • Remote SSH hosts support full canvas rendering, patch application, and conflict-safe checkpoint restores.
  • File writing automatically creates any missing parent directories.
  • Bug report submissions automatically scrub detected API keys and credentials.

0.2.0-beta.14 · September 1, 2026

In-place run recovery and custom theme management

Seamlessly resume interrupted agent runs, import or export custom JSON themes, and browse models with clearer filtering.

New

  • Settings → Appearance lets you import, export, duplicate, and edit editor themes in JSON format.

Improved

  • Restored runs present clear, unified Resume and Continue options without duplicate recovery banners.
  • The model picker organizes choices into clean categories, active models, and catalog browsing.
  • Chat thinking processes, task checklists, and timing metrics are more compact and readable.

0.2.0-beta.13 · August 31, 2026

Live command tailing in the editor and unified run states

Follow long-running command output directly in an editor tab, and track clear run outcomes across notifications and chat.

New

  • Open any active command output file to tail its live stream directly in the editor until completion.

Improved

  • Notifications and chat use five clear, consistent run states: completed, needs attention, failed, cancelled, or step limit.
  • Browser new tabs display a clean empty state with quick address entry and local dev-server shortcuts.
  • The agent loop measures tangible progress (edits, new findings, finished jobs) rather than repeated status checks.

0.2.0-beta.12 · August 31, 2026

Composer context ring and synchronized background jobs

Check context window usage right inside the composer, and keep running background jobs in sync after resuming a session.

New

  • A visual context ring on the composer shows current token usage and opens the active context panel.

Improved

  • Background command jobs reconcile accurately on session restore so finished processes do not appear running.
  • The command palette features categorized filter tabs and keyboard navigation hints.

0.2.0-beta.11 · August 31, 2026

Instant working panel toggle and informative session rows

The working panel opens instantly without reload, and session lists show repository branch and workspace folder on hover.

Improved

  • Closing and reopening the Working Panel is instant with no editor reloading or lost state.
  • Chat session list items display the active Git branch and folder path on hover.
  • Live terminal output is preserved reliably even before tool summary cards finish rendering.
  • Activity feeds, thinking blocks, and tool cards use denser, cleaner layouts.

0.2.0-beta.10 · August 30, 2026

Unified command execution across local, SSH, and headless runs

Consistent shell execution and safety checks across local, remote SSH, and headless workflows with transparent status in chat.

Improved

  • Local, remote SSH, and headless agents share the same robust command lifecycle with safe timeouts and cancel support.
  • Chat cards clearly distinguish between running, completed, and cancelled shell jobs.
  • Long command logs are preserved completely in accessible artifact files rather than being lost to truncation.

0.2.0-beta.9 · August 30, 2026

Resilient shell jobs and dedicated helper models

Long-running shell commands remain active without premature timeouts, and helper models handle background summaries and titles.

New

  • Configure dedicated Helper models in Settings → Models for conversation titles, commit messages, and history summaries.

Improved

  • Commands running longer than initial wait windows continue safely in the background and can be resumed or stopped anytime.
  • Long runs maintain a clear task ledger across context compaction and continue smoothly at step boundaries.
  • Compact tool rows, thinking blocks, and output displays make chat history faster to review.

0.2.0-beta.8 · August 30, 2026

Smooth chat autoscroll and refined panel dividers

Chat autoscroll stays pinned to the newest output until you gesture to scroll, and slimmer 1px dividers maximize workspace room.

Improved

  • Chat stays pinned to the latest output during generation and only disengages when you manually scroll.
  • Drag and drop files directly into the composer to attach context.
  • Panel splitters use an ultra-thin 1px line with a generous hit area for effortless resizing without wasting screen space.

0.2.0-beta.7 · August 30, 2026

Title-bar system metrics and staged SSH connection progress

Monitor CPU, memory, and network metrics in a title-bar chip, and track each stage of remote SSH connections.

New

  • System performance chip in the title bar monitors CPU, memory, GPU, disk, and network stats for local and remote workspaces.

Improved

  • Connecting to remote hosts over SSH displays clear status through every phase (auth, setup, handshake).
  • Update notifications appear as a quiet title-bar chip with download progress instead of an intrusive modal.
  • Consistent styling, focus states, and macOS window button placement across all sidebars and panels.

0.2.0-beta.6 · August 29, 2026

Fluid viewport tracking and seamless answer retry

Viewport stays anchored to active streaming text, and retrying an answer updates the message in place.

Improved

  • Scrolling up smoothly pauses autoscroll, and returning to the bottom automatically resumes live tracking.
  • Retrying an answer replaces the response in place rather than creating duplicate message bubbles.

0.2.0-beta.5 · August 29, 2026

Instant code graph search and dedicated Automations

Search symbols and references instantly with no index lag, create workspace automations, and verify update signatures automatically.

New

  • Instant code graph search locates symbols, outlines, and references on demand without indexing delays or heavy background warmup.
  • Automations panel lets you configure, edit, and schedule recurring workspace tasks.

Improved

  • Live task progress indicators keep chat and planning workflows compact and easy to follow.
  • Workspace file tree, sidebar controls, and in-app toasts feature a lighter, more consistent visual style.

Updates

  • Release manifests include cryptographic signatures that are verified before downloading and installing updates.

0.2.0-beta.2 · August 28, 2026

Reliable update progress and seamless restart

In-app updater shows real-time download progress, confirms installation status, and provides clear release notes.

Updates

  • Download progress streams directly into Settings → About and the install notification.
  • The updater ensures the installer has launched before prompting for a clean application restart.
  • Update channel settings are located under Settings → About with quick access to release notes.

0.2.0-beta.1 · August 28, 2026

Closed beta on macOS

The first closed-beta release of Vortex for macOS on Apple Silicon and Intel.

App

  • Agentic coding platform: describe the work and let Vortex plan, edit, verify, and ship inside your workspace.
  • Multi-session chat, saved workspaces, and subagent inspection available out of the box.
  • Report feedback and bugs easily via the command palette (⌘K) or Settings → General.

Updates

  • Automatic in-app updates on the Beta channel with one-click restart.
  • Update check and installation controls available in Settings → About.

Install

  • Built for macOS 12 and higher. Native Apple Silicon build with Intel Mac support included.
Vortex

You describe the work. Vortex plans, edits, verifies, and ships inside your workspace. The editor, terminal, diffs, and browser are how you watch and steer — not where you are expected to write the solution.

Product

The loop How it works Control Models Get Vortex

Resources

FAQ Join the waitlist Changelog

Company

Privacy

© Vortex. Made in the EU. Hosted in the EU.

Privacy

Choose your cookies

Strictly necessary storage keeps the site working. Optional analytics stay off until you allow them. See our Privacy Policy.

Strictly necessary

Required for the site to work. Always on.

Always on

Google Analytics measures visits after you allow it.