vyctorbrzezowski
2dffd4e625
feat(ui): render transcript footnotes as navigable endnotes
...
Local markdown-it footnote plugin: superscript references jump to an
ordered endnotes section and back to their exact reference. Note ids are
namespaced per transcript message so identical notes stay distinct.
No new dependencies.
2026-08-22 10:54:14 +00:00
Vyctor H. Brzezowski
39cff92880
fix(ui): keep transcript disclosures anchored ( #126272 )
...
* fix(ui): keep transcript disclosures anchored
* fix(ui): include file tool disclosure anchors
* fix(ui): anchor raw tool disclosures
* test(ui): cover merged disclosure invariants
* fix(ui): anchor sidebar disclosure commits
* test(ui): assert disclosure state transitions
* fix(ui): cover semantic transcript disclosures
* fix(ui): anchor transcript geometry controls
* test(ui): exercise tab geometry anchoring
* test(ui): keep geometry proof behavior-bound
* refactor(ui): split disclosure anchor coverage
* refactor(ui): extract transcript scroll margin
* refactor(ui): shorten transcript helper names
2026-08-22 07:02:45 -03:00
Peter Steinberger
81002dd250
fix(ui): announce session sharing errors ( #127801 )
...
Co-authored-by: Amp <amp@ampcode.com >
2026-08-22 01:08:49 -07:00
Ayaan Zaidi
6e7349be4d
chore(ui): restore markdown test lint ( #127799 )
...
Restore main CI by moving existing streaming code-fence coverage into a focused test file. No production behavior or assertions change.
2026-08-22 13:11:16 +05:30
Vyctor H. Brzezowski
e22dc4b287
perf(ui): skip highlighting unfinished code blocks while streaming ( #127754 )
...
* perf(ui): defer open-fence highlighting
* perf(ui): simplify unfinished fence highlighting
Co-authored-by: vyctorbrzezowski <krzyszchweski@gmail.com >
* docs: avoid concurrent changelog insertion conflict
* docs: respect release-owned changelog policy
Release-note context and before-after UI proof remain in the pull request.
Co-authored-by: vyctorbrzezowski <krzyszchweski@gmail.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-08-21 23:41:00 -07:00
Vyctor H. Brzezowski
dacfd09786
perf(ui): stop rescanning whole replies on every streamed chunk ( #127749 )
...
* perf(ui): scan streaming markdown incrementally
* perf(ui): own streaming markdown cache invalidation
Co-authored-by: vyctorbrzezowski <krzyszchweski@gmail.com >
* docs: respect release-owned changelog policy
Release-note context remains documented in the pull request evidence.
Co-authored-by: vyctorbrzezowski <krzyszchweski@gmail.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-08-21 23:38:32 -07:00
Peter Steinberger
c8d6604261
fix(ui): avoid nested activity main landmark ( #127789 )
...
Co-authored-by: Amp <amp@ampcode.com >
2026-08-21 23:08:38 -07:00
Dallin Romney
6851594b71
fix(ui): restore drafts before expiry maintenance ( #127766 )
...
* fix(ui): restore drafts before expiry maintenance
* test(ui): satisfy draft-store harness lint
* test(ui): type IndexedDB method receivers
2026-08-21 22:34:13 -07:00
Peter Steinberger
de4fbf964f
fix(ui): keep selected-text actions off context clicks ( #127776 )
...
Amp-Thread-ID: https://ampcode.com/threads/T-01a021f4-b547-7788-a916-d4a94cbd3e3b
Co-authored-by: Amp <amp@ampcode.com >
2026-08-21 21:52:49 -07:00
ClawSweeper
48a2b45fed
fix: stop limited access status from shifting page layouts ( #127704 )
...
* fix(ui): move limited access status into shell chrome
* fix(ui): cover tablet limited access layout
---------
Co-authored-by: RoboClaw <309084314+roboclaw-bot@users.noreply.github.com >
2026-08-21 21:42:05 -07:00
Peter Steinberger
1bd5f22b13
fix(ui): keep resize drag owned by one pointer ( #127760 )
...
Amp-Thread-ID: https://ampcode.com/threads/T-01a021f4-b547-7788-a916-d4a94cbd3e3b
Co-authored-by: Amp <amp@ampcode.com >
2026-08-21 21:36:10 -07:00
openclaw-mantis[bot]
fc1a663f9d
chore(ui): refresh control ui locales ( #127207 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-21 20:00:01 -07:00
ClawSweeper
b3d3404ae6
fix(ui): align page titles with page content ( #127738 )
...
Co-authored-by: RoboClaw <309084314+roboclaw-bot@users.noreply.github.com >
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
2026-08-21 19:06:50 -07:00
Peter Steinberger
557a5c131b
fix(ui): validate empty protected secrets locally ( #127740 )
...
Amp-Thread-ID: https://ampcode.com/threads/T-01a021f4-b547-7788-a916-d4a94cbd3e3b
Co-authored-by: Amp <amp@ampcode.com >
2026-08-21 18:51:06 -07:00
ClawSweeper
249e1bfb00
fix(ui): align narrow chat composer spacing ( #127717 )
...
* fix(ui): align narrow chat composer spacing
* test(ui): cover short-landscape composer spacing
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
---------
Co-authored-by: RoboClaw <309084314+roboclaw-bot@users.noreply.github.com >
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
2026-08-21 18:20:41 -07:00
Shakker
b28a687830
fix: scope terminal cleanup by run ( #127646 )
2026-08-22 02:05:56 +01:00
Shakker
8ce4a8a07d
fix: remount post-steer stream rows
2026-08-22 02:05:56 +01:00
Shakker
7f5ae9249f
fix: preserve steering stream boundaries
2026-08-22 02:05:56 +01:00
Shakker
df8898fe26
fix: settle terminal transcript projections
2026-08-22 02:05:55 +01:00
Peter Steinberger
14b85b2d82
fix(ui): keep usage results aligned with filters ( #127720 )
...
Amp-Thread-ID: https://ampcode.com/threads/T-01a021f4-b547-7788-a916-d4a94cbd3e3b
Co-authored-by: Amp <amp@ampcode.com >
2026-08-21 17:59:25 -07:00
Peter Steinberger
eaef2c1be7
fix(ui): re-arm Model Setup detection when stale route data settles after mount ( #127695 )
...
The Model Setup page could sit at "Checking this Gateway for available AI
access…" forever on fresh clients: the route loader ran before the Gateway
websocket connected and returned a loading state with a null-client
connection, the lazy page module finished importing after hello, and the
page mounted with routeData undefined under an already-connected Gateway.
When the stale loader result settled a microtask later, willUpdate
correctly discarded it, but synchronizeGateway hit the identity-equality
early return and nothing ever armed detectTask again - a silent dead-end
(fresh headless clients hit it ~100%; warm tabs recovered only because
their cached module mounted before hello).
Replace the mount-branch routeData-connection comparison with a single
self-healing invariant, ensureRouteSettledDetection(), also called from
the identity-equality early return: once route data has settled, a page
still holding phase "loading" with an idle detect task and a connected,
capable Gateway starts detection itself. Guards keep the normal path
duplicate-free: undefined routeData means the loader's own detect is
still in flight, and hasUpdated defers to willUpdate's seeding since
subscriptions fire before the first render.
Regression test mounts the page without routeData under a connected
Gateway, then delivers the stale pre-connect loader result and asserts
exactly one openclaw.setup.detect and a rendered result; it fails on the
pre-fix code with zero detect calls. Live-verified with a headless
Playwright client against a dev gateway: pre-fix stalls past 45s, fixed
build reaches ready in ~5s with a single detect request.
2026-08-21 17:26:37 -07:00
ClawSweeper
7c8e94804c
fix(ui): align activity sessions across viewports ( #127686 )
...
Co-authored-by: RoboClaw <309084314+roboclaw-bot@users.noreply.github.com >
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
2026-08-21 16:58:09 -07:00
Peter Steinberger
b765944a9f
fix(ui): explain blocked Talk microphone ( #127673 )
...
Amp-Thread-ID: https://ampcode.com/threads/T-01a021f4-b547-7788-a916-d4a94cbd3e3b
Co-authored-by: Amp <amp@ampcode.com >
2026-08-21 16:51:58 -07:00
ClawSweeper
7dca0a099a
fix(ui): preserve owner filters across gateway reconnects ( #127676 )
...
Co-authored-by: RoboClaw <309084314+roboclaw-bot@users.noreply.github.com >
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
2026-08-21 16:20:06 -07:00
Peter Steinberger
fb95562e96
fix(ui): add brand icons for all provider auth choices ( #127668 )
...
The provider picker enumerates every plugin's providerAuthChoices (63
provider ids), but the bundled icon set only covered CodexBar's 52 marks,
so Arcee, Baseten, BytePlus, Cerebras, Cohere, DeepInfra, Featherless,
Fireworks, Hugging Face, Meta, NVIDIA, Together, and many more rendered
as lettered fallback badges.
Adds 24 monochrome marks from @lobehub/icons-static-svg v1.94.0 (MIT,
metadata-cleaned; mapping documented in ATTRIBUTION.md) and aliases
variant provider ids (kilocode, kimi-coding, xiaomi, ollama-cloud,
tencent-tokenhub, vercel-ai-gateway, ...) onto existing marks. GMI Cloud,
SGLang, and Vydra keep the lettered fallback: no vector mark exists
upstream.
2026-08-21 16:09:03 -07:00
Alix-007
a7a68cfb47
fix(ui): keep annotated slash commands local ( #121191 )
...
* fix(ui): keep browser annotations out of commands
* fix(ui): reuse raw command classification
* fix(ui): fence retained browser annotations by exact identity
Preserve the authoritative annotation object during slash-command recovery and prove terminal command retirement, restored screenshot and document bytes, and same-ID replacement races.
Co-authored-by: Alix-007 <li.long15@xydigit.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-08-21 15:56:10 -07:00
Peter Steinberger
11081a95b8
test: remove final moving-tip duplicates ( #126990 )
2026-08-21 15:54:24 -07:00
Peter Steinberger
1c5c878a96
fix(ui): show filtered agent skills ( #127663 )
...
Amp-Thread-ID: https://ampcode.com/threads/T-01a021f4-b547-7788-a916-d4a94cbd3e3b
Co-authored-by: Amp <amp@ampcode.com >
2026-08-21 15:40:07 -07:00
Jesse Merhi
a5e9b3189d
fix(ui): keep chat pinned as composer grows ( #122985 )
...
Co-authored-by: Jesse Merhi <jesse-merhi@users.noreply.github.com >
2026-08-22 08:36:26 +10:00
Peter Steinberger
6d47044e73
fix(ui): release stale model setup wizard sessions ( #127657 )
2026-08-21 15:33:30 -07:00
Josh Lehman
d54a8e80f2
fix(ui): keep Home status clear of Pages editor ( #127642 )
2026-08-21 15:31:13 -07:00
Jesse Merhi
d630897a95
fix(ui): show one session activity indicator ( #123288 )
...
* fix(ui): show one session activity indicator
* chore(ui): remove unused session unread renderer
* fix(ui): prioritize active child run indicators
* fix(ui): prioritize Home run activity
* test(ui): measure session endcap layout
* test(ui): align endcap atom count
* fix(ui): preserve hidden unread semantics
* fix(ui): announce active Home runs
* refactor(ui): centralize sidebar state descriptions
* fix(ui): compose Home activity description
---------
Co-authored-by: Jesse Merhi <jesse-merhi@users.noreply.github.com >
2026-08-22 08:27:37 +10:00
Peter Steinberger
9903e404ef
feat(ui): add live CPU/memory/delay sparkline graphs to the system busyness overlay ( #127650 )
...
* feat(ui): add cpu/memory graphs to system busyness overlay
* refactor(ui): redesign busyness overlay vitals as sparkline stat tiles
Merge the duplicated sparkline row and numeric tile grid into three vital
tiles (CPU, memory, event-loop delay) with gradient area charts, a live
pulse dot, pointer scrubbing with value+age readout, and a danger tint
driven by the gateway's own event-loop degradation reasons. Memory
auto-ranges its baseline so RSS trends stay visible.
2026-08-21 15:06:17 -07:00
Peter Steinberger
f95443125b
fix(ui): separate settings footer actions from build info ( #127597 )
...
Amp-Thread-ID: https://ampcode.com/threads/T-01a021f4-b547-7788-a916-d4a94cbd3e3b
Co-authored-by: Amp <amp@ampcode.com >
2026-08-21 14:48:42 -07:00
Peter Steinberger
69d30923bf
perf(test): speed up model provider recovery observations ( #127570 )
2026-08-21 14:17:24 -07:00
Hannes Rudolph
5b67b61964
feat(dashboard): let widgets run granted actions and open links ( #127315 )
2026-08-21 14:57:40 -06:00
Peter Steinberger
3bb1433b78
fix(ui): surface config open-file failures ( #127498 )
...
Amp-Thread-ID: https://ampcode.com/threads/T-01a021f4-b547-7788-a916-d4a94cbd3e3b
Co-authored-by: Amp <amp@ampcode.com >
2026-08-21 13:37:31 -07:00
Peter Steinberger
3ea90bdcdb
feat(ui): add Person grouping mode for sessions sidebar and sessions page ( #127346 )
...
* feat(ui): add Person grouping mode for sessions sidebar and sessions page
Sessions can now be grouped by their durable owner identity: the sidebar
Group-by menu gains a capability-gated Person mode (self first, humans by
label, agent identities after; ownerless rows keep their smart zones), and
the sessions page gains the matching person mode. Person section headers
render the owner avatar and profile label; the mock dev server now
advertises the multi-identity policy and carries explicit row owners the
way the gateway projects createdActor fallbacks.
* feat(ui): gate sessions-page Person grouping on the identity capability
Mirrors the sidebar: the Person option hides without
hasMultipleSessionSharingIdentities and a stored Person preference
renders as None until the capability returns.
2026-08-21 13:21:43 -07:00
ClawSweeper
229ce32e32
fix(ui): align run history dropdown text ( #127443 )
...
Co-authored-by: RoboClaw <309084314+roboclaw-bot@users.noreply.github.com >
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
2026-08-21 13:12:10 -07:00
Peter Steinberger
519877a317
fix(ui): surface session owner assignment failures ( #127431 )
...
Amp-Thread-ID: https://ampcode.com/threads/T-01a021f4-b547-7788-a916-d4a94cbd3e3b
Co-authored-by: Amp <amp@ampcode.com >
2026-08-21 13:09:31 -07:00
Peter Steinberger
1353ce0995
feat: run Codex sessions on approved paired devices ( #127202 )
...
* feat(codex): execute paired-device sessions over node carrier
* fix(node-host): preserve approved invocation session identity
* fix(codex): observe paired-node execution leases before handshake
* fix: fence paired-device placement and Codex execution owners
* fix: satisfy paired-device placement CI ownership guards
* fix(codex): reject credentialed paired-node URL parameters
* fix(codex): fence nested remote HTTP session credentials
* fix(codex): scrub node process URLs and preserve plaintext HTTP
* test(codex): republish node inventory after capability approval
2026-08-21 12:50:26 -07:00
Peter Steinberger
90d1c43f5a
fix(ui): announce custom theme import results ( #127380 )
...
Amp-Thread-ID: https://ampcode.com/threads/T-01a021f4-b547-7788-a916-d4a94cbd3e3b
Co-authored-by: Amp <amp@ampcode.com >
2026-08-21 12:17:27 -07:00
Sasan
6aced3350d
fix(ui): Model Providers usage cards stay empty after a failed usage.status ( #120301 )
...
* fix(ui): recover provider usage after transient gateway failures
Keep failed provider-usage Results cold across Models and Usage direct and preloaded paths. Preserve canonical Gateway lifecycle ownership, request epochs, and route provenance.
Co-authored-by: Sasan Sotoodehfar <sasan1200@gmail.com >
* test(ui): shrink provider assertion safety baseline
Drop the obsolete grandfathered non-null assertion after moving provider probe-result policy into its owner.
Co-authored-by: Sasan Sotoodehfar <sasan1200@gmail.com >
* test(ui): tolerate browser font geometry rounding
Match existing chat-layout two-pixel renderer tolerance on both completed-work spacing boundaries.
Co-authored-by: Sasan Sotoodehfar <sasan1200@gmail.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-08-21 11:59:55 -07:00
Ayaan Gazali
2213d569ce
fix(ui): clear terminal session activity indicators ( #120327 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-08-21 11:52:00 -07:00
SunnyShu
9a0e11df06
fix(ui): reach identity-menu footer controls with keyboard ( #122066 )
...
* fix(ui): restore identity menu footer keyboard navigation
Co-authored-by: SunnyShu0925 <shu.zongyu@xydigit.com >
* test(ui): synchronize identity menu hide lifecycle
* test(ui): keep identity keyboard proof in one menu lifecycle
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-08-21 11:48:36 -07:00
Josh Avant
ccbfa6c3a3
feat(ui): explain decision receipts in Activity ( #126007 )
...
* fix(audit): project safe decision receipt displays
* docs(agents): preserve audit display privacy
* fix(ci): satisfy audit receipt guardrails
2026-08-21 11:33:32 -07:00
Peter Steinberger
2bd6efb919
fix(ui): restore editable map-valued settings ( #127336 )
2026-08-21 11:13:21 -07:00
Peter Steinberger
7d70895ba3
perf(ui): skip video pacing during normal browser tests ( #127313 )
2026-08-21 10:59:07 -07:00
Peter Steinberger
f9b5693612
fix(ui): retire stale plugin lifecycle feedback ( #127273 )
...
Amp-Thread-ID: https://ampcode.com/threads/T-01a021f4-b547-7788-a916-d4a94cbd3e3b
Co-authored-by: Amp <amp@ampcode.com >
2026-08-21 10:32:36 -07:00
Onur Solmaz
1319e1e606
fix(providers): report request acceptance consistently ( #126028 )
...
* fix(providers): restore provider acceptance lifecycle
* fix(providers): cancel streams on acceptance failure
* test(amazon-bedrock): split stream lifecycle coverage
* refactor(providers): keep acceptance lifecycle private
* refactor(providers): make acceptance observation synchronous
* refactor(providers): narrow private observer safely
* fix(google): keep response hook within retry deadline
* test(ui): tolerate subpixel spacing variance
* test(ui): wait for durable draft before reload
2026-08-21 19:32:07 +03:00