Changelog

Every Neumann release, newest first. The desktop app updates itself — this is what each one changed.

0.1.42Latest

Editor, agent, and cloud reliability

Reliability and polish across the editor, agents, and cloud runs.

Editor

  • Vim search matches are recalculated when the buffer changes, so stale highlights no longer point at moved text.
  • Direct normal-mode commands are guarded against empty lines in large-file mode.
  • The gutter scroll wheel uses the scrollable element directly instead of reading computed styles on every event.
  • Folding recalculates only for the file you are looking at, not every open buffer.

Agents and runs

  • A failed turn records a single error instead of one per signal when the CLI also exits non-zero.
  • Attachment uploads retry on HTTP errors and tell you when only some files made it.
  • The workspace diff no longer races when you switch workspaces mid-request.
  • Search clears its spinner when you empty the query while a request is still in flight.
  • Creating a workspace retries when git reports the branch already exists.

Cloud

  • Run submissions check idempotency before quota, so a retried request cannot be rejected for capacity it already holds.
  • Git command output streams through a capped reader, bounding memory on large repositories.

Security

  • OAuth client changes are restricted to admins.

Profile stats and a Skills catalog

Settings: profile stats + skills catalog, richer usage/providers, and consolidated sections.

The real fix for stale UI after an update

Updating no longer leaves you looking at the previous build's interface. The desktop pins a fixed local port, and WebKit was caching that origin's HTML and script chunks across versions, so a fresh bundle still rendered the old UI. The shell now clears the WebView network cache once per version change before the window opens.

Deliver the port-eviction fix

Ships the port-eviction fix from 0.1.38, which itself reached installs as a stale bundle.

Evict an older server squatting the port

After an update, the previous version's local server often stayed alive on the fixed port, and the new instance deferred to it — so you kept talking to the old process. The launcher now defers only to a server reporting the same version and evicts an older one.

The static web UI is served with Cache-Control: no-cache, so the webview revalidates instead of guessing.

Stop caching the static UI

The static UI is served with no-cache headers, so an update is picked up instead of being served from the webview's heuristic cache.

Account dropdown and composer chip fixes

A reworked account dropdown, calmer Agent and Task settings, and composer chip fixes.

The cloud dashboard on the web now matches the desktop app, including the composer's chip row above the input and a round send button.

Chip polish and settings cards

Chip polish throughout, and settings cards applied consistently across every section.

A calmer Agent settings section

The Agent settings section was rebuilt as plain rows to match the rest of the simplified settings.

Simplified settings sections

Settings moved to plain row cards for theme, fonts, and task prompts.

Composer environment chip and cloud environments

The composer gained an environment chip, so you can see and switch where a run executes without leaving the input.

Cloud environments got a dedicated UI, alongside sidebar and settings fixes.

UI polish pass

A polish pass over the composer's repository chips, the sidebar and account area, and the settings shell.

Rebuild the web export into the bundle

The desktop bundle now contains a freshly built web export. The build step bundled whatever export happened to be on disk, so the app could ship an interface older than the code it was built from.

Groundwork for the settings rework

Groundwork for the settings rework that lands across the following releases.

Hardened file access and a Stop that really stops

Security and reliability release: hardened file access and multi-tenant isolation, and Stop now fully cancels a run (local and cloud) instead of leaving work running in the background.

The editor no longer pins a CPU core

Fixes the editor pinning a CPU core: syntax highlighting no longer loops, and the app recovers automatically from a stuck previous instance instead of failing to launch.

Full transcripts for cloud runs

Cloud runs: full transcript View, live tool/chat streaming, stuck-run fixes

Design and feel

Design and feel release: every button responds to your press, menus grow from where you clicked, and motion follows a consistent, crisp rhythm throughout — with full reduced-motion and reduced-transparency support.

Accessibility and security pass

Major internal quality release: full accessibility pass (labels and keyboard support everywhere), stronger security hardening, and a restructured codebase that keeps the app responsive during streaming.

Lighter and faster

Lighter and faster: editors and settings no longer re-render during streaming, and the app shed 7,000 lines of dead code and 39 unused dependencies.

Performance sweep across the UI

Performance sweep across the UI: fixed a React hooks-order bug in agent settings, stopped document-wide style recalcs during streaming, and removed per-render formatter construction in the usage displays.

Incremental rendering for long replies

Long agent replies now render incrementally — the app stays responsive during streaming regardless of response size.

No more freezing on long streamed replies

Fixes the freeze during long streamed replies: the app stays fully responsive while the agent is writing, no matter how long the response gets.

Instant startup, fully offline

The app no longer waits on an external CDN before responding to clicks — startup is instant and works fully offline. Model lists load without stalling the home screen.

Onboarding renders everywhere

Onboarding renders correctly everywhere: welcome screen, logo, and checkboxes no longer depended on a design-tool asset server. Fresh installs also get the designed install window.

Move to Applications on first launch

Fresh installs offer to move themselves into Applications — no dragging required. Onboarding wears the new design language.

You stay signed in

You stay signed in: the app renews its cloud session automatically, so GitHub connect and models keep working after hours away. The home screen also loads instantly instead of waiting on the cloud.

Reliable external links

External links — including Connect GitHub — now open reliably, and the one-time code has a copy icon with a short countdown before the browser opens.

A friendlier GitHub connect

Connecting GitHub is friendlier: the one-time code has a Copy button and the browser opens after a short countdown so you can grab the code first.

Cloud models load at launch

Cloud models load reliably at launch (the hosted API's cold start no longer wins the race), and the current Claude/GPT/Gemini generations are listed.

The sign-in browser opens reliably

The sign-in browser now opens reliably — the app's native side opens it directly instead of going through the webview.

Sign-in shows its progress

Sign-in shows its progress and always offers a way forward: if the browser doesn't open automatically you can retry or copy the sign-in link, instead of an indefinite Working state.

Deterministic sign-in

Sign-in is now deterministic: the browser lands on a signed-in page that hands you back to the app (with an Open Neumann button as fallback), instead of relying on the browser allowing an automatic app redirect.

Sign-in with multiple copies installed

Sign-in is reliable when multiple copies of Neumann exist on disk: a second instance now hands the login back to the running app instead of failing silently.

Cloud models load after signing in

Cloud models now load after signing in — the app was fetching the model list without presenting your login.

Sign-in completes through the deep link

Sign-in now completes through the neumann:// deep link — the browser hands the login straight back to the app, with no local port or hostname matching involved.

Sign-in opens the real login page

Sign-in now opens the real neumann.decentparadox.me login page (installed builds were being redirected to a local development address).

Cloud works on installed builds

Cloud features now work on installed builds without any configuration: the app always knows the hosted Neumann Cloud API, and the profile menu correctly offers Log in when you are signed out. Sign in once and models, cloud runs, and GitHub connect all light up.

Login and GitHub connect out of the box

Login and GitHub connect now work out of the box on installed builds: sign-in no longer depends on server auth configuration, and the GitHub device-flow app is built in. This build also ships the current UI (the previous packages bundled a stale web build — this is why the update badge never appeared).

Sign-in on installed builds

Fixes sign-in on installed builds: the desktop server now defaults to single-user auth, so Login with Neumann works out of the box and cloud models load after signing in. The Neumann agent's model list now explains what to do when empty instead of pointing at the wrong setting.

Run agents in the cloud

Run agents in the cloud

  • Cloud sandbox runs — pick Cloud in the composer's environment menu and your prompt runs in an isolated sandbox against your repo, coming back as a branch and a pull request. Pick Local · your-branch to keep working in a worktree, or create a new worktree without leaving the composer.
  • Login with GitHub — connect your repo's forge straight from the chat (device flow, no tokens to paste). GitLab and Bitbucket work with access tokens.
  • Repository picker — cloud runs target your repo's origin by default; pick any repository your account can see.
  • You stay signed in across restarts — forge connections and provider keys now persist (encrypted at rest).

Safer by default

  • New chats start in Restricted mode: shell commands and file writes ask for approval right above the composer. Switch to Full access per-chat when you want the agent unattended.

A calmer workspace

  • Chat is now full screen by default. Open the diff/editor pane with the new toggle next to the context meter (or ⌥⌘E) — it slides instead of snapping.
  • The environment and worktree controls live in the bar under the composer, next to the access-mode toggle.

The app updates itself now

  • Neumann checks for updates in the background and shows an Update Neumann button above Settings when a new version is ready — one click to install.

Update-channel baseline

Update-channel baseline (manifest only).