* fix(worktrees): stop surfacing prunable git worktrees as live workspaces A worktree still registered in git but whose directory was deleted (git's `prunable` state) was enumerated as a normal workspace, producing repeated pty:spawn DaemonProtocolError / fs:readDir ENOENT loops and a blank pane. - Parse the `prunable` porcelain field (Git >= 2.36) in both the main and relay worktree-list parsers. - For Git < 2.36 (no `prunable` field), probe each linked worktree path for existence on the fallback line-block path, skipping locked registrations to mirror git's own prunable rules. - Omit prunable worktrees from the detected-workspace enumeration only; removal/cleanup flows keep seeing them. - Extend the real-binary compatibility contract with the 2.36 `prunable` boundary. Fixes #8389 Claude-Session: https://claude.ai/code/session_018Rg1Bpq4GGwmz613hq6RSD * fix(worktrees): pin the prunable/locked porcelain annotations to their real Git 2.31 boundary The prunable and locked annotations landed in Git 2.31, five releases before `worktree list -z` (2.36); only -z defines the capability fallback boundary. Correct the compatibility contract so a future matrix entry in the 2.31-2.35 range passes, and reword the fallback comments: on 2.31-2.35 the annotations still parse and the existence probe is a backstop; only Git <2.31 relies on it outright. * fix(worktrees): omit prunable registrations from the Space scan A prunable registration has no directory to size or reclaim, so Space rendered it as a dead "Missing" row whose checkbox stayed disabled with no prune/remove affordance (reported on macOS after a reboot cleared /private/tmp under 16 registrations). Skip prunable entries in the scan, matching the workspace enumeration; removal flows list worktrees separately and still see them. --------- Co-authored-by: kaynan <kaynan.camargo@terceiro-sky.com.br> Co-authored-by: Brennan Benson <79079362+brennanb2025@users.noreply.github.com> |
||
|---|---|---|
| .. | ||
| plans | ||
| 2026-06-27-orca-mobile-manual-network-address-design.md | ||
| README.md | ||
| agent-hook-stdin-lifecycle.md | ||
| agent-session-resume-cli-evidence.md | ||
| direct-url-or-file-entry.md | ||
| feature-discovery-interaction-tracking.md | ||
| feature-education-retention-analytics.md | ||
| feature-education-state.md | ||
| git-compatibility.md | ||
| headless-linux-server.md | ||
| keyboard-layout-shortcut-dispatch.md | ||
| new-user-parallel-work-telemetry.md | ||
| opencode-commit-message-stdin.md | ||
| project-ordering-mode.md | ||
| reliability-gates-implementation-plan.md | ||
| reliability-pain-points-2026-06-30.md | ||
| ssh-gssapi-kerberos.md | ||
| ssh-typing-latency-under-relay-load.md | ||
| telemetry-availability.md | ||
| terminal-cold-park-reveal-cost.md | ||
| terminal-hidden-view-parking.md | ||
| terminal-model-view-contract.md | ||
| terminal-query-authority.md | ||
| terminal-session-lifecycle.md | ||
| terminal-side-effect-authority.md | ||
| terminal-switch-typing-lag-investigation.md | ||
README.md
Durable Docs
Keep this folder for versioned reference docs that are meant to survive past a single design or implementation pass.
What Goes Here
- Stable reference material.
- Public-facing docs that are not part of the root README.
- Docs that other checked-in files link to.
- Telemetry availability notes that dashboard authors need after the original design or implementation branch is gone. See Telemetry Availability.
- Headless Linux server setup for remote
orca servehosts. See Headless Linux Server. - Feature education state, interaction tracking, and retention analytics notes that define how contextual tours are persisted and measured. See Feature Education State, Feature Discovery Interaction Tracking, and Feature Education Retention Analytics.
- New-user parallel work telemetry notes that define how the parallel-work tour and setup guide should be measured against retention. See New User Parallel Work Telemetry.
What Stays Out
Ephemeral design notes, implementation sketches, and planning docs should stay as local Markdown files under docs/. They are ignored by default so they do not get checked in accidentally.