Releases: ness-dev/ness
Release list
Ness v2.16.0
Ness v2.16.0
Changes
- chore: repoint repo URLs from frenchie4111/harness to ness-dev/ness (#279)
- fix(chat): mid-turn messages unqueue and sit where claude read them (#272)
- Add a context-window panel for both terminal and chat agents (#278)
- Move the marketing site URL to getness.dev (#275)
- site: deploy the marketing site to Vercel instead of GitHub Pages (#273)
- site: bump the OG image cache-buster to ?v=ness
- site: regenerate the OG images with the green Ness identity
- site: make the OG templates buildable and use the unboxed mark
Installing
- Apple Silicon:
Ness-2.16.0-arm64.dmg - Intel:
Ness-2.16.0.dmg
Drag Ness.app to Applications, then launch it. Existing installs will auto-update.
Ness v2.15.0
Ness v2.15.0
Changes
- site: drop the trailing periods from announcement headlines
- site: drop the stale sub-heading from the announcements index
- site: use Mike's copy for the rename announcement
- site: publish the rename announcement to the feed
- site: add the Harness -> Ness rename announcement page
- fix(brand): darken the brand ramp on light themes
- fix(ui): stop the closed Quake terminal casting a shadow over the app
- fix(brand): keep accent as the theme's secondary, not the Nessie colour
- feat(settings): Nessie's colour — pick the app's primary colour
- feat(brand): mark before the wordmark, pixel-fixed titlebar clearance
- feat(brand): green Ness identity across app, site and icons
- fix(chat): keep Ness chrome on pre-rename tool calls in old transcripts
- fix(mcp): rename bridge error strings that surface to the agent
- refactor(mcp): rename the remaining agent-visible harness identifiers
- feat(settings): offer to convert a repo's legacy .harness.json to .ness.json
- feat(repo-config): read .ness.json and .harness.json, create only .ness.json
- refactor(mcp): rename the MCP server from harness-control to ness-control
- fix(release): point CI artifact globs at Ness-* and rename agent-facing copy
- docs: rename Harness to Ness in README, CONTRIBUTING, CLAUDE.md, and site
- refactor(ui): rename user-facing product strings from Harness to Ness
- fix(paths): keep package name "harness" so secrets keep decrypting
- feat: rename product from Harness to Ness
- fix(paths): pin packaged userData dir ahead of the product rename
- fix(insight): scan raw source so list bodies stay inside the card
Installing
- Apple Silicon:
Ness-2.15.0-arm64.dmg - Intel:
Ness-2.15.0.dmg
Drag Ness.app to Applications, then launch it. Existing installs will auto-update.
Harness v2.14.0
Harness v2.14.0
Changes
- fix(browser): screenshot and inspect tabs that aren't on screen (#264)
- Tag other worktrees from the @ menu in Chat tabs (#257)
- Mark agent-authored kickoff prompts as automated turns (#262)
- fix(cleanup): don't let opening a worktree reset its age (#260)
- Persist per-repo sidebar collapse across reloads (#259)
- Mobile: wake slept tabs so idle chats show their history (#258)
- Renderer-side perf instrumentation: catch GC pauses and commit storms (#256)
- Expose Claude Code's auto permission mode in Chat tabs (#255)
- Render background (run_in_background) sub-agents correctly in Chat (#249)
- fix(ssh): recover dropped tunnels instead of crashing or going quietly dead (#250)
- Add a setting to open PRs in a Harness browser tab (#254)
- Mobile: create worktrees, add tabs, bigger approval buttons (#251)
- perf(chat): fix UI stutter from markdown re-rendering on tool calls (#253)
- Don't flash a worktree red while the auto-approver is still deciding (#252)
- Notify the agent chat when a PR's CI goes red (#234)
- fix(git): stop background polling from contending with index.lock (#247)
- perf: stop the profiler and duplicate git reads from causing the lag (#248)
- Fork a Claude conversation into a new worktree (#237)
- Fix light-theme code block contrast (#134) (#241)
- Unify the desktop sidebar and mobile worktree picker onto one list (#235)
- feat(chat): interrupt & send in the json-mode composer (#239)
- fix(worktrees): stop dropping the kickoff prompt when pane init races
- fix(sessions): track Claude session id across /clear so restart resumes the current one (#233)
- fix(chat): make AskUserQuestion answerable instead of silently unanswered
- feat(remote): offer an opt-in harness-server upgrade when an SSH remote is stale
Installing
- Apple Silicon:
Harness-2.14.0-arm64.dmg - Intel:
Harness-2.14.0.dmg
Drag Harness.app to Applications, then launch it. Existing installs will auto-update.
Harness v2.13.2
Harness v2.13.2
Changes
- fix(headless): don't require electron at load time (harness-server can't boot on v2.13.0/v2.13.1) (#229)
- chore: write cache-key delimiter as \x00 instead of a raw NUL byte (#230)
Contributors
Huge thanks to @blindpirate for their contributions to this release.
Installing
- Apple Silicon:
Harness-2.13.2-arm64.dmg - Intel:
Harness-2.13.2.dmg
Drag Harness.app to Applications, then launch it. Existing installs will auto-update.
Harness v2.13.1
Harness v2.13.1
Changes
- feat(chat): /model slash command for switching models mid-session (#211)
- Compare prunable fields in worktreeListsEqual so stale badges aren't deduped away
- Preserve prior worktrees for a repo whose listWorktrees threw
- Retry fs.watch attach on subsequent ensure() so an initial race isn't sticky
- Halve the changed-files fallback poll from 60s to 30s
- Always show Staged/Unstaged headers in Changed Files (not only when mixed)
- Add real-fs integration test for linked-worktree changed-files invalidation
- Merge BranchSyncWatcher into WorktreeWatcher (one gitdir handle, two consumers)
- Re-sync worktree branch labels on HEAD change (fix stuck "rebasing N/M")
- refactor(agents): move session-ID extraction into per-agent modules
- feat(models): add Claude Opus 5 to known models and pricing table
- fix(release): handle PR-check race + admin-bypass required review
Installing
- Apple Silicon:
Harness-2.13.1-arm64.dmg - Intel:
Harness-2.13.1.dmg
Drag Harness.app to Applications, then launch it. Existing installs will auto-update.
Harness v2.13.0
Harness v2.13.0
Changes
- feat(sidebar): auto-show PRs assigned to you in the Reviewing group (#197)
- feat(worktree): add a worktree from a PR by number (#182) (#183)
- chore(menu): move Performance Monitor from View to Help → Debug cluster
- feat(sidebar): customizable bottom launcher strip with adaptive overflow (#220)
- feat: Add per-commit right-click context menu with first item: copy commit SHA (#161)
- fix: eagerly spawn PTY for agent-created shells (#203) (#206)
- fix(desktop): route in-window link navigations to the OS browser (#221)
- Make Command Center group collapse state persistent (#168)
- feat(chat): add "Fork chat here" right-click action (#219)
- Modify insight display to use collapsible callouts (#199)
- fix(prompt): steer alias generation toward human-readable labels
- chore(deps): bump bundled @anthropic-ai/claude-code to 2.1.221
- fix(pr-poller): unblock stalled polls when one repo returns 504 (#215)
- feat(agents): add Cursor Agent support (#207)
- feat(debug): add GitHub API log viewer (#214)
- chore(deps): bump bundled @anthropic-ai/claude-code to 2.1.220 (#213)
- perf(worktree-delete): make bulk deletion feel instant (#216)
- ui(sidebar): overhaul row layout — detail cluster on line 2 (#204) (#205)
- Portal-style fixed positioning for prevent-sleep popover
- Turn prevent-sleep icon into a popover listing all options
- Preview the next mode in the prevent-sleep tooltip
- Move prevent-sleep icon into sidebar footer and always show it
- feat(power): prevent system sleep while agents run, with modes + hotkey + status icon
- feat(json-mode): Add option to disable auto-scroll
- Strip issue references and over-explanatory comments from the fix
- fix(#195): stop MCP bridge scripts from filling disk via logErr recursion
- feat(find): unify chat and terminal find UI
- feat(chat): Implement Cmd+F find in chat
- fix: sanitize shell tab id + harden hook mkdir so path separators don't ENOENT (#198)
- feat(chat): hotkeys for approve/deny tool-use requests
- fix(json-claude): restore auth-failure card when error lives in result/message
- fix(layout): drop traffic-light clearance in macOS fullscreen
- feat(layout): pin "Harness" header above the worktrees sidebar
- feat(aliases): accept optional alias in create_worktree MCP tool
- refactor(aliases): address code review feedback
- revert: restore global tooltip delayDuration to 0
- fix(aliases): register aliasWorktree in ACTION_CATEGORIES
- feat(aliases): expose set_worktree_alias + clear_worktree_alias MCP tools
- feat: Add worktree aliases for custom display names
- docs: add Slack community invite to README (#202)
- fix: parse branch commits by record separator to avoid undefined rows (#163)
Contributors
Huge thanks to @blindpirate, @ghale, @ljacomet, and @tresat for their contributions to this release.
Installing
- Apple Silicon:
Harness-2.13.0-arm64.dmg - Intel:
Harness-2.13.0.dmg
Drag Harness.app to Applications, then launch it. Existing installs will auto-update.
Harness v2.12.1
Harness v2.12.1
Changes
- fix(deps): pin react-icons to exact 5.6.0 (#192)
- release script: fix bash 3.2 parse error in PR body heredoc (#191)
Installing
- Apple Silicon:
Harness-2.12.1-arm64.dmg - Intel:
Harness-2.12.1.dmg
Drag Harness.app to Applications, then launch it. Existing installs will auto-update.
Harness v2.12.0
Harness v2.12.0
Changes
- feat(terminal): ⌥-drag forces local selection so ⌘C copies (#178)
- release script: PR-based flow for protected main (#158)
- feat(models): Claude Fable 5 + Opus 4.8, fix Opus 4.5+ pricing (3x over-report) (#188)
- fix(review): stop review hotkeys swallowing r/j/k/[/] typed into Monaco (#189)
- New worktree: default to active repo, keycap-chip hotkeys, reliable focus on create (#156)
- site: add remote backends announcement post (#187)
- Recover from a corrupt config.json instead of silently resetting (#151)
- feat: refresh file tabs and review diffs when files change on disk (#159)
- feat(chat): color swatches next to hex literals (#165)
- feat(chat): brand icons + pretty arg rendering for tool cards (#170)
- fix(transport): apply reconnect snapshot before notifying reconnect subscribers (#175)
- fix(#185): crash-safety for spawn ENOENT + prunable-worktree handling (#186)
- urgent - fix(mcp): anchor dev-mode script path on app.getAppPath() (#169)
Contributors
Huge thanks to @big-guy, @blindpirate, and @bz-canva for their contributions to this release.
Installing
- Apple Silicon:
Harness-2.12.0-arm64.dmg - Intel:
Harness-2.12.0.dmg
Drag Harness.app to Applications, then launch it. Existing installs will auto-update.
Harness v2.11.0
Harness v2.11.0
Changes
- Shortcuts, tooltips & menu fixes (#138)
- Increase the horizontal width of the path selector to span the full edit area (#150)
- feat(tabs): confirm before closing a still-running tab (#148)
- feat(terminal): more clickable links — file paths, commit SHAs, vnc:// (#139)
- feat(terminal): Quake-style drop-down terminal overlay (#129)
- feat: VSCode-style "Connect to remote host" SSH bootstrap (#107)
- feat(file-search): File search now prefers changed/new files and shows git status of file in search window (#146)
- Only allow renaming session and browser tabs (#133)
- Chrome-style "Hold ⌘Q to Quit" with a "Warn Before Quitting" setting (#130)
- Use an alarm clock icon for wakeup to distinguish it from snooze (#145)
- ui(scale): fix Monaco font scaling, lockstep cleanup, + resize toast (#131)
- Merge pull request #132 from big-guy/fix-terminal-url-double-open
- test(terminal): cover isMouseButtonReport SGR parsing
- fix(terminal): stop mouse-aware apps from double-opening clicked links
- Merge pull request #126 from big-guy/fix-titlebar-drag-and-layout
- fix(titlebar): let tab clicks win over the right column's top drag strip
- feat(titlebar): draggable title bar, always-visible title, and sidebar cap
- Merge pull request #144 from big-guy/fix-hooks-boot-replay
- test(hooks): cover the boot-replay first-touch guard
- fix(hooks): don't replay entire NDJSON history on boot
- Merge pull request #127 from frenchie4111/feat/pr-review-flow-improvements
- feat(new-worktree): PR picker selects-then-creates, like the other modes
- feat(new-worktree): richer PR rows + "Needs my review" filter
- feat(pr-panel): Approve button when viewer is a requested reviewer (closes #106)
- fix(pr-poller): retain merged PR status so worktrees move to "Merged" not "Active"
- Merge pull request #128 from big-guy/fix-dev-restart-eio
- fix(dev): swallow benign EIO/EPIPE pipe writes on dev restart
- Merge pull request #113 from tresat/tt/select-existing-branch
- Merge branch 'main' into tt/select-existing-branch
- Require a branch name when creating a worktree via "Any Git Ref"
- Merge pull request #115 from tresat/tt/improved-markdown-viewer
- Timeout Playwright browser probe to prevent CI stalls
- feat: word-wrap toggle in diff viewers
- feat: Add 'Any Git Ref' tab to allow arbitrary worktree creation
- fix: use icon-xs utility for wrap toggle so it scales with uiScale
- feat: word-wrap toggle in file viewer
- Use tabs to toggle between new and existing branch
- Disable branch selection until repository selected
- Enable worktree creation from existing branches
- Merge pull request #119 from big-guy/review-tab
- Merge branch 'main' into review-tab
- Merge pull request #122 from frenchie4111/ci/enable-merge-group-trigger
- Merge branch 'main' into ci/enable-merge-group-trigger
- ui(right-column): collapsed-strip icons expand matching section + style polish
- feat(review): file-browser-style file tree, resizable, with filter
- feat(review): convert review overlay into a tab with in-toolbar commit selector
- Merge pull request #121 from big-guy/performance
- Merge branch 'main' into performance
- fix(headless): resolve bundled MCP scripts under tarball layout (#110)
- perf(boot): tighten panes:wakeTab dispatch + log drainBootInit rejections
- Merge pull request #118 from big-guy/tab-behavior-plus-sidebars-next
- Merge branch 'main' into tab-behavior-plus-sidebars-next
- feat(site): mobile hamburger nav for all pages (#112)
- ci: trigger CI on merge_group events for merge queue support
- perf(boot): cut startup freeze via lazy shell tabs + parallel SHA + staggered pane init
- fix(panes): focus active pane on click + swap split/perf hotkeys
- Merge pull request #71 from big-guy/worktree-sidebar-detail-setting
- Merge branch 'main' into worktree-sidebar-detail-setting
- Merge pull request #111 from big-guy/tab-behavior-plus-sidebars
- ui(sidebars): match vertical padding to horizontal on header rows
- icons(collapsed-right): migrate size={N} props to icon-* classes
- feat(collapsed-right): Scratchpad quick-open button
- ui(sidebar): move "Add repository" to the bottom toolbar
- ui(right-column): rename "TOOL PANES" header to "TOOLS"
- ui(pr): shorten merge-method labels to "Squash" and "Rebase"
- fix(sidebars): restore resizability after mt-10 wrapper change
- feat(collapsed-strips): PR/file/commit/group quick actions
- ui(CollapsedSidebar): divider under the worktree-actions group
- ui(sidebar): use lucide MessageSquareHeart for Report-an-issue button
- feat(sidebars): collapsible left + right sidebars with full-width top bar
- include 'none' in Cmd+I worktree-detail cycle
- add configurable sidebar detail for worktree rows
- Merge pull request #91 from big-guy/ui-resize
- Settings: re-anchor to active subsection on uiScale change
- Settings: move UI size between Custom themes and Terminal font
- sidebar: pixel-lock the title so it clears traffic lights at every rung
- icons: migrate new upstream size={N} props to icon-* aliases
- checkboxes: scale with uiScale via icon-base
- menu: View → Increase / Decrease / Reset UI Size
- uiScale: add x-small (14px) rung below small
- uiScale: drop the never-released compact/normal/roomy migration
- icons: add icon-* semantic aliases, migrate callsites
- Settings: move UI size above the theme picker
- XTerminal: track uiScale offset so terminals stay in proportion
- hotkeys: Cmd+= / Cmd+- step the UI scale
- Settings: UI size slider in Appearance with draft + scoped preview
- uiScale: settings slice + IPC + root font-size effect
- icons: move from size={N} prop to Tailwind w-N h-N classes
- CLAUDE.md: document canonical text + icon sizes
- text scale: consolidate to canonical text-xs/sm/base/lg/2xl/3xl
- Merge pull request #93 from big-guy/tab-behavior
- Merge branch 'main' into tab-behavior
- Merge pull request #99 from frenchie4111/feat/scratchpad-panel
- Merge branch 'main' into feat/scratchpad-panel
- feat(scratchpad): treat non-empty notes as worktree dirty
- style(tabs): use border-strong for toolbar/tabs divider
- feat(json-mode): rewind-to-here context menu (#104)
- Settings UX: search, subsections, grouped hotkeys (#94)
- ci: move macOS sign+notarize off the laptop into release.yml (#96)
- fix(panes-fsm): mint UUID when splitting a json-claude pane (#98)
- feat(right-panel): add per-worktree Scratchpad section (default hidden)
- fix(site): add full-bleed apple-touch-icon for iOS Home Screen (#97)
- feat(themes): add Cyberfunk built-in theme (#92)
- docs(claude): document the Harness PR-review push flow
- feat(hotkeys): Cmd+L renames the active tab
- fix(terminals): rename tab via click-detail; skip self-rename on commit
- feat(tabs): render tabs alongside toolbar in one row
- feat(menu): move split-pane actions to Window menu
- feat(terminals): inline tab rename + context-menu entry
- move Open-in-editor button into the All Files header
- feat(terminals): add customLabel + renameTab IPC
- close tab: route Cmd+W through the File menu
- tab strip: chevron buttons appear when tabs overflow
Contributors
Huge thanks to @big-guy and @tresat for their contributions to this release.
Installing
- Apple Silicon:
Harness-2.11.0-arm64.dmg - Intel:
Harness-2.11.0.dmg
Drag Harness.app to Applications, then launch it. Existing installs will auto-update.
Harness v2.10.0
Harness v2.10.0
Changes
- Release v2.10.0
- fix(json-chat): restore Chat-mode auto-scroll on streaming + send (#89)
- fix(announcements): point og:image at regenerated chat-mode og-image.png (#88)
- feat(site): regenerate og-image with Chat mode screenshot (#87)
- feat(announcements): pass
summarythrough validator and show under title in banner (#86) - fix(json-chat): suppress empty-state flash while entries are loading (#84)
- feat(site): announcements page + Introducing Chat mode post (#85)
- feat(json-chat): add 'send on Enter' setting; show active send hotkey on Send button + placeholder (#83)
- Rename JSON mode → Chat, promote it as a first-class Claude interface (#82)
- feat(announcements): remote-fetched announcements banner (#78)
- fix(sidebar): clip dev branch name in title bar so long names don't overflow sidebar edge (#81)
- fix(snapshot): per-slice merge + WireSnapshotState type at the wire boundary (#77)
- fix(remote-backend): drop failed remote from registry so saved-active falls back to local (#80)
- chore(site): seed announcements.json with welcome banner (#79)
- fix(remote-backend): refresh clientId + re-join terminals on WS reconnect (#75)
- feat(json-mode): unify composer into a single card (#76)
- docs: authorize agents to comment on GitHub with a standard signature
- MCP create_worktree: parity with the human New Worktree flow (PRs, prompts, agent, model) (#64)
- ci: headless server smoke test on every PR (#70)
- feat: diagnostic logging + recovery banner on Monaco worker construction failure (#42)
- fix(pr-poller): detect cross-fork PRs via SHA search (#68)
- feat: show git branch in sidebar title in dev builds (#67)
- ci: run typecheck + build + tests on every PR (#66)
- fix: re-apply xterm theme when app theme changes (#62)
- Show in-progress git op in detached worktree label (#63)
- fix: headless tarball ships @anthropic-ai/claude-code- with npm layout so json-mode spawn works (#65)
- Terminal: clickable URLs, OSC 9;4 progress, Cmd+F search (#58)
- Copy as JSON button on built-in theme rows (#55)
- Rearrange some information about a PR in the right pane (#34)
- feat: debug.log is append-only across sessions, rotated at 10MB (#59)
- fix: wake slept json-mode tab on typing and prevent immediate re-sleep (#52)
- Add reveal-in-Finder button to All Files panel (#51)
- add GitHub API diagnostics — debug.log line per call + HUD rate metric (#54)
- add CONTRIBUTING.md and reorganize the readme a little bit
- Light/dark/system theme mode + custom themes from disk (#47)
- Improve gh integration (#46)
- feat(release): auto-credit external contributors in release notes
- docs: clarify v2.9.0/v2.9.1 did not publish, credit contributors
Contributors
Huge thanks to @big-guy, @ljacomet, and @pgodschalk for their contributions to this release.
Installing
- Apple Silicon:
Harness-2.10.0-arm64.dmg - Intel:
Harness-2.10.0.dmg
Drag Harness.app to Applications, then launch it. Existing installs will auto-update.