From ed39cfff955bae4ce41159176f84dca55749975a Mon Sep 17 00:00:00 2001 From: dormouse-bot <287024035+dormouse-bot@users.noreply.github.com> Date: Fri, 10 Jul 2026 00:01:39 +0000 Subject: [PATCH] docs: fix stale references after dockview/migration/quit refactors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - AGENTS.md: drop the stale "one-way legacy-blob migration reader" clause from the tiling-engine.md index entry — that reader was deleted. - docs/specs/standalone.md: the structural save trigger is a Lath store commit (use-session-persistence.ts:137), not a dockview event. - standalone/src/tauri-adapter.ts: the quit orchestrator (quit.ts) shipped and now calls requestSessionFlush — drop "(future)". - docs/specs/dor-cli.md: `dor list --json` also emits top-level workspace_ref / window_ref (list.ts:235-236); add them to the prose. Docs/comment-only, no behavior change. Rebuilt on current main after #239's dor CLI rework; pnpm lint:specs passes (23 specs, 24 files). Co-Authored-By: Claude Opus 4.8 --- AGENTS.md | 2 +- docs/specs/dor-cli.md | 3 ++- docs/specs/standalone.md | 4 ++-- standalone/src/tauri-adapter.ts | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 9f64d673..982a5cfe 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -34,7 +34,7 @@ Each spec's own `Files` / `Code Map` section is the exhaustive file→spec mappi - **`docs/specs/glossary.md`** — Canonical vocabulary: the **Surface** model (terminal **Session** / **browser** surface), the six Session layers and their states, the `Window ⊃ Workspace ⊃ Pane ⊃ Surface` hierarchy and Workspace union status, transition verbs, invariants I1–I10, and the Liskov contract on Registry APIs. Read this first; every other spec defers to it when naming a state, a surface kind, or a verb. - **`docs/specs/layout.md`** — Tiling layout and its interaction model: panes/doors, the Lath engine pointer, passthrough/command modes, command-mode keyboard dispatch, selection overlay, spatial navigation, minimize/reattach, inline rename, kill confirmation, session lifecycle + persistence recovery, pane animations, and the workspaces-rollout ledger (`## Future`). The tiling engine internals live in tiling-engine.md; layout.md owns the interaction model on top. Touch points: `lib/src/components/Wall.tsx` + `components/wall/`, `Baseboard.tsx` / `Door.tsx` / `TerminalPane.tsx`, the registry/lifecycle/persistence modules in `lib/src/lib/`, and any keyboard/navigation/mode/workspace behavior. - **`docs/specs/shortcuts.md`** — Quick-reference table of every keyboard shortcut by mode/context. layout.md owns the behavior; update both when a binding changes. -- **`docs/specs/tiling-engine.md`** — **Lath**, Dormouse's in-house headless tiling engine (it replaced dockview-react; the dependency is gone). Owns the engine internals: the pure core (split-tree model + `layout()`, the op set with Door restore tokens, sash/neighbor/autoEdge geometry, the headless animator, hierarchical hit-testing), the never-re-parent LathHost adapter with native motion and depth-cycling pointer DnD, the wall store + engine, the pane props contract, and Lath-only persistence with a one-way legacy-blob migration reader. layout.md owns the interaction model on top. Touch points: `lib/src/lib/lath/`, the `lath-*` modules + `LathHost.tsx` in `lib/src/components/wall/`, `Wall.tsx`. +- **`docs/specs/tiling-engine.md`** — **Lath**, Dormouse's in-house headless tiling engine (it replaced dockview-react; the dependency is gone). Owns the engine internals: the pure core (split-tree model + `layout()`, the op set with Door restore tokens, sash/neighbor/autoEdge geometry, the headless animator, hierarchical hit-testing), the never-re-parent LathHost adapter with native motion and depth-cycling pointer DnD, the wall store + engine, the pane props contract, and Lath-only persistence. layout.md owns the interaction model on top. Touch points: `lib/src/lib/lath/`, the `lath-*` modules + `LathHost.tsx` in `lib/src/components/wall/`, `Wall.tsx`. - **`docs/specs/alert.md`** — The Activity layer: WATCHING / protocol / command-exit alert tracks, attention model, TODO lifecycle, bell + TODO UI states, notification protocols (`OSC 9` / `9;4` / `99` / `777` / `BEL`) with sanitization and security rules, and the Workspace union projection. layout.md defers to it for all alert/TODO behavior. Touch points: `activity-monitor.ts`, `alert-manager.ts`, notification parsing in `terminal-protocol.ts`, the bell/TODO UI in pane headers and Doors. - **`docs/specs/terminal-state.md`** — Per-Session semantic state: CWD, prompt/editing/running/finished lifecycle, command runs, title candidates + header derivation, grouping keys, and the keystroke fallback for shells without OSC integration. Touch points: `terminal-state.ts`, `terminal-state-store.ts`, semantic event parsing in `terminal-protocol.ts`, derived pane/door labels. - **`docs/specs/terminal-escapes.md`** — Registry of every escape sequence Dormouse parses, answers, or deliberately ignores: OSC/CSI tables pointing at the owning spec, parsing location + `pty:data` strip semantics, replay-time report filtering, iTerm2 identity, and shell-integration injection. Touch points: OSC/CSI parsing at the PTY data boundary, `terminal-report-filter.ts`, `mouse-mode-observer.ts`, `standalone/sidecar/shell-integration/`, or adding any new escape sequence. diff --git a/docs/specs/dor-cli.md b/docs/specs/dor-cli.md index 128878e3..18c5394a 100644 --- a/docs/specs/dor-cli.md +++ b/docs/specs/dor-cli.md @@ -348,7 +348,8 @@ from `command-detail`. additionally emits the identity dump `dor identify` used to print — top-level `caller_surface_ref` / `caller_surface_id` (matched locally against `DORMOUSE_SURFACE_ID`, `null` when the caller is not in the list), - `focused_surface_ref` / `focused_surface_id`, and a `host` block + `focused_surface_ref` / `focused_surface_id`, `workspace_ref` / `window_ref`, + and a `host` block (`DORMOUSE_HOST` / `DORMOUSE_HOST_WORKSPACE` / runtime paths). It deliberately does not expose the control socket: the CLI is the public API and the socket is private plumbing. diff --git a/docs/specs/standalone.md b/docs/specs/standalone.md index ef9079bb..d8a74e93 100644 --- a/docs/specs/standalone.md +++ b/docs/specs/standalone.md @@ -223,10 +223,10 @@ adapter reads a host-injected seed (`docs/specs/vscode.md`). cadence is shared frontend code (`lib/src/components/wall/use-session-persistence.ts`), so every adapter benefits: a generation-counter dirty tracker (`lib/src/lib/session-dirty.ts`) gates the periodic heartbeat. Two distinct -trigger classes feed it. **Structural** dockview events (layout change, panel +trigger classes feed it. **Structural** Lath store commits (layout change, pane add/remove) keep their existing 500 ms-debounced *schedule* — the cadence is byte-identical to before. **Content** inputs that change the persisted blob with -no dockview event — terminal output (`onPtyData`: scrollback, OSC CWD, title +no Lath commit — terminal output (`onPtyData`: scrollback, OSC CWD, title candidates), Activity/TODO transitions (`subscribeToActivity`), pane title/rename/command state (`subscribeToTerminalPaneState`), active-pane focus (`onDidActivePanelChange`), and door-state changes — only *mark dirty*, never diff --git a/standalone/src/tauri-adapter.ts b/standalone/src/tauri-adapter.ts index 5c19303f..21b68949 100644 --- a/standalone/src/tauri-adapter.ts +++ b/standalone/src/tauri-adapter.ts @@ -421,7 +421,7 @@ export class TauriAdapter implements PlatformAdapter { // back. Resolves when a handler notifies completion for this requestId, or when // the bounded wait elapses — quit must never wedge on a stalled flush. If no // handler is registered (quit during boot, before the Wall mounts), resolve - // immediately: there is nothing queued to flush. Called by the (future) quit + // immediately: there is nothing queued to flush. Called by the quit // orchestrator; pairs with drainSessionSaves to await the resulting Rust write. requestSessionFlush(timeoutMs: number): Promise { if (this.flushHandlers.size === 0) return Promise.resolve();