docs-ai — Curated Product and Design Records #
This directory is Prowl's curated, durable record of how the onevcat fork evolved. Each numbered folder documents a substantial feature or a non-trivial, decision-shaping fix: the plan that preceded the work and the resulting implementation. It exists so that humans and agents can answer "why is it built this way?" without archaeology through git history.
It is not a working-note archive. Reviews, audits, routine investigations, status reports,
test runs, and small/docs-only changes stay in their normal task or Git context unless
onevcat explicitly asks for a docs-ai/ record.
Structure #
docs-ai/NNN-<slug>/
000-plan.md # plan before implementation (RFC-like)
001-action.md # what was actually done, verified against the code
002-<topic>.md # amendments: follow-up waves, corrections, or one record per slice of a multi-PR entry (indexed in 000-plan.md)
<living>.md # non-numbered = living doc (runbook/ledger/reference), updated in place
Rules for writing new entries live in the write-ai-doc skill
(.claude/skills/write-ai-doc/SKILL.md). In short: select only qualifying product work,
then plan first, act second, amend in place for in-frame follow-ups, and open a new numbered
entry for large pivots. An entry delivered across several PRs records each slice as an
amendment (002+, shipped with its PR) and writes 001-action.md once, when the last slice
lands, summarizing them. Numbered files are immutable history; non-numbered files are living
documents.
Entries 001–045 were backfilled on 2026-07-12 from PRs, commits, and the former
doc-onevcat/ directory, which was dissolved into this one (historical plans were
absorbed into the entries; operational docs became living files — see the index below;
originals remain in git history). Backfilled plans are retrospective reconstructions;
each is marked as such.
Living documents hosted here:
001-fork-bootstrap-and-release-pipeline/release-runbook.md— fork sync & release runbook007-ghostty-embedding-integration/ghostty-fork-sync.md— Ghostty fork/submodule upgrade runbook012-keybinding-system/architecture.md— keybinding system reference013-prowl-cli/contracts/— normative CLI contracts017-upstream-sync-process/upstream-ledger.md— upstream review ledger (baseline + decisions)020-observability/runbook.md— observability/diagnostics runbook063-agent-workflows/dsl-spec.md— Agent Workflow DSL (prowl.workflow/v1) normative spec063-agent-workflows/release-plan.md— release/order plan shared by 063 and 064064-agent-completion-signals/research-agent-completion-signals.md— per-runtime completion-signal matrix064-agent-completion-signals/agent-contracts-runbook.md— runtime contract inventory, low-cost model routes, implemented inventory/preflight and eight-runtime headless checks, plus remaining interactive acceptance- 068 agent state providers — shared architecture and one living contract/plan per runtime
070-app-localization/glossary.md— Simplified Chinese glossary for the String Catalog
Some entries also host verbatim historical attachments migrated from doc-onevcat (e.g.
023-shelf-mode/jank-investigation.md, 017-.../batch-2026-07-06-post-v0.10.5.md,
045-.../research-cli-session-identity.md); they are frozen records, not living docs.
What is not here: reviews, audits, routine investigations, test reports, working notes,
small polish PRs (git history covers them), and current user-facing behavior (docs/ is the
agent-facing manual for that).
Index #
| # | Entry | Anchor | Topic |
|---|---|---|---|
| 001 | fork-bootstrap-and-release-pipeline | 2026-02-26 | Independent fork: sync scripts, notarized date-based releases, Sparkle appcast, Homebrew cask |
| 002 | custom-commands | 2026-02-27 | Repo-scoped custom command buttons and their evolution |
| 003 | diff-window | 2026-03-06 | Local diff window (YiTong), external diff tools, render/cache fixes |
| 004 | prowl-rebrand | 2026-03-17 | Supacode → Prowl user-facing rebrand; settings migration; upstream-PR guard |
| 005 | canvas-live-sessions | 2026-03-17 | Canvas v1: all tabs as draggable/zoomable cards |
| 006 | startup-performance | 2026-03-19 | Parallel repo loading, direct wt, snapshot startup cache |
| 007 | ghostty-embedding-integration | 2026-03-21 | Ghostty action routing, callbacks, theme handling, safety backports |
| 008 | terminal-notifications | 2026-03-22 | Command-finished notifications and the notification UX line |
| 009 | terminal-surface-lifecycle | 2026-03-23 | Blank-surface/reattachment investigation; occlusion; leaks |
| 010 | plain-folder-support | 2026-03-24 | Plain (non-git) folders alongside repositories |
| 011 | canvas-multiselect-broadcast | 2026-03-25 | Multi-select cards, broadcast input |
| 012 | keybinding-system | 2026-03-27 | Config-driven keybindings M1–M3, recorder UI, Ghostty key ownership |
| 013 | prowl-cli | 2026-03-30 | Contract-first prowl CLI: socket service, v1 commands, hardening, agents |
| 014 | terminal-layout-persistence | 2026-03-31 | Layout snapshot save/restore; font-size persistence; launch races |
| 015 | repositories-feature-refactor | 2026-04-03 | TCA decomposition of RepositoriesFeature and later code-health splits |
| 016 | dev-build-and-ci-workflow | 2026-04-04 | Build/test tooling, CI parallelism, Debug identity, incremental caching, Shared module boundary |
| 017 | upstream-sync-process | 2026-04-08 | Upstream review discipline, baselines, batch decisions |
| 018 | archived-worktrees | 2026-04-09 | Archived worktree discoverability and auto-delete |
| 019 | worktree-creation-and-lifecycle | 2026-04-12 | Creation/merge flows, safe deletion, Add-to-Prowl redesign |
| 020 | observability | 2026-04-18 | Sentry + PostHog wiring; the App-Hang enable→tune→remove arc |
| 021 | sparkle-update-ux | 2026-04-18 | Update badge, Sparkle 2.9.2, background downloads, confirm-install |
| 022 | tab-title-and-icon | 2026-04-18 | Tab titles/icons: manual, auto-detected, pinned, persisted |
| 023 | shelf-mode | 2026-04-21 | Shelf stacked-book mode + jank investigation |
| 024 | canvas-interaction-evolution | 2026-04-25 | Canvas v2 UX: zoom/pan, expand-in-place, spatial navigation |
| 025 | repo-identity-appearance | 2026-04-27 | Per-repo icon/color/title identity |
| 026 | sidebar-container-refactor | 2026-05-03 | Sidebar container/presentation refactor |
| 027 | split-pane-ux | 2026-05-04 | Unfocused-pane dimming, divider config, split-zoom |
| 028 | pr-status-tracking | 2026-05-08 | GitHub PR state pipeline: batching, correctness, flicker fixes |
| 029 | active-agents-panel | 2026-05-09 | Active Agents panel UI |
| 030 | agent-status-detection | 2026-05-09 | Per-pane agent detection: pid API, heuristics, OSC, scheduling |
| 031 | command-palette-architecture | 2026-05-16 | Palette rebuild: categories, suggestions, action factories |
| 032 | performance-hardening | 2026-05-21 | App-hang storm fix; event coalescing; render cost reductions |
| 033 | ui-refresh-2026-05 | 2026-05-24 | Community UI refresh: tab bar, sidebar, chrome tint |
| 034 | worktree-watcher-correctness | 2026-05-25 | Watcher/discovery correctness incl. symlinked roots |
| 035 | protected-terminal-close | 2026-05-25 | Confirm-before-close for protected terminal work |
| 036 | window-management-hardening | 2026-05-26 | Main-window surfacing, fullscreen edge cases, stall diagnostics |
| 037 | line-diff-tracking | 2026-05-28 | Sidebar line-diff badge pipeline and adaptive debounce |
| 038 | docs-agent-manual | 2026-06-07 | docs/ agent manual, sync-docs skill, in-app docs |
| 039 | gh-cli-hardening | 2026-06-08 | gh/git robustness; per-repo GitHub identities |
| 040 | automatic-open-in | 2026-06-13 | Project-aware Automatic Open In; editor/app additions |
| 041 | ghosttykit-prebuilt-artifacts | 2026-06-14 | Prebuilt GhosttyKit downloader (no local Zig needed) |
| 042 | project-workspaces | 2026-06-17 | Workspace grouping of repos/folders |
| 043 | canvas-tile-layout | 2026-06-24 | Tile layout + default-layout setting |
| 044 | foundation-model-branch-names | 2026-06-27 | On-device FM branch-name suggestions |
| 045 | native-agent-session-detection | 2026-07-12 | Native agent session identity (successor to 030's heuristics) |
| 046 | cli-short-handles | 2026-07-13 | Session-scoped tab and pane handles for CLI targeting |
| 047 | cross-agent-handoff | 2026-07-17 | Durable artifact-based task handoff across coding agents (legacy CLI/HUD retired 2026-09-10; see 063.020) |
| 048 | agent-runtime-adapters | 2026-07-18 | Protocol-backed agent session resume and configurable launch invocations |
| 049 | agents-toolbar-entry | 2026-07-20 | Agents status capsule toolbar entry (its staged handoff HUD was retired 2026-09-10; see 063.020) |
| 050 | sidebar-expand-active-and-worktree-tab-badges | 2026-07-25 | Sidebar Expand Active third state + per-worktree tab count badges |
| 051 | repository-icon-detection | 2026-07-25 | High-confidence local repository icon detection on add; deferred, reviewable Foundation Model recommendations |
| 052 | sidebar-context-menus | 2026-07-27 | Sidebar context menu overhaul: worktree terminal actions, header/workspace path actions, PR click-through |
| 053 | agent-profiles | 2026-07-29 | Agent Profile V1: preset-first Claude Code/Codex launch profiles, opt-in account isolation, path routing, and future handoff seam |
| 054 | native-settings-navigation | 2026-07-30 | SwiftUI-owned singleton Settings window, native sidebar/detail navigation, and Agent Profile drill-ins |
| 055 | agent-profile-runtimes | 2026-08-01 | Capability-based runtime adapters and Agent Profile support across Prowl's recognized agent catalog |
| 056 | performance-optimization-2026-08 | 2026-08-01 | August performance review series: exact cached line counts, opt-in Debug TCA logging, and agent screen-scan memoization |
| 057 | performance-benchmark-suite | 2026-08-02 | Ratio-assertion benchmarks pinning the #644–#665 hot paths, make bench absolute-number reporting, and live measurement wrappers |
| 058 | unified-toolbar-layout | 2026-08-07 | Remove redundant branch/title toolbar items and align the Agents + notifications cluster across Normal, Shelf, and Canvas |
| 059 | agent-transcript-snapshots | 2026-08-11 | Immediate Codex/Claude agent snapshots with trustworthy transcript results and actionable blocker text |
| 060 | prowl-cli-targeting-and-contract-governance | 2026-08-16 | Unified target grammar, CLI contract rebaseline, and durable documentation governance |
| 061 | native-toolbar-controls | 2026-08-17 | Native macOS toolbar grouping, Liquid Glass ownership, and review standards |
| 062 | workspace-child-diff | 2026-08-19 | Per-repository diff for workspace children via unified DiffTarget routing |
| 063 | agent-workflows | 2026-08-21 | Agent Workflows: YAML-declared, profile-bound multi-agent orchestration (runner, prowl workflow CLI, status center, built-in handoff/Review Loop); successor to 047's fixed handoff flow; action bundles and control-flow design, implementation contract, personal history and retention, naming contract, step history UI plan, release UI polish, Review Loop |
| 064 | agent-completion-signals | 2026-08-22 | Layered agent signal bus (cooperative / launch-scoped hooks / transcript+process+OSC / heuristic), prowl agents signal + agents wait with source/confidence, per-runtime hook research, T1 contract-test plan, planned log/screen state decision, foreground/subagent findings, foreground identity contract, selection channels/fallback, provider/state-machine design, and implementation/acceptance, and continuity hardening, and capture/emission corrections |
| 065 | bundled-agent-skills | 2026-08-22 | Bundle Prowl's official agent skills into the app, prowl skills install/uninstall via symlinks into agent skill folders, Agent Skills section on Settings › CLI & Skills, shared registry for 063 |
| 066 | agent-island | 2026-09-01 | Notch-aware Active Agents island, global keyboard entry, Agents Display settings, and hover-revealed floating placement |
| 067 | remote-mirror | 2026-09-09 | App-owned Host and native remote terminal mirrors; macOS UX and viewport, Mac pane creation |
| 068 | agent-state-providers | 2026-09-14 | Shared architecture, released Codex provider, and Claude native adapter; staged acceptance, acceptance complete; fullscreen case excluded by owner |
| 069 | undo-close-terminal | 2026-09-16 | Undo a pane or tab close with ⌘Z within Ghostty’s undo-timeout: closed surfaces stay alive off-tree and restore into their original tab and split position |
| 070 | app-localization | 2026-09-18 | Simplified Chinese UI from a String Catalog; translations sync at release time through the sync-l10n skill (nothing blocks everyday work); compiler-based coverage audit plus a baseline for unlocalized copy; living glossary; language choice stored only in the per-app AppleLanguages default |
| 071 | git-environment-recovery | 2026-09-20 | Working Git selection, safe repository classification, recovery guidance, and plain-folder Shelf entry |