agentgui 1.0.1113 → 1.0.1115

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.
Files changed (132) hide show
  1. package/package.json +1 -1
  2. package/.gm/browser-config.json +0 -1
  3. package/.gm/claim-audit-fired +0 -1
  4. package/.gm/disciplines/agentgui/mem-1779277005143-0-1352.json +0 -1
  5. package/.gm/disciplines/agentgui/memories/.flat-export-done +0 -0
  6. package/.gm/disciplines/agentgui/memories/mem-c07fa3b0836edbe2-1352.md +0 -8
  7. package/.gm/gm.db +0 -0
  8. package/.gm/memories/.flat-export-done +0 -1
  9. package/.gm/memories/mem-0131ff4869d86085-370.md +0 -10
  10. package/.gm/memories/mem-04049d11cb8c1661-2135.md +0 -8
  11. package/.gm/memories/mem-069ff10372ed1770-1375.md +0 -8
  12. package/.gm/memories/mem-08a4a9e050a4deff-3048.md +0 -8
  13. package/.gm/memories/mem-09597ee0df9c9224-965.md +0 -8
  14. package/.gm/memories/mem-0993d156f571b619-1059.md +0 -8
  15. package/.gm/memories/mem-0b681bf2340c8df1-3170.md +0 -8
  16. package/.gm/memories/mem-0c444abde86202f6-1681.md +0 -8
  17. package/.gm/memories/mem-0d1408fa048b9923-1159.md +0 -8
  18. package/.gm/memories/mem-0dad5d82fec829ba-887.md +0 -8
  19. package/.gm/memories/mem-10a776effb7ce3a6-935.md +0 -8
  20. package/.gm/memories/mem-10d264b4f8e66fb4-1492.md +0 -8
  21. package/.gm/memories/mem-118c35ac67541d98-2909.md +0 -8
  22. package/.gm/memories/mem-119cf70dd19aa0a5-2225.md +0 -8
  23. package/.gm/memories/mem-15a07cd761b337c4-4320.md +0 -8
  24. package/.gm/memories/mem-15c73aca528535cb-2183.md +0 -8
  25. package/.gm/memories/mem-166f52796185e0e7-1487.md +0 -8
  26. package/.gm/memories/mem-1a148cf9c3126df5-3963.md +0 -8
  27. package/.gm/memories/mem-1a459001058f618e-567.md +0 -8
  28. package/.gm/memories/mem-1af3e13f7618e668-2146.md +0 -8
  29. package/.gm/memories/mem-1fd31d6873e9c164-794.md +0 -8
  30. package/.gm/memories/mem-21f551be092fd77d-2340.md +0 -8
  31. package/.gm/memories/mem-231ff5de003f20f0-586.md +0 -8
  32. package/.gm/memories/mem-2567393d3adb03ab-347.md +0 -8
  33. package/.gm/memories/mem-27faf41cdd050c80-1261.md +0 -8
  34. package/.gm/memories/mem-28889e43e8ce64cc-3663.md +0 -8
  35. package/.gm/memories/mem-2f4fd06515abf439-2562.md +0 -8
  36. package/.gm/memories/mem-34a749430303c5f7-544.md +0 -8
  37. package/.gm/memories/mem-3602d11d7bce9446-1057.md +0 -8
  38. package/.gm/memories/mem-38b7e24dbcba2f3e-639.md +0 -8
  39. package/.gm/memories/mem-39a7cc2f887a90b1-1079.md +0 -8
  40. package/.gm/memories/mem-40d6169c8759061d-806.md +0 -8
  41. package/.gm/memories/mem-4420e6d00e5c8632-2318.md +0 -8
  42. package/.gm/memories/mem-447e5a54ddc9357a-654.md +0 -8
  43. package/.gm/memories/mem-455b3beb4afabe14-591.md +0 -8
  44. package/.gm/memories/mem-4845ee594759151c-560.md +0 -8
  45. package/.gm/memories/mem-4a1254c60b868b88-374.md +0 -8
  46. package/.gm/memories/mem-4bafafa47a0e4b6c-3237.md +0 -8
  47. package/.gm/memories/mem-4c06c45b4d31bc60-1202.md +0 -8
  48. package/.gm/memories/mem-4dfac801d0378448-3676.md +0 -8
  49. package/.gm/memories/mem-4ecd3b713e384170-122.md +0 -10
  50. package/.gm/memories/mem-51d8992a3c6f6c9c-1073.md +0 -8
  51. package/.gm/memories/mem-539eee7e8c6c10ee-2557.md +0 -8
  52. package/.gm/memories/mem-559b8b2abc4b1091-1665.md +0 -8
  53. package/.gm/memories/mem-59dd73a463e54948-871.md +0 -8
  54. package/.gm/memories/mem-5b99b882ffe1a3c2-2262.md +0 -8
  55. package/.gm/memories/mem-5feb252a5244149c-1791.md +0 -8
  56. package/.gm/memories/mem-6224f8d185797f2b-1047.md +0 -8
  57. package/.gm/memories/mem-6434ee8261a6a6a2-3126.md +0 -8
  58. package/.gm/memories/mem-66b0947b946f3437-1155.md +0 -8
  59. package/.gm/memories/mem-6bdf783a1f6be7c2-1062.md +0 -8
  60. package/.gm/memories/mem-6d49f08bebac54c9-744.md +0 -8
  61. package/.gm/memories/mem-70d96acb736af2d7-685.md +0 -8
  62. package/.gm/memories/mem-70de7d5e71fcd439-2680.md +0 -8
  63. package/.gm/memories/mem-713614f12d7029da-1577.md +0 -8
  64. package/.gm/memories/mem-720d76c88e64f6ee-1967.md +0 -8
  65. package/.gm/memories/mem-7535f34f430fc196-1340.md +0 -8
  66. package/.gm/memories/mem-861a588d2773681a-1311.md +0 -8
  67. package/.gm/memories/mem-8af7980a92e09959-891.md +0 -8
  68. package/.gm/memories/mem-8b438ef4c609b7af-401.md +0 -8
  69. package/.gm/memories/mem-8f59884039787ef3-743.md +0 -8
  70. package/.gm/memories/mem-92b199c2024ee1aa-2513.md +0 -8
  71. package/.gm/memories/mem-9329105b05b9c0f6-324.md +0 -10
  72. package/.gm/memories/mem-94f30cec3c283f97-782.md +0 -10
  73. package/.gm/memories/mem-956d4813319f65a3-1710.md +0 -8
  74. package/.gm/memories/mem-96fffbb6615e031b-1263.md +0 -8
  75. package/.gm/memories/mem-993ab31f7a10aefa-718.md +0 -8
  76. package/.gm/memories/mem-a3e440db285f655a-995.md +0 -8
  77. package/.gm/memories/mem-a52933cd6495e6f5-2624.md +0 -8
  78. package/.gm/memories/mem-a86426ac44138c96-1606.md +0 -8
  79. package/.gm/memories/mem-a95b1d49d71133ce-1007.md +0 -8
  80. package/.gm/memories/mem-a9968a186368b022-1150.md +0 -8
  81. package/.gm/memories/mem-aaeae38d8eb01809-1076.md +0 -8
  82. package/.gm/memories/mem-ade01d9c02677c55-1557.md +0 -8
  83. package/.gm/memories/mem-b06b8c85b81663e6-1250.md +0 -8
  84. package/.gm/memories/mem-b451e5e17e555202-1490.md +0 -8
  85. package/.gm/memories/mem-b64ad00dcb6f909e-937.md +0 -8
  86. package/.gm/memories/mem-b7d6018ceca55b6f-2220.md +0 -8
  87. package/.gm/memories/mem-bdf466854032cac9-1509.md +0 -8
  88. package/.gm/memories/mem-c0482039e6ab4c50-2047.md +0 -8
  89. package/.gm/memories/mem-c4aaec5c4e6f80c2-920.md +0 -8
  90. package/.gm/memories/mem-c66976ddacb4fbe8-1454.md +0 -8
  91. package/.gm/memories/mem-c7c5bc263850c332-1844.md +0 -8
  92. package/.gm/memories/mem-cda639547932c796-713.md +0 -8
  93. package/.gm/memories/mem-cdf04ff6a6a0aa6f-671.md +0 -8
  94. package/.gm/memories/mem-cf8472c84d9e04c4-1883.md +0 -8
  95. package/.gm/memories/mem-cfd4d894370c63c3-1288.md +0 -8
  96. package/.gm/memories/mem-d060480435f92eec-1146.md +0 -8
  97. package/.gm/memories/mem-d347c921b79e6d44-1099.md +0 -8
  98. package/.gm/memories/mem-d3c8ea6c861bfbb8-1457.md +0 -8
  99. package/.gm/memories/mem-d5e928c552cd87f9-214.md +0 -10
  100. package/.gm/memories/mem-d63bc3b8a0269844-406.md +0 -10
  101. package/.gm/memories/mem-d9c19257abc2fa5e-1061.md +0 -8
  102. package/.gm/memories/mem-d9f26358a7cd3bb8-866.md +0 -8
  103. package/.gm/memories/mem-da1c91acf63d81d3-863.md +0 -8
  104. package/.gm/memories/mem-dc1ac3b04d22317e-664.md +0 -8
  105. package/.gm/memories/mem-dceeae20bc56d407-711.md +0 -8
  106. package/.gm/memories/mem-dd98b21c0896dc04-1557.md +0 -8
  107. package/.gm/memories/mem-df74674eec7745ac-178.md +0 -10
  108. package/.gm/memories/mem-dfe3b466fd5d1199-802.md +0 -8
  109. package/.gm/memories/mem-e0f9286aed2d5a06-1116.md +0 -8
  110. package/.gm/memories/mem-e1950b064099b7be-1895.md +0 -8
  111. package/.gm/memories/mem-e1d5431ae2542872-961.md +0 -8
  112. package/.gm/memories/mem-e490a181de6469fc-487.md +0 -8
  113. package/.gm/memories/mem-e72c6efbb27326fb-392.md +0 -8
  114. package/.gm/memories/mem-e943b58115a02b4c-593.md +0 -8
  115. package/.gm/memories/mem-e9bc5f9ed6edbcf7-1580.md +0 -8
  116. package/.gm/memories/mem-eae1e383927854fb-2649.md +0 -8
  117. package/.gm/memories/mem-ebbe6c0694c526f0-1392.md +0 -8
  118. package/.gm/memories/mem-ebf85becc23410b0-1633.md +0 -8
  119. package/.gm/memories/mem-ee0596fa17c7102e-362.md +0 -10
  120. package/.gm/memories/mem-ee4450fbc311b583-1361.md +0 -8
  121. package/.gm/memories/mem-ee8858162518f144-1252.md +0 -8
  122. package/.gm/memories/mem-f3297e82df622649-1166.md +0 -8
  123. package/.gm/memories/mem-f3f317c083d979ee-1210.md +0 -8
  124. package/.gm/memories/mem-f714a86465fba158-2041.md +0 -8
  125. package/.gm/memories/mem-f786bc1626d92845-204.md +0 -10
  126. package/.gm/memories/mem-f9f0dc8895b21e18-1217.md +0 -8
  127. package/.gm/memories/mem-fb3b2a7395800041-525.md +0 -8
  128. package/.gm/memories/mem-fc5753f92ee7d654-966.md +0 -8
  129. package/.gm/memories/mem-fe3faa1652f07239-480.md +0 -8
  130. package/.gm/memories/mem-ff8669e527e5c427-2788.md +0 -8
  131. package/.gm/mutables.yml +0 -45
  132. package/.gm/prd.yml +0 -3219
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-559b8b2abc4b1091-1665
3
- ns: default
4
- created: 1781946705210
5
- updated: 1781946705210
6
- ---
7
-
8
- agentgui 20th run iteration 2 (2026-06-20): verification iteration, NO code change warranted. Booted fresh server PORT=3009: clean (0 FATAL, iteration-1 ACP fix holds), 46/46 tests, 0 TODO/FIXME/HACK, 0 decorative glyphs. INVESTIGATED startup-log oddity: [discoverAgents] 'Adding CLI wrapper for cli-opencode/...' then final list shows cli-* found:false even though opencode/gemini/kilo ARE installed. ROOT: lib/agent-discovery.js discoverAgents() replaces each found ACP agent with a CLI_WRAPPER object carrying NO path so found:!!a.path=false (line 142-143 wrappedAcpIds filter). BUT that is a SEPARATE internal subsystem (discoveredAgents, used by descriptors/process-message.js:35/server-startup acpPort map). The CLIENT picker uses the canonical registry (lib/claude-runner-agents.js, ids opencode/gemini/kilo/codex real commands); agents.list (ws-handlers-util.js:45) returns registry.list() with available:registry.isAvailable(id) running 'which command'. WITNESSED via WS probe (msg {m,r,p}; resp {r,d:{agents}}): client availability CORRECT - opencode:true gemini:true kilo:true codex:false agy/goose:false. NO user-facing bug. Dual agent-registry (agent-discovery cli-wrapper/discoveredAgents vs claude-runner-agents registry, id schemes opencode vs cli-opencode) is a real SMELL + likely partially-dead (process-message cli-wrapper branch never matches client-sent registry ids), but consolidation needs deliberate consumer tracing+testing, unsafe blind autonomous removal. For a future deliberate run. Env: pkill -f server.js self-matches shell (exit 144) - kill explicit pid via /proc/PID/cmdline guard; WS probe needs {m,r,p} keyed by r with d.agents.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-59dd73a463e54948-871
3
- ns: default
4
- created: 1780040264818
5
- updated: 1780040264818
6
- ---
7
-
8
- agentgui agy/Antigravity agent: agy.exe (Go CLI, v1.0.x) at ~/AppData/Local/agy/bin/agy.exe is a DIRECT-protocol agent (NOT acp). Correct invocation: agy --print "<prompt>" --dangerously-skip-permissions [--continue]. CRITICAL: --print is a VALUE flag (prompt is its argument); a POSITIONAL prompt exits code 2. agy emits PLAIN TEXT not stream-json and prints no session_id (resume via --continue only, no per-id resume). It needs an authenticated Antigravity session (G1 credits/quota); WITHOUT auth it exits 0 with EMPTY output (or hangs to --print-timeout 5m default). agentgui wires it in lib/agent-discovery.js BINARIES (protocol cli), lib/claude-runner-agents.js registry (protocol direct, parseOutput wraps each line into {type:assistant,message:{content:[{type:text,text}]}}), lib/agent-descriptors.js. agy changelog works without auth (good binary-health probe).
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-5b99b882ffe1a3c2-2262
3
- ns: default
4
- created: 1783683346727
5
- updated: 1783683346727
6
- ---
7
-
8
- {"key":"agentgui-31st-run-maximal-usability-sweep","value":"agentgui 31st run (2026-07-10): user asked to max gui usability/practicality/predictable/negative-space via wfgy-method critique. gui-ux-craft workflow (32 agents, 19 confirmed) + targeted live-browser negative-space audit agent in parallel. Kit: ConfirmDialog destructive prop was dead code (delete confirms always primary, never danger) - fixed + browser-witnessed btn-primary danger. Settings panels had 56px gap (32px .panel margin + 24px grid gap) vs 24px elsewhere - zeroed margin in .settings-grid. .ds-page-header-dense-lede and .chat-composer-context hard-clipped nowrap+ellipsis at <=480px - now wrap at that breakpoint. History empty-state sub-line used misapplied .lede (fs-xl), rendering larger than its own title - removed misapplied class + fixed title's hardcoded 1.05rem to var(--fs-lg). Small-caps section labels (panel-head, table th) drifted from canonical .t-label size - unified. FileRow/FileCell internal selection props renamed marked/onMark -> selected/onToggleSelect (FileGrid's own marked/onMark stay as documented public alias). ConversationList search-mode blew away visible rows to full skeleton on every debounced re-search - guarded on !sessions.length. App copy-tone: sidebar->the rail, external session->other tool, session->conversation vocabulary unified, raw sid slice in resume banner replaced with resumeSidLabel() human lookup, settings projects-folder fact gained copy button. Perf: prism-core.min.js rel=preload as=script hint, History tab re-fetch gated on staleness (>5s), bulk file delete/move patch state.files.entries locally + render immediately (backgrounded reconciliation). Kit docs: README multi-agent chat shell bullet, COMPONENT_API.md documents FileRow move action + freddie.js demo-site-only scope. A concurrent gm session independently worked the same ../design repo this run - its commits (df5b566..68b615b) landed kit edits before reaching CONSOLIDATE, verified via git log/rev-parse rather than re-pushing. Browser-witnessed every fix at 1280px+420px on no-PASSWORD localhost:3010: 0 console errors. Standing rule: prd-resolve witness_evidence must be distinct per row - byte-identical witness across rows is refused as a rubber-stamp tell."}
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-5feb252a5244149c-1791
3
- ns: default
4
- created: 1784294077108
5
- updated: 1784294077108
6
- ---
7
-
8
- agentgui 45th run (2026-07-17): third docstudio design-cue pass. Fresh Explore-agent survey (told what 43rd/44th runs already shipped) found 5 new gaps, all implemented in the design kit: ChatComposer/AgentChat streamingSince prop -> role=status tabular-nums elapsed counter next to stop control while streaming (docstudio chat-input.js:71-96), self-ticking via interval keyed off passed timestamp; Enter-to-send gated behind module-cached matchMedia('(pointer:coarse)') check (docstudio chat-input.js:116-125), coarse-pointer shows 'Tap Send to send'; CountdownDialog({title,message,seconds,onExpire,actions}) added to files-modals.js (docstudio google-reconnect.js:41-75 sign-out countdown) - composes over the same Modal()/Backdrop() shell ConfirmDialog/PromptDialog already use there, NOT editor-primitives.js's Dialog (deviation from initial spec once actual pattern traced); PermissionMenu({categories,approved,onToggle,onToggleAll}) added to overlay-primitives.js (docstudio tool-approval-panel.js roving-tabindex menuitemcheckbox list), mirrors Dropdown's open/close/outside-click wiring; ChatComposer detectAttachment(text)=>{type,label,id}|null prop renders dismissible .chat-composer-detected-badge above textarea (docstudio chat-input.js:49-62 pasted-URL sniff), imperative DOM matching flashComposerNote's style. Implementation delegated to a background worktree agent. bun test.js 38/38 pass, node scripts/build.mjs 0 lint errors. Concurrent upstream v0.0.344/v0.0.345 (RTL applyDirection/getDirection) landed mid-pass - rebased clean, dist rebuilt fresh. Kit pushed 5c0571e->1d46202. agentgui re-vendored, browser-witnessed live localhost:3009/gm/ (bodyLen:19739, hasAgentgui:true, 0 pageErrors), grep-confirmed all 5 feature strings present in re-vendored bundle before push.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-6224f8d185797f2b-1047
3
- ns: default
4
- created: 1781863050878
5
- updated: 1781863050878
6
- ---
7
-
8
- agentgui 18th run (2026-06-19): 18th-run GUI quality sweep. gui-audit wf_7cd243d2-753 (53 agents, 29 confirmed). Applied: app.js - thinking branch in sendChat loop, saveBackend deep health probe, aria-live guard (lastAnnouncedStatus), history sidebar close WorkspaceShell fix, O(1) SSE dedupe Set, sessionDuration reduce, tool_use rail flame (purple=subagent), ACP vocabulary connected/connecting/disconnected, ACP unhealthy rail flame, skip-link in index.html. kit - showWorkingTail status=running (was done/error), focus ring 2px outline-offset, ws-sessions-toggle aria-expanded dynamic, DOMPurify version-pinned (no ESM SRI), FORCE_BODY on sanitize, 360px buttons fill, agentcwd-btn 44px coarse. lib/http-handler.js - CORS credentials guard, token masking in logs. Also applied pre-workflow: history tool_result (result)/(tool call) prefix, multi-turn preamble for non-resume agents. validate-mutations 29/29; test.js 10/0. deferred: resume-transcript-load (#3), ACP force-restart (#4). Commits: 817c64a, b8d2eab, d41fab5, 8427afc; kit a16120c.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-6434ee8261a6a6a2-3126
3
- ns: default
4
- created: 1784285790686
5
- updated: 1784285790686
6
- ---
7
-
8
- {"key":"agentgui-43rd-run-docstudio-design-cue-pass","value":"agentgui 43rd run (2026-07-17): user repeated the docstudio design-cue directive more emphatically after the 42nd run's conclusion (docstudio less mature) was pushed back on. Dispatched a deep opus research agent (full file reads + a locally-served docstudio static render via python3 http.server since docstudio's real chat UI is gated behind Google OAuth the agent couldn't bypass) which again concluded the kit was more mature architecturally (docstudio: wholesale Gemini design copy, 359 inline styles, one contrast comment total vs the kit's 3-tier token system, 4 themes, near-universal WCAG documentation). User then provided two REAL screenshots of docstudio's actual authenticated chat UI the agent had no way to see: a split-pane PDF/document viewer live beside the chat with page nav, inline highlighted data chips in structured responses, a dense real-conversation thread list, and a genuinely dense sortable admin data-table (role-badge chips, destructive-red reserved for delete only). KEY LESSON: when a human says 'look at the actual screenshots,' the screenshots are ground truth over even a thorough source-only comparison - visual/UX claims must be checked against rendered pixels. Re-examined both screenshots pixel-by-pixel including live CSSOM tracing to test my own 'color overload' hypothesis (traced the acid-lime accent appearing on: primary New-chat CTA, active-nav-state, and file-row directory borders - confirmed via a live mixed dir/image directory listing that non-dir file types get non-accent colors, i.e. NOT overload, a deliberate per-type color-coding system I'd misread from an all-folders screenshot). Concluded: 2 genuine gaps (no inline split-pane content viewer for chat; Table had no sort support) implemented; other candidates (color usage, thread-list density) re-investigated and found already-correct deliberate decisions. Kit changes: AgentChat gained optional sidePanel/sidePanelTitle/onCloseSidePanel (renders host content vnode in the existing SplitPanel primitive beside the thread, resizable, stacks vertical under 900px, byte-identical when omitted); Table gained opt-in sortable/sortKey/sortDir/onSort (real aria-sort header buttons, chevron indicator via a new chevron-up icon, restrained color: neutral at rest, accent only on active sort). User also clarified scope mid-run: improve the WHOLE kit, not just agentgui-consumed pieces - confirmed via src/components.js barrel that Table/SplitPanel/Badge were already generic exports before extending, so both additions are reusable kit capabilities, not agentgui-specific wiring. bun test.js all pass (including the pre-existing Table byte-identical contract test), node scripts/build.mjs 0 lint errors (glyph lint confirmed the sort indicator used a real Icon(), not a raw arrow glyph). Kit pushed 3a72aeb (clean, no rebase conflict), agentgui pushed 254eb74 then 89121d5 (AGENTS.md), all CI green both repos. Browser-witnessed the default no-sidePanel AgentChat path unaffected on buildesk (bodyLen:1304 matches pre-change baseline exactly, 0 pageErrors)."}
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-66b0947b946f3437-1155
3
- ns: default
4
- created: 1781191150589
5
- updated: 1781191150589
6
- ---
7
-
8
- agentgui 11th run (2026-06-11, linux env): kit lives at ../design = /config/workspace/design (same repo as c:\dev\anentrypoint-design). Landed: FileGrid multi-select (marked Set keyed by path, shift-range via onMark({range}), tri-state select-all over SHOWN rows, Ctrl+A) + BulkBar export + density list/compact/thumb (FileCell tiles; thumbUrl MUST be downloadUrl not imageUrl - /api/image has a narrower allowlist and 403s repo files; img ignores attachment disposition). CRITICAL fix: PASSWORD-gated deploys could never boot the SPA (static assets 401; index 200) - http-handler now sets/accepts an HttpOnly SameSite=Lax agentgui_token cookie. Shipped-jank fixes: .ds-file-open had zero CSS since run 5 (row now flex + button reset); filesMain dropped permissions from entries (EACCES UI dead); Crumb narrow collapse keyed on .app @container that does not exist under WorkspaceShell (crumb overflowed 420px - mirrored into ws 900px media block); webjsx attr diff leaves null-valued attrs unset when toggling (always set data-* concretely). validate-mutations.mjs made portable (ROOT env/cwd, posix targets, Bearer auth; csrf expects 401 gated/403 open).
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-6bdf783a1f6be7c2-1062
3
- ns: default
4
- created: 1781197688031
5
- updated: 1781197688031
6
- ---
7
-
8
- agentgui GUI audit pass (2026-06-04, structured chat run) details: app.js sendChat emits structured parts - toolPart() builds {kind:'tool',name,label,args,status,_id} and applyToolResult() matches tool_result back to tool_use by id; kit AgentChat passes {kind,...} parts straight to ChatMessage.renderPart (bare strings wrapped as text) so collapsible ToolCallNode renders. Multi-turn resume: chat.sendMessage is one-shot (ephemeral chat- id per call); claude real session id arrives as parsed.session_id; ws-handlers-util onEvent broadcasts streaming_session{claudeSessionId} once; backend.js yields {type:'session'}; app captures into state.chat.resumeSid (claude-code only) so next turn --resumes. Streaming render is rAF-coalesced (scheduleStreamRender). Kit AppShell main#app-main has tabindex=-1 so the skip-link moves focus. /api/image confined to allowlist roots (the .. check was a no-op after path.normalize); CORS no wildcard when PASSWORD set. History: eventsLimit default 300 + load-older; search hits carry focusEventI/focusEventTs -> scroll+flash.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-6d49f08bebac54c9-744
3
- ns: default
4
- created: 1784300719472
5
- updated: 1784300719472
6
- ---
7
-
8
- agentgui-45th-run-docstudio-full-detail: third docstudio design-cue pass. Fresh Explore-agent survey (told what 43rd/44th runs already shipped) found 5 new gaps, all implemented: ChatComposer/AgentChat streamingSince prop (role=status tabular-nums elapsed counter while streaming); Enter-to-send gated behind matchMedia('(pointer:coarse)'); CountdownDialog primitive in files-modals.js; PermissionMenu roving-tabindex menuitemcheckbox list in overlay-primitives.js; ChatComposer detectAttachment pasted-URL sniff badge. bun test.js 38/38 pass, 0 lint errors. Rebased cleanly onto concurrent v0.0.344/v0.0.345 (RTL support). Kit pushed 5c0571e->1d46202, agentgui re-vendored+pushed, browser-witnessed bodyLen:19739 hasAgentgui:true 0 pageErrors.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-70d96acb736af2d7-685
3
- ns: default
4
- created: 1781197681553
5
- updated: 1781197681553
6
- ---
7
-
8
- agentgui GM plugin autonomy blocker (recorded 2026-05): the gm plugin pre-tool-use-hook enforces a 'must invoke gm:gm first' gate via .gm/needs-gm marker, fragmenting multi-tool autonomy. A bypass patch in c:/dev/gm gm-starter/hooks (commit e300acf7) did NOT propagate after /plugin update gm because hook content is TEMPLATED from elsewhere in the gm codebase (likely lib/cli-adapter.js, platforms/cli-config-shared.js, or lib/template-builder.js), not sourced from gm-starter/hooks/ files. To fix for real: locate the generator, patch it to unlink needs-gm when .gm/prd.yml exists, rebuild via node c:/dev/gm/cli.js c:/dev/gm/gm-starter c:/dev/gm/build, push, then /plugin update gm.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-70de7d5e71fcd439-2680
3
- ns: default
4
- created: 1780670024421
5
- updated: 1780670024421
6
- ---
7
-
8
- agentgui GUI predictability+polish sweep (2026-06-05, 5th max-effort run) CLOSED. workflow wf_980345e1-201 (65 agents -> 44 adversarially-confirmed gaps, PUNCHLIST-POLISH.md). New workflow .claude/workflows/gui-predictability-polish.js. PUSHED: agentgui b72efef, kit anentrypoint-design e8e13a0. KIT (rebuilt+vendored): files.js FileGrid sort{key,dir,onSort}+FileSortHeader(ASCII asc/desc)+filter+loading->FileSkeleton+keyboard role=listbox roving focus Arrow/Home/End/Backspace->onUp, exports FileSkeleton/sortFiles(dirs-first); sessions.js SessionCard .ds-dash-status words+disc (WCAG was colour-only)+lastActivity/currentTool .ds-dash-activity, SessionDashboard onStopAll .ds-dash-header bulk; chat.js ChatMessage streaming->.chat-stream-caret + actions[]->.chat-msg-actions; agent-chat.js .agentchat-thread-wrap+.agentchat-jump scroll-anchored jump-to-latest + onCopy/Retry/EditMessage; context-pane.js usage prop->last-turn panel (tokens/cost/turns/duration, was dropped result event); shell.js LOAD-BEARING mobile fix - <900px sessions/pane drawers were DEAD (.ws-sessions-open/.ws-pane-open never toggled,no scrim): added toggleWsDrawer/closeWsDrawers+.ws-scrim+crumb drawer toggles+Esc-close+auto-close-on-select, pane mobile reveal keys off .ws-pane-open not :not(.ws-pane-collapsed), rail/pane toggle aria flip expand/collapse; chat.css .ds-session-group/-rows/sticky-label + new/search 44px. APP app.js: sessionGroups() Running-pin+Today/Yesterday/This-week/Earlier->kit groups; chat-tab search shows hits in rail BOTH tabs (was dead); liveMain per-session metrics/last-activity/currentTool from sessionsBySid + stopAllActive + startLiveTick() 1s; filesMain sort/filter/skeleton/rootsRow-picker/always-toolbar/keyboard, initial loadDir+preview-fetch moved OUT of render (navTo effect+microtask) render pure; sendChat captures result.usage->state.chat.usage; copyMessageText/retryLastTurn/editAndResend; refreshActive activeSig() change-diff so 3s poll re-renders only on change. SECURITY lib/http-handler.js confineToRoots() fs.realpathSync re-check on /api/list,/api/file,/api/image - symlink-inside-root escaping root now fails closed. WITNESSED localhost:3000/gm 0 console errors: groups[Today,Earlier], files sort size-asc/filter-narrows/keyboard-focus-moves grid role=listbox, pane reflow chat=4cols files/live/settings=2cols(ws-no-pane) history=3cols no h-scroll, 420px mobile drawer opens+scrim+no-hscroll, glyph sweep count:0. SCOPED-OUT (not gaps): inline split-pane preview (modal kept) + persistent suggestions (empty-only). Build flow: edit kit->node scripts/build.mjs->copy dist/247420.{js,css} into site/app/vendor/anentrypoint-design/->witness->push kit.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-713614f12d7029da-1577
3
- ns: default
4
- created: 1781943682617
5
- updated: 1781943682617
6
- ---
7
-
8
- agentgui 20th run (2026-06-20): destructive quality run, real-input discovery via live server boot. FOUND + FIXED two robustness bugs. (1) lib/plugins/acp-plugin.js was a SECOND redundant ACP manager: eager-spawned all 4 ACP tools at boot on conflicting/mismatched ports (gemini=18101/kilo=18102/codex=18103 vs canonical acp-sdk-manager opencode=18100/kilo=18101/codex=18102), no real restart/health logic despite /api/acp/status route promising restarts, and CRASHED boot with '[FATAL] Uncaught exception: Executable not found in $PATH: codex' on any missing ACP binary. Its route consumed by nobody (client acpStatusFor reads state.health.acp from getACPStatus -> acp-sdk-manager); no plugin declared 'acp' dep; exports nothing. DELETED the file. Rule: ACP lifecycle lives ONLY in lib/acp-sdk-manager.js. (2) spawn() of a missing binary emits ENOENT as an ASYNC 'error' event under Bun (escapes synchronous try/catch) -> uncaught exception kills server. acp-sdk-manager.js startProcess was the only spawn callsite missing proc.on('error') (terminal.js/claude-runner-direct.js/gm-agent-configs.js/claude-runner-acp.js all had it); added proc.on('error') routing to CRASHED+scheduleRestart. Witnessed: clean boot 0 FATAL, [PLUGINS] Loaded extensions drops acp, /api/acp/status 404, tests 46/46 (27 unit + 19 integration), browser localhost:3009/gm/?token 0 console errors hScroll 0. Env note: gm browser verb chromium needs /etc/chromium.d/no-sandbox (write via sudo here); pkill -f 'server.js' self-matches the shell (exit 144) - kill by explicit pid instead. Pushed agentgui.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-720d76c88e64f6ee-1967
3
- ns: default
4
- created: 1780600280455
5
- updated: 1780600280455
6
- ---
7
-
8
- agentgui GUI audit (2026-06-04, workflow wvf3xfw7x): gui-audit fan-out ran 64 agents -> 44 adversarially-confirmed findings, punch-list at AUDIT-PUNCHLIST.md (38 deduped items). BATCH 1 LANDED+COMMITTED (cf710c6): server lib/http-handler.js (/api/image dropped os.homedir from allowRoots + 403 non-image ext no octet-stream; always Referrer-Policy:no-referrer + CSP self+unpkg/jsdelivr; lib/ws-handlers-util.js cwd statSync validate before spawn) and app site/app/js/app.js (SSE unwrap data.payload||data - ccsniff store.js:130 emits {sid,payload:fl}; dedupe events by .i; sessionsBySid Map; scrollChatToBottom->.agentchat-thread cached; resumeSid cleared on non-claude-code switch + banner/status/forward gated; normalizeBackend origin; clearLocalData reload; status 'connected' not 'live'; 'running healthy'; db online/offline/unknown; agentsPanel rail green/flame). Browser-witnessed live (session 9): boots, 'connected', no '...' literal, 0 glyphs, 0 errors. chat-interleave-parts + chat-orphan-toolresult APP side already done in prior session (appendText coalesces ordered parts; applyToolResult byId||running fallback) - KIT half (agent-chat.js drop forced m.content prepend, render parts in order) still pending. REMAINING = KIT batch in c:/dev/anentrypoint-design: chat.js MdNode O(n^2) streaming md (render inline text while streaming, md on settle); chat.css responsive @media .agentchat-controls/.agentchat-cwd-text + cwd max-width min(60ch,60vw) + .agentchat-cwd-btn :focus-visible; delete dead .chat-controls/.cwd-bar in index.html; content.js EventList Row expanded->aria-expanded; agent-chat.js Select label + head sub-line from status prop; 247420.css touch targets 44x44; CodeNode cache key full code; os/app-panes.css box-drawing-> ---; then node scripts/build.mjs, copy dist/247420.{js,css} to site/app/vendor/anentrypoint-design/, browser-witness, publish to npm->unpkg. Also sec-marked-dompurify-vendor (vendor markdown stack + script-src self).
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-7535f34f430fc196-1340
3
- ns: default
4
- created: 1782994678180
5
- updated: 1782994678180
6
- ---
7
-
8
- agentgui 21st run (2026-07-02): GUI cohesion sweep. gui-cohesion workflow wf_6b9f1890-320 (25 agents, 12 confirmed). Kit (../design): WorkspaceRail rail-tone attention flag on nav items, WorkspaceShell keepSessionsTrack (sessions column no longer removed/reflowed on files/live/settings, mirrors pane keepPaneTrack), mobile drawer Tab focus-trap (exported trapTab from overlay-primitives.js), ConversationList richer status prop (error/stale/running/stopping) for the Running rail group, ContextPane recentFiles panel. Also committed inherited dirty 19th/20th-run kit work (agent-chat/chat/files-modals/files a11y fixes). App: computeLiveSessions() single source of truth for WorkspaceRail badge+tone and liveMain (fixed nav-badge undercounting external sessions), sessions rail now renders on Live tab, follow-up chip 'Open X in files'->'Explain X' (label matched actual sendChat behavior), recentSessionFiles() from tool-call file_path args, 'disconnected'->'offline' vocab fix (2 sites), refreshActive() visibility-gated polling. Server: /health corsWildcardOpen + settings error banner (was console-only). Kit pushed 6cfd115 (rebased onto concurrent fe50db5, regenerated dist rather than hand-merging minified bundle conflict). agentgui pushed 3410178 then 44a9e2c (docs). Both CI green, 28/28 tests, browser-witnessed 0 console errors.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-861a588d2773681a-1311
3
- ns: default
4
- created: 1782999839466
5
- updated: 1782999839466
6
- ---
7
-
8
- agentgui 24th run (2026-07-02): GUI completion sweep. gui-completion workflow wf_4a731841-832 (33 agents, 17 confirmed). Landed 5: Live-tab dashboard state (sort/filter/errors-only) round-trips through URL hash (lsort/lfilter/lerr) and localStorage - previously lv.filter wasn't persisted at all. Shortcuts overlay wraps content in kit's existing FocusTrap component instead of bare role=dialog div (Tab could escape). History event rows expose copy even collapsed. Settings agents panel gives not-installed direct-runner agents a re-check button. Caught a real bug: adding a CSRF regression test for the upload-PUT route, first draft included Authorization header matching the file's other test patterns but testing the wrong scenario (stolen-token not real CSRF), passed trivially at 200. Corrected to omit auth (real attacker capability); server's guard correctly rejects it. LESSON for gm-method: any CSRF/auth regression test must match the real attacker's capability set exactly - copying a nearby test's header pattern can silently test the wrong threat model and give false confidence. 12 findings deferred as their own re-scoped row (mid-thread retry/fork, file-move UX, event permalinks, context-size indicator). No kit changes. Pushed d3e2d1e, 28/28 tests, 17/17 validate-mutations, 0 console errors.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-8af7980a92e09959-891
3
- ns: default
4
- created: 1784278284245
5
- updated: 1784278284245
6
- ---
7
-
8
- {"key":"agentgui-37th-run-punchlist-cleanup-detail","value":"agentgui 37th-run confirming pass (2026-07-12): removed the 10 standing PUNCHLIST-*.md files (COHESION/COMPLETION/DENSITY/DESIGN/DESIGN-14/DESIGN-15/LOGIC/PARITY/POLISH/UX, ~440KB) plus AUDIT-PUNCHLIST.md (found in a follow-up confirming pass) - all their findings had already landed and merged in earlier commits, and their content duplicated what AGENTS.md already recorded in denser, current form, violating the project's own Documentation Policy (history belongs in git log/CHANGELOG, never a standing doc). Four .claude/workflows/*.js scripts (gui-logic-predictability.js, gui-completion.js, gui-claude-code-parity.js, gui-screen-realestate.js) referenced the punch-list filenames by name in agent prompts as the 'don't re-report already-fixed findings' grounding source - all four were updated to point at AGENTS.md alone."}
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-8b438ef4c609b7af-401
3
- ns: default
4
- created: 1779974532856
5
- updated: 1779974532856
6
- ---
7
-
8
- agentgui server: default PORT is 3000 (server.js:61) and the app is served under BASE_URL /gm/ — so the live app is http://localhost:3000/gm/ NOT :3056. /health and / (200) are at root; the SPA is under /gm/. AGENTS.md's '3056' is stale. First request to /gm/ or /v1/history/* triggers a 30-90s ccsniff JSONL walk so curl with short timeout returns 000 during warmup — wait or use long --max-time.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-8f59884039787ef3-743
3
- ns: default
4
- created: 1780592686732
5
- updated: 1780592686732
6
- ---
7
-
8
- agentgui live validation target: https://buildesk.acc.l-inc.co.za/gm — nginx basic-auth user 'abc' password '123,slam,123,slam' (also satisfies the app's own PASSWORD gate). App listens PORT=9897 BASE_URL=/gm behind nginx (proxy_pass 127.0.0.1:9897). For the gm browser verb, use the DEFAULT session (NOT 'session new <name>' which uses an extension bridge that cannot reach external HTTPS) and set page.setExtraHTTPHeaders Authorization Basic (embedding creds in the URL breaks the app's fetch('/health') with 'URL that includes credentials'). Static site/app edits go live immediately (etag-keyed asset cache, no restart). Playwright reuses page across goto so clearCookies/about:blank to defeat session caching when verifying fresh edits.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-92b199c2024ee1aa-2513
3
- ns: default
4
- created: 1781261774335
5
- updated: 1781261774335
6
- ---
7
-
8
- agentgui GUI screen-real-estate + density sweep (2026-06-12, 11th run) CLOSED. workflow .claude/workflows/gui-screen-realestate.js (6 density lenses; 50 agents -> 17 gaps, PUNCHLIST-DENSITY.md). PUSHED kit anentrypoint-design 97dc646 + agentgui e7d01cf. KIT: fluid shell columns (--ws-rail-w/sessions-w/pane-w clamp() replacing fixed 232/296/320 ~848px chrome); shell.js keyboard+pointer .ws-resizer separators (role=separator, ArrowLeft/Right 16px + pointer-drag write clamped inline --ws-<col>-w persisted ds.ws.w.<col>, seeded on mount via ref seedWsWidths); desktop sessions-collapse .ws-sessions-toggle (toggleWs extended sessions->ws-sessions-collapsed, .ws-desktop-toggle CSS inverse of mobile drawer-toggle); .btn --r-pill->--r-1 (8/14 pad 32 min-h, 44 coarse floor); .app-status thin 26px strip (--app-status-h:26 + single-line ellipsis); .chat-msg-flat centered max-width:var(--measure) margin-inline:auto + density-scaled padding via --density token; ultrawide 84ch measure @1600; .ds-dash-grid denser minmax 240 + 220 tier @1500. CONCURRENT-WRITER RECONCILIATION (load-bearing): kit anentrypoint-design has an active concurrent writer, origin/main advances mid-run; a parallel writer shipped Files multi-select + density-thumbnail on main while this run built the same - DROPPED mine, adopted theirs, adapted agentgui app.js to THEIR contract: FileGrid {selectable, selected:Set keyed path||name, onToggleSelect(file,{range}), onSelectAll(keys), onClearSelection, density:list|compact|thumb, onDensity, thumbUrl} + render kit BulkBar {count,noun,actions:[{label,onClick,danger}],onClear}. Drag-to-move NOT in concurrent kit -> deferred; move capability via confined server POST /api/move-confined (mirrors /api/rename guard: confineToRoots both, refuse allow-root src, 409 exists, EACCES/EPERM->403 ENOENT->404, global CSRF) + backend.moveConfined + BulkBar move… prompt. validate-mutations +7 move checks (25 pass). F3 elevation already done by concurrent writer (.panel flat hairline --rule) - skipped. Kit now has 4 build lints: lint-tokens/glyphs/null-children/classes. GOTCHAS: port 3000 owned by another app -> witness PORT=3009; vendored CSS URL stable so browser caches stale bundle across rebuilds - use CDP Network.setCacheDisabled in witness; AGENTS.md gets @.gm/next-step.md re-injected by the gm watcher - strip before committing. Witnessed 0 errors chat/files, btn 10px, status 26px, 3 resizers, sessions toggle, fluid rail 256@1600, checkboxes+density+select-all+BulkBar, no h-scroll.
@@ -1,10 +0,0 @@
1
- ---
2
- key: mem-9329105b05b9c0f6-324
3
- ns: default
4
- created: 1781775260292
5
- updated: 1781775260292
6
- ---
7
-
8
- ## Resolved mutable: kit-css-host-file
9
-
10
- /config/workspace/design/scripts/build.mjs:51-59 CSS_FILES list bundles app-shell.css/chat.css/community.css etc scoped under .ds-247420; new file added there. Server not running: ps aux has no bun/node server proc and no listener on :3009 - start PORT=3009 bun server.js for witness.
@@ -1,10 +0,0 @@
1
- ---
2
- key: mem-94f30cec3c283f97-782
3
- ns: default
4
- created: 1781783796659
5
- updated: 1781783796659
6
- ---
7
-
8
- ## Resolved mutable: kit-base-reset-exists
9
-
10
- Kit owns the margin reset (app-shell.css:11 'html, body { margin:0; padding:0 }' + app-surfaces.css:26 '.ds-247420, .ds-247420 body { margin:0; height:100% }') and tokens (colors_and_type.css:15 --paper #F6F5F1, :18 --ink #131318, :58 --bg:var(--paper), :61 --fg:var(--ink)). But grep finds NO rule painting the body surface (no 'body{background/color/font-family}' anywhere in root css). So theme.mjs cannot simply drop its inline reset - the kit must FIRST gain a canonical '.ds-247420 body { background:var(--bg); color:var(--fg); font-family:var(--ff-body) }' base-surface rule, and theme.mjs must add a render-blocking kit CSS <link> (it currently loads the kit via JS importmap only, so the inline <style> is its pre-JS FOUC guard).
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-956d4813319f65a3-1710
3
- ns: default
4
- created: 1782999885820
5
- updated: 1782999885820
6
- ---
7
-
8
- agentgui 9th run (2026-06-10): GUI logic+predictability sweep. Workflow gui-logic-predictability.js (6 lenses: interaction-lifecycle, cross-surface-consistency, information-architecture, realtime-truth, input-ergonomics, scale-robustness). 78 agents -> 67 confirmed findings, all implemented. Interaction lifecycles: kit ConfirmDialog/PromptDialog gain error+busy/busyLabel props, Backdrop Escape listener is document-level with focus-restore queueMicrotask guard, per-session stop via state.live.stopping Set + kit session.stopping, upload drain loop with 409->replace+dismiss, new-chat/backend-change/stop confirms arm-only with 4s reset. Realtime truth: dashboard joins on realSid=claudeSessionId||sessionId, streaming_cancelled broadcast, 60s per-session terminal-frame replay buffer, error status derives from recency not cumulative count, SSE counters take max(index,tally) never regress, persistChat 500ms debounce/100-msg cap/>4KB trim, cross-tab storage listener with ts guard. Input ergonomics: IME guards (isComposing||keyCode===229), Escape ladder order = shortcuts overlay > file dialog > confirmingEdit > new-chat arm > stop-arms > stop generation, window-level dragover/drop preventDefault outside .ds-dropzone, Mod+Shift+L focuses composer. Scale: AgentChat windowed thread MESSAGE_CAP=100, >20k streaming part renders 4k tail window, history events sliced to last 5000 via server ?limit=N shim. Consistency: ONE fmtDuration + ONE fmtBytes kit-wide, STREAM_WORD offline vocabulary, settings order backend->server->agents->appearance->keyboard->data. Witness: localhost:3000/gm/ 0 console errors, joint risk after parallel agent runs is prop-name contract drift (app/kit prop naming mismatches).
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-96fffbb6615e031b-1263
3
- ns: default
4
- created: 1783683343936
5
- updated: 1783683343936
6
- ---
7
-
8
- {"key":"agentgui-31st-run-light-theme-contrast","value":"agentgui 31st run confirming-pass addendum (2026-07-10): gui-ux-craft workflow's failures array named hunt:light-theme-contrast as crashed (API connection error), caught during gm-continue confirming pass. Follow-up agent computed real WCAG ratios and found 6 failures: chat avatar initials on raw --mascot/--accent-ink over tinted bg (2.03:1/3.65:1), tool-done status text on --success/--green-2 (3.18:1 paper/2.88:1 on actual card bg), --amber measuring 4.26:1 on --bg-2 despite tuned for 4.5+:1 on --paper, --danger same shape (4.25:1 on --bg-2, PASSWORD-gate auth-error banner), raw --mascot as button/CLI text (3.11:1), --sun unusable everywhere (1.1-1.5:1) - retired in favor of --amber. Same fix pattern as 22nd run's --accent->--accent-ink: separate text-safe darkened token for text, original stays for fills/borders (3:1 threshold). Standing rule: check a color token's contrast against the ACTUAL background it renders on in the real DOM, not just the page base --paper. gm-continue standing rule: a workflow failures array naming a crashed lens is unaudited scope, not a null result - goes into confirming PLAN pass as its own row. Kit pushed df04d69, agentgui pushed 03002cf, all 4 CI green."}
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-993ab31f7a10aefa-718
3
- ns: default
4
- created: 1780593487331
5
- updated: 1780593487331
6
- ---
7
-
8
- agentgui DS loading: index.html loads anentrypoint-design from unpkg @latest (247420.css + 247420.js) at RUNTIME, not the local vendor/ copy. Deliberate (commit 947086e) because the chat surface uses the load-bearing AgentChat kit component which exists in @latest (0.0.186) but NOT in the older locally-vendored bundle. So: GUI needs network, shifts on upstream publish, local vendoring bypassed, and the vendored bundle's si/ri/_s jsdelivr markdown imports (marked@15/dompurify@3/prismjs) are moot while on unpkg. To restore offline: re-vendor 0.0.186+ (has AgentChat) + re-localize (gzip Ha blob, fonts, CDN consts) + rewire si/ri/_s to ../cdn/ + point index.html back to ./vendor/. PRD row revendor-ds-186-offline.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-a3e440db285f655a-995
3
- ns: default
4
- created: 1779979137157
5
- updated: 1779979137157
6
- ---
7
-
8
- agentgui GUI styling (site/app): The anentrypoint-design DS bundle (vendor/anentrypoint-design/247420.js) exposes CSS vars --ff-display (='Inter, system-ui' in this bundle version — NOT Space Grotesk) and --ff-mono (='JetBrains Mono'); there is NO --font-sans. index.html body must use var(--ff-display). CRITICAL CASCADE GOTCHA: installStyles() injects the DS bundle CSS into a runtime <style data-247420> appended AFTER index.html's head <style>, so equal-specificity local overrides LOSE on source order. To override a DS component rule (.app-topbar nav a.active, .chat-head .sub, focus rings, etc) you must out-specify the .ds-247420-prefixed DS selector OR use !important. The offline vendoring mechanism (gzip Ha CSS blob in 247420.js + 3 CDN string consts Us/Za/_a) is still valid. DS Chat component ignores its sub prop and renders its own zero-padded '00 msgs' count in .chat-head .sub — hide via CSS. EventList rows are div.row[role=button] (click-to-expand) inside .ds-event-list.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-a52933cd6495e6f5-2624
3
- ns: default
4
- created: 1781793133390
5
- updated: 1781793133390
6
- ---
7
-
8
- agentgui 15th run (2026-06-18): design-maturity sweep + dead-code + server-hardening, tracked by two Workflow-tool runs. gui-design-15 (wf_7ba315a1-9a9, 8 lenses, 59 agents -> 35 confirmed -> 33 applied in ../design kit) + gui-design-15b (wf_5b2861b2-717, 3 lenses history-settings/server-boundary/security, 25 agents -> 18 confirmed). Kit pushed 5251ffe; agentgui pushed 50d78bf. KIT design fixes: shape-distinct status discs + --stale token, composer cwd-input focus/invalid + .send.cancel neutral tone + code-card, --on-color saturated fills, collapsed-track resizer hide guards, 4 reduced-motion opt-in guards, NEW ShortcutList export (consumes orphaned .ds-shortcuts-hint/.ds-kbd legend CSS), Row detail prop (.ds-row-detail monospace pre - expanded history events no longer dump JSON into bold title), icon-led density picker (3 new shell.js icons rows/rows-tight/grid), pane-toggle relocated into .ws-crumb. DEAD CODE removed: static/ tree (webjsx.js+xstate.umd.min.js, referenced nowhere - SPA gets webjsx from kit dist), scripts/build-rippleui.mjs (self-ref only), scripts/copy-vendor.js (only built dead static/) + dropped copy-vendor from package.json postinstall. SERVER HARDENING (lib/, all preserve localhost-PASSWORD witness): terminal /api/terminal/* + WS-attach fail-closed unless PASSWORD+ENABLE_TERMINAL=1 (was open RCE) + drops client shell/env; /api/file+list fsAllowRoots includes server cwd only under PASSWORD/FS_ALLOW_CWD + secret-file block + env/conf/cfg/ini dropped from TEXT_EXTS (was exposing server tree+secrets); CSRF json-only + Origin==Host (dropped octet-stream/empty-CT bypass); constant-time SHA-256 token compare in http-handler _checkToken AND ws-setup; chat.sendMessage cwd confined via confineToRoots realPath; cookie conditional Secure+Max-Age; rate-limit honors XFF only under TRUST_PROXY=1 + failed-auth bucket penalty; health endpoint omits memory/projectsDir/allowRoots under health-exemption; CSP script-src drops unsafe-inline for per-request nonce threaded via asset-server.js onto bootstrap+hot-reload+importmap scripts (style-src keeps unsafe-inline for DS runtime style); agents.models wired through getModelsForAgent. confineToRoots/fsAllowRoots now EXPORTED from http-handler.js. Witnessed browser-4 localhost:3009/gm/?token: 0 console errors, CSP nonce did NOT break importmap/boot, ShortcutList 11 rows in overlay+settings, dark surface, 3 resizers, no h-scroll. validate-mutations 26/26 PASS live. test.js 10pass/0fail. RULE confirmed: git verbs target the agentgui repo only; the sibling kit repo (../design) is pushed via direct git (rebase onto concurrent writer).
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-a86426ac44138c96-1606
3
- ns: default
4
- created: 1781966498992
5
- updated: 1781966498992
6
- ---
7
-
8
- agentgui 20th run iter13 (2026-06-20): verification + dependency audit. After the big removals (plugins etc), re-ran the dead-export scan -> 0 newly-orphaned exports (clean). DEPENDENCY AUDIT found package.json deps with ZERO references anywhere in source (lib/server/scripts/bin/electron/site, .js/.mjs/.cjs, no import/require, no bun-x/spawn-by-name): pure libraries execa, form-data, p-retry, zod, @agentclientprotocol/sdk (ACP impl is hand-rolled in acp-protocol.js, doesn't use the SDK) - these are DEFINITIVELY unused (libraries require an import). Plus CLI-named candidates ccfollow, @lanmower/ccf, webtalk (zero refs, but lower certainty - could be invoked by an external deploy wrapper). Agent CLI packages (@anthropic-ai/claude-code, @google/gemini-cli, @kilocode/cli, opencode-ai) are runtime binaries - KEEP. DID NOT remove autonomously: there are TWO lockfiles (bun.lock + package-lock.json); editing package.json without updating both drifts the lockfiles and breaks CI under --frozen-lockfile/npm ci, and doing it cleanly needs bun remove/install which triggers node-gyp rebuild + network (risky in sandbox). Flagged for DELIBERATE removal: run 'bun remove execa form-data p-retry zod @agentclientprotocol/sdk' (+ verify ccfollow/ccf/webtalk unused), update both lockfiles, confirm CI green. Run state at iter13: 9 substantive commits pushed (93773e2 acp-plugin, 4454082 models, c7de4f5 external-acp, 80d4b7c cli-wrapper, 509bf01 dead-exports, b076541 files-plugin, c5fd860 agents-plugin, e73ed0e plugin-system, af87d73 docs); ~860 lines removed; server/client/security/tests/docs all clean.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-a95b1d49d71133ce-1007
3
- ns: default
4
- created: 1781859394641
5
- updated: 1781859394641
6
- ---
7
-
8
- agentgui 17th run (2026-06-19): two-pass GUI quality sweep. Pass 1: A1-A11 app.js + K1-K10 kit fixes (SVG XSS, CORS wildcard, tool_result array flatten, absIdx-was-already-fixed-here-actually, stable event keys, empty turn prune, ACP panel, TextField error, restartCount, clearLocalData ds.ws.*, aria-invalid, WorksList aria-expanded, drawer [role=button], textarea overflow:hidden, role=banner removed, aria-atomic, formatShortcut ASCII, ws-crumb padding, ws-desktop-toggle 44px). Pass 2: gui-audit workflow wf_bcac251f-d54 (48 agents, 25 confirmed). Key fixes: absIdx ReferenceError crash (history blank), Prism new Function blocked by CSP fixed with script injection + Promise.all tiers, scrollChatToBottom forced layout in rAF removed, sessions drawer <=640 fixed to <=1100, thinking blocks dispatched to ThinkingNode, rail all-green bug, clearLocalData nav reset, liveTick self-clears, kit-* selector removed, Esc listener leak. validate-mutations 29/29; test.js 10/0. agentgui b9d66cc; design 03d9d07.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-a9968a186368b022-1150
3
- ns: default
4
- created: 1784300690988
5
- updated: 1784300690988
6
- ---
7
-
8
- agentgui 46th run confirming pass (2026-07-17): per gm-continue's mandatory first-confirming-pass discipline, a second independent Explore-agent survey of docstudio (told what runs 42-46 already shipped) found one more narrow gap: kit toast() only supported self-dismissing {message,kind,duration}, unlike docstudio update-check.js:18-30's persistent click-to-reload bar. Added actionLabel/onAction props rendering a non-auto-dismissing button. Real CI catch: docs/component-props.md was stale after the new toast() signature (component-docs lint), fixed by regenerating. Kit rebased twice onto concurrent v0.0.350/v0.0.351 releases (dist-only, rebuilt fresh). Browser-witnessed both toast variants live: action toast renders .ds-ep-toast.has-action with working button firing onAction(dismiss); plain toast unaffected (no has-action class, no button) confirming backward compat. Kit pushed b5530cb->e93f4f7, agentgui pushed ed36a36->3a59c3b, all CI green. A second confirming pass after this one found nothing further - the docstudio design-cue mining task for ../design and ./ is genuinely exhausted after 4 full sweeps + 1 confirming-pass finding.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-aaeae38d8eb01809-1076
3
- ns: default
4
- created: 1783083889386
5
- updated: 1783083889386
6
- ---
7
-
8
- gm-method lesson: when a component is deliberately kept mounted across multiple tabs/views for visual consistency (a 'keep-track' pattern - same rail/list shown regardless of active tab so the layout doesn't reflow), audit every interaction the component exposes on every tab it appears on, not just the tab where the interaction was originally designed. A very common latent bug: the interaction's effect is only rendered by ONE of the tabs (e.g. a selection list whose selection is only visualized on tab A), so triggering it from tabs B/C/D silently updates state with no visible effect - a dead click that looks identical to a working one. This is a distinct failure mode from a visual/CSS bug: it can't be caught by screenshots alone, only by reading application state before/after the interaction (e.g. via an exposed window.* state object) on each tab the shared component appears on. Fix pattern: the non-primary tabs' handler should navigate to the tab that renders the effect, so the interaction produces a consistent, visible outcome everywhere the control appears.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-ade01d9c02677c55-1557
3
- ns: default
4
- created: 1783699218939
5
- updated: 1783699218939
6
- ---
7
-
8
- {"key":"agentgui-36th-run-ai-tell-sweep","value":"agentgui 36th run (2026-07-10): follow-on AI-tell sweep after the 35th run. gui-ai-tell-sweep workflow wf_a53b7d8f-27b (26 agents, 5 hunt lenses, 20 findings -> 11 confirmed / 9 correctly refuted). Kit fixes: context-menu/toast shadow -> --shadow-overlay token; barchart/upload/bar meter fills --accent -> --fg-3 (routine metering shouldnt use the loudest brand hue); checkbox checked-fill -> --fg; drag-over triple-accent-stack (tint+border+ring) collapsed to single dashed border; skip-to-main link de-loudened from CTA-accent to neutral fg/bg; session-unread dot neutralized off --accent; dead .empty-state child rules + unused .ds-panel-trio/.ds-panel-grid hover-lift deleted; AgentChat empty-state copy de-boilerplated. App: keyboardPanel/preferencesPanel gained kind:wide for settings panel-weight hierarchy. Browser-witnessed live (0 pageErrors, CSS rules confirmed post-fix). Kit pushed 4de1771, agentgui pushed e6dc1d9, CI green both repos. IMPORTANT recurring tool-defect: gm-plugkit fs_write verb payload key is content (JSON string), NOT body -- passing {path,body:{...}} silently no-ops with bytes:0 and no error. This nearly let a stale-empty .ci-validated marker pass the COMPLETE gate this run; caught via recall mid-VERIFY (the memory already existed from a prior run) and corrected before transitioning to COMPLETE. Always use content, verify bytes>0 in the fs_write response, and spot-check the actual file content on disk before trusting a CONSOLIDATE/COMPLETE gate that depends on it."}
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-b06b8c85b81663e6-1250
3
- ns: default
4
- created: 1783071795100
5
- updated: 1783071795100
6
- ---
7
-
8
- agentgui 27th run (2026-07-03): negative-space + attention sweep, scoped to the specific user ask (not a full agent fan-out) - live-browser review via screenshots + DOM measurement at 1280px and 420px across chat/files/settings. Found+fixed 2 real issues. Files filter placeholder text was wider than its intentionally-compact 220px input, clipping the last character with no ellipsis - shortened the placeholder rather than widening the control (the compact width was a deliberate prior design decision documented in the kit's own CSS comment). Settings SERVER panel rendered 4 short facts each as an oversized fs-xl/tall-line-height intro-paragraph style ('.lede') instead of a metadata style, creating real dead vertical space and visual inconsistency with the adjacent roots list (which already used a compact metadata-strip component) - consolidated all facts into that same compact component. GM-METHOD LESSON: for a narrowly-scoped ask (e.g. 'any negative space/attention issues'), a live-browser screenshot-and-measure pass targeted at the specific concern finds real, fixable issues faster and more precisely than another full multi-agent workflow fan-out - match investigation scale to the ask's scale, not the project's total surface area.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-b451e5e17e555202-1490
3
- ns: default
4
- created: 1784294096167
5
- updated: 1784294096167
6
- ---
7
-
8
- agentgui 39th run (2026-07-12) full detail: gui-logic-predictability workflow wf_88c431e5-931 (26 agents, 202 tool calls) - 6 confirmed findings. App: runningPanel() rows gained runningRowTitle() resolved-identity prefix; stopActiveChat() gained a bounded 9s timeout to clear a stuck 'stopping' state + retry banner; computeLiveSessions() SSE tally now accumulates total_cost_usd alongside tokens; WorkspaceRail footer gained a visible shortcuts-help IconButton (the ?-overlay was 100% keyboard-only tribal knowledge before). Kit: CodeNode.refSink gained the same in-progress-text-selection guard MdNode.refSink already had; Row.sub gained a title= tooltip fallback for string values; added a help icon path to ICON_PATHS/Glyph. Kit rebased on concurrent v0.0.316, pushed 00dae4c; agentgui pushed 64f4466, all CI green. Browser-witnessed live via page.context().setHTTPCredentials()+page.evaluate(): help button in .ws-rail-foot opens shortcuts overlay, 0 pageErrors; Row.sub title attr confirmed live. Tool-defect notes from this run: (1) this env's nginx Basic-Auth password contains a literal comma (123,slam,123,slam) and embedding it directly in page.goto URL throws net::ERR_INVALID_AUTH_CREDENTIALS even percent-encoded - fix is page.context().setHTTPCredentials() before goto with a plain URL; (2) capture-prefix browser scripts run in a bare Node vm with no document/page binding unless the script itself calls page.evaluate(()=>{...}) - wrap every DOM read/write in page.evaluate.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-b64ad00dcb6f909e-937
3
- ns: default
4
- created: 1784315675131
5
- updated: 1784315675131
6
- ---
7
-
8
- {"key":"agentgui-browser-verb-url-dom-prefix-broken-2026-07-17","value":"gm browser verb tool defect (47th agentgui run, 2026-07-17): url=/dom= prefix dispatches evaluate in a Node vm context (ReferenceError: document/window is not defined) despite navigation_requested:true; screenshot= prefix mis-parses its own argument as JS (SyntaxError Unexpected token). Only the bare 'capture\\n<script with page.goto+page.evaluate>' dispatch form actually reaches real page context this session (confirmed working in browser-3/-13/-14 dispatches). Read the result via console.log('WITNESS:'+JSON.stringify(...)) inside the page.evaluate callback and grep the debug.console array in the response - the top-level result field itself came back None/undefined across multiple working dispatches even when exit_code:0/ok:true, so it is not a reliable read path this session. External tool defect (gm-plugkit/playwriter), not fixable from this repo."}
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-b7d6018ceca55b6f-2220
3
- ns: default
4
- created: 1783683288478
5
- updated: 1783683288478
6
- ---
7
-
8
- {"key":"agentgui-32nd-run-ux-craft-sweep","value":"agentgui 32nd run (2026-07-10): gui-ux-craft workflow wf_0225607d-511 (35 agents, 22 confirmed) on user request to max usability/predictability/negative-space via wfgy-method critique. Fixes across app.js (2 misapplied .lede->t-meta typography instances in running-sessions banner + file-preview loading; copy-tone unification Clear conversation/Message failed/lowercase announce/ascii->unicode ellipsis; untitled-conversation fallback replacing raw sid slices in both sessionsColumn and resumeSidLabel; loadSession reselect no-op guard; loadDir _reqId race-guard against bulk-mutation reconcile races) and kit design/ (btn-primary unwarranted tr-caps tracking removed; lh-snug hardcoded-fallback drift fixed to bare var(); ghost/danger hover unified brightness(0.92) darkening across text+icon variants, was brightness(1.1) lightening which failed AA on light theme; focus-ring hardcoded values replaced with --focus-w/--focus-color/--focus-offset tokens; pre .n numeral color routed through --code-num instead of AA-failing --green-2; community.css 4 text usages of --green-2 swapped to --green; colors_and_type.css [data-theme=paper] --amber drift (#8A6512) fixed to match root (#7C570F); chat.js MdNode streaming markdown reparse now throttled (120ms/40char) instead of reparsing full accumulated text every rAF tick; ToolCallNode args/result JSON.stringify now cached by identity; onAction signature variance documented in COMPONENT_API.md; new ui_kits/workspace/ flagship demo for WorkspaceShell+ConversationList+AgentChat+SessionDashboard combo). Kit rebuilt via node scripts/build.mjs and re-vendored into agentgui site/app/vendor/. Browser-witnessed live via agent-browser against localhost:3010/gm/ (PASSWORD=full comma-containing string, not comma-split): 0 console errors, computed btn-primary letter-spacing=normal, live stylesheet query confirmed focus-ring/hover/numeral-color rules match source. Kit pushed ad000b6, agentgui pushed 5ccaa8a, all CI green both repos. Standing gotcha reconfirmed: PASSWORD env var can itself contain literal commas (e.g. '123,slam,123,slam') - treat the whole string as one token, never comma-split it when testing auth."}
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-bdf466854032cac9-1509
3
- ns: default
4
- created: 1782996174769
5
- updated: 1782996174769
6
- ---
7
-
8
- agentgui 22nd run (2026-07-02): GUI ux-craft sweep. gui-ux-craft workflow wf_48cd6bae-6ae (35 agents, 20 confirmed). Kit (../design): accent-on-paper contrast fix - var(--accent) lime was used as TEXT color and non-text FILL in 10 sites (chat role label, dashboard status/stream/select/breakdown text, code-copy text, tool-running status, live status dot, green session-rail fill), rendering ~1.07:1 contrast on paper theme (WCAG needs 4.5:1/3:1); swapped all to --accent-ink, borders/outlines left on --accent. 4 typography-rhythm fixes (dash-title/ContextPane-meta-sub/session-group-label sizing parity with kit-wide defaults, .ws-crumb height derived from --app-crumb-h). Session-head search-input 36px height match, .ds-file-act focus-visible ring added. App: 5 copy-tone fixes (clear-history button noun, conversation->chat vocab, npx jargon->plain language, raw provider error truncated+prefixed, disabled export-chat keeps action label), search-result sid fallback to 'session <8char>...', synchronous theme-flash-prevention inline script in index.html (reads 247420:theme from localStorage before first paint, non-module so it runs before the kit's ES module graph loads). Deferred as explicit re-scope (recorded not dropped): kit README/ui_kits docs gaps for flagship components, perceived-performance work (render-gating, modulepreload, loading skeletons) - both larger-scope work for a dedicated future run. Kit pushed 3f50e7a, agentgui pushed 06f108d, both CI green, 28/28 tests, 0 console errors.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-c0482039e6ab4c50-2047
3
- ns: default
4
- created: 1780661156914
5
- updated: 1780661156914
6
- ---
7
-
8
- agentgui GUI-predictability sweep (2026-06-05) CLOSED. 19 PRD rows fixed+pushed: agentgui fe94ade, kit anentrypoint-design 236d6ef (publish.yml -> npm/unpkg). KIT fixes (override-elimination - the app no longer !important-overrides these): app-shell.css .app-topbar nav a.active = tinted pill + accent underline default (was oversized filled oval); PageHeader gained `compact` prop + .ds-section-compact (margin-top:0) so a page-leading header top-aligns; .row[role=button]/a.row cursor:pointer default; Chat component dropped the decorative empty head .dot; chat.js ToolCallNode renders '(no output)' for done+empty tool; chat.js added safeUrl() rejecting javascript:/data:/file: in renderInline link + image part(src+href) + link part (inline renderer bypasses DOMPurify); streaming text uses .chat-md container (mdShell flag) to avoid settle reflow. APP fixes (app.js): distinct keys for 3 backend-status <p> (were key:'bst'), per-sessionId running-panel dot key (was 'rd'), refreshHistory clears stale selectedSid when session vanishes, live.eventCount resets per session in loadSession, toolLabel falls back to first scalar arg, expand/collapse-all relabeled 'expand/collapse shown', runSearch clears projectFilter on search start, 3 PageHeaders pass compact:true; index.html dropped the Topbar/PageHeader/chat-head-dot/row-cursor overrides. KEY: kit dist/ is gitignored on remote now but files are already TRACKED - use git add -f for rebuilt dist; rebase-and-rebuild-dist when remote advances (CI/other writer pushes to kit main often). Browser-witnessed live /gm/ (sessions 2-7): hasAgentChat, composer, empty state+3 suggestions, settings compact margin 0px, search a11y name, 0 console errors, decorativeGlyphs=[], kept middot intact, active-tab underline boxShadow rgb(58,154,52) 0px -2px. GLYPH POLICY: a reviewer wrongly flagged middot/ellipsis/em-dash as forbidden - they are the KEPT set, never convert. .claude/workflows/gui-audit.js refreshed: added 'overrides' surface + KEPT-SET guard in glyph reviewer AND adversarial verifier.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-c4aaec5c4e6f80c2-920
3
- ns: default
4
- created: 1783884935543
5
- updated: 1783884935543
6
- ---
7
-
8
- {"key":"agentgui-ds-load-local-vendor-detail","value":"agentgui DS (design kit) loading: index.html loads the DS kit from local ./vendor/anentrypoint-design/247420.{js,css}, NOT unpkg. Prior 'moved to unpkg @latest' note (2026-05-29) was a transient state reverted in eb1eab3 (re-vendored with AgentChat), witnessed loading from ./vendor/ again on the 2026-06-04/06-05 runs and reconfirmed live on the 37th (2026-07-12) and 40th (2026-07-12) runs via live network-trace browser dispatch. The vendored copy IS the shipped UI - predictable, no upstream-publish drift. Update flow: edit the kit at /config/workspace/design, node scripts/build.mjs, copy dist/247420.{js,css} into site/app/vendor/anentrypoint-design/, browser-witness, then push the kit so unpkg stays in sync for other consumers. The markdown stack (marked/dompurify/prismjs) still fetches from jsdelivr on first chat render, unaffected by this vendoring."}
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-c66976ddacb4fbe8-1454
3
- ns: default
4
- created: 1784816791841
5
- updated: 1784816791841
6
- ---
7
-
8
- agentgui AGENTS.md changelog drain (compressed 2026-07-23): AGENTS.md previously carried ~50 dated run-by-run sections (docstudio-cue follow-up runs 42-51, GUI sweeps 7-41, design-maturity/dead-code/security sweeps 13-20) narrating what was surveyed/found/shipped each session with commit shas and CI check names. Compressed to present-tense standing rules only. Docstudio-cue ports across runs 42-51: RateCell (tone-colored table cell), SpreadsheetPreview (tabbed CSV/workbook preview), withBusy (async double-fire guard), ApprovalPrompt (inline permission card w/ note textarea), PermissionMenu (roving-tabindex checkbox menu), CountdownDialog, detectAttachment badge, streamingSince elapsed counter, coarse-pointer Enter-gating, toast actionLabel/onAction, aria-live chat threads, Chip.onRemove. GUI sweeps 7-41 landed hundreds of findings across logic/predictability, cohesion, completion, ux-craft, AI-tell removal, screen-real-estate, Claude-Code-web parity -- realtime status truth, escape-ladder consistency, file management CRUD, live session dashboards, accessibility, kit additions (SplitPanel sidePanel, sortable Table, SessionDashboard, ConversationList, WorkspaceShell/WorkspaceRail). Design-maturity sweeps 13-20 consolidated all GUI/styling into the design kit and removed dead lib/plugins scaffolding. Full narrative detail for any specific run is recoverable from git history (agentgui repo AGENTS.md file history) if ever needed again.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-c7c5bc263850c332-1844
3
- ns: default
4
- created: 1783854998213
5
- updated: 1783854998213
6
- ---
7
-
8
- agentgui 38th run (2026-07-12): re-ran gui-logic-predictability workflow wf_186e2a2a-dfc (32 agents) one cycle after the 37th run, 18 confirmed findings all implemented. Key app fixes: stopAllActive now clears failed sids from state.live.stopping (was permanently stuck), copyText announces clipboard failures, title-fallback chains unified via projectLabel()+sid across search/history/rail, Live nav-badge stale-flame fixed via stream carve-out, computeLiveSessions gained a 5s reconnect grace window against status flapping, streamHistory EventSource gained exponential backoff mirroring the WS client. Kit fixes: follow-up chips lost aria-hidden (real buttons were AT-invisible), MdNode markdown-settle now preserves active text selection via a deferred selectionchange-gated innerHTML swap, SearchInput gained a visible clear button + working resultCount aria-live wiring. Kit pushed bed4036 (after a rebase with one dist-only conflict, resolved by rebuilding dist fresh rather than hand-merging generated code), agentgui pushed 159030f then b9d9d70 (docs), all CI green both repos. NEW STANDING TOOL DEFECT this run: the gm browser verb's dom= and capture prefixes both throw ReferenceError (no document/page binding at all) in this tool version - a regression beyond the previously-known 'dom= ignores trailing script' issue. Only screenshot= and url=<target>\n<literal-non-DOM-expr> dispatches actually reach the real page; browser session ids silently rotate across dispatches with no state carryover, and one dispatch hit a dead extension-bridge session requiring an unprompted CDP relay restart. Filed as PRD row tool-defect-browser-dom-capture-eval-broken with blockedBy:external since it's a gm-plugkit/playwriter defect, not fixable from agentgui/design repos. Screenshots remain the reliable witness fallback until fixed upstream.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-cda639547932c796-713
3
- ns: default
4
- created: 1783077061618
5
- updated: 1783077061618
6
- ---
7
-
8
- gm-method lesson: when a user says a shipped UI 'looks very diy' and asks for negative-space/attention polish, a live-browser screenshot audit at multiple viewport widths (desktop + mobile) plus DOM measurement (getBoundingClientRect, computed style) finds concrete, high-confidence issues faster than a broad multi-agent design-review fan-out — reserve the heavier fan-out for first-pass sweeps of a surface, and use the targeted live-witness method for narrow follow-up asks on an already-audited surface. Screenshots alone can miss a few-dozen-pixel layout bug (a drawer sliver, a clipped ellipsis); pairing every visual observation with a DOM measurement removes ambiguity before deciding it's worth fixing.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-cdf04ff6a6a0aa6f-671
3
- ns: default
4
- created: 1783844901564
5
- updated: 1783844901564
6
- ---
7
-
8
- agentgui webjsx applyDiff array-keying rule: children arrays that mix keyed VElements with raw text/numbers crash in vendor/webjsx/applyDiff.js with 'Cannot read properties of undefined (reading key)'. webjsx requires ALL siblings in an array prop (children, right, left, breadcrumbs, etc.) to either ALL be VElements with keys or ALL be non-keyed - passing Crumb({right:[h('span',{key:'a'},'A'), h('span',{key:'b'},'B'), 'connected']}) crashes because the render loop tries to read .key on the bare string. Fix: wrap any bare strings as keyed VElements, e.g. h('span',{key:'dot'},'connected'). Surfaced 2026-05-04 in crumbRight construction in site/app/js/app.js view().
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-cf8472c84d9e04c4-1883
3
- ns: default
4
- created: 1783075515986
5
- updated: 1783075515986
6
- ---
7
-
8
- agentgui 28th run (2026-07-03): visual-polish pass responding to explicit user feedback that the GUI 'looks very diy'. Live-browser screenshot audit (not a full agent fan-out - matched investigation scale to the ask) found 3 concrete causes. (1) One shell column (sessions) used flat background identical to main content while sibling columns (rail, pane) already used a recessed tonal background for depth - the inconsistency read as one flat continuous surface instead of distinct panels; fixed by matching the established pattern. (2) The primary input control (chat composer) had zero elevation/shadow at rest despite the design system already defining an unused shadow token for exactly this purpose - a flat box on a flat background is one of the most common 'looks unfinished' tells. (3) A tab that opted out of the shell's standard content padding (for its own custom centering behavior) had nothing replacing that padding for its OTHER child elements (toolbar/heading/empty-state), so those elements sat flush against the viewport edge with zero breathing room while a sibling chrome bar above kept proper padding - a real, visible inconsistency. GM-METHOD LESSON: when investigating a vague 'make it look nicer' style complaint, use live screenshots + DOM measurement (getBoundingClientRect, computed styles) to find OBJECTIVE inconsistencies against the design system's own already-established patterns (a token defined but unused, a treatment applied to siblings but not this element, a padding removed with nothing substituted) rather than subjective aesthetic judgment - this converts a vague complaint into concrete, defensible, low-risk fixes. Also: distinguish a real CI regression from a known infra flake (GitHub Pages deploy 'Deployment cancelled') by checking whether the SAME flake pattern recurred before - rerun once and wait patiently rather than escalating.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-cfd4d894370c63c3-1288
3
- ns: default
4
- created: 1784299896638
5
- updated: 1784299896638
6
- ---
7
-
8
- agentgui-44th-run-docstudio-followup-full-detail: follow-up to 43rd run's docstudio design-cue pass. Fresh research agent surveyed docstudio source vs current kit (told what already existed). 5 candidates implemented: ChatMessage error/onRetry inline destructive-toned per-turn failure notice (chat.js); generic Avatar({name,src,fallback,size}) primitive in content.js consolidating duplicated letter-fallback-disc logic; FileSkeleton gained role=status/aria-busy/aria-label matching sibling skeletons. Verified no-change-needed: backdrop-dismiss dialogs already did strict e.target===e.currentTarget check. Real bug from mandatory browser witness: AgentChat's error/onRetry wiring was gated on !isAssistant but agentgui's sendChat() always pushes an eager assistant placeholder, so the gate was corrected to key on trailing-message-position instead of role; separately a stray closing brace from removing a redundant Alert banner caused a real SyntaxError blanking the live page, caught on first post-deploy witness dispatch, fixed, re-witnessed clean. Standing lesson: a same-session "verify no change needed" pass is not a substitute for re-running the live browser witness on code that WAS changed. Kit pushed 3417592->f362528->03c9028->17ee86c, agentgui pushed f08f698, all CI green.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-d060480435f92eec-1146
3
- ns: default
4
- created: 1782994689573
5
- updated: 1782994689573
6
- ---
7
-
8
- agentgui 20th run (2026-06-20): destructive quality run. Found lib/plugins/acp-plugin.js was a SECOND redundant ACP manager, eager-spawning all 4 ACP tools at boot on conflicting/mismatched ports (gemini=18101/kilo=18102/codex=18103 vs canonical acp-sdk-manager opencode=18100/kilo=18101/codex=18102), no restart/health logic despite a /api/acp/status route promising 'restarts', and crashed server boot with [FATAL] Uncaught exception: Executable not found in $PATH when an ACP binary was missing. Route consumed by nobody; no plugin declared an acp dependency. Deleted the file. Rule: ACP lifecycle lives in lib/acp-sdk-manager.js alone. Also: spawn() for a missing binary surfaces ENOENT as an async 'error' event under Bun (escapes sync try/catch) - acp-sdk-manager.js startProcess was the only spawn() callsite missing a proc.on('error') handler (terminal.js/claude-runner-direct.js/gm-agent-configs.js/claude-runner-acp.js already had one); added it, routing into CRASHED + scheduleRestart backoff. Witnessed: clean boot (0 FATAL), acp no longer in [PLUGINS] Loaded extensions, /api/acp/status -> 404, tests 46/46, browser 0 console errors.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-d347c921b79e6d44-1099
3
- ns: default
4
- created: 1781769905189
5
- updated: 1781769905189
6
- ---
7
-
8
- agentgui auth fix (2026-06-18, commit 534324e): behind an nginx auth_basic proxy (boxone.off.l-inc.co.za/gm), the page HTML/JS/CSS loaded but every app fetch (/gm/health, /gm/v1/history/sessions, /api/*) returned 401 and the browser re-prompted for the Basic password. Root cause: site/app/js/backend.js authedFetch set Authorization: Bearer <window.__WS_TOKEN>, which OVERWRITES the browser cached Authorization: Basic creds; nginx auth_basic only accepts Basic so the Bearer fetch is rejected at the proxy before reaching agentgui. The WS survived because it auths via ?token= query on an auth_basic-off path. Fix: authedFetch now uses withToken(url) (?token= query, like WS/EventSource/image/download) + credentials:'same-origin', never overriding Authorization. Rule: same-origin app auth must never use the Authorization header when an upstream proxy owns Basic auth. boxone runs agentgui from a git checkout at the repo package.json version (1.0.928, NOT npm latest 1.0.968), so the fix reaches it via git pull + service restart. nginx gmweb htpasswd user is 'abc', PASSWORD=123,slam,123,slam.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-d3c8ea6c861bfbb8-1457
3
- ns: default
4
- created: 1783006020323
5
- updated: 1783006020323
6
- ---
7
-
8
- agentgui 26th run (2026-07-02): per-row file move + lint tooling fix. Kit FileRow gains 'move' action (arrow-right icon, between rename/delete). App onAction('move', file) seeds state.files.marked with the single path, opens existing bulk-move dialog, reuses runBulkMove/api/move - no new server surface. Fixed a real bug in the design kit's scripts/lint-null-children.mjs: bracket-matcher didn't understand // line comments, so an apostrophe inside ANY comment anywhere in a scanned file was read as opening a string literal, corrupting bracket-depth tracking for the rest of that file (false positive here, potential false negative elsewhere hiding a real missing .filter(Boolean)). Added stripLineComments() before the scan. GM-METHOD LESSON (CI): GitHub Pages Deploy workflow repeatedly failed with 'Deployment cancelled'/'Timeout reached' - caused by rapid successive gh run rerun calls racing each other for the same commit SHA's deployment slot, made WORSE not better by retrying quickly. Fix: trigger once (gh run rerun, or gh workflow run <name> --ref main for a fresh dispatch if reruns keep reusing a wedged deployment id) and wait with ZERO concurrent interference - both agentgui and design repos' deploys succeeded the moment reruns stopped racing. Distinguish this from a real regression: npm publish/Publish-and-Release (actual consumer artifacts) were green from the first attempt every time, only the docs-site GH Pages deploy step flaked.
@@ -1,10 +0,0 @@
1
- ---
2
- key: mem-d5e928c552cd87f9-214
3
- ns: default
4
- created: 1781783461615
5
- updated: 1781783461615
6
- ---
7
-
8
- ## Resolved mutable: kit-repo-head-clean
9
-
10
- git -C /config/workspace/design status --porcelain = empty; git log -1 --oneline = 1aa7926 feat(design): app-surfaces.css owns all consumer-app styling + 13th-run findings.