agentgui 1.0.1053 → 1.0.1054
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gm/memories/mem-c7c5bc263850c332-1844.md +8 -0
- package/AGENTS.md +4 -0
- package/CHANGELOG.md +6 -0
- package/package.json +1 -1
|
@@ -0,0 +1,8 @@
|
|
|
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.
|
package/AGENTS.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# AgentGUI — Agent Notes
|
|
2
2
|
|
|
3
|
+
## GUI logic+predictability sweep (2026-07-12) — thirty-ninth run
|
|
4
|
+
|
|
5
|
+
`gui-logic-predictability` workflow wf_88c431e5-931 (26 agents, 202 tool calls, 0 errors) — 6 confirmed findings after hunt+adversarial-verify, all implemented; a much thinner yield than the 37th/38th runs, consistent with the same lens converging after two straight passes. App (`site/app/js/app.js`): `runningPanel()`'s inline running-chat rows previously showed only agent+model+elapsed+cwd with no session title, reading nameless while the identical session shows a resolved title on the sessions rail/history rail/Live SessionCard — a new `runningRowTitle()` helper (wrapping the existing `resumeSidLabel()`) prepends the same resolved identity string; `stopActiveChat()` could wedge a stop button permanently disabled if the backend accepted the cancel but the underlying process outlived the immediate post-cancel `refreshActive()` call (the next 3s poll would silently re-add the sid to `state.active` while `stopping` never cleared) — a bounded 9s timeout now clears `stopping` and surfaces the same "conversation did not stop - try again" retry banner used on outright rejection; `computeLiveSessions()`'s per-sid SSE tally accumulated `tokens` but never `cost`, so every live/external session showed a blank cost field except the one open in-page in Chat — the tally now accumulates `total_cost_usd` from `result` events too, with the same tally-fallback pattern tokens already had; WorkspaceRail's footer gained a visible shortcuts-help `IconButton` (previously the `?`-overlay was 100% keyboard-only tribal knowledge with zero discovery path outside Settings). Kit (`design/src/components/{chat,content,shell}.js`): `CodeNode.refSink`'s syntax-highlight swap gained the same in-progress-text-selection guard `MdNode.refSink` already had (the two paths had drifted — code blocks still wiped an active selection mid-stream after the markdown path was fixed for the same bug); `Row.sub` gained a `title=` tooltip fallback for string values, matching every other long-text field in the app (agent-chat cwd, sessions rail title/sub/cwd/agent) — `Row` is used everywhere (history sessions rail, search results, context-pane cwd fact, agents panel) so this closes the gap at every call site at once; added a `help` icon path to `ICON_PATHS`/`Glyph` for the new rail affordance. Kit built+tested (`bun test.js` all pass), rebased cleanly on a concurrent `v0.0.316` release-bump commit (no source conflicts), dist rebuilt fresh post-rebase, pushed `00dae4c`. agentgui re-vendored, pushed `64f4466`, all 3 CI checks (Auto-Declaudeify/Publish and Release/Deploy GH Pages) green. Browser-witnessed live on buildesk via `page.context().setHTTPCredentials()` + `page.evaluate()`: help button found in `.ws-rail-foot`, clicking it opened the shortcuts overlay (`shortcutsTextPresent:true`), zero pageErrors; history rail `Row.sub` confirmed rendering `title="server default"` live. **New tool-defect note this run: this env's nginx Basic-Auth password contains a literal comma (`123,slam,123,slam` — see the 32nd-run standing gotcha), and embedding it directly in a `page.goto` URL (`https://user:pass@host/...`) throws `net::ERR_INVALID_AUTH_CREDENTIALS` at the Chromium URL-parser level even when percent-encoded (`%2C`) — this is a stricter failure than the previously-documented "breaks the app's own fetch()" caveat for comma-free creds. Working fix: `await page.context().setHTTPCredentials({username, password})` before `page.goto()` with a plain (no-embedded-creds) URL — this is the durable workaround for any future witness against this deploy, comma-password or not.** Also reconfirmed the 38th-run tool defect (`capture` prefix scripts run in a bare Node vm with no `document`/`page` binding unless the script itself calls `page.evaluate(() => {...})` — a raw top-level `document.querySelector(...)` throws `ReferenceError: document is not defined`; wrapping every DOM read/write in `page.evaluate()` inside the capture script is the reliable pattern, not a tool-side fix).
|
|
6
|
+
|
|
3
7
|
## GUI logic+predictability sweep (2026-07-12) — thirty-eighth run
|
|
4
8
|
|
|
5
9
|
`gui-logic-predictability` workflow wf_186e2a2a-dfc (32 agents, 205 tool calls, 0 errors) — 18 confirmed findings, all implemented, re-running the same lens one cycle after the 37th run to catch residual/newly-introduced gaps. App (`site/app/js/app.js`, `site/app/js/backend.js`): `stopAllActive` now clears every attempted sid (both ok and failed) from `state.live.stopping` after `Promise.allSettled`, so a failed bulk-cancel is retryable instead of leaving that row's stop button permanently disabled; `copyText`'s clipboard-write catch now calls `announce('copy failed')` instead of swallowing the error silently (mirrors `copySid`'s existing pattern); search-result row titles now route through `projectLabel()` (`r.snippet || projectLabel(r.title) || projectLabel(r.project) || UNTITLED_CONVERSATION`) matching the rail's contract; the History detail header's title-fallback chain gained `|| state.selectedSid` before the generic label, so a metadata-sparse session shows the same identity in History as it does in the rail; the Live nav-badge error flame no longer goes stale while off the history tab (stream stays connected whenever `state.active` is non-empty); `computeLiveSessions()` gained a 5s `reconnectGraceUntil` window so an SSE reconnect mid-session no longer flaps a running session's status to stale; a brand-new session between the `chat.active` poll and history-index catch-up now shows `'indexing…'` instead of reading identically to a permanently-failed lookup; the Live dashboard's sort/filter prefs (`hydratePrefs()`) now reconcile across browser tabs on focus/visibilitychange, alongside the existing `refreshActive()` call; `streamHistory`'s EventSource (`backend.js`) gained manual close+reopen exponential backoff (500ms start, doubles, capped 30s, resets on `hello`) mirroring the WS client's `scheduleReconnect`, instead of relying on native EventSource's uncapped retry; the sessions rail empty-state and History event-list both gained next-action affordances (a start-from-chat CTA, and a "load all (N hidden)" button for very large sessions); a draft restored from localStorage now surfaces a one-time note that undo history doesn't carry over a reload. Kit (`design/src/components/{agent-chat,chat,content,sessions}.js`, `app-shell.css`): follow-up suggestion chips' container lost its `aria-hidden="true"` — the chips are real interactive `<button>`s that were completely invisible to screen-reader users despite `role="group"` being present; `MdNode`'s markdown-settle `refSink` now defers its `innerHTML` swap via a one-time `selectionchange` listener when the user's active text selection is anchored inside the element (was wiping any in-progress text selection every streaming tick); `ChatComposer`'s paste handler now surfaces a "pasted N characters" note via `flashComposerNote` for large plain-text pastes; `SearchInput` gained a visible clear (X) button (was Escape-only, undiscoverable to mouse/touch users) at a 44px touch target, sharing the same clear path as Escape; `ConversationList` now forwards a `resultCount` prop through to `SearchInput`'s existing (previously unpopulated) `aria-live` result-count region, wired from agentgui's search-results branch as `hits.length + ' result(s)'`. Kit built+tested (`bun test.js` all pass), a concurrent upstream release (`5cdd667`, v0.0.315) required a rebase with one dist-only merge conflict (resolved by rebuilding `dist/247420.js` fresh from the merged sources rather than hand-merging generated code), re-vendored, browser-witnessed live on buildesk (chat tab shows `connected` status + visible follow-up chip buttons, history tab loads 52 conversations cleanly, 0 visible errors across both screenshots). Kit pushed `bed4036`, agentgui pushed `159030f` (after a second push-rebase for a PRD-state-only commit), all 4 CI checks green both repos. **New tool defect this run (recorded, not fixable from this repo — filed as `blockedBy:external`): the `gm browser` verb's `dom=` and `capture` prefixes both throw `ReferenceError` (no `document`/page binding at all) rather than evaluating in page context — a regression beyond the 37th run's already-documented "`dom=` ignores its trailing script" caveat. Only `screenshot=` and `url=<target>\n<literal-non-DOM-expr>` dispatches actually reach the real page in this tool version; browser sessions also silently rotate ids across dispatches with no state carryover, and one dispatch hit a dead extension-bridge session requiring an unprompted CDP relay restart. Screenshots are the reliable fallback for browser witnessing until this is fixed upstream in gm-plugkit/playwriter.**
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
## [Unreleased] - 39th-run gui-logic-predictability sweep: running-panel identity, stop-button wedge, live cost fallback, shortcuts affordance (kit 00dae4c, app 64f4466)
|
|
2
|
+
|
|
3
|
+
- app: `runningPanel()` rows now show the same resolved session title used on every other surface (sessions rail, history rail, Live SessionCard) instead of reading nameless; `stopActiveChat()` gains a bounded 9s timeout so a cancel that succeeds server-side but whose process lingers past the immediate refresh no longer wedges the stop button permanently disabled; `computeLiveSessions()`'s per-sid SSE tally now accumulates cost alongside tokens, so every live/external session shows a real cost figure, not just the one open in Chat; WorkspaceRail's footer gains a visible shortcuts-help icon button (the `?` overlay was previously 100% keyboard-only tribal knowledge with no discovery path outside Settings). Why: 39th `gui-logic-predictability` workflow (wf_88c431e5-931) confirmed these as real operating-logic gaps.
|
|
4
|
+
- kit: `CodeNode.refSink`'s syntax-highlight swap gains the same in-progress-selection guard `MdNode.refSink` already had (the two paths had drifted); `Row.sub` gains a `title=` tooltip fallback matching every other long-text field in the kit; new `help` icon path for the rail affordance.
|
|
5
|
+
- browser-witnessed live on buildesk via `page.context().setHTTPCredentials()` (embedded-URL Basic-Auth broke on this env's comma-containing password even percent-encoded) — help button + shortcuts overlay + Row.sub tooltip all confirmed working, zero pageErrors.
|
|
6
|
+
|
|
1
7
|
## [Unreleased] - 34th-run gui-ux-craft sweep: kit font-token fallbacks, focus-ring tokenization, agentsLoading state (kit 3b1080c, app 9c8094b)
|
|
2
8
|
|
|
3
9
|
- kit: `--fs-2`/`--fs-0` shadow font tokens (never defined in the real type scale) remapped to `--fs-lg`/`--fs-tiny`; stale `--lh-base` fallback fixed from 1.4 to 1.55; `.glyph`/`.ds-field-count`/`.ds-row-detail` hardcoded literals tokenized; ~29 more `outline: 2px solid var(--accent-ink)` focus rules converted to `var(--focus-w) solid var(--focus-color)`; `.chat-tool-copy` gained the coarse-pointer 44px touch target; `.ds-select` gained a base `min-height:32px` floor; `Btn`'s `className` prop renamed to `class` for consistency with `Panel`/`Heading`; `AgentControls`/`AgentChat` gained an `agentsLoading` disabled-select state. Why: 34th `gui-ux-craft` workflow (wf_919164f1-648) confirmed these as real, un-filed gaps.
|