agentgui 1.0.1013 → 1.0.1015

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/AGENTS.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # AgentGUI — Agent Notes
2
2
 
3
+ ## Negative-space + attention sweep (2026-07-03) — twenty-seventh run
4
+
5
+ Scoped to the specific ask (negative space / attention), 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 are app-only copy/wiring). Pushed `b0b38fb`.
6
+
3
7
  ## Per-row file move + lint tooling fix (2026-07-02) — twenty-sixth run
4
8
 
5
9
  Landed gui-completion #0: single-file move previously required checkbox-select + BulkBar. Kit `FileRow` gains a `move` action (between rename/delete, `arrow-right` icon); app `onAction('move', file)` seeds `state.files.marked` with just that one path and opens the existing bulk-move dialog, reusing `runBulkMove`/`/api/move` as-is — no new dialog kind, no new server surface. **Also fixed a real bug in `../design`'s `scripts/lint-null-children.mjs`**: its bracket-matcher did not understand `//` line comments, so an apostrophe inside ANY comment anywhere in a scanned file (e.g. "the kit's own") was read as opening a string literal, silently corrupting bracket-depth tracking for the rest of that file — a false positive here, but potentially a false NEGATIVE elsewhere (hiding a real missing `.filter(Boolean)` behind an unrelated apostrophe earlier in the file). Added `stripLineComments()` (string-literal-aware) run before the scan; verified by reintroducing the apostrophe and confirming it now lints clean.
@@ -20,11 +24,7 @@ Small, targeted run landing the 22nd-run's deferred perceived-perf findings. `in
20
24
 
21
25
  ## GUI ux-craft sweep (2026-07-02) — twenty-second run
22
26
 
23
- `gui-ux-craft` workflow wf_48cd6bae-6ae (35 agents, 20 confirmed). Kit (`../design`): **accent-on-paper contrast fix** — `var(--accent)` (lime, fill-only per its own token comment) was used directly as TEXT color in 7 sites and as a non-text FILL in 3 more (the live status dot, green session-rail fill), rendering ~1.07:1 contrast on the paper theme (WCAG needs 4.5:1 text / 3:1 non-text). Swapped all 10 to `--accent-ink`; borders/outlines/box-shadows on the same rules stayed on `--accent` (already non-text-passing). Four typography-rhythm fixes: `.ds-dash-title` now matches `.ds-session-title` size (was one step larger despite a comment claiming parity), `ContextPane` Row meta/sub now match the kit-wide Row default size (were one step smaller, `.sub` also dropped an unwanted forced monospace), `.ds-session-group-label` now matches `.panel-head`/`table th` sizing, `.ws-crumb` height now derives from `--app-crumb-h` instead of an unlinked magic number. Session rail's new-chat button and search input now share a 36px desktop height. `.ds-file-act` gained an explicit `:focus-visible` ring (was the only icon/toolbar-button family without one).
24
-
25
- App (`site/app/js/app.js`): 5 copy-tone fixes (clear-history confirm button now says "yes, clear history" not "yes, clear chat"; "conversation" → "chat" in the cross-tab-update banner; "runs via npx" → "installs automatically when used"; raw ACP provider error string now prefixed + capped at 80 chars; disabled "export chat" button keeps its action label instead of swapping to "no saved chat"). Search-result rows with no title/snippet fall back to `session <8-char-sid>…` instead of a raw UUID. `index.html` gained a synchronous (non-module) inline script that reads the kit's `247420:theme` localStorage key and sets `data-theme` before first paint — the hardcoded `data-theme="dark"` previously flashed for users with a saved light/'paper' theme while the kit's ES module graph loaded.
26
-
27
- Deferred (recorded as PRD rows, explicitly re-scoped, not silently dropped): kit README/`ui_kits` examples missing the flagship components (AgentChat/WorkspaceShell/SessionDashboard/ConversationList/ContextPane) and undocumented `stableFrame`/`mainFlush` props — a docs-only pass, not this visual/UX-craft run's scope. Perceived-performance work (first-render network-gating, CDN modulepreload, settings loading-affordance) — a dedicated perf pass, larger than a one-line fix. Kit pushed `anentrypoint-design` `3f50e7a` (rebased onto concurrent `0826e40`, also picked up an inherited uncommitted emoji-picker search feature). agentgui pushed `06f108d`. Both repos: build/lints/28 tests pass, browser-witnessed 0 console errors, CI green.
27
+ 35-agent audit, 20 confirmed. Accent-on-paper contrast fix (`--accent`->`--accent-ink` for text/fills), typography-rhythm parity fixes, theme-flash-prevention script in index.html. Full detail in rs-learn (recall "agentgui 22nd run ux-craft sweep").
28
28
 
29
29
  ## GUI cohesion sweep (2026-07-02) — twenty-first run
30
30
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentgui",
3
- "version": "1.0.1013",
3
+ "version": "1.0.1015",
4
4
  "description": "Multi-agent ACP client with real-time communication",
5
5
  "type": "module",
6
6
  "main": "electron/main.js",
@@ -2797,6 +2797,12 @@
2797
2797
  leaving the primary input near-invisible at rest - use the strong rule. */
2798
2798
  border: var(--bw-hair) solid var(--rule-strong);
2799
2799
  border-radius: var(--r-2);
2800
+ /* A flat hairline box on a flat background is the single most-repeated
2801
+ "looks unfinished" tell in the chat surface - the one control the user
2802
+ types into every turn had no more visual weight than a settings card.
2803
+ --shadow-1 (already defined kit-wide, just unused here) lifts it a hair
2804
+ off the page at rest; the existing focus-within box-shadow overrides it. */
2805
+ box-shadow: var(--shadow-1);
2800
2806
  flex-shrink: 0;
2801
2807
  transition: border-color var(--dur-snap) var(--ease), box-shadow var(--dur-snap) var(--ease);
2802
2808
  }
@@ -3839,7 +3845,14 @@
3839
3845
  .ds-247420 .ws-sessions {
3840
3846
  grid-area: sessions;
3841
3847
  min-height: 0; display: flex; flex-direction: column;
3842
- background: var(--bg); border-right: var(--bw-hair) solid var(--bg-3);
3848
+ /* Rail and pane both sit on --bg-2 (a recessed plane framing the elevated
3849
+ --bg content column); sessions used flat --bg instead, so the
3850
+ conversation list and the chat thread read as the SAME surface with only
3851
+ a 1px hairline between them - the flattest, most "one big beige box"
3852
+ tell in the shell. --bg-2 restores the three-plane depth (rail/sessions
3853
+ recessed either side, content elevated in the middle) the design
3854
+ already establishes everywhere else. */
3855
+ background: var(--bg-2); border-right: var(--bw-hair) solid var(--bg-3);
3843
3856
  overflow: hidden;
3844
3857
  }
3845
3858
  .ds-247420 .ws-no-sessions .ws-sessions { display: none; }
@@ -5615,6 +5628,14 @@
5615
5628
  min-height: 0;
5616
5629
  flex: 1;
5617
5630
  gap: var(--space-2, 8px);
5631
+ /* The chat tab opts out of .ws-main's padding (mainFlush) so the thread can
5632
+ manage its own --measure centering, but that left every direct child -
5633
+ controls row, heading, empty-state, composer - flush against the column
5634
+ edge with zero gutter (the crumb bar above keeps its own padding, so the
5635
+ content below visibly touched the edge the crumb text did not). A
5636
+ uniform inline gutter here restores breathing room for every row without
5637
+ disturbing --measure centering (it centers within this padded box). */
5638
+ padding-inline: var(--space-5);
5618
5639
  }
5619
5640
 
5620
5641
  /* agent + model picker, new/stop, status — wraps on narrow widths */
@@ -6108,6 +6129,23 @@
6108
6129
  padding: var(--space-3); background: color-mix(in oklab, var(--fg) 4%, transparent);
6109
6130
  }
6110
6131
 
6132
+ /* --- reply-preview banner shown above the composer while replying to a message. --- */
6133
+ .ds-247420 .cm-composer-wrap { display: flex; flex-direction: column; width: 100%; }
6134
+ .ds-247420 .cm-reply-preview {
6135
+ display: flex; align-items: center; justify-content: space-between; gap: var(--space-2);
6136
+ padding: var(--space-1) var(--space-3); border-bottom: var(--bw-hair) solid var(--rule);
6137
+ background: color-mix(in oklab, var(--accent) 6%, transparent);
6138
+ font-family: var(--ff-mono); font-size: var(--fs-tiny); color: var(--fg-2);
6139
+ }
6140
+ .ds-247420 .cm-reply-preview-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
6141
+ .ds-247420 .cm-reply-preview-close {
6142
+ display: inline-flex; align-items: center; justify-content: center;
6143
+ background: none; border: none; color: var(--fg-3); cursor: pointer; padding: var(--space-1);
6144
+ border-radius: var(--r-1); flex: 0 0 auto;
6145
+ }
6146
+ .ds-247420 .cm-reply-preview-close:hover { color: var(--fg); background: color-mix(in oklab, var(--fg) 8%, transparent); }
6147
+ .ds-247420 .cm-reply-preview-close:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
6148
+
6111
6149
  /* --- A5: composer context line (agent / model / cwd at point of typing). --- */
6112
6150
  .ds-247420 .chat-composer-context {
6113
6151
  display: block; width: 100%; text-align: left; padding: 4px var(--space-3) 0;