agentgui 1.0.1114 → 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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentgui",
3
- "version": "1.0.1114",
3
+ "version": "1.0.1115",
4
4
  "description": "Multi-agent ACP client with real-time communication",
5
5
  "type": "module",
6
6
  "main": "electron/main.js",
@@ -1 +0,0 @@
1
- {"headless": true, "chrome_ready_deadline_ms": 60000}
@@ -1 +0,0 @@
1
- clean
@@ -1 +0,0 @@
1
- aicat kit polished + Select primitive (2026-05-20): anentrypoint-design v0.0.127 published. Changes: ChatComposer auto-grows up to 200px on input via taRef + autoGrow handlers; Chat + AICat threads auto-scroll to bottom via threadRef when user is within 240px of bottom (preserves manual scroll-back); ChatMessage avatar fallback uses first letter of `name` instead of bare '?'; EventList accepts both `items:`/`events:` aliases and `code:`/`rank:` aliases for backward-compat; new Select({label,value,options,onChange,placeholder,hint}) primitive exported from src/components/content.js + components.js barrel; mobile responsive breakpoint at 768px collapses chat-stack to 100% and shrinks avatars; empty chat.css placeholder removes build warning. agentgui site/app/js/app.js rewired: pin to 0.0.127, replaced raw <select> model picker with Select({}), replaced raw <a> stop/new + raw <button> save+reconnect with Btn({}), assistant turns now render kind:'md' with typing indicator on in-progress empty message. Browser-witnessed: selectCount=1, rawSelectInApp=0, rawButtonInApp=0, btnPrimary 'save + reconnect' rendered in settings. Zellous pins @latest so auto-picks new version; loads clean. Publish flow: push to main triggers .github/workflows/publish.yml which patch-bumps + npm-publishes + tags. My commit set 0.0.126 → CI bumped to 0.0.127.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-c07fa3b0836edbe2-1352
3
- ns: agentgui
4
- created: 1783453880853
5
- updated: 1783453880853
6
- ---
7
-
8
- aicat kit polished + Select primitive (2026-05-20): anentrypoint-design v0.0.127 published. Changes: ChatComposer auto-grows up to 200px on input via taRef + autoGrow handlers; Chat + AICat threads auto-scroll to bottom via threadRef when user is within 240px of bottom (preserves manual scroll-back); ChatMessage avatar fallback uses first letter of `name` instead of bare '?'; EventList accepts both `items:`/`events:` aliases and `code:`/`rank:` aliases for backward-compat; new Select({label,value,options,onChange,placeholder,hint}) primitive exported from src/components/content.js + components.js barrel; mobile responsive breakpoint at 768px collapses chat-stack to 100% and shrinks avatars; empty chat.css placeholder removes build warning. agentgui site/app/js/app.js rewired: pin to 0.0.127, replaced raw <select> model picker with Select({}), replaced raw <a> stop/new + raw <button> save+reconnect with Btn({}), assistant turns now render kind:'md' with typing indicator on in-progress empty message. Browser-witnessed: selectCount=1, rawSelectInApp=0, rawButtonInApp=0, btnPrimary 'save + reconnect' rendered in settings. Zellous pins @latest so auto-picks new version; loads clean. Publish flow: push to main triggers .github/workflows/publish.yml which patch-bumps + npm-publishes + tags. My commit set 0.0.126 → CI bumped to 0.0.127.
package/.gm/gm.db DELETED
Binary file
@@ -1 +0,0 @@
1
- {"digest":"14650fb0739d0383:n=0","total":0}
@@ -1,10 +0,0 @@
1
- ---
2
- key: mem-0131ff4869d86085-370
3
- ns: default
4
- created: 1781775262609
5
- updated: 1781775262609
6
- ---
7
-
8
- ## Resolved mutable: index-style-full-extent
9
-
10
- /config/workspace/agentgui/site/app/index.html:26-265 is the full inline <style> block (--agentgui-* vars, .pill/.cwd-bar/.resume-banner/.history-empty/.health-chip/.settings-grid/.boot-splash/.chat-controls/.ds-event-list overrides+event-flash keyframe/responsive+print). app.js grep style: = 7 inline margin-utility props.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-04049d11cb8c1661-2135
3
- ns: default
4
- created: 1781943736813
5
- updated: 1781943736813
6
- ---
7
-
8
- agentgui screen-real-estate layer (2026-06-12, fluid columns + drag-resize). Workflow .claude/workflows/gui-screen-realestate.js (6 density lenses space-efficiency/viewport-utilization/information-density/adaptive-layout/application-chrome/finish-pending). 50 agents -> 17 confirmed (PUNCHLIST-DENSITY.md). Kit pushed anentrypoint-design 97dc646. Verdict: maximize screen real-estate, SDK must read as a desktop app. Shell reclaims viewport: fixed --ws-rail-w 232/--ws-sessions-w 296/--ws-pane-w 320 (~848px chrome) became fluid clamps clamp(200px,16vw,260px) etc. Kit shell.js renders keyboard+pointer .ws-resizer separators (role=separator, ArrowLeft/Right 16px, pointer-drag) between each track writing clamped inline --ws-<col>-w persisted localStorage ds.ws.w.<col>, seeded on mount via ref seedWsWidths (no app wiring). Sessions desktop collapse toggle (.ws-sessions-toggle in crumb; .ws-desktop-toggle CSS = inverse of mobile drawer-toggle; toggleWs extended 'sessions'->ws-sessions-collapsed). .btn* moved off --r-pill to --r-1 (8/14 pad, 32 min-h, 44 coarse). .app-status thin 26px ellipsized strip (--app-status-h 26px). .chat-msg-flat centers at --measure (margin-inline auto) + density-scaled via --density token + 84ch ultrawide tier. .ds-dash-grid densified minmax 240/220 wide. CONCURRENT-WRITER RULE (load-bearing): while this run was in flight, concurrent writers shipped the ENTIRE Files multi-select+density-thumbnail+move on BOTH design/main and agentgui/main, so this run's parallel multi-select/move/F3 work was DROPPED and theirs adopted; only re-vendored kit dist + workflow + docs landed. Rule: when origin advances mid-run with the same feature, drop yours and adopt theirs, then re-apply only genuinely-distinct work onto their files; the agentgui /api/move-confined endpoint built this run was redundant with their /api/move and discarded. Kit ships 4 build lints (tokens/glyphs/null-children/classes) - all must pass. Witness localhost:3009/gm/ caveat: vendored bundle served fresh only after SERVER restart (pre-warms statics in memory) AND fresh browser context (persistent witness caches the ES module).
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-069ff10372ed1770-1375
3
- ns: default
4
- created: 1780601438566
5
- updated: 1780601438566
6
- ---
7
-
8
- agentgui GUI-audit (2026-06-04) CLOSED. workflow wvf3xfw7x ran 64-agent fan-out -> 44 confirmed findings (AUDIT-PUNCHLIST.md, 38 deduped). All fixed+pushed across 3 surfaces. agentgui origin/main commits: cf710c6 (SSE unwrap, resume hygiene, security headers), eb1eab3 (vendored kit batch + CSP fonts + non-resume warn), 951404e (AGENTS.md doc). Kit anentrypoint-design origin/main bb776aa (streaming-md perf, Row aria-expanded, responsive @media + cwd clamp, CodeNode full-code key, 44x44 tap targets, head sub-line from status, glyph cleanup) -> publish.yml publishes npm->unpkg. KEY LEARNINGS: (1) ccsniff /v1/history/stream 'event' frame is {sid, payload:flattenedEvent} - app MUST unwrap data.payload (store.js:130); reading the wrapper gave undefined counters. (2) CSP hardening MUST allow fonts.googleapis.com (style-src) + fonts.gstatic.com (font-src) or the kit drops to system fonts. (3) DS Select (content.js:312) already promotes title->aria-label so title= gives a real accessible name (unlike SearchInput which needs label=). (4) index.html loads kit from LOCAL ./vendor/ now (not unpkg), so vendored 247420.{js,css} IS what the live GUI serves - witness against it directly. (5) kit publish: commit normal msg + push origin/main; publish.yml syncs version w/ npm + publishes (skips on [skip publish]/chore(release): msgs). PRD 339/339 resolved, phase COMPLETE.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-08a4a9e050a4deff-3048
3
- ns: default
4
- created: 1781796096862
5
- updated: 1781796096862
6
- ---
7
-
8
- agentgui 16th run (2026-06-18): design-maturity sweep + dead-code + secret-hardening, tracked by ONE Workflow-tool run gui-design-16 (wf_6479308b-24f, 12 lenses chat-thread/composer-input/files-browser/sessions-dashboard/shell-chrome/tokens-theme/a11y-motion/history-settings/marketing-site/glyph-residue/dead-code/server-security): 54 agents -> hunt -> adversarial verify -> 40 confirmed, ~2.7M tokens. Applied via a clean per-file subagent fan-out (one agent per physical file = zero edit conflicts). KIT fixes (/config/workspace/design): chat.js ToolCallNode gates args section on hasArgs (no more 'args {}' on result-only cards) + textarea binds disabled; agent-chat.js cwd aria-busy; content.js EventList forwards detail/actions/highlight/meta to Row (expanded history events were dropping toolInput detail+copy+highlight) + TextField full invalid/error state (.ds-field-error role=alert); interaction-primitives.js ShortcutList splits combos into discrete .ds-kbd caps (.ds-kbd-caps/.ds-kbd-sep + new app-shell.css rules); sessions.js rail filter migrated bespoke .ds-session-search -> shared SearchInput/.ds-search-input (one filter control); shell.js WsResizer aria-valuetext; voice.js x-glyph->Icon('x'), community.js ellipsis-glyph->'more'. chat.css cwd is-checking+aria-busy+r-1 radius, breakdown idle->--stale double-inset (was colliding amber w/ connecting disc), breakdown running shape-ring, ds-dash-clear hover/focus, chat-tool-copy focus-visible, errors-toggle AA. app-shell.css composer+ws reduced-motion guards, .ds-file-row.is-locked/.is-restricted+.ds-file-perm-tag chip, ws-drawer-toggle 44px, density-btn/filter-pill AA (color:var(--fg)). editor-primitives.css #000 dock shadow->var(--shadow-3) + #fff checkbox fallback dropped. app-surfaces.css @media print re-asserts paper signal tokens. community.css :focus-visible for ThreadPanel/Forum/Page+forum-search. marketing.css NEW .site-footer family (theme.mjs footers off the .app-status strip that suppressed content <=1100px)+site-cli baseline/card/tokens+100dvh embed. SERVER lib/http-handler.js: SECRET_RE now also on /api/upload-file+/api/mkdir+/api/rename (403 secret/dotfile target, was overwrite-secret hole) + /api/list filters secret dirents + /api/download RFC-5987 Content-Disposition (CJK/emoji name no longer throws ERR_INVALID_CHAR). DEAD-CODE: agentgui site/app/vendor/cdn/ (36 files, markdown stack fetches jsDelivr at runtime), scripts/harvest-fixtures.mjs, the 3 copy-vendor.js lines in .github/workflows/build-platforms.yml (script deleted 15th run, CI was broken); kit scripts/bundle-markdown.mjs. WITNESSED localhost:3009/gm/?token via gm browser verb: dark rgb(19,19,24), 3 resizers, hScroll 0, ds-search-input=1/ds-session-search=0, perm-tag/site-footer/kbd-caps rules resolve, 0 console errors. validate-mutations 26/26 PASS, test.js 10/0, kit 4 lints pass. RECURRING PATTERN: server start needs setsid bash -c 'exec bun server.js' with NO pkill afterward (pkill kills the fresh one); ss has no perms here, use curl /health (401 under PASSWORD = up).
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-09597ee0df9c9224-965
3
- ns: default
4
- created: 1781197658408
5
- updated: 1781197658408
6
- ---
7
-
8
- agentgui env/witness caveats (2026-06-11, linux container): server runs PORT=3009 (3000 owned by another app); plugkit spool out/ keeps STALE responses from prior sessions - a Read racing the watcher write returns old bytes, re-read if content does not match the probe; plugkit browser sessions expire between dispatches (fresh session needs full goto with waitUntil commit); first git_status after heavy churn can report stat-cache false positives (an empty git_diff refreshes the index). Theme tokens: --flame/--amber/--code-* are LIGHT values at :root (#C53E00/#8A6512, AA on paper) with dark brights restored in BOTH dark blocks + the paper-island block; tool errors are routine in agent sessions (1-2% of events) so error UI derives from DENSITY (sessionErrorDense: errors>=3 AND >15%) or recency, never has-any-error. Destructive ACTION = warn red; flame = error STATUS only. /api/move shipped (dual realpath confinement); validate-mutations.mjs is 26 checks.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-0993d156f571b619-1059
3
- ns: default
4
- created: 1782996727275
5
- updated: 1782996727275
6
- ---
7
-
8
- agentgui 3rd run (2026-06-05): GUI-predictability sweep closure. Fan-out reviewers (chat/history/settings/shell + perf/security/glyph/override) -> adversarial verify -> 19 PRD rows fixed+pushed. Headline theme: override-elimination - index.html's !important overrides converted to kit defaults (Topbar active-tab tinted+underline, PageHeader compact prop, Row cursor:pointer for role=button, kit Chat dropped decorative head dot). Also: kit ToolCallNode (no output) placeholder, kit safeUrl() rejects javascript:/data:/file: in inline renderer (bypasses DOMPurify), streaming chat text uses .chat-md container to avoid settle reflow. App fixes: distinct backend-status keys, per-sid running-dot key, stale-selectedSid clear, per-session live counter, toolLabel scalar fallback. gui-audit.js workflow gained overrides surface + KEPT-SET glyph guard (middot/ellipsis/em-dash are kept product typography, never flagged). Kit dist git add -f / rebase-rebuild caveat noted. index.html loads kit from LOCAL vendored copy (superseded/reconfirmed by many later runs).
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-0b681bf2340c8df1-3170
3
- ns: default
4
- created: 1781105971140
5
- updated: 1781105971140
6
- ---
7
-
8
- agentgui GUI completion sweep (2026-06-10, 8th max-effort run) CLOSED. NEW workflow .claude/workflows/gui-completion.js (6 coverage lenses hunting what 7 prior sweeps scoped out: file-management-crud, routing-deeplinks, conversation-control, history-settings-depth, onboarding-recovery, crosscut-new-surface; 75 agents -> 46 confirmed gaps, PUNCHLIST-COMPLETION.md). PUSHED: agentgui 422361f, kit anentrypoint-design e603785. READ-ONLY FILES SCOPE CUT REVERSED: server lib/http-handler.js fsAllowRoots()+sanitizeEntryName() (rejects separators/traversal/ADS colon/reserved Windows names/trailing dot-space)+readBody(cap,413)+isAllowRoot(roots never mutation targets); POST /api/rename {path,newName}, POST /api/delete {path,recursive} (non-empty dir no-recursive -> 409), POST /api/mkdir, PUT /api/upload-file?dir&name&overwrite=1 (raw bytes 50MB no multipart dep), GET /api/stat (confined cwd validation); CSRF guard on POST/PUT/DELETE (reject cross-site Sec-Fetch-Site + simple-form CT + no auth header); /health gains projectsDir+allowRoots; scripts/validate-mutations.mjs = 17 live security checks (traversal/out-of-roots/root-refusal/reserved/ADS/CSRF/409s/round-trip) ALL PASS - rerun after touching the mutation surface. FULL HASH ROUTING: HASH_KEYS=[tab,sid,dir,file,q,project,section], buildHash reads all view state, writeHash({push}) user-nav pushes, popstate diffs full set via navTo(tab,{writeHash:false}) (no clobber), chat+sid names tab=chat explicitly, files dir/file deep-link in+out+Back WITNESSED live. CONVERSATION: editAndResend two-step confirm + CLEARS resumeSid on truncation (never --resume diverged tail; retry last-turn keeps it); draft persisted; followups derived from settled turn; exportActions copy-all/md/json; ContextPane session{turns,cost}. RESILIENCE: backend.js streamChat 12s grace on ws closed (reconnect re-subscribes, turn continues); health re-probe on ws drop + 10s poll while not-ok + reconnected announce; loadAgents backoff + agentsError banner + installHint (npx commands) when zero available; errText plain-copy map; cwd validated via /api/stat; warmup copy after 5s. HISTORY/SETTINGS: tool_use purple rail fixed (was always green); FilterPills event filter pre-slice; jump-to-first-error; Row actions copy-event; per-session JSON export; SessionMeta header; search highlight mark.ds-hl + windowed title; settings server/keyboard panels; ONE SHORTCUTS array feeds ?-overlay+settings; live/files prefs persisted (live selection Set deliberately NOT - stale sids); two-step stop-all confirms. KIT: FileRow{actions,busy}+perm-disabled, Row{highlight,actions}+Panel/PageHeader{id}+FilterPills, SessionMeta (.ds-session-meta-strip - .ds-session-meta was taken), dashboard onArmStop*, ConversationList loadingText, agent-chat installHint/exportActions/confirmEdit, context-pane session block. GOTCHAS: spool browser verb takes RAW playwright code (page.*), NOT {url,evaluate} JSON, 14s exec cap - split multi-nav witnesses; curl/bash JSON escaping on Windows mangles backslash paths - use a node fetch script for endpoint validation; kit remote advances with chore(release) commits - stash/rebase/rebuild before committing kit.
@@ -1,8 +0,0 @@
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).
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-0d1408fa048b9923-1159
3
- ns: default
4
- created: 1782996219086
5
- updated: 1782996219086
6
- ---
7
-
8
- agentgui 11th run (2026-06-11): Files command surface + PASSWORD-boot fix. CRITICAL: PASSWORD-gated deploys couldn't boot the SPA - /gm/?token= served index.html but static subresources carried no token -> 401 -> blank page forever. Fixed via HttpOnly SameSite=Lax agentgui_token cookie set on any successful auth; WS keeps ?token=. Files became a command surface: kit FileGrid multi-select (marked Set, tri-state header checkbox, EACCES rows unmarkable, Ctrl/Cmd+A) + density modes (list/compact/thumb) + BulkBar export; app wired bulk-delete via ConfirmDialog + Promise.allSettled (failures stay selected). thumbUrl must use downloadUrl (fsAllowRoots) not imageUrl (narrower allowlist, 403s repo files). Shipped-jank fixes: .ds-file-open dead CSS from an earlier run, filesMain dropped permissions field, Crumb narrow-collapse keyed on wrong container class, webjsx null-attribute-toggle bug, elevation unification (panel=bg-2+hairline+r-2, no shadow). Env: validate-mutations.mjs made portable; plugkit chromium needs --no-sandbox; page.goto waits on hung CDN subresources use waitUntil:commit; witness body is shell-interpolated so avoid $(...)/backticks.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-0dad5d82fec829ba-887
3
- ns: default
4
- created: 1784892479919
5
- updated: 1784892479919
6
- ---
7
-
8
- agentgui docstudio-port run (2026-07-24): added MenuButton (checkmarked select menu, overlay-primitives.js), ChatSuggestions (blank-thread composer-priming chips, chat.js), BatchProgressLabel/formatBatchOutcome (sequential batch progress + aggregate outcome toast, editor-primitives.js), InfoRow/InfoSection/DiagnosticsPanel (static debug readouts, editor-primitives.js) to the anentrypoint-design kit, all barrel-exported. Real webjsx crash found+fixed mid-verify: InfoSection's loading-to-loaded transition mixed key namespaces at the same diff slot -- reusing one key across a text-only render and an element-children render crashes applyDiff('reading key'); fixed by giving the two branches distinct keys (body-loading/body-rows). Standing lesson: a component switching between structurally-different children at the same slot needs each branch keyed distinctly, not just the parent.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-10a776effb7ce3a6-935
3
- ns: default
4
- created: 1780044606446
5
- updated: 1780044606446
6
- ---
7
-
8
- agentgui composer (DS ChatComposer in c:/dev/anentrypoint-design/src/components/chat.js): the message textarea is controlled (value prop). Re-applying value on every parent render resets the caret and drops fast keystrokes. FIX (in the kit, then rebuild+vendor): send() reads the LIVE textarea value via a captured taEl ref (not the lagging value prop); taRef syncs el.value to the prop ONLY when they differ. Paired app.js change: composer onInput re-renders only on empty<->non-empty draft transition (the only change that toggles the send button disabled state), not per keystroke. Verified live: GUI chat round-trip GUIOK/REBUILT streamed end-to-end (compose->WS chat.sendMessage->claude-code->streaming_progress->transcript). Playwright .type() still only lands 1 char (synthetic per-char typing races the controlled re-render) but native-setter/paste/IME and human typing work — that is a test-harness artifact, not a user bug.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-10d264b4f8e66fb4-1492
3
- ns: default
4
- created: 1781174463909
5
- updated: 1781174463909
6
- ---
7
-
8
- agentgui GUI Claude-Code-web parity sweep (2026-06-11, 10th run) CLOSED. workflow .claude/workflows/gui-claude-code-parity.js (6 design-language lenses vs claude.ai/code; 66 agents -> 37 gaps, PUNCHLIST-PARITY.md). PUSHED kit anentrypoint-design 28387c3 + agentgui 0a93fc6. KIT: AgentChat flat:true+aicat:false -> .chat-msg-flat full-width avatar-less turns + .chat-role label + faint assistant bg (bubble layout kept only for messenger demo); composer one bordered rounded-rect shell (textarea borderless, inline --r-1 send, was --r-pill+50% circle); .chat-tool bordered status-toned card (bundle had ZERO before); .chat-code-lang lang tab; ::selection accent-tint not mascot; WorkspaceShell mainFlush + .ws-main gutter + .ws-crumb min-height:48; SessionDashboard status-bucket groups + header breakdown + .ds-dash-stream-disc heartbeat + tri-state select-all + is-armed pulse; SessionCard cost/isNew/icon-actions/is-stale amber bar; TYPE_ICON.dir=folder + file-image/link icons; ConversationList skeleton; FilePreviewCode Prism highlight + gutter; motion easing reduced-motion-guarded. LOAD-BEARING webjsx FIX: filter(Boolean) EVERY children array (SessionCard passed raw nulls positionally; applyDiff crashes reading key on ANY null among VElements, pre-existing latent bug). GOTCHA port 3000 owned by another app -> witness on PORT=3009; first /gm/ hit = 30-90s ccsniff walk. DEFERRED (rows pending): Files multi-select+density, /api/move-confined, up-button+grid-shortcuts, F3 elevation.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-118c35ac67541d98-2909
3
- ns: default
4
- created: 1783690602154
5
- updated: 1783690602154
6
- ---
7
-
8
- agentgui 34th run (2026-07-10): user re-requested max gui usability/practicality/predictable/negative-space via wfgy-method critique (identical ask to 31st/32nd/33rd runs). Ran gui-ux-craft workflow wf_919164f1-648 (34 agents, all completed, 0 errors) plus a parallel live-browser negative-space audit agent. Negative-space audit came back CLEAN (no new dead-void/contrast/overlap regressions across chat/history/settings/files at 1280/900/420px) - three consecutive clean passes (31st/33rd/34th) on that specific dimension, recommend future sweeps shift focus to interaction-level polish instead. Main workflow confirmed findings across typography-rhythm/copy-tone/perceived-perf/kit-dx/interaction-density lenses. Kit fixes (design repo): editor-primitives.css shadow font tokens --fs-2/--fs-0 didn't exist anywhere in the real scale, remapped to --fs-lg/--fs-tiny (4 spots); stale --lh-base fallback 1.4 fixed to 1.55 (matches live token, 4 spots); app-shell.css .glyph/.ds-field-count/.ds-row-detail hardcoded literals tokenized; ~29 hardcoded outline:2px solid var(--accent-ink) focus rules across chat.css/editor-primitives.css converted to var(--focus-w) solid var(--focus-color) with negative-offset calc() handling for inset rows; .chat-tool-copy added to the coarse-pointer touch-affordance media block (was the one tool-action button missing 44px floor); .ds-select gained a base min-height:32px floor (previously only per-scope overrides had it); Btn's className prop renamed to class to match Panel/Heading convention (2 call sites in sessions.js updated); AgentControls/AgentChat gained an agentsLoading prop mirroring the existing modelsLoading disabled-select pattern; COMPONENT_API.md gained Btn variant-precedence and PageHeader compact/dense/id docs. App fixes (agentgui): History no longer falls back to the raw session id when a session has no title/project - falls back to cwd then 'Untitled conversation'; ACP provider-error copy truncated+prefixed 'connection failed, try restart:'; Settings/Live copy-tone fixes ('chat'->'conversation', 'cwd'->'folder' in placeholders); ConversationList loading skeleton no longer gated to the history tab; new-chat confirm dialog copy aligned ('Clear conversation?'->'Start a new chat?'). Kit build 0 errors, re-vendored dist/247420.{js,css} (css 454635->456041 bytes, js 392679->393309 bytes) into site/app/vendor/anentrypoint-design/. Browser-witnessed live (0 pageErrors, .ds-select min-height computed 32px in the live DOM confirming the vendored bundle carries the fix). Kit pushed to origin/main after a rebase (a release commit had landed concurrently, ee518e8/f808233 -> 3b1080c). agentgui pushed 9c8094b, all 4 CI checks (Deploy GH Pages, Publish and Release, Auto-Declaudeify, Test) green. Standing gotcha reused again: PASSWORD env value '123,slam,123,slam' must be treated as one literal token (contains commas) for ?token= browser auth.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-119cf70dd19aa0a5-2225
3
- ns: default
4
- created: 1781109622887
5
- updated: 1781109622887
6
- ---
7
-
8
- agentgui GUI logic+predictability sweep (2026-06-10, 9th max-effort run) CLOSED. NEW workflow .claude/workflows/gui-logic-predictability.js (6 lenses: interaction-lifecycle, cross-surface-consistency, information-architecture, realtime-truth, input-ergonomics, scale-robustness; 78 agents -> 67 confirmed findings, PUNCHLIST-LOGIC.md). KIT (anentrypoint-design): ConfirmDialog/PromptDialog {error,busy,busyLabel} + DOCUMENT-LEVEL Escape listener + focus-restore only on genuine close (queueMicrotask remount guard - webjsx refs re-fire null->el on every render, naive teardown re-steals focus); SessionCard {stopping,title,elapsedMs,external} + fmtDuration export; ChatComposer {onPasteFiles,onDropFiles} + IME guard + Esc-cancels-while-busy + hint line + per-bit context onClick; AgentChat {shownMessages,onShowEarlier} MESSAGE_CAP=100 + 20k-streaming tail window + {cwdError,cwdChecking}; UploadProgress {actions,onDismiss}; hasSelectionInside + autoscroll pause; markdown loader 30s retry never latches degraded; fmtBytes=fmtFileSize 0 B. APP: realSid=claudeSessionId||sessionId dashboard join; error-from-recency not cumulative; per-sid toolRunning stale derivation; ev.i maxI SSE dedup; max(index,tally) counters; persistChat debounce+100msg cap+4KB tool-payload trim+quota banner+cross-tab storage ts-guard; Escape ladder overlay>file-dialog>confirms>stop-generation; window dragover/drop preventDefault outside dropzones; Mod+Shift+L; stopping Set + awaited bulk stops; upload drain queue + 409 replace; settings reorder; '/' on files/live. SERVER: chat.active rows carry claudeSessionId; streaming_cancelled broadcast (aborted never completes); 60s terminal-frame replay on re-subscribe (replayedTerminal) fixes ws-drop busy-hang; chat_active_changed hints; /v1/history events ?limit shim in server.js (ccsniff has none). GOTCHAS: parallel kit/app agents drift on prop contracts - this run caught app onPasteImage vs kit onPasteFiles AND backend missing streaming_cancelled type; ALWAYS grep the joints after parallel batches. Browser witness caught Escape dead with focus on H1 (kit listener was backdrop-scoped) - fixed document-level + app ladder fallback. Witnessed 0 errors all tabs, 420px no h-scroll, glyphs 0.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-15a07cd761b337c4-4320
3
- ns: default
4
- created: 1783687056884
5
- updated: 1783687056884
6
- ---
7
-
8
- {"key":"agentgui-33rd-run-ux-craft-sweep","value":"agentgui 33rd run (2026-07-10): user re-requested max gui usability/practicality/predictable/negative-space via wfgy-method critique (identical ask to 31st/32nd runs). Ran gui-ux-craft workflow wf_7f1a513c-2a3 (34 agents, 33 completed, 21 confirmed, 1 lens (kit-dx) crashed mid-run) plus a parallel live-browser negative-space audit (found 2 new issues: Settings health-chip 'connected' text used raw --accent lime rgb(182,255,27) on near-invisible near-paper bg - fixed to --accent-ink on tinted bg; History empty-state had fixed min-height:50vh centered void leaving 300px+ dead space at 1280px and >50% viewport blank at 420px - fixed to natural top-aligned height with a new .history-empty-hints ShortcutList filling the reclaimed space). Kit fixes (chat.css/app-shell.css/editor-primitives.css/community.css/colors_and_type.css/agent-chat.js/context-pane.js/sessions.js/components.js): --tr-caps/--lh-long/--space-2 token adoption for 4 hardcoded typography values, cwd-fact font-family made consistently mono across composer/context-pane/dashboard, agent-name font-family made consistently sans, panel margin-bottom rhythm aligned to files-stack gap, brightness(1.08) lightening hover bugs on send-button/rail-action/editor-dialog-buttons fixed to brightness(0.92) darkening (AA-safe pattern from 32nd run), --green-2 text contrast fix in community.css, light-theme ::selection contrast raised to 46% (dark theme's 24% explicitly preserved), --accent-tint light-theme value switched to blend --accent-ink instead of raw --accent (dark theme value explicitly pinned), CwdBar save/cancel button order fixed to match ConfirmDialog convention, 30 hardcoded focus-ring outline instances (not just the 11 originally cited - same mechanical bug repeated) routed to --focus-w/--focus-color/--focus-offset tokens, chip/badge tone-success/tone-error/tone-neutral families consolidated (all legacy class aliases preserved), icon-btn-primary hover color fixed to match btn-primary's two-tone-flip, new AgentListSkeleton component (shimmer-row loading state matching FileSkeleton pattern, had to also add it to src/components.js barrel export - a component only exists to consumers if re-exported there, sessions.js alone isn't enough), UploadProgress gained an indeterminate/marquee CSS state for in-flight transfers with no percent yet. App fixes (app.js): session-vs-conversation vocabulary unified (Live tab copy, stopAllActive messages, Alert title), duplicated folder-drop announce string hoisted to one const, 'allowed root(s)' internal-jargon replaced with 'accessible folder(s)' at 6 user-facing sites (internal fsAllowRoots fn name/comments untouched), boot render no longer gated behind the health-probe await (state.health='unknown' + synchronous render() before the probe), agents-loading branch now uses AgentListSkeleton instead of bare spinner+text, upload rows pass indeterminate:true for in-flight zero-percent state. kit-dx lens re-run separately found 3 real doc gaps (voice.js/theme-toggle.js/data-density.js entirely undocumented, SessionMeta undocumented next to documented SessionCard, 6 utility exports undocumented) all fixed in COMPONENT_API.md. Used 4-6 parallel subagents to implement disjoint file sets concurrently (kit CSS agent, app.js agent, upload-progress agent, kit-dx audit agent, then a docs agent) - worked well since file ownership was cleanly split, though one subagent's rebuild step raced another's and both had to re-run node scripts/build.mjs at the end to reconcile before final vendor copy. LESSON: a new kit component isn't actually consumable until it's re-exported through src/components.js's barrel - adding it only to the component file itself (e.g. sessions.js) leaves it invisible to the bundle even after a successful build with 0 lint errors; always grep the built dist for the new export name to confirm before wiring app.js against it. Kit pushed 4105bd1, agentgui pushed 3bac0fe then a94bf92 (PRD-state-only commit), all CI green both repos (Test/Auto-Declaudeify/Deploy GH Pages/Publish and Release on agentgui; Deploy GH Pages/Publish 247420 to npm on design), browser-witnessed live via agent-browser (0 console errors) at localhost with PASSWORD=comma-containing token treated as one literal string throughout."}
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-15c73aca528535cb-2183
3
- ns: default
4
- created: 1784299879288
5
- updated: 1784299879288
6
- ---
7
-
8
- agentgui 46th run (2026-07-17): fourth docstudio design-cue pass, same directive repeated. Fresh Explore-agent survey of /config/docstudio (told what runs 42-45 already shipped) found only 1 genuinely new candidate after exhausting low-hanging fruit: chat.js's two role=log chat-thread containers (chat.js:533,581) and agent-chat.js's one (agent-chat.js:476) gained aria-live=polite aria-relevant=additions, matching docstudio chat-tabs.js:62-65, so new messages announce to screen readers without spamming on streamed tokens - verified via source that aria-relevant=additions only fires on new keyed-sibling insertion (agent-chat.js:582's per-message keyed map), not in-place text mutation during streaming, so no live-dispatch witness was needed for that corner case. A second candidate (self-retry dropdown trigger, docstudio chat-model-selector.js) was explicitly skipped since no async-populated dropdown exists in the kit yet to wire it to - avoided speculative unused plumbing. Also fixed an unrelated hygiene bug surfaced mid-rebase: kit test.js's lint-tokens.mjs spacing-report regex only matched the old "[lint-spacing] REPORT — N raw" format; upstream v0.0.349's ratcheted-spacing-lint change reformatted stdout to "PASS — N <= baseline N", silently breaking the regression check - widened regex to match both formats. Kit rebased cleanly onto v0.0.348/v0.0.349 (one dist-only conflict, resolved by rebuilding dist/247420.js fresh). Kit pushed 8436f0a->f81f93d, all 3 kit CI checks green. agentgui re-vendored, browser-witnessed live on localhost:3009/gm/ (bodyLen:19429, hasAgentgui:true, 0 console errors, .agentchat-thread confirmed via page.evaluate to carry role=log aria-live=polite aria-relevant=additions), pushed e84cf26->639b78e->fef8222, all 4 CI checks green each push. Standing observation: the Test workflow's bun-install step sometimes takes ~13 minutes (likely npm registry propagation delay for a freshly-published kit version) before completing green - not a hang, just slow; worth waiting rather than treating as stuck if the job's own step-by-step status (via gh api repos/.../actions/jobs/<id>) shows genuine progression rather than a frozen step.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-166f52796185e0e7-1487
3
- ns: default
4
- created: 1783891644525
5
- updated: 1783891644525
6
- ---
7
-
8
- {"key":"agentgui-27th-run-negative-space-attention-detail","value":"agentgui 27th run (2026-07-03): negative-space + attention sweep, scoped to the specific ask (not a full agent fan-out) - a live-browser review (screenshots + DOM measurement at 1280px and 420px) across chat/files/settings. Chat/settings visual balance was already reasonable from the prior 26 runs; found and fixed 2 real issues. (1) Files filter placeholder 'Filter files in this directory' clipped against its intentionally-compact 220px input (no ellipsis, last character cut off at the box edge) - shortened to 'Filter files', which fits without widening the control (the kit's own comment already states the compact width is deliberate: a full-width filter 'reads as a search page and costs fold height'). (2) Settings SERVER panel rendered 4 short facts (version/uptime/connected clients/projects folder) each as its own .lede div - .lede is the fs-xl/tall-line-height INTRO-PARAGRAPH style, not a metadata style, so 4 short facts read as 4 oversized paragraphs with real dead vertical space between them, and inconsistent density vs the allowed-roots rows directly below (already using the compact SessionMeta strip). Folded all 4 facts into one SessionMeta call alongside the roots - same information, denser, one consistent style for every fact in the panel. Browser-witnessed at both viewport widths, no wrap/overlap regression. No kit changes needed (both fixes were app-only copy/wiring). Pushed b0b38fb."}
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-1a148cf9c3126df5-3963
3
- ns: default
4
- created: 1784278257475
5
- updated: 1784278257475
6
- ---
7
-
8
- {"key":"agentgui-42nd-run-gui-practicality-sweep","value":"agentgui 42nd run (2026-07-17): user-driven cwd-practicality complaint plus a mid-run docstudio design-cue directive. cwd practicality: added an inline browse popover (reuses existing confined /api/list into an independent state.cwdBrowse), always-visible allowed-roots chips (prefetched on editor open), a small localStorage recent-cwd MRU (capped 6), relative-subpath resolution against the current cwd, and fixed a real bug where Escape did nothing to close the cwd editor (global keydown typing-guard blurred+returned before the Escape ladder - added a targeted exception + nested browse-then-editor ladder). History's directory fact gained a one-click 'use as chat cwd' action (kit SessionMeta gained generic onAction/actionLabel). REAL INFRASTRUCTURE BUG found+fixed: the cwd browse popover inherited a previously-undiscovered production bug where this env's nginx proxy_pass URI normalization silently collapses an encoded %2F path-segment slash back to a literal / before forwarding, 403ing any /api/list/<abs-path>-shaped request - this ALSO meant the pre-existing Files tab drill-down navigation had been broken in production the whole time. Fixed by switching /api/list,/api/stat,/api/file,/api/download,/api/image to ?dir=/?path= query params (immune to that normalization) via a new resolveConfinedPath() helper; validate-mutations.mjs confirmed byte-identical confinement semantics. gui-completion workflow (wf_bcf46a89-739, 29 agents, 17 confirmed): rename/mkdir 409 suggested-alternate-name prefill; bulk-move roots picker (kit PromptDialog gained roots/onPickRoot); DELETE IS NOW SOFT - moves into a confined per-root .agentgui-trash/ (10min retention, purge-on-delete + 200-entry eviction cap) with a real undo toast via new POST /api/restore, not just confirm-before; search-hit event anchors now carried in the URL hash (ets=); Settings gained a scroll-position scrollspy; truncation banners state actual turn count+cost; cross-tab reload banner warns about+confirms discarding an unsent draft; History gained persistent next/prev error nav; session header shows agent/model (sess.model, not the nonexistent sess.agent - caught a wrong-field bug mid-implementation); backend.js's onSessionExpired() was exported but NEVER subscribed - a mid-session 401 failed every fetch completely silently, now shows a persistent reload banner; offline banner gained a manual retry-now button; search-term highlighting now extends into expanded event bodies; History search results gained a JSON export button; Settings gained navigator.storage.estimate(). REAL KIT CRASH found+fixed mid-implementation: passing a VElement/extra prop through ConversationList's caption prop (which is separately used as aria-label:caption||'Conversations', requiring a plain string) caused an intermittent webjsx 'reading key' crash - confirmed via 3 before/after browser runs, re-implemented as a fully separate sibling element outside ConversationList entirely, re-verified crash-free across 3 more runs. Standing lesson: when extending what a caller passes through an existing kit prop, grep every OTHER use site of that prop inside the component first - a prop's contract can be narrower than it looks from the one call site you're touching. docstudio design-cue pass: a subagent found docstudio (vanilla-ESM Material/Gemini-styled) architecturally LESS mature than the kit in every systemic dimension; only 1 of 6 candidate cues was a real gap (session-group eyebrow labels used the generic --tr-caps token instead of the canonical --tr-label token .t-label/.t-micro already establish) - fixed. Two upstream-diverged kit rebases handled cleanly (one single-conflict, one 35-commits-diverged) by rebuilding dist/ fresh from merged sources, never hand-merging generated code. Kit pushed 7c27e9c->fb11176->acd5fd2, agentgui pushed 71d7352->56b865f->2fecd75->a1a394a->5496ec8, all CI green throughout both repos."}
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-1a459001058f618e-567
3
- ns: default
4
- created: 1784892511617
5
- updated: 1784892511617
6
- ---
7
-
8
- agentgui docstudio-port run (2026-07-24): added MenuButton, ChatSuggestions, BatchProgressLabel/formatBatchOutcome, InfoRow/InfoSection/DiagnosticsPanel to the anentrypoint-design kit, all barrel-exported. Real webjsx crash found+fixed mid-verify: InfoSection loading-to-loaded transition mixed key namespaces at the same diff slot, crashing applyDiff reading key; fixed by giving the two branches distinct keys body-loading/body-rows. Standing lesson: a component switching between structurally-different children at the same slot needs each branch keyed distinctly.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-1af3e13f7618e668-2146
3
- ns: default
4
- created: 1781952326763
5
- updated: 1781952326763
6
- ---
7
-
8
- agentgui 20th run iter5 (2026-06-20): ROOT FIX of the cli-wrapper id-mismatch bug class (pushed 80d4b7c). lib/agent-discovery.js discoverAgents() used to REPLACE each found ACP agent (opencode, protocol acp, has path) with a CLI_WRAPPERS entry (id cli-opencode, protocol cli-wrapper, acpId opencode). This cli-* id scheme existed ONLY in discoveredAgents - the registry (claude-runner-agents.js), the WS client picker, and acp-sdk-manager ACP_TOOLS all use plain ids (opencode/gemini/kilo/codex). So every code path that cross-referenced discoveredAgents by the client/registry id broke: (1) getModelsForAgent returned [] for all ACP agents [iter3 4454082]; (2) external-ACP sub-agent discovery dead [iter4 c7de4f5]; (3) agent-descriptors.js:22 'agent.id===opencode' never matched cli-opencode -> opencode/gemini got the generic description + lost the model input spec; (4) process-message.js carried a dead wrapper-resolution branch. The cli-wrapper getModelsForAgent branch did EXACTLY what the plain acp branch does, so the wrapper was pure indirection+bugs. FIX: removed CLI_WRAPPERS const + the wrapper loop/filter in discoverAgents (return plain found agents), the cli-wrapper branch in server-utils getModelsForAgent, the dead wrapper-resolution + now-unused discoveredAgents param in process-message.js; retargeted the iter3 regression test to a protocol:'acp' discoveredAgent. BINARIES already had opencode/gemini/kilo/codex protocol:'acp'+npxPackage so removal is behavior-preserving (improving for descriptors). No client/persisted cli-* ids ever existed (picker always used registry ids). WITNESSED: startup 'Agent IDs: claude-code, opencode, gemini, kilo, codex'; agents.models probe -> [ACP-SDK] kilo started; getAgentDescriptor('opencode') real description + hasModelSpec:true; tests 47/47. NOTE: agent-descriptors module is production-dead (getAgentDescriptor/getAllDescriptors only called by test.js) - candidate for removal IF descriptor-serving is confirmed unwanted (ambiguous intent - ACP capability advertisement). discoveredAgents itself is now near-redundant with registry; full dual-registry consolidation still possible.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-1fd31d6873e9c164-794
3
- ns: default
4
- created: 1780041284686
5
- updated: 1780041284686
6
- ---
7
-
8
- agentgui agent availability: WS agents.list uses registry.isAvailable(id) (lib/ws-handlers-util.js:29) which runs where/which on the command. On hosts where an agent binary is installed outside the system PATH (e.g. claude.exe in ~/.local/bin not on Windows PATH), where fails and the picker shows "(not installed)". Fix pattern: give the registry entry an npxPackage so isAvailable falls back to checking bun/npx presence (returns available-via-npx) instead of false. claude-code now has npxPackage @anthropic-ai/claude-code in lib/claude-runner-agents.js, matching the discovery fallback. The GUI agent picker (site/app/js/app.js) sorts the 4 flagship orchestration targets first: PRIMARY_AGENTS=[claude-code,opencode,kilo,agy], then other-available, then npx-installable, then not-installed.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-21f551be092fd77d-2340
3
- ns: default
4
- created: 1781870430413
5
- updated: 1781870430413
6
- ---
7
-
8
- agentgui 19th run (2026-06-19): maximum-effort quality sweep. Workflow wf_8183560b-e3d (132 agents, 12 lenses, 93 confirmed). APPLIED: resume-transcript-load (loadResumeTranscript() on resumeSid, historical:true messages, loading spinner); acp-force-restart (restart Btn on unhealthy ACP agents, wsCall acp.restart -> ws-handlers-util.js -> acp-sdk-manager.restart()); chat thinking settled state; retry on non-last message; streaming-active badge on chat rail tab; AT: followup-chips aria-live guard, cwd focus restore, shortcuts overlay role=dialog; composer disabled visual state (.is-disabled opacity .55); files-modals focus trap re-query on every Tab, stable modal aria-labelledby (random suffix not seq); sessions.js ConversationList role=listbox + aria-selected; a11y-07 fixed. History: tool_use/tool_result rail=purple; load-older announce(); session cost in meta strip. perf: sortedAgents memoized in state._sortedAgentsCache, files filter 150ms debounced, _seen Set capped 5000->trim 2500, chatFollowups memoized _followupsCache, sessionGroups memoized _sessionGroupsCache, upload DOM <input> cleanup, pathBasename util (4 dedup sites), humanizeMs->fmtDuration. Dead code: historySide() removed (~100 lines), getAvailableAgents export removed. Constants: ARM_RESET_MS=4000. refreshHistory _historyFetching guard. backend.js: SSRF guard localhost+127.0.0.1 allowed, ws-drop message 'Connection lost - please reconnect', stream 500 error sanitized (<300 chars non-JSON), auth-token 401 onSessionExpired hook. http-handler.js: IPv4-mapped IPv6 normalization for rate-limit, image route streaming+20MB cap (was sync readFileSync), IS_WINDOWS module-level. Security: files-plugin confineToRoots(browse+mkdir), acp-plugin shell-injection fix, plugin-routes CSRF fix (server-startup2.js), workflow-plugin unconfined file read fix, asset-server JS injection fix (PASSWD-JS-INJECTION). Code: getAvailableAgents export removed from claude-runner-run.js. Kit rebuilt (design): thinking settled text, retry non-last-msg, aria-modal on all dialogs (already there), combobox role on CommandPalette (already there), tab ArrowLeft/Right (already there), files-modals focus trap, sessions listbox, chat disabled .is-disabled. validate-mutations and test.js not re-run (rate-limited). Pushed agentgui 9de566e; kit vendor re-built from design HEAD.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-231ff5de003f20f0-586
3
- ns: default
4
- created: 1783842773069
5
- updated: 1783842773069
6
- ---
7
-
8
- {"claim":"All grants for opened docs + derived/created docs are pre-accepted","scope":"feedback","why":"Tiffany hit SCOPE_NEEDED on sheets_read because URL-heuristic grant fired for converted /spreadsheets/d/ URL but her OAuth lacked sheets scope. User rule: opening a doc implies all access needed to work with it AND any derivative is approved upfront.","witness_evidence":"public/js/streaming/acp-client.js DOC_TYPE_CATEGORIES broadened to read+write across doc-domain; created docs auto-tracked via docAccess.addCreated in functions/streaming/modules/anthropic-gemini-proxy.js:129"}
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-2567393d3adb03ab-347
3
- ns: default
4
- created: 1783683350732
5
- updated: 1783683350732
6
- ---
7
-
8
- {"key":"agentgui-32nd-run-ux-craft-sweep","value":"see prior fire this turn (mem key already stored) - agentgui 32nd run (2026-07-10) gui-ux-craft workflow wf_0225607d-511, 35 agents 22 confirmed, typography/copy-tone/perf/contrast/interaction-density fixes across app.js and design kit, kit pushed ad000b6 agentgui pushed 5ccaa8a, all CI green."}
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-27faf41cdd050c80-1261
3
- ns: default
4
- created: 1783687082067
5
- updated: 1783687082067
6
- ---
7
-
8
- {"key":"agentgui-28th-run-visual-polish","value":"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) named 3 concrete high-leverage causes and fixed all 3 in the kit. (1) .ws-sessions used flat --bg identical to main content column while .ws-rail/.ws-pane already use --bg-2 (a recessed plane framing the elevated content column) - sessions was the one column breaking that pattern, read as ONE continuous surface with only a 1px hairline. Fixed. (2) .chat-composer had zero elevation at rest - added the kit's own already-defined-but-unused --shadow-1 token. (3) chat tab's mainFlush left controls/heading/empty-state/composer flush against column edge with zero gutter while the crumb bar above kept its own padding - added uniform inline gutter to .agentchat itself, --measure centering unaffected. Standing rule: .ws-rail/.ws-sessions/.ws-pane must all three use --bg-2 for consistent shell depth. Also landed inherited uncommitted community-app reply/delete-message work sitting dirty in the kit tree. Browser-witnessed 1280px/420px before/after, 0 console errors. Kit pushed anentrypoint-design 53c8464, agentgui pushed 42708ea."}
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-28889e43e8ce64cc-3663
3
- ns: default
4
- created: 1783891625733
5
- updated: 1783891625733
6
- ---
7
-
8
- {"key":"agentgui-41st-run-gui-logic-predictability-sweep","value":"agentgui 41st run (2026-07-12): gui-logic-predictability workflow wf_c645ba95-c6a (23 agents, 192 tool calls, 0 errors) - 10 confirmed findings, all implemented, plus one real kit bug found+fixed mid-verification. App (site/app/js/app.js): runningPanel title retitled 'all running sessions · N' (was scoping-ambiguous 'running · N') plus a '(refreshing…)' suffix while a backgrounded-tab poll catches up (new state._activeStale flag); runningRowTitle() gained the same 3s 'indexing…' carve-out computeLiveSessions() already had, so a brand-new session no longer reads Untitled in one panel and indexing in another; Live dashboard elapsed/activity sort now freezes to the last-computed order while a pointer is held down anywhere in the dashboard (new module-level _livePointerDown flag) so cards stop reordering under a mid-click; agy gained a composer disclosure ('continues most recent conversation') matching claude-code's resume banner; History's ConversationList mapper now reads a real agent/model badge sourced from ccsniff (previously hardcoded agent:undefined). Kit (design/src/components/{chat,content}.js, chat.css, sessions.js): ChatMessage's per-message copy action gained the same label/icon click-feedback flip its sibling copy controls already had; .agentchat-followup chips gained a dashed border to visually distinguish contextual follow-ups from generic empty-state seed chips; flashComposerNote's single shared DOM node now queues notes instead of silently overwriting an unread one; SessionDashboard's filter SearchInput now forwards resultCount to its aria-live region - wiring this up SURFACED a real pre-existing bug: SearchInput conditionally returned either a bare <input> or a wrapping <span> depending on whether resultCount/clearBtn were set, and since resultCount now toggles between renders, webjsx's applyDiff corrupted the DOM (a merged select+input node, the real input vanishing entirely) - fixed by always returning the .ds-search-input-wrap shape (confirmed display:contents, layout-transparent, safe everywhere). ccsniff (separate repo, github:AnEntrypoint/ccsniff#main, cloned to /config/workspace/ccsniff-work): Store.sessions() folds in the most-recent-by-ts model per session; index.js's assistant-event ingestion never actually populated model on pushed blocks (only system/init events carried it) - fixed to inherit message.model from the real Claude Code JSONL shape. node test.js ALL TESTS PASS both ccsniff commits (11f6c3b, then 26bbfcc/beff5e7 after a remote-advanced rebase), CI green. Reinstalling required deleting bun.lock entirely (a --force reinstall alone kept resolving to the stale pinned git sha even after rm -rf node_modules/ccsniff). The local buildesk server process needed an explicit SIGTERM restart for the new node_modules/ccsniff to load (Node/Bun caches modules in-process) - the env's custom /opt/gmweb-startup supervisor auto-respawned it within ~20s via bunx agentgui@latest, which correctly resolves to the local workspace's own bin/gmgui.cjs (workspace-linked, confirmed via the 'Workspace mode: skipping npm version checker' startup log line), not the published npm package. Kit pushed 71ee4e4, agentgui pushed 7ad7b4f then b32836e (PRD-resolve residual), all CI green all three repos (agentgui/design/ccsniff). Browser-witnessed every finding live on buildesk: Live filter input/select intact + working post-fix, aria-live '0 results'; .chat-msg-action.is-copied/.agentchat-followup CSS rules live in CSSOM; History rows reading real agent+model badges (18/18 sessions, claude-sonnet-5); 0 pageErrors throughout."}
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-2f4fd06515abf439-2562
3
- ns: default
4
- created: 1784292263392
5
- updated: 1784292263392
6
- ---
7
-
8
- {"key":"agentgui-44th-run-docstudio-followup","value":"agentgui 44th run (2026-07-17): follow-up to the 43rd run's docstudio design-cue pass, user asked for further ideas from docstudio. Fresh research agent surveyed docstudio source vs current kit state (told explicitly what already existed, avoiding re-suggesting solved gaps) - 5 candidates: (1) inline per-turn error/retry instead of global toast [implemented], (2) generic Avatar primitive [implemented, consolidates chat.js/community.js duplicated letter-fallback logic], (3) FileSkeleton missing aria-busy [implemented, other skeletons already had it], (4) backdrop-dismiss strict e.target===e.currentTarget check [verified already correct everywhere, no change], (5) Badge icon-only collapse at narrow width [skipped as fragile/low-value per survey's own flag]. Kit: ChatMessage (chat.js) gained error/onRetry rendering inline on the specific failed turn, destructive-toned, distinct from the existing neutral stopped/incomplete notices. content.js gained Avatar({name,src,fallback,size}), barrel-exported. files.js FileSkeleton gained role=status/aria-busy/aria-label. REAL BUG caught by browser witness, not any lens: agent-chat.js's message-mapper first gated the new error/onRetry forwarding on `!isAssistant`, but agentgui's sendChat() always attaches an error onto the eager ASSISTANT placeholder it pushes, never a dangling user message - the gate was wrong and would never have fired; fixed to key on trailing-position (i===lastIdx) regardless of role. Separately, removing agentgui's now-redundant chaterr banner left a stray brace causing a real SyntaxError:Illegal return statement at app.js:2343 that fully blanked the live page (bodyLen:149, hasAgentgui:false) - caught on the FIRST post-deploy browser witness dispatch (not from any lens/static check), fixed via node --check, re-verified clean (pageErrors:[], hasAgentgui:true, bodyLen:18805). KEY LESSON: a same-session 'verify no change needed' conclusion about one part of a diff (the backdrop-dismiss check) must never substitute for the mandatory live re-witness of the ACTUAL code that changed - the crash was only caught because VERIFY genuinely re-loaded the live page post-push rather than reasoning statically that the change 'looked safe'. Kit built+tested 3x across 3 commits, 2 clean rebases + 1 dist-rebuild-fresh rebase (concurrent v0.0.340-343 releases mid-pass), pushed 3417592->f362528->03c9028->17ee86c all CI green. agentgui re-vendored+pushed f08f698 (post-crash-fix), all 4 CI checks green, live-witnessed working."}
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-34a749430303c5f7-544
3
- ns: default
4
- created: 1784892533381
5
- updated: 1784892533381
6
- ---
7
-
8
- agentgui CI/GitHub Actions detail: capture-screenshots must run under bun, not node. npm install --ignore-scripts in gh-pages.yml skips native compilation, leaving better-sqlite3 without a compiled .node binding; database.js tries bun:sqlite first, then falls back to better-sqlite3. Under Node both fail and the server crashes silently within the 20s health-check window. Fix: bun run scripts/capture-screenshots.mjs (not node ...) -- process.execPath becomes bun, so the spawned child server also runs under bun and loads bun:sqlite natively.
@@ -1,8 +0,0 @@
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.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-38b7e24dbcba2f3e-639
3
- ns: default
4
- created: 1783844902974
5
- updated: 1783844902974
6
- ---
7
-
8
- HISTORICAL/SUPERSEDED (do not trust): agentgui briefly (2026-05-29) loaded anentrypoint-design from unpkg@latest at runtime instead of a local vendored copy, for always-latest tracking at the cost of requiring network + drift on upstream publish. This was REVERTED - as of the 2026-06-04/06-05 runs, index.html loads the DS kit from the LOCAL ./vendor/anentrypoint-design/247420.{js,css} again (re-confirmed live via browser witness on the 37th run, 2026-07-12: <link href='./vendor/anentrypoint-design/247420.css'>). AGENTS.md's 'DS load = LOCAL vendor' section is the current truth; any memory claiming unpkg is the live source is stale.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-39a7cc2f887a90b1-1079
3
- ns: default
4
- created: 1783075545903
5
- updated: 1783075545903
6
- ---
7
-
8
- agentgui 21st run (2026-07-02): GUI cohesion sweep. gui-cohesion workflow wf_6b9f1890-320 (25 agents, 12 confirmed). Kit: WorkspaceRail rail attention-dot tone flag, WorkspaceShell keepSessionsTrack (sessions column no longer reflows the 4-column grid on tab switch, mirrors 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. App: computeLiveSessions() single source of truth for WorkspaceRail badge+tone and liveMain (fixed nav-badge undercounting external sessions), sessions rail rendered on Live tab too, follow-up chip label fix, recentSessionFiles() from tool-call file_path args, disconnected->offline vocab fix, refreshActive() visibility-gated polling. Server: /health corsWildcardOpen + settings error banner. Kit pushed 6cfd115 (rebased onto concurrent fe50db5, regenerated dist rather than hand-merging minified bundle conflict). agentgui pushed 3410178. Both CI green, 28/28 tests, 0 console errors.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-40d6169c8759061d-806
3
- ns: default
4
- created: 1783680462136
5
- updated: 1783680462136
6
- ---
7
-
8
- {"key":"agentgui-30th-run-sessions-rail-dead-click","value":"agentgui 30th run (2026-07-03): sessions-rail dead-click fix. ConversationList stays mounted on files/live/settings via keepSessionsTrack but onSelect only special-cased the chat tab; every other tab's click loaded state but never navigated, since only historyMain() renders state.events. Fixed: non-chat-tab selection now navigates to history first. Verified live (state.tab live->history, selectedSid set, events fetched). STANDING RULE: a persistent-across-tabs component kept mounted via keepXTrack whose interaction effect renders on only ONE tab must have every OTHER tab's handler produce the same visible effect (usually navigate to the rendering tab) - inert-but-visible is worse than not shown. App-only fix, agentgui pushed c1e4915."}
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-4420e6d00e5c8632-2318
3
- ns: default
4
- created: 1781943726445
5
- updated: 1781943726445
6
- ---
7
-
8
- agentgui 10th run (2026-06-11) Claude-Code-web parity sweep (workflow .claude/workflows/gui-claude-code-parity.js, 6 design-language lenses visual-language/layout-composition/chat-thread-craft/file-browser-fidelity/live-session-command/motion-microinteraction; 66 agents -> 37 confirmed PUNCHLIST-PARITY.md; kit 28387c3, agentgui 0a93fc6). Chat reads like Claude Code not messenger: AgentChat passes flat:true+aicat:false; flat turns full-width avatar-less capped at --measure led by .chat-role label, assistant turn faint color-mix(--fg 3%) bg (.chat-msg-flat); bubble/avatar kept only for messenger demo. Composer ONE bordered rounded-rect (.chat-composer border --rule +--r-2, :focus-within ring) borderless textarea + inline --r-1 send. Tool calls = bordered status-toned card (.chat-tool de-frames .chat-bubble, head icon/name/label/status-pill, running->accent error->flame); bundle shipped ZERO .chat-tool CSS before. injectCodeCopy reads <code> language-* class -> .chat-code-lang header tab. ::selection accent-tint. Layout: kit WorkspaceShell gains mainFlush; .ws-main padding space-4/space-5, chat opts out via .ws-main--flush; .ws-crumb min-height 48px+left gutter. Live dashboard command center: SessionDashboard status-bucketed grid, header breakdown N running/M idle/K errors, .ds-dash-stream-disc heartbeat, tri-state select-all, is-armed stop pulse; SessionCard cost/token stat, is-new arrival cue, icon-led actions, is-stale amber inset. Files TYPE_ICON.dir=folder + file-image/link/folder-open icons; ConversationList loading skeleton; FilePreview Prism highlightAllUnder + .ds-preview-gutter line numbers + image fit/actual toggle + checkerboard. Motion all prefers-reduced-motion:no-preference guarded (.ws-shell grid-template-columns ease, thread scroll-behavior smooth, .ws-scrim opacity fade, copy->copied flip, is-new fade-in). LOAD-BEARING webjsx fix: SessionCard passed raw nulls positionally in children arrays -> applyDiff crashes reading 'key' on ANY null among VElement siblings; fix .filter(Boolean) EVERY children array + Btn spreads array children. Kit-wide rule: never pass conditional x?h():null positionally - build array and filter(Boolean). Deferred to 11th: Files multi-select+BulkBar+density-thumbnail, /api/move-confined, toolbar up-button+grid keys, F3 elevation unification.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-447e5a54ddc9357a-654
3
- ns: default
4
- created: 1784892490926
5
- updated: 1784892490926
6
- ---
7
-
8
- agentplug daemon fix (2026-07-24): persistent plugin gm not loaded error on the shared agentplug-runner daemon root-caused in registry.rs dispatch_and_evict_on_error, which permanently clears a plugin pool slot on any dispatch error with no reload path on DispatchHandle. Fixed by threading Engine+Module through DispatchHandle so dispatch self-heals a missing slot via re-instantiation. Also found+fixed a second real bug: browser.rs was missing the CommandExt trait import for its Windows CREATE_NO_WINDOW flag, breaking the Windows release build. Both pushed to AnEntrypoint/agentplug main (b981b67, d388d81), CI-verified green across all 6 platforms.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-455b3beb4afabe14-591
3
- ns: default
4
- created: 1780592707612
5
- updated: 1780592707612
6
- ---
7
-
8
- agentgui plugin tool provisioning on Windows: lib/tool-spawner.js must iterate bun->npx fallback. BUNX_RUNNERS=['bun','npx'] tries each in sequence; on Windows hosts without bun the missing-command error arrives via stderr+close (not the 'error' event), so isMissingCmdError regex matches /not recognized|ENOENT|command not found|cannot find/i on BOTH error.message and captured stdout+stderr. Only falls through to next runner when missing flag set. Pattern: binary-might-not-exist -> runner fallback + check both error.message and process output streams + cross-platform regex alternation.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-4845ee594759151c-560
3
- ns: default
4
- created: 1780592706754
5
- updated: 1780592706754
6
- ---
7
-
8
- agentgui WebSocket /sync endpoint testing: server sends sync_connected with clientId on connect. Legacy handler lib/ws-legacy-handlers.js handles ping->pong, subscribe->subscription_confirmed, get_subscriptions->subscriptions, unsubscribe, latency_report. All responses use codec encode/decode (lib/codec.js). Message ordering requires registering the ws.on('message') handler BEFORE sending. Test pattern: const queued=[]; let waiting; ws.on('message',...); queued.forEach(m=>ws.send(m)); waiting.resolve(...) — ensures handler is live before messages flow.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-4a1254c60b868b88-374
3
- ns: default
4
- created: 1784816756384
5
- updated: 1784816756384
6
- ---
7
-
8
- TEST_EMBED_FIX_VERIFY_900: agentplug bert/libsql/treesitter wasm plugins were manually installed via gh release download into /config/.agentplug/plugins/ after confirming they were never auto-downloaded (403 from unauthenticated GitHub API rate limit on agentplug-runner's own fetch_latest_plugin_version call); sha256-verified against each release's sidecar before install.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-4bafafa47a0e4b6c-3237
3
- ns: default
4
- created: 1781793216567
5
- updated: 1781793216567
6
- ---
7
-
8
- agentgui 12th run (2026-06-11) UX-craft sweep + empirical-witness-first (workflow .claude/workflows/gui-ux-craft.js, 6 new lenses typography-rhythm/copy-tone/perceived-performance/kit-DX/light-theme-contrast/interaction-density; 46 agents -> 40 confirmed, PUNCHLIST-UX.md; ALL 58 implemented). Server runs PORT=3009 (3000 owned by another app). LOAD-BEARING shipped-bug discoveries via the live page as debugger: (1) live tab '1 running over No-live-sessions' was a webjsx applyDiff CRASH (reading key) - SessionDashboard swapped UNKEYED empty-state body for keyed group children; fix = ONE stable keyed .ds-dash-groups body across empty/grouped/flat + Btn passes key through (was dropping it) + kit emptyAction CTA. (2) mobile drawers dead in prod: base .ws-drawer-toggle/.ws-scrim{display:none} sat AFTER media blocks - base-hidden rules must PRECEDE media reveals. (3) composer cwd bit invisible: app passed {label}, kit read .text - prop-name-contract failure; ChatComposer now normalizes text||label, drops empty bits before separators. (4) 11th-run multi-select checkbox hover-clipped by a stale duplicate .ds-file-check absolute-overlay block later in app-shell.css. (5) lint-null-children.mjs (new build gate) caught 14 latent crash sites in freddie.js. Layout staged column yield: .ws-shell yields pane->drawer @<=1480, sessions->drawer @<=1100, rail->60px icon strip <900 (labels hidden unconditionally; clipped 'age'/'Ne' was the 420px regression); chat thread 245px->776px at 1304px. PageHeader dense prop (24px not 180px) on all 5 tabs. DropZone-with-children = passive wrapper (overlay only on drag). Files: ONE breadcrumb, compact ghost toolbar 32px/r-1, FileGrid skeleton only on cold load (refresh dims in place is-refreshing). History rail flame = error DENSITY sessionErrorDense (errors>=3 AND >15% events). Theme: --flame/--amber theme-tuned pairs (light #C53E00/#8A6512 AA on paper; dark #FF5A1F/#D9A93A); --amber was referenced 8x but never defined; 5 --code-* syntax aliases; destructive ACTIONS=warn, flame=error STATUS only. Control craft: one 32px/r-1 metric for controls/dash/toolbar/BulkBar; focus rings unified inset accent; .ds-select ellipsizes+:focus-visible. Perceived perf: index.html 3x modulepreload+jsdelivr preconnect+static boot-splash; AgentChat warms markdown stack on mount, MdNode paints raw text synchronously while loader in flight; EventList loading skeleton; agents panel tri-state. Server: POST /api/move (dual realpath confinement, root/self-nesting refusal, 409-unless-overwrite, EXDEV mapped) + BulkBar move-selected -> runBulkMove; validate-mutations.mjs 26 checks (9 move). Kit DX: COMPONENT_API.md Workspace Surfaces section (AgentChat onPasteFiles-not-onPasteImage trap, WorkspaceShell stableFrame/mainFlush, FileGrid selection/density, DropZone wrapper); FileGrid canonical selected/onToggleSelect (marked/onMark aliases); 22 Btn primary:true -> variant:'primary'; AgentChat who->role; FOUR build lints (tokens/glyphs/null-children/classes). Witness caveats this env: spool out/ keeps STALE responses (re-read on mismatch); plugkit browser sessions expire between dispatches (fresh session needs full goto); first git_status after heavy churn can report stat-cache false positives.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-4c06c45b4d31bc60-1202
3
- ns: default
4
- created: 1783077058750
5
- updated: 1783077058750
6
- ---
7
-
8
- gm-method lesson: a responsive drawer/overlay whose left/inset offset changes across CSS breakpoints must re-derive its closed-state transform (translateX/translateY) at each breakpoint that changes the offset. A transform tuned as a percentage of the element's own width (e.g. translateX(-110%)) assumes left:0; if a later, narrower breakpoint shifts left to make room for a persistent sibling rail (icon-only nav strip), the same percentage no longer clears the viewport and leaves a visible sliver of the closed drawer overlapping content. Fix pattern: override the closed-state transform inside the narrower breakpoint's media query using calc(-100% - <the offset variable>), not a hardcoded percentage. Caught via live-browser DOM measurement (getBoundingClientRect on the drawer element) showing a nonzero right-edge when the drawer should be fully off-screen — a screenshot alone can be ambiguous at ~35px, but the measured rect makes the regression unambiguous. General takeaway: when auditing a multi-breakpoint responsive shell, check every off-screen/closed positioning rule at EVERY breakpoint that touches that element's left/inset, not just the breakpoint that introduced the transform.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-4dfac801d0378448-3676
3
- ns: default
4
- created: 1781100435367
5
- updated: 1781100435367
6
- ---
7
-
8
- agentgui GUI cohesion sweep (2026-06-10, 7th max-effort run) CLOSED. NEW workflow .claude/workflows/gui-cohesion.js (6 cohesion lenses: chat-agent-feel, fsbrowse-file-view, simultaneous-live-sessions, shell-navigation, visual-system, crosscut-perf-a11y-sec; benchmark->adversarial-verify(kept-typography guard)->ordered plan; distinct from gui-audit/overhaul/predictability-polish - hunts the ONE-PRODUCT cohesion/feel gap vs claude.ai/code/cowork/Claude-Desktop). Ran 61 agents -> 40 confirmed gaps (PUNCHLIST-COHESION.md). PUSHED: kit anentrypoint-design 9ef409a, agentgui 15b626c. KIT: chat.js injectCodeCopy() per-block code copy (.chat-code-block wrap+.chat-code-copy reveal-on-hover, copy->copied 1.6s, idempotent data-copy-wired) + CodeNode head copy + actionRow label+copy icon (was page) + ChatComposer context prop (.chat-composer-context agent middot model middot cwd); agent-chat.js streaming fence detection (preShell:true -> chat.js text renderer monospaced <pre>, no prose->block reflow) + followups prop + avatar threading; sessions.js SessionCard status:stale->idle word + .status-dot-stale (STATUS_WORD/DISC maps) + selectable checkbox(role=checkbox) + active card, SessionDashboard sort/filter Select+SearchInput(label:)+errors-only + stop-selected + streamState line + header-at-0-sessions, ConversationList caption prop; files.js FILE_GRID_CAP=200+shown/onShowMore + role=group (was invalid listbox, rows host buttons) + FileRow permissions/locked->read-only/no-access tag + RootsPicker tablist; files-modals.js FilePreviewPane(non-modal split-view region)+previewHead() shared ASCII prev/next stepper+onPrev/onNext+ArrowLeft/Right + FilePreviewCode header+copy; context-pane.js empty state; shell.js WorkspaceShell stableFrame prop->keepPaneTrack (ws-no-pane+ws-pane-collapsed keeps 4-track grid pane-width-0, stable geometry across tabs) + copy/clipboard ICON_PATHS. CSS chat.css+app-shell.css: ONE canonical .status-dot-disc (-live accent+status-disc-pulse color-mix/-error/-connecting/-stale + reduced-motion), unified rail tones (.ds-session-row.rail-* = .row.rail-* accent/purple-2/flame), H4 touch @media(pointer:coarse)/640/600px 44px floors, all new-class CSS. APP app.js: WorkspaceShell stableFrame:true+pane every tab; filesMain FilePreviewPane into pane(modal only <900px)+previewNeighbours prev/next+RootsPicker+FileToolbar+onAction download+W9 403/404 plain copy; liveMain stale(now-last>45s&&!tool)+error/stale-first sort+state.live.tally per-sid SSE increment(new sessions show motion)+streamState+sort/filter/selected Set/errorsOnly+activeSid; chatMain avatar(forum SVG)+composerContext+followups; ConversationList caption; rail footer ThemeToggle; sentence-case titles; index.html DELETED .status-dot override block (kit owns disc), view() dot uses kit modifier classes. SERVER http-handler.js /api/list per-entry permissions(fs.accessSync W_OK)+ new /api/download confined(realpathSync,50MB cap,403 out-of-roots+traversal VERIFIED live)+backend.js r.status+downloadUrl(). KEY: app.js destructure MUST list Icon/RootsPicker/FilePreviewPane from C - browser-witness caught 'Icon is not defined'/'RootsPicker is not defined' (added to kit components.js export AND app destructure). Kit dist tracked - git add -f after rebuild; rebase-and-rebuild-dist when remote advances (it did: f3b58fe). Witnessed localhost:3000/gm/ 0 console/page errors chat/files/live/settings/history, preview pane opens(_e.err.log)+stepper, decorativeGlyphCount=0, no h-scroll, a11y skip-link/role=group/checkbox/44px. SCOPE CUTS documented in punch-list: rename/delete (read-only browser), upload (legacy routes-upload conversationId-keyed), retry last-turn-only.
@@ -1,10 +0,0 @@
1
- ---
2
- key: mem-4ecd3b713e384170-122
3
- ns: default
4
- created: 1781787660258
5
- updated: 1781787660258
6
- ---
7
-
8
- ## Resolved mutable: kit-and-app-head-clean
9
-
10
- git status --porcelain empty both; agentgui HEAD f8bf08e; design HEAD 3704876
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-51d8992a3c6f6c9c-1073
3
- ns: default
4
- created: 1783071833056
5
- updated: 1783071833056
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: accent-on-paper contrast fix - var(--accent) lime used as TEXT color in 7 sites + non-text FILL in 3 more, ~1.07:1 contrast on paper theme (WCAG needs 4.5:1/3:1), swapped to --accent-ink (borders/outlines stayed on --accent). 4 typography-rhythm fixes (dash-title/ContextPane-meta-sub/session-group-label sizing parity, .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, 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. Deferred: kit README/ui_kits docs gaps, perceived-performance work (both larger-scope, landed in later runs 23). Kit pushed 3f50e7a, agentgui pushed 06f108d, both CI green, 28/28 tests, 0 console errors.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-539eee7e8c6c10ee-2557
3
- ns: default
4
- created: 1781779376189
5
- updated: 1781779376189
6
- ---
7
-
8
- agentgui 13th run (2026-06-18): design-content consolidation - ALL design now lives in the kit (../design = /config/workspace/design), none in the app. site/app/index.html NO LONGER has an inline <style> block; the ~240-line block (28 classes: .pill/.cwd-bar/.resume-banner/.health-chip/.settings-grid/.history-empty/.boot-splash/.chat-controls/.status-dot/.ds-event-list overrides+event-flash keyframe+scrollbars+focus+responsive+print) moved to a NEW kit file ../design/app-surfaces.css (wired into scripts/build.mjs CSS_FILES, scoped .ds-247420, reads kit tokens directly, NO --agentgui-* fallbacks - those local color vars deleted incl dead status-connecting/-offline). app.js has ZERO inline style= props (6 margins -> .agentgui-field-mb/.agentgui-field-my kit utils; mainStyle layout string -> .agentgui-main/.agentgui-main-chat kit rules). RULE: no design content in agentgui - new surface styling is a kit CSS rule, never inline. app-surfaces.css selectors are PRE-SCOPED `.ds-247420 ...` so the build prefixer (which mis-compounds [attr]/* and handles :root/html/body specially) leaves them untouched (line 107 startsWith(prefix+space)). 247420.css is render-blocking <link> + <html class=ds-247420> static, so NO FOUC moving base/boot-splash to kit. Workflow .claude/workflows/gui-design-consolidation.js (residue-first, 6 lenses) 44 agents -> 19 findings (PUNCHLIST-DESIGN.md) ALL landed in kit: .chat-composer-toolbar, role-monotonic chat hover, tool-done success tone, .chat-empty-suggestion variant, error-card flame inset rail, .ds-check-box (CSS-DRAWN multi-select checkbox replacing [x]/[ ] bracket text in files.js+sessions.js - border-drawn tick on .is-marked/[aria-checked], NOT a glyph, AT keeps role=checkbox state), thin 26px status strip, status-item ellipsis, ws-crumb gutter, fluid clamp() shell widths, :focus->:focus-visible, --warn/--sky dark pairs, unified --focus-* tokens, reduced-motion skeleton static-fill, color-blind rail SHAPE diff + sr-only word in Row(). lint-glyphs extended with SCAN_ROOT_FILES (root bundled CSS escaped it; 39 box-drawing comment dividers in app-shell.css slipped in, converted to ASCII). CONCURRENT WRITER on kit landed SAME status-strip+fluid-width fixes; rebase conflict in app-shell.css resolved by adopting theirs (HEAD) per AGENTS.md rule, kept my distinct ds-check-box/glyph/token work. Pushed: kit 1aa7926, agentgui 9305b00. Server PORT=3009; restart via Bash run_in_background:true (pkill+inline nohup got SIGTERM'd). Witnessed: 0 console errors, migrated classes resolve from kit bundle.