From 2f3f0cd4ffe13db6ef3ea7cefa02917dab3832f0 Mon Sep 17 00:00:00 2001 From: dormouse-bot <287024035+dormouse-bot@users.noreply.github.com> Date: Sat, 31 Oct 2026 12:39:42 +0000 Subject: [PATCH 1/2] Correct stale comments left by alert deferral's removal and dor remote routing - alert-manager: drop the claim that the detector gates notifications; since #1368 nothing defers a ring. - terminal-registry.alert test: nothing defers presentation any more. - terminal-protocol: the live path timestamps through semanticEventOf, not only collectTerminalSemanticEvents. - dor-cli.md: the routing figure answers remote.* with app.* and tool.*. - mouse-and-clipboard.md: Spaces keeps the first line's quote prefix. - website index.css and the dor-tool-dirty QC log: stale counts and scope. --- docs/specs/dor-cli.md | 2 +- docs/specs/mouse-and-clipboard.md | 2 +- docs/testing/dor-tool-dirty.md | 2 +- lib/src/lib/alert-manager.ts | 2 -- lib/src/lib/terminal-protocol.ts | 2 +- lib/src/lib/terminal-registry.alert.test.ts | 4 ++-- website/src/index.css | 4 ++-- 7 files changed, 8 insertions(+), 10 deletions(-) diff --git a/docs/specs/dor-cli.md b/docs/specs/dor-cli.md index db5ed3ced..44d6bfc74 100644 --- a/docs/specs/dor-cli.md +++ b/docs/specs/dor-cli.md @@ -148,7 +148,7 @@ Invariants: ```mermaid flowchart TD - R[request] --> AT{app.* or tool.*?} + R[request] --> AT{app.*, remote.* or tool.*?} AT -- yes --> WIN[the Window answers] AT -- no --> BAD{malformed or helper --surface, or another --window?} BAD -- yes --> REF[refuse] diff --git a/docs/specs/mouse-and-clipboard.md b/docs/specs/mouse-and-clipboard.md index 9cc228930..e5ed7b2eb 100644 --- a/docs/specs/mouse-and-clipboard.md +++ b/docs/specs/mouse-and-clipboard.md @@ -126,7 +126,7 @@ Mouse-up over a terminal-handled drag opens the **copy editor**, as does the cop |---|---| | **Auto** (opens here) | Decoration stripped, each break judged on its own (§4.1.1). | | **Exact** | As displayed: selected rows joined by `\n`, each trimmed of trailing whitespace — soft-wrapped rows included. | -| **Spaces** | Decoration stripped, blank lines dropped, every break one space, continuation indents and quote prefixes removed. | +| **Spaces** | Decoration stripped, blank lines dropped, every break one space, continuation indents and each later line's quote prefix removed. | | **No breaks** | As Spaces, every break deleted. | **Decoration** is a frame-only line (dropped), a leading or trailing run of box drawing (`U+2500–U+259F`, Box Drawing and Block Elements), and a TUI's leading bullet (`⏺`, `⎿`, `●`). A **quote prefix** is a `>`, or a quote bar (`▏ ▎ ▍`) at most two spaces from its text, per level, with text after it; a line of bars alone is blank, written between quoted lines with the shallower one's prefix. **Must write a quote bar as `>`, drop a quote prefix with the break deleted before it, and keep a break where quote depth changes** (rationale). **Must read cells through xterm's wide-character continuation cells.** **A deleted soft wrap joins its rows exactly**, keeping a blank on either side of it. **Every judgement reads a soft wrap's rows as one line**, indented as its first row (rationale). **Never rewrap a block-shape selection**: it is a rectangular slab, so Auto reads it as Exact, and it has no wider scope (§4.2) and no edge keys (§4.3). diff --git a/docs/testing/dor-tool-dirty.md b/docs/testing/dor-tool-dirty.md index 1a0e312e7..e9ade6a78 100644 --- a/docs/testing/dor-tool-dirty.md +++ b/docs/testing/dor-tool-dirty.md @@ -4,7 +4,7 @@ Branch: `dor-tool-dirty`, stacked on `dor-tool-qc`. ## Scope -Tools report unsaved state with `OSC 367;state;{"v":1,"dirty":true|false}`. This pass adds indication; save coordination and close protection remain future work. +Tools report unsaved state with `OSC 367;state;{"v":1,"dirty":true|false}`. This pass adds indication; save coordination and close protection came later (`docs/specs/dor-tool.md` -> "Closing unsaved Tools"). ## Plan diff --git a/lib/src/lib/alert-manager.ts b/lib/src/lib/alert-manager.ts index ffa1173d6..23d359d7a 100644 --- a/lib/src/lib/alert-manager.ts +++ b/lib/src/lib/alert-manager.ts @@ -549,8 +549,6 @@ export class AlertManager { } case 'commandFinished': if (!event.seen) break; - // A shell-reported exit is authoritative, so confirmed work never - // delays it. The detector only gates in-band terminal notifications. this.holdOrDeliver(id, entry, 'exit', { source: 'COMMAND_EXIT', title: 'Command finished', diff --git a/lib/src/lib/terminal-protocol.ts b/lib/src/lib/terminal-protocol.ts index 97ff9fa07..a635bc3aa 100644 --- a/lib/src/lib/terminal-protocol.ts +++ b/lib/src/lib/terminal-protocol.ts @@ -932,7 +932,7 @@ function parseOscTitle(content: string, source: TerminalTitle['source']): Termin if (!content.startsWith(prefix)) return []; const titleText = sanitizeText(content.slice(prefix.length), TITLE_LIMIT); if (!titleText) return []; - // updatedAt is set authoritatively by collectTerminalSemanticEvents in stream order. + // updatedAt is set authoritatively in stream order by semanticEventOf. return [{ kind: 'semantic', event: { diff --git a/lib/src/lib/terminal-registry.alert.test.ts b/lib/src/lib/terminal-registry.alert.test.ts index a2417329a..f7da2a0a8 100644 --- a/lib/src/lib/terminal-registry.alert.test.ts +++ b/lib/src/lib/terminal-registry.alert.test.ts @@ -990,8 +990,8 @@ describe('terminal-registry alert behavior', () => { entry.terminal.emitInput(input); // Written as it came, and not as user input. expect(write.mock.calls).toEqual([[id, input]]); - // The fake PTY echoes the reply as output. It may defer presentation, - // but must never acknowledge or discard the owed episode. + // The fake PTY echoes the reply as output, which must never acknowledge + // or discard the owed episode. expect(getActivity(id)).toMatchObject({ episode, todo: false }); advance(5_000); expect(getActivity(id)).toMatchObject({ status: 'ALERT_RINGING', episode }); diff --git a/website/src/index.css b/website/src/index.css index 9a1d11365..04ba9235c 100644 --- a/website/src/index.css +++ b/website/src/index.css @@ -15,8 +15,8 @@ /* The site's own design, shared with Hosted's account pages. */ @import "../../lib/src/site/site.css"; @source "../../lib/src"; -/* Tests and stories are 180 of the library's 430 files and render nowhere on - this site. Excluding them can only drop a utility that appears *nowhere +/* Tests and stories are a large share of the library's files and render + nowhere on this site. Excluding them can only drop a utility that appears *nowhere else*, so every shipped component keeps its classes. */ @source not "../../lib/src/**/*.test.ts"; @source not "../../lib/src/**/*.test.tsx"; From 3f741a93167802c39e185f8311a8c5b59e860241 Mon Sep 17 00:00:00 2001 From: dormouse-bot <287024035+dormouse-bot@users.noreply.github.com> Date: Sat, 31 Oct 2026 12:42:45 +0000 Subject: [PATCH 2/2] docs: route window.* through the Window in the Handle Model figure --- docs/specs/dor-cli.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/specs/dor-cli.md b/docs/specs/dor-cli.md index 44d6bfc74..e9f095cb2 100644 --- a/docs/specs/dor-cli.md +++ b/docs/specs/dor-cli.md @@ -148,7 +148,7 @@ Invariants: ```mermaid flowchart TD - R[request] --> AT{app.*, remote.* or tool.*?} + R[request] --> AT{app.*, remote.*, tool.* or window.*?} AT -- yes --> WIN[the Window answers] AT -- no --> BAD{malformed or helper --surface, or another --window?} BAD -- yes --> REF[refuse]