Commit graph

7573 commits

Author SHA1 Message Date
Vyctor H. Brzezowski
0e6882a4b8
fix(ui): match session owner stack cutouts to row backgrounds (#147875) 2026-09-14 03:31:21 -03:00
Peter Steinberger
7043f8fb4f
feat(subagents): explain waits and separate execution from result delivery (#147571)
* feat(subagents): make task waits, controls, and delivery observable

* test(subagents): make live status and evidence probes explicit

* test(subagents): refresh model-facing tool snapshots

* test(tasks): reuse the task-owned Gateway fixture

* test(subagents): reuse the Gateway test-client owner

* refactor(tasks): consolidate restored indexes and settle lifecycle proof

* refactor(ui): reuse task status copy in subagent tooltips

* build(workboard): refresh assets after subagent protocol integration

* perf(ui): load background task copy with its deferred views
2026-09-13 23:29:48 -07:00
RoboClaw
e04f417fec
improve(ui): simplify prompt budget heading (#147924)
Some checks are pending
Native App Locale Refresh / Refresh native ja-JP (push) Blocked by required conditions
Native App Locale Refresh / Refresh native ko (push) Blocked by required conditions
Native App Locale Refresh / Refresh native nl (push) Blocked by required conditions
Native App Locale Refresh / Refresh native pl (push) Blocked by required conditions
Native App Locale Refresh / Refresh native pt-BR (push) Blocked by required conditions
Native App Locale Refresh / Refresh native ru (push) Blocked by required conditions
Native App Locale Refresh / Refresh native sv (push) Blocked by required conditions
Native App Locale Refresh / Refresh native th (push) Blocked by required conditions
Native App Locale Refresh / Refresh native tr (push) Blocked by required conditions
Native App Locale Refresh / Refresh native uk (push) Blocked by required conditions
Native App Locale Refresh / Refresh native vi (push) Blocked by required conditions
Native App Locale Refresh / Refresh native zh-CN (push) Blocked by required conditions
Native App Locale Refresh / Refresh native zh-TW (push) Blocked by required conditions
Native App Locale Refresh / Commit native locale refresh (push) Blocked by required conditions
OpenClaw Stable Main Closeout / Resolve stable release closeout inputs (push) Waiting to run
OpenClaw Stable Main Closeout / Verify stable main closeout (push) Blocked by required conditions
Plugin Init Scaffold Validation / Validate provider scaffold (push) Waiting to run
Plugin NPM Release / preview_plugins_npm (push) Waiting to run
Plugin NPM Release / Validate release publish approval (push) Blocked by required conditions
Plugin NPM Release / preview_plugin_pack (push) Blocked by required conditions
Plugin NPM Release / Preflight plugin npm package () (push) Blocked by required conditions
Plugin NPM Release / Seal prepared plugin npm release (push) Blocked by required conditions
Plugin NPM Release / Trusted publisher OIDC exchange (push) Blocked by required conditions
Plugin NPM Release / publish_plugins_npm (push) Blocked by required conditions
Plugin NPM Release / verify_plugins_npm (push) Blocked by required conditions
Vitest Cache Warm / warm (linux) (push) Waiting to run
Vitest Cache Warm / warm (macos) (push) Waiting to run
Workflow Sanity / no-tabs (push) Waiting to run
Workflow Sanity / actionlint (push) Waiting to run
Workflow Sanity / generated-doc-baselines (push) Waiting to run
* improve(ui): simplify prompt budget heading

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>

* improve(ui): simplify prompt budget heading

Worked on by:
- @steipete

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
OpenClaw-Publication: 05371c2b-6615-4e5d-9170-189138a70cbe

---------

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
2026-09-13 23:24:15 -07:00
RoboClaw
b790d46d04
fix(ui): keep chat images in place while loading (#147565)
* fix(ui): keep chat images in place while loading

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Co-authored-by: vyctorbrzezowski <51521767+vyctorbrzezowski@users.noreply.github.com>

* fix(ui): use plain themed image skeletons

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>

Co-authored-by: vyctorbrzezowski <51521767+vyctorbrzezowski@users.noreply.github.com>

* fix(ui): preserve intrinsic image size in user messages

Keep the existing max-width bound while giving shrink-to-fit user grids a definite image width. Exercise both roles and real tiny-image actions; keep download/copy presentation separate from resource ownership.

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>

Co-authored-by: vyctorbrzezowski <51521767+vyctorbrzezowski@users.noreply.github.com>

* test(ui): verify stable image loading through transcript remounts

Use the supported deferred helper and replace obsolete late-growth expectations with decode, adjacency, and remount geometry proof.

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>

Co-authored-by: vyctorbrzezowski <51521767+vyctorbrzezowski@users.noreply.github.com>

* fix(ui): add subtle themed shimmer to image placeholders

Reuse the existing CSS skeleton animation and reduced-motion policy while preserving image geometry and cached virtual-scroll remounts.

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>

Co-authored-by: vyctorbrzezowski <51521767+vyctorbrzezowski@users.noreply.github.com>

---------

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Co-authored-by: vyctorbrzezowski <51521767+vyctorbrzezowski@users.noreply.github.com>
2026-09-13 23:19:15 -07:00
RoboClaw
a92585248e
fix: Control UI shows stale PR and publishing state (#147195)
Keep Control UI PR badges and publication progress aligned with scoped GitHub metadata and recorded Gateway outcomes. Separate status reads from publication, recover shared receipts after reconnect, and preserve explicit personal confirmation and unknown-outcome fences without another polling loop.

Retain unbound legacy terminal receipts as history without blocking account choices or inventing lifecycle bindings. Cover retained-state upgrades and complete the qualified-owner options test contract.

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>
2026-09-13 23:17:34 -07:00
Peter Steinberger
8c54118194
fix(ui): keep edited messages in their queued delivery order (#147923) 2026-09-13 23:05:17 -07:00
RoboClaw
796adfffb3
fix(ui): stop streamed updates from reopening task progress (#147802)
Keep page-owned reader intent authoritative for geometric end anchoring, automatic end commands, and typing follow. Preserve explicit Latest/manual returns and standalone transcript behavior. Cover resize-clamped readers with short and long live answers, both motion modes, and existing end-follow contracts.

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Co-authored-by: vyctorbrzezowski <51521767+vyctorbrzezowski@users.noreply.github.com>
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>
2026-09-13 22:55:17 -07:00
RoboClaw
62f2180091
fix(ui): hide redundant self avatars in filtered sessions (#147610)
* fix(ui): hide redundant self avatars in filtered sessions

Keep participant stacks and session state visible while omitting solo self ownership already identified by the active filter.

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>

* fix(ui): hide redundant self avatars in filtered sessions

Worked on by:
- @steipete

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
OpenClaw-Publication: 0bdd0e31-404a-4274-bcdf-61296de64652

* chore: preserve Android wrapper bytes after publication

Restore the exact previously tested tree; the publication snapshot normalized an unrelated Windows wrapper.

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>

* test(ui): reuse the settled owner-filter interaction

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>

---------

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
2026-09-13 22:48:40 -07:00
Peter Steinberger
e7f19d452f
fix(update): show status refresh feedback and earlier disk warnings (#147883)
Preserve the causal schema-preflight diagnostic instead of its generic npm
bypass footer. Check package disk space before registry and schema work and
retain low-space warnings in update history without introducing a hard stop.

Show pending, successful, failed, and disconnected status checks in the update
dialog. Only acknowledge refresh responses that the controller actually applies.
2026-09-13 22:43:10 -07:00
Jacqueline Henriksen
ad157baa20
fix(ui): prevent Control UI hangs on malformed progress content (#147528)
* fix(ui): prevent progress card regex stalls

* test(ui): prove adversarial progress rendering

* fix(ui): preserve progress raw tag semantics
2026-09-14 02:35:35 -03:00
Dallin Romney
8f42828053
fix(ui): keep session focus outline visible (#147520) 2026-09-13 22:32:20 -07:00
Peter Steinberger
e3d8d00783
fix: background requests delay opening chats (#147845)
* fix(ui): prioritize opening chats over background reads

* perf(ui): keep metadata refresh policy lazy
2026-09-13 22:07:33 -07:00
Peter Steinberger
1f6f0d42dc
feat: start remote sessions without a repository (#147773)
* feat: start remote sessions without a repository

Offer a fresh isolated workspace for cloud and paired-device sessions while preserving explicit and saved repository choices. Use a private empty backing repository per session through the existing managed-worktree lifecycle, retaining reclaim, snapshot restore, and cleanup without copying the agent workspace.

* fix: preserve workspace intent and independent snapshot cleanup

Retain legacy source selections before Git discovery updates availability, keep ordinary snapshot expiry independent of allocation contention, and update the complete source-selection browser flow. Keep request mapping and validation at their existing owners while satisfying import-cycle and export checks.

* fix: retain allocation and cleanup error causes

* test: expect normalized workspace source preferences
2026-09-13 22:06:12 -07:00
Peter Steinberger
9b3997201d
fix(ui): restore live updates when retrying chat history (#147865) 2026-09-13 21:52:10 -07:00
Peter Steinberger
1ea4fb7940
fix(ui): preserve text and image order in assistant replies (#147731)
* fix(ui): preserve text and image order in assistant replies

* fix(ui): keep recovered message preparation immutable

* fix(ui): preserve caption paragraphs and text direction around media

* fix(ui): preserve attachment-only actions and inline media interaction proofs
2026-09-13 21:51:07 -07:00
Vincent Koc
3de18f60bd
feat(gateway): bind requests to selected profiles (#143587)
* feat(gateway): bind requests to selected profiles

Punchcard-Session: amber-timber-workshop-bk

* test(gateway): verify profile-bound wire admission and replay

Punchcard-Session: amber-timber-workshop-bk

* fix(gateway): preserve idle presence during profile refresh

Keep unchanged profiles out of presence writes while retaining explicit refresh and recipient preparation. Complete profile-bound test fixtures and regenerate the dependent Workboard asset pointers.

Punchcard-Session: amber-timber-workshop-bk

* test(gateway): repair context and loading-state fixtures

Punchcard-Session: amber-timber-workshop-bk

* test(gateway): verify instance retirement before agent dispatch

Punchcard-Session: amber-timber-workshop-bk

* test(gateway): verify session revocation during accepted steering

Punchcard-Session: amber-timber-workshop-bk

* chore(gateway): refresh embedded protocol assets

* test(ui): await Inbox fixture preload

* test(transcripts): bind Discord lifecycle fixture generation

* test(gateway): drain task fixture notifications

* fix(protocol): exclude profile ID primitive from generated registry

* test(gateway): simplify subscription fixture state setup

* test(gateway): preserve authority refusal through terminal admission

* fix(gateway): retain live profile refresh after runtime extraction

* test(agents): cover redaction with fresh transcript admission

* refactor(gateway): inline release version checks

* test(gateway): observe async runtime lease disposal

* test(gateway): supply profile refresh callbacks in lifecycle fixtures

* test(agents): assert recorder admission callback availability

* test(gateway): model native profile fixture node subscribers

* test(desktop): retain bounded viewer close diagnostics

* test(ui): keep cloud history aligned with placement failure

* test(ui): brace the desktop close bound
2026-09-14 12:35:53 +08:00
openclaw-mantis[bot]
23ed4ec291
chore(ui): refresh control ui locales (#147850)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-14 04:30:00 +00:00
Peter Steinberger
0cede6c504
fix(ui): replace widget loading text with a shimmer (#147843) 2026-09-13 21:24:54 -07:00
Peter Steinberger
e88a88b152
fix(ui): retire prompts beside buffered assistant replies (#147836) 2026-09-13 21:17:17 -07:00
Peter Steinberger
5f1f691af2
fix(ui): keep automation fields focused during validation (#147841) 2026-09-13 21:16:53 -07:00
Peter Steinberger
5f357b7478
feat(ui): shrink diagnostics widget and graph all three metrics (#147840) 2026-09-13 21:13:24 -07:00
Peter Steinberger
62bcb04950
fix: avoid repeating running status on CLI task cards (#147832)
Remove the placeholder progress summary from new background exec tasks. The existing Running badge remains the status source, while genuine progress messages still render. Follow-up to #147758.
2026-09-13 21:07:09 -07:00
Peter Steinberger
cf56057e5f
fix: limit agent session selection to the requesting browser (#147647)
* fix: limit agent session selection to the requesting browser

Bind screen commands to the browser that requested each turn, preserving the target through queues, CLI tools, and signed worker execution. Report unavailable when that browser disconnects instead of broadcasting navigation to every Control UI.

* fix: keep requester routing contracts acyclic

Separate the requester target type from its Gateway client capture helper, preserve the original behavior in valid client fixtures, and document the intentional standalone-call compatibility change.

* fix: preserve steering when screen control is unavailable

* fix(ui): focus Reply composer after transcript rerenders

Resolve focus through the connected session transcript owner so message menus retain a valid focus target while streamed updates rerender the pane.
2026-09-13 20:42:16 -07:00
Peter Steinberger
0bb2acf4fe
test(ui): reuse deferred session list fixtures (#147643) 2026-09-13 20:37:30 -07:00
Peter Steinberger
9a84afd1f9
feat: show subagent status through claw motion and tooltips (#147753) 2026-09-13 20:31:59 -07:00
Peter Steinberger
b2c088b494
feat(ui): minimize System busyness into a live widget (#147760) 2026-09-13 20:23:08 -07:00
RoboClaw
c2f7bfbc24
fix(ui): render live drafts as unsent message bubbles (#147669)
* fix(ui): render live drafts as unsent message bubbles

Reuse sent peer-message geometry, sender tint, and avatar placement while keeping drafts literal and ephemeral. Restore the caret and per-person typing dots with an explicit unsent label.

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>

* fix(ui): render live drafts as unsent message bubbles

Worked on by:
- @steipete

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
OpenClaw-Publication: 9c277653-7b75-4e99-a156-205c961c52ac

* chore: preserve Android wrapper line endings

Undo the managed publisher normalization outside this PR scope; restore the exact reviewed candidate tree.

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>

* test(ui): construct typing fixtures with their session kind

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>

---------

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
2026-09-13 20:19:48 -07:00
Vyctor H. Brzezowski
1ba8d5e74f
fix(ui): center agent names under their sidebar avatars (#147597) 2026-09-14 00:18:32 -03:00
Dallin Romney
7af1c699ba
fix(ui): hide session avatars for a sole identity (#147654) 2026-09-13 20:15:07 -07:00
RoboClaw
4a722e0a60
improve(ui): make chat disclosures compact and borderless (#147482)
* improve(ui): make chat disclosures compact and borderless

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>

* improve(ui): make chat disclosures compact and borderless

Worked on by:
- @steipete

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
OpenClaw-Publication: 8bc84bc8-844d-4beb-9000-b8fb0a7f09c6

* chore: preserve Gradle wrapper line endings during publication

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>

---------

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
2026-09-13 20:02:54 -07:00
Vincent Koc
fa87d4c1d9
test(ui): isolate activity glyph decode cases (#147613) 2026-09-14 11:02:05 +08:00
openclaw-mantis[bot]
e35551424a
chore(ui): refresh control ui locales (#147578)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-14 02:51:41 +00:00
Dallin Romney
261eb0cd5f
fix(ui): stop duplicate commentary after replay eviction (#147600) 2026-09-13 19:41:10 -07:00
Peter Steinberger
543d847c2f
fix: archive sessions despite failed worker cleanup (#147651)
* fix: archive sessions despite failed worker cleanup

Restore immediate optimistic hiding and allow failed, unclaimed placements to archive while retaining their recovery state. Keep deletion and reconstruction guarded, and report a committed archive as successful when later worktree cleanup fails.

* test: scope archive retry to the sidebar menu

The chat header and sidebar can both expose Archive session while the header menu is closing. Select the intended sidebar control without changing assertions, adding waits, or weakening the archive rejection and retry proof.
2026-09-13 19:21:46 -07:00
Peter Steinberger
5685a8f3ea
fix(ui): keep consumed prompts from reappearing (#147670)
* fix(ui): keep consumed prompts from reappearing

* test(ui): isolate prompt history regression
2026-09-13 19:07:23 -07:00
Peter Steinberger
c809640db1
fix(ui): load Home and System busyness inside their panels (#147574)
* fix(ui): load Home and System busyness inside their panels

* chore(ui): record approved immediate-panel startup budgets

* fix(ui): retain System busyness through automatic chunk recovery

* fix(ui): keep automatic diagnostic restores out of Settings

* chore(ui): refresh approved startup baseline against current main
2026-09-13 18:57:50 -07:00
Peter Steinberger
1cc13c10a7
fix(webchat): render relative media paths as attachments (#147646) 2026-09-13 18:41:07 -07:00
Peter Steinberger
4750ff8d2b
test(ui): share channel wizard deferred fixtures (#147564) 2026-09-13 18:34:20 -07:00
Peter Steinberger
d9a07beefa
fix(ui-e2e): wait for the session progress animation before seeking (#147623) 2026-09-13 18:32:14 -07:00
RoboClaw
297972c440
fix: allow reordering plugin sidebar pages (#147569)
Make plugin sidebar pages reorderable alongside built-in pages through the existing saved order and drag-and-drop owner. Preserve unavailable plugin positions and existing optional/default visibility behavior. No SQLite, schema, or preference-store changes.

Includes browser drag/reload coverage and native plugin activation coverage.

Session: https://team.openclaw.ai/chat/roboclaw/dashboard/680735f5-0060-4384-b1cc-97d7e4325abb

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
2026-09-13 18:18:03 -07:00
RoboClaw
6033079d60
fix(ui): brighten suggested-task buttons and open menu below (#147575)
* fix(ui): brighten suggested-task buttons and open menu below

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>

* fix(ui): preserve suggested-task contrast for bright accents

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>

---------

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
2026-09-13 18:17:01 -07:00
Dallin Romney
167653ddfa
fix(ui): chat stays busy after a missed terminal event (#145798)
* fix(ui): recover runs from durable terminal history

* refactor(ui): simplify terminal history evidence
2026-09-13 18:07:56 -07:00
Peter Steinberger
7081986dbd
fix: prevent cloud-session archives from stalling and reappearing (#147552)
* fix: prevent cloud-session archives from stalling

Allow prepared reclaim ahead of maintenance waiting for unrelated dispatches while preserving admitted work, provider settlement, and later-operation ordering. Keep archive rows visible until confirmation and retain exact pending ownership across retries and reconnects.

* style: name the pending archive ownership token

* test: align archive fixtures with confirmed completion
2026-09-13 17:39:54 -07:00
RoboClaw
fbeddac954
fix(ui): enlarge avatars in assignment menus (#147567)
Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
2026-09-13 17:29:11 -07:00
RoboClaw
1a48d3401a
fix(ui): tighten spacing above the chat composer (#147474)
* fix(ui): tighten spacing above the chat composer

Remove redundant padding below the changes and pull-request row; the composer keeps its existing spacing. Extend rendered desktop/mobile coverage for the compact gap.

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>

* fix(ui): tighten spacing above the chat composer

Worked on by:
- @steipete

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
OpenClaw-Publication: 06af57bb-fadd-4cd2-be47-7e86da3c5baf

* chore: preserve Android wrapper line endings

Restore bytes changed by workspace publication; keep this PR limited to composer spacing.

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>

* fix(ui): preserve spacing between composer-adjacent cards

Keep the PR row compact above the composer while preserving separation from suggestions, swarm cards, and visible plugin contributions. Settle finite animations before layout measurements.

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>

---------

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
2026-09-13 17:21:33 -07:00
Ben.Li
1dc38c8316
fix(ui): hide stale git update prompts after refresh (#142959)
The Control UI no longer keeps showing a stale Git update prompt after a refresh; the prompt follows the recorded comparison status. Current and ahead comparisons clear cached Git availability across the sidebar, Inbox, and update confirmation. Behind/diverged comparisons use the refreshed distance, while unavailable comparisons retain the announced fallback and active updates/campaigns remain visible.

Thanks @ly85206559 (#142959).

Proof: the current/ahead regressions fail with the production fix reverted and pass with it restored; 100 focused tests, 14 UI E2E tests, and changed-file checks passed. Inspected synthetic before/after screenshots in the PR demonstrate the stale Inbox card disappearing after refresh.

CI run 34789678811 initially hit an unrelated mainline animation-seek race in session-progress-motion.e2e.test.ts:130, introduced by 8a294aebc6. The maintainer-authorized single failed-job rerun passed, and attempt 2 plus the required CI gate completed successfully on the exact refresh head.

The lead review applies to the identical tree across the empty freshness commit. ClawSweeper also completed review of the refreshed head with no actionable findings. No re-review request was posted.
2026-09-13 17:02:11 -07:00
RoboClaw
95790c61c0
improve(ui): keep images closer to prompt bubbles (#147448)
Use an 8px boundary between a user image gallery and its following prompt surface, including avatar-wrapped prompts. Preserve paragraph spacing, assistant spacing, image geometry, and the local-user/right versus peer/left orientation.

Co-authored-by: vyctorbrzezowski <51521767+vyctorbrzezowski@users.noreply.github.com>
Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
2026-09-13 16:56:30 -07:00
Vincent Koc
e4ebb37723
fix(ui): stop retaining removed session progress widgets (#147471) 2026-09-14 07:47:57 +08:00
Peter Steinberger
d7f01d3e16
feat: show rolling session recaps in Activity (#147441)
* feat: show rolling session recaps in Activity

* fix: respect lifecycle and viewer permissions for recaps
2026-09-13 16:40:49 -07:00
Donnie Fiander
9023c6624f
fix(ui): keep device pairing content inside the dialog (#147427)
* fix(ui): keep Pair a device Node host command inside the dialog

Long `openclaw node run --pair` setup codes inflated `.login-gate__command`
and shoved the centered pair-setup body off the right edge. Match the
Continue-in-terminal / Connect-machine shrink-and-wrap rules so access
choices and the command stay readable.

Closes #147401

* fix(ui): keep device pairing content inside the dialog

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-09-14 07:39:30 +08:00