Documentation menu
On this page
Pinned technical reference

v0.20 physical QA checklist

Canonical v0.20 physical qa checklist from the v0.20.0 published source.

Status

  • v0.20.0 was published on 2026-10-18 with partial physical evidence, by maintainer decision. It is the first stable release since v0.18.0 and includes the unpublished v0.19 candidate, so this record covers both (v019-physical-qa.md keeps the v0.19 checklist). Items not run below are outstanding follow-ups, not passes, and the release notes list them as known limitations.
  • Reported acceptance (macOS): the maintainer physically tested and accepted the first-run starting point (Reactive Horizon), the guided Setup and the Tools discovery, selection and install flow on macOS on the final onboarding line (a469ba8e, carried unchanged into the release commit). This is the maintainer’s reported result, not an item-by-item record of the checklists below, and it does not stand for any other host or platform.
  • Stabilization evidence: physical QA of the v0.19 and v0.20 candidates on macOS found the input-ownership, exact-copy, queue, Setup, task-bar and composer-history issues fixed before release (draft PRs #395 and #396 and the onboarding QA record, post-v020-preferences-onboarding.md). Their full retests were not recorded item by item.
  • Not performed: any physical Linux terminal (including Omarchy/Hyprland and Linux Fish 3.7), WSL 2, iTerm2, kitty, WezTerm or Windows Terminal; managed Claude against a live account (pass 4); the experimental workspace regions (1E). Linux stays beta on automated CI (Ubuntu, Fedora).
  • What does not count: headless PTY fixtures, synthetic keys sent through tmux, and captures of a window driven that way. Each item needs a person at a real terminal with a real keyboard and pointer.
  • Build under test: the exact release commit (v0.20.0). Build it from a clean checkout (npm ci && npm run build) and record node dist/index.js --version.
  • Isolation: a throwaway HOME (or XDG_CONFIG_HOME), a temporary working directory, and for managed Claude a disposable Claude account directory. Never point a probe at a real account; every secret below is fake.

Results

PassHost and versionOSShell and versionCommit (--version)ResultNotes
Onboarding, guided Setup and Toolsas reportedmacOSas reporteda469ba8e lineAccepted (reported)maintainer’s physical acceptance; not itemized
1 Workspace regions Off (default)GhosttymacOSzshNot recorded
1 Workspace regions Off (default)Terminal.appmacOSzshNot recorded
1E Experimental regions (optional, not a release gate)Ghostty, Terminal.app, tmuxmacOSzshDeferredexperimental, Off by default
2 Background tasksGhosttymacOSzshNot recorded
2 Background tasksphysical Linux terminalLinuxFish 3.7 or BashNot runno physical Linux host
3 Modules and worktreesGhosttymacOSzshNot recorded
4 Managed ClaudeGhosttymacOSzshDeferredClaude plugin toggle off in this release
5 Regression of v0.19 coreTerminal.appmacOSBash or FishNot recordedstabilization fixes from earlier macOS passes

Pass 1 — workspace regions

The docked sidebar and detail panel are experimental and Off by default in v0.20 (maintainer decision, workspace-ui-decision.md). The release gate is that Off is really off and that turning them on and off is safe; the docked regions themselves (1E) are not a release feature and are recorded as Deferred unless someone runs them. A 1E result never counts as release evidence for anything else.

  • 1.0a Fresh QA home: /sidebar, /panel, /sidebar focus: each prints that the regions are experimental and Off and names Settings → Layout → Workspace sidebar & panel; nothing opens, the composer keeps the keyboard, and tput cols is the full width before and after.
  • 1.0b Settings → Layout shows Workspace sidebar & panel Off with its experimental description; Setup → Editor shows the same row. /keys says the workspace bindings take no key while it is Off. /worktrees, /sessions, /github and /background work as usual.
  • 1.0c Turn it On in Settings, /sidebar then /panel focus at 160 columns: both dock and tput cols is the middle width. Turn it Off in Settings: both close at once, focus is back in the composer, and tput cols is the full width again; /sidebar opens nothing until it is turned on again.

1E — experimental regions (optional; turn the setting On first; not a release gate)

  • 1.1 At 200, 120, 100, 89, 80, 70 and 40 columns: /sidebar, then /panel. Wide: both dock, the transcript rewraps to the middle and tput cols in the shell matches the middle width. 70 and below: /sidebar opens a drawer with the keyboard; tput cols is unchanged (opening a drawer never resizes the shell); Esc tucks it and the composer is never covered while it has the keyboard. No horizontal scroll anywhere.
  • 1.2 Safe glyphs and NO_COLOR=1: focus, selection and the active item stay distinguishable without color.
  • 1.3 With the sidebar docked, run vim and less: the regions hide, the program gets every column, and they come back with focus where it was after the program exits.
  • 1.4 Inside tmux: the tmux section lists sessions, windows and panes; Enter on another pane switches to it; the prefix and any bind -n keys still reach tmux first (/keys names them).
  • 1.5 Enter on a worktree with an empty composer stages cd -- '…'; with a draft it says the draft is kept.
  • 1.6 Click the sidebar, the panel and back in the transcript: focus follows; selection and hover in the transcript land on the right rows with the sidebar docked.
  • 1.7 A keymap.json binding Left (empty draft, "replaces": true) to sidebar.focus: Left with a draft still edits; with an empty draft it focuses the sidebar; /keys lists it. On Terminal.app check the Page Up/Down note.

Pass 2 — background tasks

  • 2.1 /background run ping -c 100 127.0.0.1 (Linux: ping 127.0.0.1): the bar shows it; Up from an empty prompt focuses the bar; Enter shows live output; End follows again after scrolling back.
  • 2.2 x interrupts. With a program that ignores SIGINT (/background run sh -c 'trap "" INT; sleep 60'): x says to wait, then offers terminate; holding x never jumps to kill.
  • 2.3 A dev server (/background run npx --yes http-server -p 8765, or any local one): stop leaves nothing listening (lsof -i :8765). With a real device or emulator: adb logcat stops and adb devices still works.
  • 2.4 Detach the window while a task runs, reattach with /resume: the task and its recent output are there and nothing restarted. End the session: the task ends.
  • 2.5 Task output never appears in the transcript, /copy, Copy as Report or /compare.
  • 2.6 By default tail -f somefile + Enter runs in the foreground at once. After /background suggestions on, the strip offers it; Enter runs it here; b backgrounds once; typing another key returns the draft with the key typed.
  • 2.7 While a foreground command reads input, queued commands run and Up/typing go to the program, never the bar.

Pass 3 — native modules and worktrees

  • 3.1 Real projects for .NET, Swift, Zig, Deno, Elixir, Dart, Flutter, Ruby and PHP installed through Homebrew, asdf, mise or FVM: requested and active versions match what the tools report, and no tool process starts while collecting (watch with ps).
  • 3.2 The build module in a Gradle, Maven, CMake and Bazel project; a Mercurial and a Jujutsu repository.
  • 3.3 /github, then /worktrees in the same repository: a worktree whose branch has an open PR offers p, which opens that PR; a fork PR with the same branch name is not offered.

Pass 4 — managed Claude (disposable account only)

  • 4.1 /model and /effort change the managed target; the change shows as requested until Claude confirms it.
  • 4.2 /mods: enable and disable a plugin installed in the disposable account; the settings change is Claude’s own; the running managed session reloads it.
  • 4.3 A multi-line command approval shows every line before you answer.

Pass 5 — v0.19 core on the integrated build

Repeat items 1.1–1.15 of v019-physical-qa.md once on this build in Terminal.app with Bash or Fish, with the default settings (the experimental workspace regions Off). Running half of them again with the regions docked belongs to 1E and is optional.

After the pass

Fill the Results table, attach captures of any failure with the exact keys typed, and open an issue for each failure against v0.20.0. Fixes ship in a patch release; rerun the affected items on that build.

Reviewed against v0.20.0 · source 65e4de55 · 2026-10-18
Sources: v020-physical-qa.md
Suggest a correction ↗

Documentation

Try “sessions” or “Theme Bridge”. Search runs in your browser.