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.