agentgui 1.0.1025 → 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.
@@ -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/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
- **`site/app/js/app.js` opens SSE EventSource on navTo('history'); first /v1/history/* request triggers 30-90s loadOnce() synchronous walk.**
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentgui",
3
- "version": "1.0.1025",
3
+ "version": "1.0.1026",
4
4
  "description": "Multi-agent ACP client with real-time communication",
5
5
  "type": "module",
6
6
  "main": "electron/main.js",