Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
3 changes: 2 additions & 1 deletion docs/specs/dor-cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
4 changes: 2 additions & 2 deletions docs/specs/standalone.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion standalone/src/tauri-adapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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<void> {
if (this.flushHandlers.size === 0) return Promise.resolve();
Expand Down
Loading