Commit Graph

3036 Commits

Author SHA1 Message Date
Peter Steinberger
c9ec723546 fix(ui): prevent New Session input loss during creation (#105702)
* fix(ui): lock pending new-session drafts

* chore: defer changelog to release generation
2026-07-12 15:28:39 -07:00
Peter Steinberger
95f142bf0c fix(ui): isolate retained test modules (#105711)
* fix(ui): isolate retained test elements

* test(ui): share terminal mock across retained modules

* refactor(ui): trim private search exports

* test(ui): type retained terminal mock

* test(ui): narrow terminal mock contract

* test(ui): isolate approval page modules

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-12 15:10:15 -07:00
Peter Steinberger
238c7973ad feat(chat): native session scroll-back with offset paging and import-aware history (#105688)
* feat(chat): native session scroll-back with import-aware history paging

* fix(chat): page imported session history

* fix(chat): restore terminal import snapshots

* fix(chat): gate cli import resolver on ignore flag to stop history recursion

* fix(chat): correct scroll-back types and drop orphaned recent-messages reader
2026-07-12 13:58:40 -07:00
Shakker
b640718204 fix: segment localized settings queries (#104675) 2026-07-12 21:46:50 +01:00
Shakker
89ccb5a90d fix: complete recursive settings search 2026-07-12 21:46:50 +01:00
Shakker
7d2694d7fc fix: contain settings config load failures 2026-07-12 21:46:50 +01:00
Shakker
378862e575 style: format settings search changes 2026-07-12 21:46:50 +01:00
Shakker
7d8b24a55f test: cover precise settings deep links 2026-07-12 21:46:50 +01:00
Shakker
8754e43dcc fix: guard settings search config loading 2026-07-12 21:46:50 +01:00
Shakker
327ec31d23 fix: search unconfigured array settings 2026-07-12 21:46:50 +01:00
Shakker
c14582f87d fix: tolerate malformed settings deep links 2026-07-12 21:46:50 +01:00
Shakker
763ea3ea6a fix: localize settings search blocks 2026-07-12 21:46:50 +01:00
Shakker
1b3ed0f670 refactor: separate settings navigation targets 2026-07-12 21:46:50 +01:00
Shakker
94f2b63d9f fix: preserve precise settings search results 2026-07-12 21:46:50 +01:00
vyctorbrzezowski
d5102107dc fix(ui): satisfy config section return lint 2026-07-12 21:46:50 +01:00
vyctorbrzezowski
f69219f768 feat(ui): search settings blocks 2026-07-12 21:46:50 +01:00
Peter Steinberger
f15a5e566b fix(ui): serialize Skills operations (#105671)
* refactor(ui): clarify skill edit value naming

* refactor(ui): clarify skill credential draft naming

* fix(ui): serialize Skills operations
2026-07-12 13:13:17 -07:00
Vincent Koc
1d0cc7e09c refactor(ui): trim private helper exports (#105663) 2026-07-12 22:09:24 +02:00
Peter Steinberger
29a7654b29 feat(ui): search session transcripts (#105635)
* feat(ui): add session transcript search

* chore(ui): keep release notes in pull request

* chore(ui): sync session search locales

* fix(ui): localize session transcript search

* chore(ui): refresh merged locale metadata
2026-07-12 12:49:06 -07:00
Peter Steinberger
a1c4ef189b fix(ui): explain grayed-out rows in the new-session folder picker (#105605)
* fix(ui): explain grayed-out rows in the new-session folder picker

Disabled device rows now carry a reason tooltip (device offline vs. no
folder-browsing support), the admin-gated folder trigger says it needs an
admin connection, and dimmed dot-directories are labeled as hidden folders.

* chore(i18n): sync locale bundles for new-session picker tooltips
2026-07-12 12:32:05 -07:00
Peter Steinberger
bf44810139 refactor(deadcode): privatize banner and menu internals (#105628) 2026-07-12 12:22:32 -07:00
Peter Steinberger
31b9f21a1a fix(ui): lock worktree create draft during save (#105626) 2026-07-12 12:07:54 -07:00
Peter Steinberger
36e81bf45e fix(ui): queued steers appear only above composer (#105603)
* fix(ui): keep queued steers out of transcript

* chore: leave release notes to release flow
2026-07-12 11:42:08 -07:00
Peter Steinberger
0b0ca42135 fix(ui): sidebar sort, group, and customize menus render behind the resize divider (#105598)
The nav column is a stacking context (z-index 10) painted below the sidebar
resizer divider (z-index 20), so fixed-position menus rendered inside the nav
could never escape it. Promote the three inline app-sidebar menus into the
popover top layer through a shared openclaw-menu-surface host, and fold the
existing session-menu and native-link-menu promotion copies into the same
promoteToPopoverTopLayer helper.
2026-07-12 11:41:12 -07:00
Peter Steinberger
5bb35b47da improve(ui): make the working claw punch instead of fade while the agent works (#105597)
While the agent works with nothing streaming, the web chat's reading
indicator now skips the assistant avatar and drops the opacity fade.
The claw shadowboxes - jab, jab, cross - with the jaw snapping shut on
impacts, a pow star on the cross, and a seeded per-run fighting style
(orthodox, mirrored southpaw, fast flurry, rare haymaker). Reduced
motion disables all of it; direct threads and narrow layouts that hide
avatars keep their flat left edge.
2026-07-12 11:37:27 -07:00
Peter Steinberger
17a464b7ee fix(ui): lock workboard draft during save (#105600) 2026-07-12 11:36:33 -07:00
Alix-007
41a1fd696b fix(realtime): add timeout to WebRTC offer requests (#104662)
* fix(realtime): add timeout to WebRTC offer requests

* test(realtime): reject offer aborts with errors

* fix(ui): abort pending realtime offer on stop

* test(ui): normalize realtime abort rejection

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-12 11:34:37 -07:00
Peter Steinberger
5b7b2d0fe0 feat(ui): collapse completed turn work behind a "Worked for X" rollup (#105012)
* feat(ui): collapse completed turn work behind a worked-for rollup

* test(ui): add a completed work turn to the mock chat history

* fix(ui): keep search matches visible instead of folding them into the work rollup

* fix(ui): keep attachment-only final replies outside the work rollup

* chore(ui): translate workRun locale keys and cover renderWorkGroupSummary mock

* fix(ui): satisfy strict index access in the work rollup pass
2026-07-12 19:01:45 +01:00
Peter Steinberger
d3fdd214c2 fix(ui): prevent configuration edits from disappearing during operations (#105555)
* fix(ui): lock configuration during operations

* chore: defer release note to release workflow
2026-07-12 18:50:19 +01:00
Peter Steinberger
73ca64fca6 feat(ui): add a Create PR branch row with rate-limit staleness to session PR chips (#105116)
* feat(ui): add a Create PR branch row with rate-limit staleness to session PR chips

* fix(ui): gate the Create PR row on a pushed branch

* improve(ui): gate the Create PR row on comparable pushed commits and count untracked work

* fix(ui): satisfy spread lint and align branch-row test fixtures

* chore(ui): translate Create PR branch row copy

* chore(ui): drop zh-CN retranslation churn from the aborted backfill

* fix(ui): guard branch diff stats against checkout diff drivers and fail closed without a default branch
2026-07-12 18:23:30 +01:00
Peter Steinberger
f5474fcea3 test(ui): stabilize read tool card fixture (#105508)
* test(ui): stabilize read tool card fixture

* docs(agents): wait for CI before PR prepare
2026-07-12 17:16:31 +01:00
Vincent Koc
0eb9298f3a refactor(ui): simplify usage query filters (#105407) 2026-07-12 16:21:31 +02:00
Peter Steinberger
b337047509 fix(ui): prevent cron edits from being lost during save (#105421)
* fix(ui): lock cron editor during save

* fix(ui): lock cron editor during save
2026-07-12 15:17:41 +01:00
Peter Steinberger
1318cf1fde fix(ui): serialize worktree page operations (#105384) 2026-07-12 14:33:03 +01:00
Peter Steinberger
1b313dc4d4 chore(tooling): enforce indexed access in core tests (#105375)
* test(tooling): enforce indexed access in core tests

* test(tui): constrain theme environment overrides

* test(doctor): enforce indexed access in migration fixtures
2026-07-12 14:29:52 +01:00
Peter Steinberger
aa840f0f5c fix(ui): serialize agent file tab selection (#105366) 2026-07-12 13:46:35 +01:00
Peter Steinberger
35b527c5bb fix(ui): preserve agent file edits during save (#105359)
* fix(ui): preserve agent file edits during save

* chore: defer agent file note to release
2026-07-12 13:27:46 +01:00
Peter Steinberger
879b66ab46 fix(ui): preserve manually entered worktree base (#105351) 2026-07-12 12:59:47 +01:00
Peter Steinberger
83dfb8e78f fix(ui): clear stale new-session worktree base (#105331) 2026-07-12 12:40:39 +01:00
Vyctor H. Brzezowski
cfe88cfd40 improve(ui): highlight chat pane during file drag (#105330)
* feat(ui): highlight chat file drop target

* style(ui): dim chat content during file drag

* test(ui): deduplicate chat drag events
2026-07-12 08:39:14 -03:00
Peter Steinberger
6bf84e0eb4 fix(ui): preserve current worktree branches (#105313) 2026-07-12 12:10:52 +01:00
Peter Steinberger
f94a359338 improve(ui): fold the New session target controls into click menus (#105265)
* improve(ui): fold the new-session targets into click menus

The /new target controls become Cursor-style trigger menus instead of an
inline control row: a folder trigger opens the directory browser as a
floating panel (with editable path in its head for manual entry), and a
where trigger opens one menu holding Gateway/node selection plus the
worktree toggle with labeled base-branch/name fields; the agent picker
becomes a menu when several agents exist. Triggers show live labels
(folder basename, node name, a branch badge when a worktree is on), so
the row stays one quiet line even on phones. Menus reuse the shared
session-menu item styles and the chat composer's details/summary
dismissal contract (outside pointerdown, Escape restores trigger focus).
Node-bound drafts no longer show an inert worktree toggle; the item
disappears because managed worktrees are Gateway-only.

* fix(ui): harden the new-session trigger menus

Review fixes: the folder trigger no longer shows the Gateway workspace
basename for node sessions (an empty node folder means that node's
default directory); sibling menus now close on the details toggle so
keyboard-opened menus stay mutually exclusive; and phone menus anchor to
the trigger row full-width so a wide browser panel under a non-leftmost
trigger cannot overflow the viewport.

* fix(ui): keep filesystem roots visible in the folder trigger

folderDisplayName falls back to the raw path so picking '/' (or a drive
root) labels the trigger instead of leaving it blank.

* fix(ui): give the new-session menus the native-select keyboard contract

Opening a menu moves focus to its first item, ArrowUp/Down wrap through
the items (browser rows included), and Home/End jump to the edges,
restoring what the replaced native selects provided. Re-picking the
checked agent no longer resets the draft (the native select never fired
change for the same option).

* fix(ui): keep native key behavior in menu text fields

Menu arrow/Home/End navigation now ignores events from text inputs so
the browser path, base-branch (datalist), and worktree-name fields keep
their native caret and picker behavior.

* fix(ui): let typed paths apply without a directory listing

Admins on hosts without a working fs.listDir keep manual folder entry:
the browser head input tracks a draft path and Use this folder applies a
typed absolute path even when listing fails; shapeless fs.listDir
payloads render as an empty directory instead of crashing the render.
The folder menu also initializes browser state before the focus hook
captures updateComplete, so keyboard-opened menus focus their first row
as advertised.

* fix(ui): apply exactly the shown browser path

Use this folder now applies the head input's absolute path only; the
draft syncs to every listed directory, so browsing is unchanged while an
edited path can never lose to a stale listing.

* fix(ui): let the browser express host-default directories

Review fixes: a cleared path input now applies '' — the host's default
directory (workspace on the Gateway, home on a node) — restoring the
state the replaced clearable folder textbox could express, and directory
results no longer overwrite a path the user typed while the listing was
in flight. E2E covers clearing back to the node default.

* fix(ui): apply the requested directory during browser navigation

loadBrowser assigns the head input the destination it is fetching, so a
mid-flight Use this folder applies where the user is heading instead of
the directory they just left.
2026-07-12 12:09:53 +01:00
Peter Steinberger
04e8aeb784 fix(ui): default worktrees to current branch (#105304) 2026-07-12 11:54:15 +01:00
Vyctor H. Brzezowski
2c5715238d fix(ui): turn large pasted text into compact composer attachments (#100929)
* fix(ui): compact large pasted text in composer

* fix(ui): turn large pasted text into compact composer attachments

* fix(ui): turn large pasted text into compact composer attachments

* Fix large paste composer CI

* Use translated restore label

* Fix large paste review findings

* Mark generated paste attachments by identity

---------

Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
2026-07-12 07:48:24 -03:00
Peter Steinberger
75f0960b71 fix(ui): recover worktree creation after reconnect (#105285) 2026-07-12 11:36:54 +01:00
Peter Steinberger
c5208f9dfe feat(tooling): enforce indexed access checks in UI tests (#105283) 2026-07-12 11:35:00 +01:00
Peter Steinberger
dba78584ff fix(ui): preserve rejected first message when session send fails (#105261)
* fix(ui): preserve rejected first session message

* chore: leave changelog to release closeout

* fix(protocol): regenerate session create result
2026-07-12 11:09:38 +01:00
Peter Steinberger
842f8f3ee9 feat(ui): auto-load older external-session transcript on scroll (#105209)
* feat(ui): auto-load older catalog transcript on scroll with a stable viewport

* fix(ui): surface the load-older fallback when auto-load is blocked on a short thread

* fix(ui): clamp oversized aggregated tool output in catalog transcripts

* fix(ui): stop catalog auto-pagination when an older read makes no progress

* fix(ui): continue catalog paging through advancing empty pages; exhaust only on a stalled cursor

* fix(ui): detect catalog cursor cycles to bound auto-pagination
2026-07-12 10:52:00 +01:00
Peter Steinberger
cfe8019772 improve(ui): redesign the automation editor into prompt, general, schedule, and delivery cards (#105254)
* improve(ui): redesign the automation editor into prompt, general, schedule, and delivery cards

* fix(ui): calm last-run glyphs, saved next-run in header, prompt focus ring

* chore(ui): sync locale bundles for editor redesign keys

* test(ui): cover one-shot schedule summary formatting
2026-07-12 10:47:38 +01:00
Peter Steinberger
a8b104c4e3 feat(mac): swap dashboard titlebar buttons with sidebar state (#105175)
* feat(mac): swap dashboard titlebar buttons with sidebar state

The Control UI reports sidebar collapsed/width over a new openclawNav
WKScriptMessage; the titlebar accessory shows toggle+back/forward
right-aligned to the sidebar edge while expanded, and
toggle+search+new-session while collapsed. Search opens the command
palette and + opens the new-session surface via openclaw:native-*
events. Older gateway bundles that never report keep the shipped
toggle/back/forward layout.

Refs #105129

* docs: describe state-dependent mac titlebar buttons
2026-07-12 10:13:36 +01:00