agentgui 1.0.1069 → 1.0.1071
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-2f4fd06515abf439-2562.md +8 -0
- package/.gm/memories/mem-6434ee8261a6a6a2-3126.md +8 -0
- package/.gm/prd.yml +31 -0
- package/AGENTS.md +5 -1
- package/CHANGELOG.md +6 -0
- package/package.json +1 -1
- package/site/app/js/app.js +5 -8
- package/site/app/vendor/anentrypoint-design/247420.css +27 -0
- package/site/app/vendor/anentrypoint-design/247420.js +20 -20
|
@@ -0,0 +1,8 @@
|
|
|
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."}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
key: mem-6434ee8261a6a6a2-3126
|
|
3
|
+
ns: default
|
|
4
|
+
created: 1784285790686
|
|
5
|
+
updated: 1784285790686
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
{"key":"agentgui-43rd-run-docstudio-design-cue-pass","value":"agentgui 43rd run (2026-07-17): user repeated the docstudio design-cue directive more emphatically after the 42nd run's conclusion (docstudio less mature) was pushed back on. Dispatched a deep opus research agent (full file reads + a locally-served docstudio static render via python3 http.server since docstudio's real chat UI is gated behind Google OAuth the agent couldn't bypass) which again concluded the kit was more mature architecturally (docstudio: wholesale Gemini design copy, 359 inline styles, one contrast comment total vs the kit's 3-tier token system, 4 themes, near-universal WCAG documentation). User then provided two REAL screenshots of docstudio's actual authenticated chat UI the agent had no way to see: a split-pane PDF/document viewer live beside the chat with page nav, inline highlighted data chips in structured responses, a dense real-conversation thread list, and a genuinely dense sortable admin data-table (role-badge chips, destructive-red reserved for delete only). KEY LESSON: when a human says 'look at the actual screenshots,' the screenshots are ground truth over even a thorough source-only comparison - visual/UX claims must be checked against rendered pixels. Re-examined both screenshots pixel-by-pixel including live CSSOM tracing to test my own 'color overload' hypothesis (traced the acid-lime accent appearing on: primary New-chat CTA, active-nav-state, and file-row directory borders - confirmed via a live mixed dir/image directory listing that non-dir file types get non-accent colors, i.e. NOT overload, a deliberate per-type color-coding system I'd misread from an all-folders screenshot). Concluded: 2 genuine gaps (no inline split-pane content viewer for chat; Table had no sort support) implemented; other candidates (color usage, thread-list density) re-investigated and found already-correct deliberate decisions. Kit changes: AgentChat gained optional sidePanel/sidePanelTitle/onCloseSidePanel (renders host content vnode in the existing SplitPanel primitive beside the thread, resizable, stacks vertical under 900px, byte-identical when omitted); Table gained opt-in sortable/sortKey/sortDir/onSort (real aria-sort header buttons, chevron indicator via a new chevron-up icon, restrained color: neutral at rest, accent only on active sort). User also clarified scope mid-run: improve the WHOLE kit, not just agentgui-consumed pieces - confirmed via src/components.js barrel that Table/SplitPanel/Badge were already generic exports before extending, so both additions are reusable kit capabilities, not agentgui-specific wiring. bun test.js all pass (including the pre-existing Table byte-identical contract test), node scripts/build.mjs 0 lint errors (glyph lint confirmed the sort indicator used a real Icon(), not a raw arrow glyph). Kit pushed 3a72aeb (clean, no rebase conflict), agentgui pushed 254eb74 then 89121d5 (AGENTS.md), all CI green both repos. Browser-witnessed the default no-sidePanel AgentChat path unaffected on buildesk (bodyLen:1304 matches pre-change baseline exactly, 0 pageErrors)."}
|
package/.gm/prd.yml
CHANGED
|
@@ -3076,3 +3076,34 @@
|
|
|
3076
3076
|
- gm-plugkit/playwriter browser verb dom=/capture eval context defect - requires an upstream tool fix outside agentgui/design
|
|
3077
3077
|
status: completed
|
|
3078
3078
|
witness: 'External tool defect, not resolvable from this repo/session: the gm-plugkit/playwriter browser verb''s dom= and capture prefixes evaluate in a Node vm context with no page/document binding (ReferenceError on every attempt this session), unlike the screenshot= and url=<target> paths which do reach the real page. This is a defect in the upstream gm-plugkit/playwriter tool package itself, outside agentgui and design repo scope. Recorded per the false-completion rule as blockedBy:external rather than marked done - screenshots remain the working witness fallback and were used for all browser verification in this sweep.'
|
|
3079
|
+
- id: docstudio-cue-survey-44
|
|
3080
|
+
subject: Dispatch a fresh research agent to survey /config/docstudio source for further concrete design/UX cues not yet in ../design (beyond the 43rd run's sidePanel+sortable-Table), citing file:line for both repos
|
|
3081
|
+
status: completed
|
|
3082
|
+
witness: general-purpose research agent surveyed /config/docstudio source (app-shell.js, ds-chat-messages.css, ds-components.css, utils/dialog.js, utils/state-views.js) against ../design's existing components, returned 5 concrete file:line-cited candidates plus confirmation that toasts/Skeleton/EmptyState/Alert/Spinner/Badge-tone/dialogs/breadcrumbs were already more mature in the kit than docstudio.
|
|
3083
|
+
- id: docstudio-cue-implement-44
|
|
3084
|
+
subject: Implement every concrete, evidence-based gap the survey confirms as a genuine kit extension in ../design (never an agentgui-local override), each opt-in and backward compatible
|
|
3085
|
+
status: completed
|
|
3086
|
+
witness: design/src/components/chat.js ChatMessage gained error/onRetry inline notice (destructive tone, distinct from neutral stopped/incomplete); content.js gained generic Avatar({name,src,fallback,size}) primitive + barrel export; files.js FileSkeleton gained role=status/aria-busy/aria-label (previously aria-hidden with no busy signal); verified existing Dialog/Modal backdrop-dismiss already does the strict e.target===e.currentTarget check docstudio uses, no change needed; Badge icon-collapse (#5) judged too fragile/low-value for a CSS-only breakpoint hack and skipped per its own low-priority flag in the survey.
|
|
3087
|
+
- id: docstudio-cue-kit-build-44
|
|
3088
|
+
subject: Build+test the kit (bun test.js, node scripts/build.mjs 0 lint errors) after all edits land
|
|
3089
|
+
status: completed
|
|
3090
|
+
witness: 'bun test.js: All checks passed (3 separate runs across the pass''s 3 commits, including build+lint via test.js''s own scripts/build.mjs invocation); node scripts/build.mjs standalone: 0 lint errors (lint-glyphs/lint-null-children/lint-classes/lint-inline-styles/lint-duplicate-selectors all OK) across all 3 builds.'
|
|
3091
|
+
- id: docstudio-cue-kit-push-44
|
|
3092
|
+
subject: Commit+push ../design kit, verify CI green, then re-vendor into agentgui site/app/vendor/anentrypoint-design
|
|
3093
|
+
status: completed
|
|
3094
|
+
witness: 'design pushed 3417592/f362528 (rebased, dist rebuilt fresh, CI green: ci/Deploy GH Pages/Publish 247420 to npm all success at f362528), then 03c9028 (agent-chat.js error/onRetry wiring, CI green), then 17ee86c (role-agnostic error fix, CI green - gh run list confirmed conclusion:success for all 3 workflows at each sha). Re-vendored dist/247420.{js,css} into agentgui site/app/vendor/anentrypoint-design/ after each green push.'
|
|
3095
|
+
- id: docstudio-cue-agentgui-wire-44
|
|
3096
|
+
subject: Wire any new kit capability into agentgui app.js where directly applicable (e.g. Files admin table sortable, chat side panel for file preview) without forcing a fit where none exists
|
|
3097
|
+
status: completed
|
|
3098
|
+
witness: 'app.js: removed the now-redundant top-of-thread chaterr Alert banner (duplicate signal once ChatMessage''s own inline error/onRetry fires for the trailing failed turn via the already-wired onRetryMessage:(m)=>retryTurn(m) callback) - confirmed via grep that onRetryMessage was already passed to AgentChat and retryTurn(m) already handles a given message arg correctly. Avatar/Table-sortable had no clean agentgui-local retrofit point (chat''s avatar prop is an icon marker not a name-derived initial; Files/Settings tables don''t yet need sorting) so intentionally left as kit-only capabilities per the user''s own ''improve the whole kit'' scope note from the 43rd run.'
|
|
3099
|
+
- id: docstudio-cue-browser-witness-44
|
|
3100
|
+
subject: Browser-witness the changes live on buildesk (0 pageErrors, existing surfaces byte-identical where unchanged, new surfaces rendering as expected)
|
|
3101
|
+
status: completed
|
|
3102
|
+
witness: 'First witness attempt caught a REAL regression: app.js:2343 ''Illegal return statement'' SyntaxError from a stray leftover brace after removing the chaterr banner block, confirmed via gm browser capture dispatch (pageErrors non-empty, bodyLen:149, hasAgentgui:false - full page load failure). Fixed with node --check app.js confirming syntax validity locally, then re-witnessed post-fix+CI-green: pageErrors:[], hasAgentgui:true, bodyLen:18805 (real rendered content, up from the crashed 149).'
|
|
3103
|
+
- id: docstudio-cue-agentgui-push-44
|
|
3104
|
+
subject: Commit+push agentgui, verify CI green, write .ci-validated with current HEAD sha, reach COMPLETE
|
|
3105
|
+
status: completed
|
|
3106
|
+
witness: agentgui pushed f08f698 to origin/main (fast-forward from 89121d5, confirmed via git diff origin/main HEAD before push). gh run list confirmed all 4 CI checks (Deploy GH Pages, Publish and Release, Test, Auto-Declaudeify) conclusion:success at f08f698 after a bounded poll loop.
|
|
3107
|
+
- id: docstudio-cue-agents-md-44
|
|
3108
|
+
subject: Record the run in AGENTS.md (present-tense/staging-ground convention) and dual-write the load-bearing facts to memorize-fire, draining a compensating amount of old detail-heavy AGENTS.md entries per the documentation policy
|
|
3109
|
+
status: pending
|
package/AGENTS.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# AgentGUI — Agent Notes
|
|
2
2
|
|
|
3
|
+
## Docstudio design-cue follow-up (2026-07-17) — forty-fourth run
|
|
4
|
+
|
|
5
|
+
Re-stated user directive ("if there's any further ideas we can bring across from that project, do it now") following the 43rd run's sidePanel/sortable-Table pass. A fresh research agent surveyed `/config/docstudio`'s source (app-shell.js, ds-chat-messages.css, utils/dialog.js, utils/state-views.js) against `../design`'s current components (explicitly told what the kit already had, to avoid re-suggesting solved gaps) and returned 5 concrete, file:line-cited candidates, confirming the kit still leads on toasts/Skeleton/Alert/Badge-tone/dialogs/breadcrumbs. Implemented: `ChatMessage` (`design/src/components/chat.js`) gained `error`/`onRetry` — an inline, destructive-toned per-turn failure notice (docstudio pins a failed message's error to that specific turn rather than a global toast), rendered alongside the existing neutral `stopped`/`incomplete` out-of-band notices but visually distinct (border-color `--danger`, a `.chat-msg-retry-btn`). `content.js` gained a generic `Avatar({name,src,fallback,size})` primitive (barrel-exported) consolidating the letter-fallback-disc logic previously duplicated ad hoc in `chat.js`'s local avatar span and `community.js`'s one-off. `FileSkeleton` (`files.js`) was `aria-hidden` with no busy signal, unlike every sibling skeleton (`Skeleton`, `AgentListSkeleton`) — added `role=status`/`aria-busy`/`aria-label`. Verified (no change needed): every existing backdrop-dismiss dialog (`editor-primitives.js`, `files-modals.js`) already does docstudio's strict `e.target === e.currentTarget` check. Skipped as too fragile/low-value per the survey's own low-priority flag: Badge icon-only collapse at narrow width (a CSS-only breakpoint hack risked clipping any Badge that's genuinely just a color dot with no label). **Real bug caught by the mandatory browser witness, not by any lens**: wiring `AgentChat`'s message-mapper (`design/src/components/agent-chat.js`) to forward `error`/`onRetry` was first gated on `!isAssistant`, but agentgui's `sendChat()` always pushes an eager assistant placeholder and attaches a send/stream error onto *that* message, never a dangling user turn — the gate was corrected to key only on trailing-message-position (`i === lastIdx`), independent of role. Separately, removing agentgui's now-redundant top-of-thread `chaterr` `Alert` banner (duplicate of the new inline signal) left a stray closing brace, producing 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 witness dispatch, fixed (`node --check app.js` confirmed locally), re-pushed, re-witnessed clean (`pageErrors:[]`, `hasAgentgui:true`, `bodyLen:18805`). **Lesson: a same-session "verify no change needed" pass (like the backdrop-dismiss check) is not a substitute for actually re-running the mandatory live browser witness on code that WAS changed — the crash here was caught only because VERIFY dispatched a real page load post-push, not from static reasoning about the diff.** Kit built+tested 3 times across the pass's 3 commits (`bun test.js` all pass each time, including the pre-existing byte-identical contract tests), 2 clean rebases + 1 dist-only rebuild-fresh rebase (concurrent upstream `v0.0.340`-`v0.0.343` releases landed mid-pass), pushed `3417592`→`f362528`→`03c9028`→`17ee86c`, all CI green every push. agentgui re-vendored + pushed `f08f698` (after the syntax-crash fix), all 4 CI checks green.
|
|
6
|
+
|
|
3
7
|
## Docstudio design-cue pass (2026-07-17) — forty-third run
|
|
4
8
|
|
|
5
9
|
User directive ("docstudio has a much more mature design, take cues from it, all GUI lives in ../design, no overrides here, this project is still very immature") repeated more emphatically than the prior sweep. A first-pass deep research agent (opus model, full file reads + a locally-served docstudio static render) concluded the KIT was architecturally more mature (docstudio: a wholesale Google Gemini design copy, 359 inline styles, one contrast comment total; the kit: a genuine 3-tier token architecture, 4 theme presets, near-universal WCAG-ratio documentation). The user pushed back with two real screenshots of docstudio's actual authenticated chat UI (unreachable to the agent - it's gated behind Google OAuth) that the source-only analysis had no way to see: a split-pane PDF/document viewer live beside the chat thread with page navigation, inline highlighted data chips in structured AI responses, a dense real-conversation thread-history list, and a genuinely dense sortable admin data-table (role-badge chips, per-row action clusters, destructive-red reserved for delete only). **Lesson applied mid-run: when a human says "look at the actual screenshots," the screenshots are the ground truth over a source-code-only comparison, even a thorough one — visual/UX maturity claims need to be checked against rendered pixels, not just token/architecture audits.** Re-examined both screenshots pixel-by-pixel (including live-tracing the kit's own deployed CSS via `getComputedStyle`/CSSOM queries to test my own "color overload" hypothesis) before concluding: two genuine, concrete gaps existed (no inline split-pane content viewer for chat; `Table`'s existing basic component had no sort support) and were implemented; several other candidate gaps (accent-color "overload," thread-list density) were re-investigated and found to be already-correct, deliberate design decisions once traced precisely (the file-row border-left system is a real per-type color-coding system — `dir`=accent, `image`=mascot, `video`=purple-2, `audio`=sky, `code`=green-2, `archive`=flame, `document`=amber — confirmed live via a mixed-type directory listing, not "every row gets the loud brand color"). Kit changes (`design/src/components/{agent-chat,content,shell}.js`, `chat.css`, `src/css/app-shell/kits-appended.css`): `AgentChat` gained an optional `sidePanel`/`sidePanelTitle`/`onCloseSidePanel` prop rendering the host's content vnode (a `FilePreviewPane`, an iframe, anything) inside the kit's existing `SplitPanel` primitive beside the thread, resizable, stacking to vertical under 900px, omitted entirely (byte-identical output) when not supplied; `Table` gained opt-in `sortable`/`sortKey`/`sortDir`/`onSort` props rendering real `aria-sort` header buttons with a chevron indicator, restrained to neutral color at rest (accent only on the active sort direction, deliberately matching the "color reserved for meaning" pattern both screenshots demonstrated); a new `chevron-up` icon path (mirroring the existing `chevron-down`) since the sort-direction indicator needed one and none existed. User separately clarified scope mid-run: improve the WHOLE `../design` kit, not just agentgui-consumed pieces — confirmed via the `src/components.js` barrel that `Table`/`SplitPanel`/`Badge` were already generic, app-agnostic exports before extending them, so both additions land as reusable kit capabilities any consumer could opt into, not agentgui-specific wiring. Kit built+tested (`bun test.js` all pass including the pre-existing "Table striped/compact byte-identical" contract test, confirming the sortable addition stayed genuinely opt-in; `node scripts/build.mjs` 0 lint errors including the glyph lint, confirming the sort-direction indicator correctly used a real `Icon()` rather than a raw arrow glyph), pushed cleanly (`3a72aeb`, no rebase conflict). agentgui re-vendored, pushed `254eb74`, all 4 CI checks green. Browser-witnessed the default (no-`sidePanel`) `AgentChat` path live on buildesk post-change: `bodyLen:1304` matches the pre-change baseline exactly, 0 pageErrors, confirming zero regression to the existing chat surface from an entirely-optional, unused-by-agentgui-so-far addition.
|
|
@@ -14,7 +18,7 @@ User-driven ask ("setting the cwd is not nearly practical enough... go over ever
|
|
|
14
18
|
|
|
15
19
|
## GUI logic+predictability sweep (2026-07-12) — fortieth run
|
|
16
20
|
|
|
17
|
-
|
|
21
|
+
11 confirmed findings (Escape-ladder confirmingClearData gap, wsCall 15s timeout, agy resume wiring, composer paste/drop visible feedback, Row `.title` tooltip, `.ds-file-actions` resting opacity, Enter-to-send hint visibility). Full detail in rs-learn (recall "agentgui 40th run logic-predictability sweep"). Standing browser-witness gotchas confirmed there still bind: combine creds+goto+wait+evaluate into ONE dispatch (session ids rotate across separate dispatches), and read via `console.log('WITNESS:'+...)` + stdout grep, never the `capture` prefix's `result` field.
|
|
18
22
|
|
|
19
23
|
## GUI logic+predictability sweep (2026-07-12) — thirty-ninth run
|
|
20
24
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
## [Unreleased] - 44th-run docstudio design-cue follow-up: inline chat error, generic Avatar, FileSkeleton aria-busy (kit 3417592-17ee86c, app f08f698)
|
|
2
|
+
|
|
3
|
+
- kit: `ChatMessage` gains `error`/`onRetry` — an inline, destructive-toned per-turn failure notice (docstudio pins a failed message's error to that specific turn instead of a global toast) alongside the existing neutral `stopped`/`incomplete` notices; `content.js` gains a generic `Avatar({name,src,fallback,size})` primitive consolidating duplicated letter-fallback-disc logic; `FileSkeleton` gains `role=status`/`aria-busy`/`aria-label` matching every sibling skeleton. Why: a fresh docstudio survey (told what the kit already had, to avoid re-suggesting solved gaps) returned 5 candidates; verified backdrop-dismiss dialogs already do docstudio's strict target check (no change needed) and skipped a fragile Badge-collapse idea per the survey's own low-priority flag.
|
|
4
|
+
- kit: fixed a real wiring bug in `agent-chat.js`'s message mapper — the new `error`/`onRetry` forwarding was first gated on `!isAssistant`, but agentgui's `sendChat()` always attaches a send/stream error onto the eager assistant placeholder it pushes, never a dangling user message, so the gate would never have fired; corrected to key on trailing-message-position regardless of role.
|
|
5
|
+
- app: removed the now-redundant top-of-thread `chaterr` `Alert` banner (duplicate of the new inline per-turn signal); a stray leftover brace from that removal caused a real `SyntaxError: Illegal return statement` that fully blanked the live page, caught on the first post-deploy browser witness and fixed before landing.
|
|
6
|
+
|
|
1
7
|
## [Unreleased] - 39th-run gui-logic-predictability sweep: running-panel identity, stop-button wedge, live cost fallback, shortcuts affordance (kit 00dae4c, app 64f4466)
|
|
2
8
|
|
|
3
9
|
- 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.
|
package/package.json
CHANGED
package/site/app/js/app.js
CHANGED
|
@@ -2326,14 +2326,11 @@ function chatMain() {
|
|
|
2326
2326
|
Btn({ key: 'ceyes', danger: true, onClick: confirmEditAndResend, children: isRetry ? 'retry' : 'continue' })] }));
|
|
2327
2327
|
}
|
|
2328
2328
|
const lastMsg = state.chat.messages.length ? state.chat.messages[state.chat.messages.length - 1] : null;
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2333
|
-
|
|
2334
|
-
Btn({ key: 'ceretry', onClick: () => { delete lastMsg.error; delete lastMsg.errorRaw; retryLastTurn(); }, children: 'retry' }),
|
|
2335
|
-
Btn({ key: 'cedismiss', onClick: () => { if (lastMsg) { delete lastMsg.error; delete lastMsg.errorRaw; persistChat(); render(); } }, children: 'dismiss' })] }));
|
|
2336
|
-
}
|
|
2329
|
+
// A failed dangling message now surfaces its error inline on that specific
|
|
2330
|
+
// turn (ChatMessage's error/onRetry, wired through AgentChat's message
|
|
2331
|
+
// mapper) instead of a separate top-of-thread banner duplicating the same
|
|
2332
|
+
// failure - kept as one signal, not two, matching the docstudio per-turn
|
|
2333
|
+
// error pattern.
|
|
2337
2334
|
|
|
2338
2335
|
const placeholder = !state.selectedAgent
|
|
2339
2336
|
? 'choose an agent first'
|
|
@@ -5410,6 +5410,19 @@
|
|
|
5410
5410
|
.ds-247420 .ds-chat-detail { display: block; position: sticky; top: 0; }
|
|
5411
5411
|
}
|
|
5412
5412
|
|
|
5413
|
+
/* Avatar — generic identity disc primitive (content.js Avatar). Sized
|
|
5414
|
+
variants mirror the existing chat-avatar/community-avatar footprints so
|
|
5415
|
+
any consumer gets a consistent disc without duplicating the CSS. */
|
|
5416
|
+
.ds-247420 .ds-avatar {
|
|
5417
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
5418
|
+
border-radius: 50%; background: var(--bg-3); color: var(--fg);
|
|
5419
|
+
font-family: var(--ff-mono); font-weight: 600; text-transform: lowercase;
|
|
5420
|
+
letter-spacing: 0.02em; user-select: none; flex-shrink: 0; object-fit: cover;
|
|
5421
|
+
}
|
|
5422
|
+
.ds-247420 .ds-avatar-sm { width: 24px; height: 24px; font-size: 10px; }
|
|
5423
|
+
.ds-247420 .ds-avatar-md { width: 36px; height: 36px; font-size: 12px; }
|
|
5424
|
+
.ds-247420 .ds-avatar-lg { width: 48px; height: 48px; font-size: 15px; }
|
|
5425
|
+
|
|
5413
5426
|
/* community.css */
|
|
5414
5427
|
/* ============================================================
|
|
5415
5428
|
247420 design system — community surface (Discord-style chat)
|
|
@@ -7886,6 +7899,20 @@
|
|
|
7886
7899
|
background: var(--bg-2); color: var(--fg-2); font-size: var(--fs-tiny);
|
|
7887
7900
|
}
|
|
7888
7901
|
.ds-247420 .chat-msg-notice.is-incomplete { border-style: dashed; }
|
|
7902
|
+
/* Error is the one genuine failure state among these notices — reserving
|
|
7903
|
+
the destructive tone for it (unlike stopped/incomplete, which are neutral
|
|
7904
|
+
"not a finished answer" states, not failures). */
|
|
7905
|
+
.ds-247420 .chat-msg-notice.is-error {
|
|
7906
|
+
border-color: var(--danger); color: var(--danger-ink, var(--danger));
|
|
7907
|
+
display: flex; align-items: center; gap: var(--space-2); flex-wrap: wrap;
|
|
7908
|
+
}
|
|
7909
|
+
.ds-247420 .chat-msg-retry-btn {
|
|
7910
|
+
border: var(--bw-hair) solid var(--danger); border-radius: var(--r-1);
|
|
7911
|
+
background: transparent; color: var(--danger-ink, var(--danger));
|
|
7912
|
+
font: inherit; font-size: var(--fs-tiny); padding: 2px 10px; cursor: pointer;
|
|
7913
|
+
}
|
|
7914
|
+
.ds-247420 .chat-msg-retry-btn:hover { background: var(--danger); color: var(--bg); }
|
|
7915
|
+
.ds-247420 .chat-msg-retry-btn:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
|
|
7889
7916
|
|
|
7890
7917
|
/* Tail-window streaming head ('streaming · N KB so far'). */
|
|
7891
7918
|
.ds-247420 .chat-stream-head {
|