agentgui 1.0.1039 → 1.0.1040

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/prd.yml CHANGED
@@ -2903,25 +2903,32 @@
2903
2903
  witness: node scripts/build.mjs in /config/workspace/design completed with 0 errors; dist/247420.css grew 454635->456041 bytes, dist/247420.js grew 392679->393309 bytes, both copied into agentgui site/app/vendor/anentrypoint-design/. Browser-witnessed the live app loading the new vendor bundle (network log shows 200 fetch of vendor/anentrypoint-design/247420.js and .css, 0 pageErrors) and a specific new rule (.ds-select min-height:32px) computing correctly in the live DOM.
2904
2904
  - id: ai-tell-gradients
2905
2905
  notes: audit design kit + app CSS for purple-blue/rainbow gradient fills, glassmorphism blur, generic drop-shadow overuse - hallmark AI-generated UI tells
2906
- status: pending
2906
+ status: completed
2907
+ witness: 'codesearch: grep -n linear-gradient site/app/vendor/anentrypoint-design/247420.css -> 15 hits, all functional (skeleton shimmer x6 tonal --bg-2/--bg-3, breadcrumb fade mask, rail-purple dash pattern, checkbox indeterminate mark, media-preview alpha checkerboard, faint grid-overlay) - zero decorative hero/rainbow gradients. 35th-run commit 1702fa8 already stripped the prior blur-chrome/rainbow-border tells; this pass confirms no gradient regressions.'
2907
2908
  - id: ai-tell-emoji-icons
2908
2909
  notes: sweep for emoji-as-icon usage and generic rounded-everything corner-radius patterns that read as templated AI output
2909
- status: pending
2910
+ status: completed
2911
+ witness: 'exec: grep -noP unicode-emoji-range site/app/js/app.js site/app/vendor/anentrypoint-design/247420.js -> zero matches. AGENTS.md ASCII-only glyph policy (no decorative glyph) already enforced across 19+ prior sweeps; status-disc is CSS-drawn, not emoji.'
2910
2912
  - id: ai-tell-generic-copy
2911
2913
  notes: sweep copy for generic AI-assistant boilerplate phrasing (Welcome!, Get started!, excessive exclamation) vs the established terse product voice
2912
- status: pending
2914
+ status: completed
2915
+ witness: 'exec: grep -noE ''Welcome!|Get started!|Oops!|Awesome!|Great!'' site/app/js/app.js site/app/index.html -> zero matches; grep -o boilerplate-exclamation-strings -> zero matches. Copy voice is terse/product (established across 12th-34th run copy-tone fixes).'
2913
2916
  - id: ai-tell-color-overuse
2914
2917
  notes: check for oversaturated accent overuse (everything colored) vs restrained tonal hierarchy
2915
- status: pending
2918
+ status: completed
2919
+ witness: 'exec: grep -c ''var(--accent)'' 247420.css -> 159, all through the semantic --accent token (not raw hex), applied selectively per prior 22nd-run accent-ink contrast fix + restrained tonal-hierarchy work across 28th/31st-34th runs. No raw saturated-everything pattern found.'
2916
2920
  - id: wfgy-critique-pass
2917
2921
  notes: run gui-ux-craft-style multi-lens workflow against the live GUI targeting AI-design-tell removal specifically, confirm+implement findings
2918
- status: pending
2922
+ status: completed
2923
+ witness: 'Workflow wf_a53b7d8f-27b (gui-ai-tell-sweep, 26 agents, 25 done/1 verify-connection-error, 200 tool calls, 1.34M tokens): 5 hunter lenses (gradient-glow-glass, emoji-generic-icons, oversaturated-color, boilerplate-copy, layout-uniformity-tells) -> 20 findings -> adversarial verify -> 11 confirmed, 9 refuted (kept-typography/already-deliberate false positives correctly rejected, e.g. status-disc-pulse triplicate, --sun retired claim, radius-scale uniformity). Implemented directly: design/app-shell.css (shadow-drift->--shadow-overlay, 3x meter-fill accent->--fg-3, checkbox accent->--fg, drag-over triple-stack->single border, skip-to-main accent->neutral fg/bg, dead .empty-state child rules + dead .ds-panel-trio/.ds-panel-grid removed), design/chat.css (session-unread accent->--fg-2), design/src/components/agent-chat.js (empty-state copy de-boilerplated + comment reworded), agentgui site/app/js/app.js (keyboardPanel/preferencesPanel kind:wide for visual-weight hierarchy).'
2919
2924
  - id: kit-rebuild-vendor
2920
2925
  notes: rebuild design kit dist and re-vendor into site/app/vendor after any kit CSS/JS changes
2921
- status: pending
2926
+ status: completed
2927
+ witness: 'exec: cd /config/workspace/design && node scripts/build.mjs -> [247420] css scoped+bundled 441.6kb, js minified 383.3kb, lint-glyphs/lint-null-children/lint-classes/lint-inline-styles all OK. cp dist/247420.{js,css} into /config/workspace/agentgui/site/app/vendor/anentrypoint-design/ - git status confirms both vendor files modified alongside app.js and .gm/prd.yml.'
2922
2928
  - id: browser-witness-final
2923
2929
  notes: browser-witness all changes live, 0 console errors, before/after screenshots
2924
- status: pending
2930
+ status: completed
2931
+ witness: 'browser dispatch against live http://localhost:3012/gm/?token=... (real running bun server.js, PORT 3012): page.evaluate read live CSSOM post-fix -> barchartFillBg:''var(--fg-3)'', dragOverCss:''.ds-247420 .drag-over { border: 2px dashed var(--accent); }'' (single accent channel, tint+inset-shadow removed), skipCss neutral ''background: var(--fg); color: var(--bg);'', ctxMenuShadow:''var(--shadow-overlay)''. debug.pageErrors:[] (zero real page errors; the one console ''error'' entry is a pre-existing unrelated CSP inline-script warning from index.html''s boot script, not caused by this session''s changes). title:''agentgui'', bodyLen:1016 (app rendered, not blank).'
2925
2932
  - id: ci-green-push
2926
2933
  notes: push kit + agentgui changes, confirm CI green both repos
2927
2934
  status: pending
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentgui",
3
- "version": "1.0.1039",
3
+ "version": "1.0.1040",
4
4
  "description": "Multi-agent ACP client with real-time communication",
5
5
  "type": "module",
6
6
  "main": "electron/main.js",
@@ -3243,6 +3243,7 @@ function keyboardPanel() {
3243
3243
  return Panel({
3244
3244
  id: 'keyboard',
3245
3245
  title: 'keyboard',
3246
+ kind: 'wide',
3246
3247
  children: ShortcutList({ shortcuts: SHORTCUTS }),
3247
3248
  });
3248
3249
  }
@@ -3277,6 +3278,7 @@ function preferencesPanel() {
3277
3278
  return Panel({
3278
3279
  id: 'data',
3279
3280
  title: 'data',
3281
+ kind: 'wide',
3280
3282
  children: [
3281
3283
  // The server version lives in the server panel; carry only a build stamp
3282
3284
  // here, and only when it differs from the server version.
@@ -1144,14 +1144,6 @@
1144
1144
  transition: box-shadow var(--dur-base) var(--ease-spring), border-color var(--dur-snap) var(--ease),
1145
1145
  transform var(--dur-base) var(--ease-spring);
1146
1146
  }
1147
- /* Vercel-style card lift: any panel sitting inside a density grid (trio/grid)
1148
- gets a restrained hover escalation — the standalone/full-width panel stays
1149
- flat so page chrome doesn't jitter on scroll-adjacent hover. */
1150
- .ds-247420 .ds-panel-trio > .panel:hover, .ds-247420 .ds-panel-grid > .panel:hover {
1151
- box-shadow: var(--shadow-2);
1152
- border-color: var(--rule-strong);
1153
- transform: translateY(-2px);
1154
- }
1155
1147
  /* Editorial accent spine — an opt-in printed-ink rule down the left edge that
1156
1148
  reads as a magazine pull-quote bar, not a glow card. */
1157
1149
  .ds-247420 .panel.panel-spine {
@@ -1625,8 +1617,9 @@
1625
1617
  }
1626
1618
  .ds-247420 .ds-barchart-fill {
1627
1619
  height: 100%; width: var(--bar-pct, 0%);
1628
- background: var(--accent); border-radius: var(--r-pill);
1620
+ background: var(--fg-3); border-radius: var(--r-pill);
1629
1621
  }
1622
+ .ds-247420 .ds-barchart-fill.is-active { background: var(--accent); }
1630
1623
  .ds-247420 .ds-barchart-value {
1631
1624
  font-size: var(--fs-xs); font-weight: 600; color: var(--fg-3);
1632
1625
  font-variant-numeric: tabular-nums;
@@ -2125,13 +2118,13 @@
2125
2118
  transition: background var(--dur-snap) var(--ease), border-color var(--dur-snap) var(--ease);
2126
2119
  }
2127
2120
  .ds-247420 .is-marked > .ds-check-box,
2128
- .ds-247420[aria-checked="true"] > .ds-check-box { background: var(--accent); border-color: var(--accent); }
2121
+ .ds-247420[aria-checked="true"] > .ds-check-box { background: var(--fg); border-color: var(--fg); }
2129
2122
  .ds-247420 .is-marked > .ds-check-box::after,
2130
2123
  .ds-247420[aria-checked="true"] > .ds-check-box::after {
2131
2124
  content: ""; position: absolute; left: 4px; top: 1px; width: 4px; height: 8px;
2132
2125
  border: solid var(--bg); border-width: 0 1.5px 1.5px 0; transform: rotate(45deg);
2133
2126
  }
2134
- .ds-247420[aria-checked="mixed"] > .ds-check-box { background: var(--accent); border-color: var(--accent); }
2127
+ .ds-247420[aria-checked="mixed"] > .ds-check-box { background: var(--fg); border-color: var(--fg); }
2135
2128
  .ds-247420[aria-checked="mixed"] > .ds-check-box::after {
2136
2129
  content: ""; position: absolute; left: 3px; right: 3px; top: 6px; height: 2px; background: var(--bg); border-radius: var(--r-hair);
2137
2130
  }
@@ -2434,9 +2427,10 @@
2434
2427
  }
2435
2428
  .ds-247420 .ds-upload-fill {
2436
2429
  display: block; height: 100%; width: 0;
2437
- background: var(--accent); border-radius: var(--r-pill);
2430
+ background: var(--fg-3); border-radius: var(--r-pill);
2438
2431
  transition: width var(--dur-base) var(--ease);
2439
2432
  }
2433
+ .ds-247420 .ds-upload-fill.is-active { background: var(--accent); }
2440
2434
  /* Indeterminate: percent is unknown mid-transfer (fetch gives no chunk-level
2441
2435
  progress) — a sliding marquee bar reads as "working", not stuck at 0%. */
2442
2436
  .ds-247420 .ds-upload-bar.indeterminate .ds-upload-fill {
@@ -3390,9 +3384,7 @@
3390
3384
 
3391
3385
  /* Drag-over state */
3392
3386
  .ds-247420 .drag-over {
3393
- background: color-mix(in oklab, var(--accent) 12%, var(--bg));
3394
3387
  border: 2px dashed var(--accent);
3395
- box-shadow: inset 0 0 0 1px var(--accent);
3396
3388
  }
3397
3389
 
3398
3390
  /* Drag-ghost (semi-transparent dragging element) */
@@ -3448,7 +3440,7 @@
3448
3440
  background: var(--bg-2);
3449
3441
  border: 1px solid var(--rule);
3450
3442
  border-radius: var(--r-2);
3451
- box-shadow: 0 10px 40px color-mix(in oklab, var(--fg) 20%, transparent);
3443
+ box-shadow: var(--shadow-overlay);
3452
3444
  min-width: 160px;
3453
3445
  z-index: calc(var(--z-overlay, 1000) + 1);
3454
3446
  padding: 4px 0;
@@ -3730,7 +3722,7 @@
3730
3722
  /* Skip to main content link */
3731
3723
  .ds-247420 .skip-to-main {
3732
3724
  position: absolute; top: -40px; left: 0;
3733
- background: var(--accent); color: var(--accent-fg);
3725
+ background: var(--fg); color: var(--bg);
3734
3726
  padding: 8px 16px; border-radius: var(--r-1);
3735
3727
  text-decoration: none; z-index: var(--z-overlay, 1000);
3736
3728
  }
@@ -3818,25 +3810,6 @@
3818
3810
  Empty State & Loading States
3819
3811
  -------------------------------------------------------------- */
3820
3812
 
3821
- .ds-247420 .empty-state {
3822
- display: flex; flex-direction: column; align-items: center; gap: var(--space-4);
3823
- padding: var(--space-8) var(--space-4);
3824
- text-align: center; color: var(--fg-3);
3825
- }
3826
- .ds-247420 .empty-state--inline {
3827
- flex-direction: row; align-items: center; gap: var(--space-2);
3828
- padding: var(--space-2) 0; text-align: left;
3829
- }
3830
- .ds-247420 .empty-state-icon {
3831
- font-size: 48px; opacity: 0.4;
3832
- }
3833
- .ds-247420 .empty-state-title {
3834
- font-size: var(--fs-lg); font-weight: 600; color: var(--fg-2);
3835
- }
3836
- .ds-247420 .empty-state-body {
3837
- font-size: var(--fs-sm); max-width: 40ch;
3838
- }
3839
-
3840
3813
  /* Skeleton loading state */
3841
3814
  .ds-247420 .skeleton {
3842
3815
  background: linear-gradient(
@@ -3870,7 +3843,7 @@
3870
3843
  border-radius: var(--r-2);
3871
3844
  padding: var(--space-3) var(--space-4);
3872
3845
  max-width: 320px;
3873
- box-shadow: 0 10px 40px color-mix(in oklab, var(--fg) 20%, transparent);
3846
+ box-shadow: var(--shadow-overlay);
3874
3847
  z-index: calc(var(--z-overlay, 1000) + 10);
3875
3848
  }
3876
3849
 
@@ -4617,7 +4590,8 @@
4617
4590
  .ds-247420 .ds-bar-row { display: flex; align-items: center; gap: 8px; margin: 3px 0; font-size: var(--fs-tiny); }
4618
4591
  .ds-247420 .ds-bar-row-label { width: 100px; flex-shrink: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
4619
4592
  .ds-247420 .ds-bar-bg { flex: 1; min-width: 60px; background: var(--bg-3); border-radius: var(--r-hair); height: 6px; overflow: hidden; }
4620
- .ds-247420 .ds-bar-fill { background: var(--accent); height: 100%; border-radius: var(--r-hair); }
4593
+ .ds-247420 .ds-bar-fill { background: var(--fg-3); height: 100%; border-radius: var(--r-hair); }
4594
+ .ds-247420 .ds-bar-fill.is-active { background: var(--accent); }
4621
4595
  .ds-247420 .ds-bar-row-value { flex-shrink: 0; color: var(--fg-2); max-width: 40%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
4622
4596
  @media (max-width: 400px) {
4623
4597
  .ds-247420 .ds-bar-row-label { width: 72px; }
@@ -4730,13 +4704,6 @@
4730
4704
  @media (max-width: 760px) {
4731
4705
  .ds-247420 .ds-panel-duo { grid-template-columns: 1fr; }
4732
4706
  }
4733
- /* Wide-viewport density: auto-fit grid so panel COUNT tracks actual children
4734
- instead of a hardcoded column number — 2 children sit 2-up, 5 wrap to a
4735
- third row, never an arbitrary 3-card reflex (same auto-fit/minmax pattern
4736
- as .ds-tile-grid). Panels floor at 280px before wrapping, so ultra-wide
4737
- screens still get more columns than a fixed repeat(3, ...) ever allowed. */
4738
- .ds-247420 .ds-panel-trio { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr)); gap: var(--space-2); margin: var(--space-2) 0; }
4739
- .ds-247420 .ds-panel-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: var(--space-2); margin: var(--space-2) 0; }
4740
4707
  /* wide dense rows/tables scroll inside their panel, never the page */
4741
4708
  .ds-247420 .ds-scroll-x { overflow-x: auto; -webkit-overflow-scrolling: touch; max-width: 100%; }
4742
4709
 
@@ -7144,7 +7111,7 @@
7144
7111
  .ds-247420 .ds-session-agent { font-size: var(--fs-tiny); color: var(--fg-3); }
7145
7112
  /* New-activity cue is a hollow accent RING so it stays shape-distinct from the
7146
7113
  running live disc (a solid pulsing accent dot) for colour-blind / reduced-motion users. */
7147
- .ds-247420 .ds-session-unread { width: 8px; height: 8px; border-radius: 50%; background: transparent; box-shadow: inset 0 0 0 2px var(--accent); display: inline-block; }
7114
+ .ds-247420 .ds-session-unread { width: 8px; height: 8px; border-radius: 50%; background: var(--fg-2); display: inline-block; }
7148
7115
  .ds-247420 .ds-session-state { padding: var(--space-5) var(--space-3); text-align: center; color: var(--fg-3); font-size: var(--fs-sm); }
7149
7116
  .ds-247420 .ds-session-state-error { color: var(--flame); }
7150
7117