agentgui 1.0.1024 → 1.0.1026
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gm/.gm-continue-count +1 -0
- package/.gm/memories/mem-0c444abde86202f6-1681.md +8 -0
- package/.gm/memories/mem-3602d11d7bce9446-1057.md +8 -0
- package/.gm/prd.yml +32 -0
- package/AGENTS.md +5 -15
- package/package.json +1 -1
- package/site/app/vendor/anentrypoint-design/247420.css +29 -14
- package/site/app/vendor/anentrypoint-design/247420.js +14 -14
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
key: mem-0c444abde86202f6-1681
|
|
3
|
+
ns: default
|
|
4
|
+
created: 1783677428217
|
|
5
|
+
updated: 1783677428217
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
agentgui 31st run addendum (2026-07-10): confirming gm-continue pass caught that the gui-ux-craft workflow's light-theme-contrast lens had crashed mid-run (API connection error) and never actually produced findings - a real coverage gap, not a clean pass. Dedicated follow-up audit computed real WCAG contrast ratios (not eyeballed) and found 6 genuine light-theme failures the crashed lens would have caught: chat avatar initials using raw --mascot/--accent-ink on tinted backgrounds (2.03:1/3.65:1), tool-done status text using --success/--green-2 (3.18:1/2.88:1) instead of the text-safe --green, --amber measuring 4.26:1 on --bg-2 (narrowly failing AA on the background it actually renders on, despite being tuned for --paper), --danger measuring 4.25:1 on --bg-2 for the same reason (auth-error banner), raw --mascot as button/CLI text (3.11:1), and --sun being essentially unusable everywhere it's used (1.1-1.5:1 against every app background) - retired in favor of --amber. All fixed with the same pattern as the 22nd-run --accent->--accent-ink precedent: separate text-safe 'deep' tokens from fill/border tokens, and always check contrast against the ACTUAL background a token renders on (--bg-2 card surfaces, not just --paper) not just the token's own design-time tuning target. LESSON for gm-continue: when a workflow notification includes a `failures` array naming a lens that errored out, that lens's scope is unaudited work, not a null result - it belongs in the confirming PLAN pass as its own row, the same as any other unaudited surface. Kit pushed df04d69, agentgui pushed 03002cf, CI green (Test/Deploy GH Pages/Publish and Release/Auto-Declaudeify all success).
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
key: mem-3602d11d7bce9446-1057
|
|
3
|
+
ns: default
|
|
4
|
+
created: 1783677456828
|
|
5
|
+
updated: 1783677456828
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
agentgui Live History Stream Wiring (2026-05-05): site/app/js/app.js opens an SSE EventSource on navTo('history') via B.streamHistory(base, onEvent) and closes it on tab exit; state.live = {es, connected, lastEventTs, error, eventCount}. Event dispatch loop: 'hello' sets connected=true; 'event' pushes into state.events + increments the matching session counter only when data.sid===selectedSid; 'conversation' calls refreshHistory() to reload the session list; 'error' sets live.error. Renders are throttled via requestAnimationFrame to avoid an event-storm during burst loads. The FIRST request to any /v1/history/* endpoint triggers ccsniff's loadOnce(), a synchronous walk of every JSONL file under ~/.claude/projects (override via CLAUDE_PROJECTS_DIR) - in the original test env this was 299 files/80MB/69k events, a 30-90s startup latency during which health-check timeouts are normal and expected; subsequent requests are fast (cached index). The endpoints are served by ccsniff's Express router mounted in-process from server.js, no external proxy.
|
package/.gm/prd.yml
CHANGED
|
@@ -2550,3 +2550,35 @@
|
|
|
2550
2550
|
subject: FileRow native selection prop names (marked/onMark) diverge from shared selected/onToggleSelect contract
|
|
2551
2551
|
witness: design/src/components/files.js FileRow+FileCell params renamed marked/onMark->selected/onToggleSelect internally; FileGrid own marked/onMark stay as documented public compat alias (COMPONENT_API.md:112); kit build 0 lint errors; browser-witnessed checkbox select-all/individual/clear-selection + BulkBar flow at localhost:3010/gm/#tab=files, 0 console errors
|
|
2552
2552
|
status: completed
|
|
2553
|
+
- id: light-theme-contrast-audit
|
|
2554
|
+
subject: gui-ux-craft workflow hunt:light-theme-contrast lens failed (API error, connection closed mid-response) and never produced findings - light theme contrast was never actually audited this run
|
|
2555
|
+
witness: dedicated audit agent computed real WCAG contrast ratios (not eyeballed) for every light-theme token pairing, found 6 real failures (avatar text x2, tool-done status, amber on bg-2, danger on bg-2, mascot btn/cli, sun unusable) all landed as separate resolved rows; kit pushed df04d69
|
|
2556
|
+
status: completed
|
|
2557
|
+
- id: contrast-aicat-avatar-mascot
|
|
2558
|
+
subject: chat.css:2159 .chat-msg.aicat .chat-avatar initials use raw --mascot (2.03:1) on tinted bg, fails 4.5:1
|
|
2559
|
+
witness: design/app-shell.css:2163 color changed from var(--mascot) to var(--mascot-deep) (5.45:1 vs 2.03:1); kit build+lint clean, browser-witnessed data-theme=paper served CSS contains mascot-deep at that rule
|
|
2560
|
+
status: completed
|
|
2561
|
+
- id: contrast-you-avatar-accent-ink
|
|
2562
|
+
subject: chat.css:2156 .chat-msg.you .chat-avatar --accent-ink on tinted bg measures 3.65:1, short of 4.5:1
|
|
2563
|
+
witness: design/app-shell.css:2158 tint mix reduced from 26pct to 18pct (lighter bg raises contrast against fixed --accent-ink text); kit build clean
|
|
2564
|
+
status: completed
|
|
2565
|
+
- id: contrast-tool-done-success-text
|
|
2566
|
+
subject: chat.css:878 tool-done status text uses --success/--green-2 (3.18:1 paper, 2.88:1 bg-2), fails 4.5:1 for text
|
|
2567
|
+
witness: design/chat.css:878 tool-done status text color changed var(--success)->var(--green) (5.18:1 vs 3.18:1/2.88:1), fill background kept on --success for the 3:1-only non-text tint
|
|
2568
|
+
status: completed
|
|
2569
|
+
- id: contrast-amber-dash-status-bg2
|
|
2570
|
+
subject: chat.css:584,772 --amber status text on .ds-dash-card (bg-2) measures 4.26:1, narrowly fails 4.5:1 AA on the bg it actually renders on
|
|
2571
|
+
witness: 'design/colors_and_type.css:54 --amber #8A6512->#7C570F (computed 5.21:1 on --bg-2 vs prior 4.26:1), also updated print-media duplicate at app-surfaces.css:222; browser-witnessed live getComputedStyle --amber == #7C570F'
|
|
2572
|
+
status: completed
|
|
2573
|
+
- id: contrast-danger-auth-error-bg2
|
|
2574
|
+
subject: app-shell.css:4247 .ds-auth-error --danger text on --panel-1(=bg-2) measures 4.25:1, fails AA on actual render background (PASSWORD-gate login error banner)
|
|
2575
|
+
witness: design/colors_and_type.css:67 --danger oklch lightness 0.55->0.50 for AA margin on --bg-2 (was 4.25:1); browser-witnessed live getComputedStyle --danger == oklch(0.50 0.18 25)
|
|
2576
|
+
status: completed
|
|
2577
|
+
- id: contrast-mascot-btn-cli-text
|
|
2578
|
+
subject: app-shell.css:4215,4289 raw --mascot used as button/CLI text (3.11:1), fails 4.5:1; icon-only raw-mascot uses are fine (non-text 3:1)
|
|
2579
|
+
witness: design/app-shell.css:4215,4291 .ds-btn-mascot and .ds-cli-warn text color changed var(--mascot)->var(--mascot-deep) (5.45:1 vs 3.11:1); icon-only raw-mascot non-text uses left untouched per audit
|
|
2580
|
+
status: completed
|
|
2581
|
+
- id: contrast-sun-unusable-retire
|
|
2582
|
+
subject: --sun (#F5C344) measures 1.46:1 paper/1.32 bg-2/1.14 bg-3, fails even 3:1 non-text everywhere used (toast border, tree-node border, community spinner/text)
|
|
2583
|
+
witness: design/app-shell.css:3162(toast.warning border),3875(tree-node is-prd-add border) and community.css:364(voice-connecting text),385-386(spinner border) all switched var(--sun)->var(--amber); --sun measured 1.1-1.5:1 everywhere used, --amber now 5.21:1 text-safe
|
|
2584
|
+
status: completed
|
package/AGENTS.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# AgentGUI — Agent Notes
|
|
2
2
|
|
|
3
|
+
## Light-theme contrast fixes (2026-07-10) — thirty-first run, confirming pass addendum
|
|
4
|
+
|
|
5
|
+
The 31st run's `gui-ux-craft` workflow had a `failures` array naming `hunt:light-theme-contrast` as crashed (API connection error) — that lens never ran, so light theme was never actually audited despite the workflow otherwise completing. Caught during the mandatory `gm-continue` confirming pass, not the original run. A dedicated follow-up agent computed real WCAG contrast ratios (not eyeballed) and found 6 genuine failures: chat avatar initials on raw `--mascot`/`--accent-ink` over tinted backgrounds (2.03:1/3.65:1), tool-done status text on `--success`/`--green-2` (3.18:1 paper / 2.88:1 on the card bg it actually renders on), `--amber` measuring only 4.26:1 on `--bg-2` despite being tuned for 4.5+:1 on `--paper`, `--danger` the same shape (4.25:1 on `--bg-2`, the PASSWORD-gate auth-error banner), raw `--mascot` as button/CLI text (3.11:1), and `--sun` being unusable everywhere it's used (1.1-1.5:1 against every app background) — retired in favor of `--amber`. Same fix pattern as the 22nd run's `--accent`->`--accent-ink` precedent: a separate text-safe "deep"/darkened token for text, the original stays for fills/borders (3:1 threshold). **Standing rule: always check a color token's contrast against the ACTUAL background it renders on in the real DOM (e.g. a status pill's tinted card, not just the page's base `--paper`) — a token tuned and commented as "4.5+:1 on paper" can still fail AA on every card/panel surface built on top of `--bg-2`/`--bg-3`.** **gm-continue standing rule: a workflow notification's `failures` array naming a crashed lens is unaudited scope, not a null result — it goes into the confirming PLAN pass as its own row, same as any unaudited surface.** Kit pushed `df04d69`, agentgui pushed `03002cf`, all 4 CI workflows green.
|
|
6
|
+
|
|
3
7
|
## Maximal usability/negative-space/predictability sweep (2026-07-10) — thirty-first run
|
|
4
8
|
|
|
5
9
|
User asked to "max the gui usability practicality... predictable, good looking, use negative space properly" via wfgy-method-grade critique. Ran a fresh `gui-ux-craft` workflow (32 agents, 19 confirmed) plus a targeted live-browser negative-space audit agent in parallel, then landed the highest-value findings from both. Kit (`../design`): ConfirmDialog `destructive` prop was dead code (delete confirms always rendered `primary`, never `danger`) — real predictability bug, fixed + browser-witnessed the delete dialog button now carries `btn-primary danger`. Settings panels had a 56px gap between stacked Panels (32px `.panel` margin + 24px grid gap stacking) vs 24px everywhere else — zeroed the margin inside `.settings-grid`, witnessed 24px consistent. `.ds-page-header-dense-lede` and `.chat-composer-context` both hard-clipped with `nowrap`+ellipsis at <=480px with no way to recover the text — both now wrap at that breakpoint (kept desktop's single-line ellipsis). History empty-state sub-line used the misapplied `.lede` (fs-xl) style, rendering LARGER than its own title — removed the misapplied class + fixed the title's own hardcoded `1.05rem` to `var(--fs-lg)` token. Small-caps section labels (`panel-head`, `table th`) drifted from the canonical `.t-label` size (`--fs-xs` vs `--fs-tiny`) — unified. `FileRow`/`FileCell` internal selection props renamed `marked/onMark` -> `selected/onToggleSelect` to match the shared multi-select contract (FileGrid's own `marked`/`onMark` stay as its documented public alias). `ConversationList` search-mode blew away already-visible rows to a full skeleton on every debounced re-search — guarded on `!sessions.length`, matching `files.js`'s sibling pattern. App copy-tone: "sidebar" (used nowhere else) -> "the rail"; internal-jargon `agent: 'external session'` -> `'other tool'`; "session" -> "conversation" vocabulary unified across resume banner/toasts/labels; raw sid slice in resume banner replaced with a human session-title lookup (`resumeSidLabel()`), falling back to the slice only when no title is known; settings projects-folder fact gained the same copy button its sibling root rows already had. Perf: `prism-core.min.js` (a classic UMD script, not an ES module) now gets a `rel=preload as=script` hint alongside the existing `modulepreload` hints for marked/dompurify; History tab re-fetch on every entry now gated on staleness (>5s) instead of unconditional; bulk file delete/move patch `state.files.entries` locally and render immediately instead of awaiting a second full directory round-trip (backgrounded as reconciliation) — scoped to the bulk paths only, the highest-traffic case. Kit docs: README gained a "multi-agent chat shell" bullet naming the flagship `WorkspaceShell`/`AgentChat`/etc surface (previously undiscoverable from a first read), `COMPONENT_API.md` documents `FileRow`'s `move` action and scopes the `freddie.js` re-exports as demo-site-only. **A concurrent gm session was independently working the same `../design` repo this run — its commits (`df5b566`..`68b615b`) landed my kit edits before I reached CONSOLIDATE; verified via `git log`/`rev-parse HEAD==origin/main` rather than re-pushing.** Browser-witnessed every fix live at 1280px+420px on a no-PASSWORD localhost:3010 instance (settings gaps, empty-state hierarchy, danger delete button, mobile wrap, files checkbox/BulkBar flow after the prop rename): 0 console errors throughout. **Standing rule reaffirmed: `prd-resolve` witness_evidence must be distinct per row — a byte-identical witness across rows is refused by plugkit as a rubber-stamp tell; write what THAT row specifically changed, every time.**
|
|
@@ -222,21 +226,7 @@ Surfaced 2026-05-04 while validating the chat surface in `site/app/`. Fix applie
|
|
|
222
226
|
|
|
223
227
|
## Live History Stream Wiring (2026-05-05)
|
|
224
228
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
The live history feature wires the in-process ccsniff `/v1/history/stream` SSE endpoint via `B.streamHistory(base, onEvent)` on tab entry and closes the EventSource on tab exit. State shape: `state.live = { es, connected, lastEventTs, error, eventCount }`.
|
|
228
|
-
|
|
229
|
-
Event dispatch loop:
|
|
230
|
-
- `hello` event: set `connected=true`
|
|
231
|
-
- `event` event: if `data.sid === selectedSid` push into `state.events`, increment matching session counter
|
|
232
|
-
- `conversation` event: call `refreshHistory()` to reload session list
|
|
233
|
-
- `error` event: set `live.error`
|
|
234
|
-
|
|
235
|
-
Throttle renders via `requestAnimationFrame` to avoid event storm during burst loads.
|
|
236
|
-
|
|
237
|
-
**First request to `/v1/history/*` triggers loadOnce() that walks all JSONL files under ~/.claude/projects** (env default; override with `CLAUDE_PROJECTS_DIR`). In our test env: 299 files, 80MB, 69k events -> 30-90s startup latency. Health check timeouts during this window are normal and expected. Subsequent requests are fast (cached index).
|
|
238
|
-
|
|
239
|
-
The endpoints are served by ccsniff's Express router mounted in-process from `server.js`. No external proxy.
|
|
229
|
+
`site/app/js/app.js` opens an SSE EventSource on `navTo('history')` (`B.streamHistory`, `state.live` shape, hello/event/conversation/error dispatch, rAF-throttled renders) against ccsniff's in-process `/v1/history/stream`; first `/v1/history/*` request triggers a 30-90s synchronous JSONL walk (`CLAUDE_PROJECTS_DIR`) — health-check timeouts during that window are normal. Full detail in rs-learn (recall "agentgui Live History Stream Wiring").
|
|
240
230
|
|
|
241
231
|
## Runtime CDN: GUI loaded from unpkg (2026-05-29)
|
|
242
232
|
|
package/package.json
CHANGED
|
@@ -53,7 +53,10 @@
|
|
|
53
53
|
the originals (#FF5A1F / #D9A93A) which were tuned on ink and fail on
|
|
54
54
|
paper (2.9:1 / 2.0:1). */
|
|
55
55
|
--flame: #C53E00;
|
|
56
|
-
--
|
|
56
|
+
/* #8A6512 measured 4.5+:1 on --paper but only 4.26:1 on --bg-2, which the
|
|
57
|
+
dashboard card status text actually renders on - darkened for margin on
|
|
58
|
+
both backgrounds (5.21:1 on --bg-2). */
|
|
59
|
+
--amber: #7C570F;
|
|
57
60
|
--sky: #3A6EFF;
|
|
58
61
|
--warn: #E0241A;
|
|
59
62
|
/* Syntax-token aliases: light values pass 4.5:1 on paper; the dark blocks
|
|
@@ -63,7 +66,9 @@
|
|
|
63
66
|
--code-fn: #B84300;
|
|
64
67
|
--code-str-alt: var(--mascot-deep);
|
|
65
68
|
--code-num: #946300;
|
|
66
|
-
|
|
69
|
+
/* 0.55 lightness measured 4.70:1 on --paper but only 4.25:1 on --bg-2 (the
|
|
70
|
+
auth-error banner's actual background) - darkened for AA margin on both. */
|
|
71
|
+
--danger: oklch(0.50 0.18 25);
|
|
67
72
|
--success: var(--green-2);
|
|
68
73
|
--live: var(--green);
|
|
69
74
|
|
|
@@ -2661,12 +2666,12 @@
|
|
|
2661
2666
|
}
|
|
2662
2667
|
.ds-247420 .chat-msg:hover .chat-avatar { transform: scale(1.03); box-shadow: 0 1px 4px color-mix(in oklab, var(--fg) 6%, transparent); }
|
|
2663
2668
|
.ds-247420 .chat-msg.you .chat-avatar {
|
|
2664
|
-
background: color-mix(in oklab, var(--accent)
|
|
2669
|
+
background: color-mix(in oklab, var(--accent) 18%, var(--bg-3));
|
|
2665
2670
|
color: var(--accent-ink);
|
|
2666
2671
|
}
|
|
2667
2672
|
.ds-247420 .chat-msg.aicat .chat-avatar {
|
|
2668
2673
|
background: color-mix(in oklab, var(--mascot) 26%, var(--bg-2));
|
|
2669
|
-
color: var(--mascot);
|
|
2674
|
+
color: var(--mascot-deep);
|
|
2670
2675
|
}
|
|
2671
2676
|
|
|
2672
2677
|
.ds-247420 .chat-stack {
|
|
@@ -3654,7 +3659,10 @@
|
|
|
3654
3659
|
|
|
3655
3660
|
.ds-247420 .toast.error { border-color: var(--warn); }
|
|
3656
3661
|
.ds-247420 .toast.success { border-color: var(--green-2); }
|
|
3657
|
-
|
|
3662
|
+
/* --sun measures well under 3:1 against every app background (1.1-1.5:1) -
|
|
3663
|
+
a border effectively invisible in light theme; --amber is the tuned sibling
|
|
3664
|
+
warning tone already used for this exact severity elsewhere. */
|
|
3665
|
+
.ds-247420 .toast.warning { border-color: var(--amber); }
|
|
3658
3666
|
|
|
3659
3667
|
@media (max-width: 480px) {
|
|
3660
3668
|
.ds-247420 .toast {
|
|
@@ -4363,7 +4371,7 @@
|
|
|
4363
4371
|
.ds-247420 .ds-tree-node.is-phase { border-color: var(--accent); background: var(--bg-3); font-weight: 600; }
|
|
4364
4372
|
.ds-247420 .ds-tree-node.is-deviation { border-color: var(--warn); background: var(--danger-surface); color: var(--warn); }
|
|
4365
4373
|
.ds-247420 .ds-tree-node.is-mutable-resolve { border-color: var(--success); }
|
|
4366
|
-
.ds-247420 .ds-tree-node.is-prd-add { border-color: var(--
|
|
4374
|
+
.ds-247420 .ds-tree-node.is-prd-add { border-color: var(--amber); }
|
|
4367
4375
|
.ds-247420 .ds-tree-node-ts { margin-right: 8px; color: var(--fg-3); }
|
|
4368
4376
|
.ds-247420 .ds-tree-node-pills { margin-left: 6px; }
|
|
4369
4377
|
.ds-247420 .ds-tree-node-reason { margin-top: 2px; color: var(--fg-2); }
|
|
@@ -4706,7 +4714,9 @@
|
|
|
4706
4714
|
.ds-247420 .ds-toggle-btn { min-width: 78px; }
|
|
4707
4715
|
.ds-247420 .ds-toggle-label { margin-left: 8px; color: inherit; opacity: 0.7; }
|
|
4708
4716
|
.ds-247420 .ds-btn-warn { color: var(--warn); }
|
|
4709
|
-
|
|
4717
|
+
/* Raw --mascot text measures 3.11:1 on paper (fails 4.5:1); --mascot-deep is
|
|
4718
|
+
the text-safe tone, same accent/accent-ink split used everywhere else. */
|
|
4719
|
+
.ds-247420 .ds-btn-mascot { color: var(--mascot-deep); }
|
|
4710
4720
|
.ds-247420 .ds-savebar {
|
|
4711
4721
|
position: sticky; bottom: 8px; display: flex; align-items: center;
|
|
4712
4722
|
justify-content: flex-end; gap: 8px; flex-wrap: wrap; padding: 10px;
|
|
@@ -4780,7 +4790,7 @@
|
|
|
4780
4790
|
.ds-247420 .ds-cli-cmt .cmd { color: var(--fg-3); }
|
|
4781
4791
|
.ds-247420 .ds-cli-out .cmd { color: var(--fg-2); }
|
|
4782
4792
|
.ds-247420 .ds-cli-ok .prompt, .ds-247420 .ds-cli-ok .cmd { color: var(--accent-ink); }
|
|
4783
|
-
.ds-247420 .ds-cli-warn .prompt, .ds-247420 .ds-cli-warn .cmd { color: var(--mascot); }
|
|
4793
|
+
.ds-247420 .ds-cli-warn .prompt, .ds-247420 .ds-cli-warn .cmd { color: var(--mascot-deep); }
|
|
4784
4794
|
.ds-247420 .ds-cli-log .prompt { color: var(--fg-3); }
|
|
4785
4795
|
.ds-247420 .ds-cli-log .cmd { color: var(--fg-2); font-family: var(--ff-mono); }
|
|
4786
4796
|
.ds-247420 .ds-term-body { padding: 14px 18px; display: flex; flex-direction: column; gap: 4px; background: var(--bg-2); border-radius: var(--r-1); }
|
|
@@ -5169,7 +5179,9 @@
|
|
|
5169
5179
|
}
|
|
5170
5180
|
|
|
5171
5181
|
.ds-247420 .cm-channel-item.voice-connecting {
|
|
5172
|
-
|
|
5182
|
+
/* --sun measures 1.1-1.5:1 against every app background - amber is the
|
|
5183
|
+
tuned text-safe warning tone used for this severity elsewhere. */
|
|
5184
|
+
color: var(--amber);
|
|
5173
5185
|
}
|
|
5174
5186
|
|
|
5175
5187
|
.ds-247420 .cm-ch-icon {
|
|
@@ -5190,8 +5202,8 @@
|
|
|
5190
5202
|
width: 12px;
|
|
5191
5203
|
height: 12px;
|
|
5192
5204
|
border-radius: 50%;
|
|
5193
|
-
border: 2px solid color-mix(in oklab, var(--
|
|
5194
|
-
border-top-color: var(--
|
|
5205
|
+
border: 2px solid color-mix(in oklab, var(--amber) 30%, transparent);
|
|
5206
|
+
border-top-color: var(--amber);
|
|
5195
5207
|
flex-shrink: 0;
|
|
5196
5208
|
}
|
|
5197
5209
|
|
|
@@ -7327,8 +7339,11 @@
|
|
|
7327
7339
|
.ds-247420 .chat-msg .chat-tool.tool-running .chat-tool-status { color: var(--accent-ink); background: color-mix(in oklab, var(--accent) 12%, transparent); }
|
|
7328
7340
|
.ds-247420 .chat-msg .chat-tool.tool-error .chat-tool-status { color: var(--flame); background: color-mix(in oklab, var(--flame) 12%, transparent); }
|
|
7329
7341
|
/* Completed tool: a positive (success) tone so done reads distinctly from the
|
|
7330
|
-
neutral pill and from the accent-toned running pill
|
|
7331
|
-
|
|
7342
|
+
neutral pill and from the accent-toned running pill. --success/--green-2
|
|
7343
|
+
measures under 4.5:1 as TEXT on paper/bg-2 (fine at 12%-tint fill/non-text
|
|
7344
|
+
use) - --green is the text-safe deep tone, same split the accent/accent-ink
|
|
7345
|
+
pair already uses. */
|
|
7346
|
+
.ds-247420 .chat-msg .chat-tool.tool-done .chat-tool-status { color: var(--green); background: color-mix(in oklab, var(--success) 12%, transparent); }
|
|
7332
7347
|
.ds-247420 .chat-tool-body { border-top: var(--bw-hair) solid var(--rule); padding: var(--space-2) var(--space-3); display: flex; flex-direction: column; gap: var(--space-2); }
|
|
7333
7348
|
/* details' intrinsic min-content sizing: an unbroken token in the pre must not
|
|
7334
7349
|
widen the tool card past the bubble column. */
|
|
@@ -9240,7 +9255,7 @@
|
|
|
9240
9255
|
/* Re-assert the paper-tuned signal tokens so token-derived foregrounds
|
|
9241
9256
|
(status discs, error text, tool cards) print with light-theme colours
|
|
9242
9257
|
rather than the dark-theme-derived values inherited under auto-dark. */
|
|
9243
|
-
.ds-247420 { --flame:#C53E00; --amber:#
|
|
9258
|
+
.ds-247420 { --flame:#C53E00; --amber:#7C570F; --warn:#E0241A; --sky:#3A6EFF; --bg:var(--paper); --fg:var(--ink); }
|
|
9244
9259
|
.ds-247420 #app { min-height: auto; display: block; height: auto; }
|
|
9245
9260
|
.ds-247420 .skip-link, .ds-247420 .status-dot, .ds-247420 .history-actions, .ds-247420 .chat-composer { display: none !important; }
|
|
9246
9261
|
.ds-247420 .app, .ds-247420 .app-main, .ds-247420 .panel, .ds-247420 .chat, .ds-247420 .chat-thread {
|