agentgui 1.0.871 → 1.0.873
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/CHANGELOG.md +9 -0
- package/CLAUDE.md +1 -1
- package/README.md +10 -7
- package/package.json +1 -1
- package/static/css/main.css +34 -1
- package/static/index.html +2 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
## [Unreleased] - GUI a11y pass
|
|
2
|
+
|
|
3
|
+
- index.html: remove `maximum-scale=1.0` and `user-scalable=no` from viewport (WCAG 1.4.4 — low-vision users need pinch-zoom)
|
|
4
|
+
- index.html: add `theme-color` meta with light/dark media queries (native tab/chrome tinting on mobile)
|
|
5
|
+
- index.html: add skip-to-conversation link as first body child for keyboard users
|
|
6
|
+
- main.css: add `:focus-visible` outline for keyboard nav (previously no default visible focus ring)
|
|
7
|
+
- main.css: add `@media (prefers-reduced-motion: reduce)` to collapse animations/transitions for users with vestibular disorders or motion-sensitivity OS setting
|
|
8
|
+
- main.css: `.skip-link` styles (off-screen until focused)
|
|
9
|
+
|
|
1
10
|
## [Unreleased] - GUI observability + workflow-plugin fix
|
|
2
11
|
|
|
3
12
|
- Fix regression from prior commit: workflow-plugin.js declared `dependencies: ['git','database']` but git plugin was deleted; plugin init failed with "Plugin git not found in registry". Removed unused git dep and stale binding.
|
package/CLAUDE.md
CHANGED
|
@@ -362,7 +362,7 @@ The README.md uses shields.io badges with a consistent pattern:
|
|
|
362
362
|
- **Terminal output** is base64-encoded (`encoding: 'base64'` field on message). Client decodes with `decodeURIComponent(escape(atob(data)))` pattern for multibyte safety.
|
|
363
363
|
- **HTML cache** (`_htmlCache`) is only populated when client accepts gzip. In watch mode it's never cached (always fresh).
|
|
364
364
|
- **`app.js` and `app-shortcuts.js` script loading:** Both are `<script defer>` tags loaded AFTER `agent-auth.js` in index.html. They depend on `window.wsClient`, `window.conversationManager`, and `window._escHtml` being initialized first. Defer order is guaranteed by source order — adding new defer scripts that depend on these modules requires careful ordering.
|
|
365
|
-
- **`window.__debug
|
|
365
|
+
- **`window.__debug` registry:** Structured sub-keys via live getters — `machines` (conv/toolInstall/voice/convList/prompt/recording/terminal/ws), `ws` (state/latency/url), `auth`, `perf`, `config`, `renderer`, `conv`. Legacy methods preserved: `getState()`, `getSyncState()`, `getMessageState()`. Uninitialized machines return `'uninitialized'` rather than crashing. All XState v5 machines have no parallel ad-hoc state.
|
|
366
366
|
- **`isJsonlBacked` flag:** Only `claude-code` (protocol: `direct`) writes JSONL files. All other agents use `stream-event-handler.js` for broadcasting. `isJsonlBacked = resolvedAgentId === 'claude-code'` — guards in `stream-event-handler.js` prevent double-broadcast for claude-code, and gates ACP streaming for non-JSONL agents.
|
|
367
367
|
- **`toolIds` in `server-startup.js` must match `TOOLS` in `tool-manager.js`:** `initializeToolInstallations` runs for each toolId, creating the `tool_installations` row. `tool_install_history` has a FK to `tool_installations(tool_id)`. Any tool omitted from toolIds will cause a FOREIGN KEY constraint failure when the periodic update checker writes history for it.
|
|
368
368
|
- **`JsonlWatcher._read(fp)` override:** Captures `this._currentFp` before calling `super._read(fp)`, making the file path available to `_line()` callbacks for project-directory decoding in `_conv()`. JSONL project dirs are encoded (e.g., `-config-workspace-agentgui`) — decoded via `'/' + dirName.slice(1).replace(/-/g, '/')`.
|
package/README.md
CHANGED
|
@@ -181,13 +181,16 @@ When `DEBUG=1` is set, internal state inspection endpoints become available:
|
|
|
181
181
|
- `GET /api/debug/ws-stats` - WebSocket connection metrics and lag distribution
|
|
182
182
|
|
|
183
183
|
**Browser Console** (`window.__debug`):
|
|
184
|
-
- `window.__debug.
|
|
185
|
-
- `window.__debug.
|
|
186
|
-
- `window.__debug.
|
|
187
|
-
- `window.__debug.
|
|
188
|
-
- `window.__debug.
|
|
189
|
-
- `window.__debug.
|
|
190
|
-
- `window.__debug.
|
|
184
|
+
- `window.__debug.machines` - All XState machines (conv, toolInstall, voice, convList, prompt, recording, terminal, ws)
|
|
185
|
+
- `window.__debug.ws` - WebSocket state, latency EMA, latency trend, URL
|
|
186
|
+
- `window.__debug.auth` - Agent auth and OAuth state
|
|
187
|
+
- `window.__debug.perf` - Conversation perf metrics
|
|
188
|
+
- `window.__debug.config` - Base URL and server config
|
|
189
|
+
- `window.__debug.renderer` - Streaming renderer event queue / history lengths
|
|
190
|
+
- `window.__debug.conv` - Current conversation and streaming set
|
|
191
|
+
- `window.__debug.getState()` - WS latency snapshot
|
|
192
|
+
- `window.__debug.getSyncState()` - Flat snapshot of all machines (legacy shape)
|
|
193
|
+
- `window.__debug.getMessageState()` - Message/queue DOM counts
|
|
191
194
|
|
|
192
195
|
See [CLAUDE.md](CLAUDE.md) for complete XState v5 machine documentation and internal architecture details.
|
|
193
196
|
|
package/package.json
CHANGED
package/static/css/main.css
CHANGED
|
@@ -3248,4 +3248,37 @@
|
|
|
3248
3248
|
color: var(--color-text);
|
|
3249
3249
|
max-width: 120px;
|
|
3250
3250
|
}
|
|
3251
|
-
|
|
3251
|
+
|
|
3252
|
+
|
|
3253
|
+
.skip-link {
|
|
3254
|
+
position: absolute;
|
|
3255
|
+
top: -40px;
|
|
3256
|
+
left: 0;
|
|
3257
|
+
background: var(--color-primary, #3b82f6);
|
|
3258
|
+
color: #fff;
|
|
3259
|
+
padding: 8px 16px;
|
|
3260
|
+
z-index: 10000;
|
|
3261
|
+
text-decoration: none;
|
|
3262
|
+
border-radius: 0 0 4px 0;
|
|
3263
|
+
font-weight: 600;
|
|
3264
|
+
}
|
|
3265
|
+
.skip-link:focus {
|
|
3266
|
+
top: 0;
|
|
3267
|
+
}
|
|
3268
|
+
|
|
3269
|
+
:focus-visible {
|
|
3270
|
+
outline: 2px solid var(--color-primary, #3b82f6);
|
|
3271
|
+
outline-offset: 2px;
|
|
3272
|
+
border-radius: 2px;
|
|
3273
|
+
}
|
|
3274
|
+
|
|
3275
|
+
@media (prefers-reduced-motion: reduce) {
|
|
3276
|
+
*,
|
|
3277
|
+
*::before,
|
|
3278
|
+
*::after {
|
|
3279
|
+
animation-duration: 0.01ms !important;
|
|
3280
|
+
animation-iteration-count: 1 !important;
|
|
3281
|
+
transition-duration: 0.01ms !important;
|
|
3282
|
+
scroll-behavior: auto !important;
|
|
3283
|
+
}
|
|
3284
|
+
}
|
package/static/index.html
CHANGED
|
@@ -43,6 +43,8 @@
|
|
|
43
43
|
<link rel="stylesheet" href="/gm/css/tools-popup.css" media="print" onload="this.media='all'">
|
|
44
44
|
</head>
|
|
45
45
|
<body>
|
|
46
|
+
<a href="#app" class="skip-link">Skip to conversation</a>
|
|
47
|
+
|
|
46
48
|
<!-- Sidebar overlay (mobile) -->
|
|
47
49
|
<div class="sidebar-overlay" data-sidebar-overlay></div>
|
|
48
50
|
|