Commit Graph

3179 Commits

Author SHA1 Message Date
Peter Steinberger
bd7f3cffd3 fix(ci): stabilize QA and UI validation (#106061) 2026-07-12 22:34:38 -07:00
Peter Steinberger
2ecd485cd5 refactor(ui): deduplicate layout, clipboard, and polling scaffolds (#106003)
* refactor(ui): share dock panel layout

* refactor(ui): centralize clipboard writes

* refactor(ui): centralize polling lifecycle

* refactor(ui): reuse shared byte formatter

* chore(ci): refresh UI LOC ratchet

* fix(ui): keep dock layout type internal
2026-07-12 22:05:09 -07:00
Peter Steinberger
3bac8923e6 ci: clear unused export drift 2026-07-13 00:12:36 -04:00
Peter Steinberger
e43bd3d57b refactor(ui): localize lobster pet internals (#105955)
* refactor(ui): localize lobster pet internals

* chore(deadcode): reconcile current UI export drift
2026-07-12 21:08:24 -07:00
Peter Steinberger
156f4c89ed refactor(ui): fold sidebar More section into a popup menu (#105906)
The sidebar's expandable "MORE" section (uppercase header, chevron, persisted
sidebarMoreExpanded pref, dedicated "Edit pinned items" row) collapses into a
single More nav row that opens a transient popup menu with the unpinned
routes, dynamic plugin tabs, and the pin editor entry. Menu rows are real
anchors, so Cmd/middle-click keeps native link behavior; the More row carries
the active highlight when the current route lives inside the menu. The
sessions list gets the reclaimed vertical space, and one persisted setting is
gone (stale keys are ignored on load). The nav rows and menus move to
app-sidebar-nav-menus.ts to keep app-sidebar.ts under the TS LOC ratchet.

Docs: docs/web/control-ui.md sidebar-navigation section updated.

Fixes #105905
2026-07-12 20:33:51 -07:00
Peter Steinberger
b43e832fcc feat(ui): host the macOS dashboard titlebar buttons in the web UI (#105902)
* feat(ui): host the macOS dashboard titlebar buttons in the web UI

* style(ui): oxfmt macos titlebar controls

* fix(ui): bracket-access native web chrome globals for no-underscore-dangle

* docs(macos): note intentional no-fallback contract for non-web-chrome pages

* chore(ui): drop unused NativeHistoryStateEvent export

* chore(i18n): resync native inventory line metadata

* chore(i18n): translate nav.back/nav.forward across locales
2026-07-12 20:29:58 -07:00
Peter Steinberger
7761022048 fix(ui): explain skipped cron runs (#105858) 2026-07-12 20:05:11 -07:00
morluto
5f46433d62 fix(ui): bound stale-chunk recovery probes (#105795) 2026-07-12 19:59:12 -07:00
Peter Steinberger
e119d050e5 feat(ui): make the sidebar agent chip body the menu trigger (#105861)
* feat(ui): make the sidebar agent chip body the menu trigger

The footer chip's big name/avatar area now opens the agent menu directly
and the chevron toggle button is removed. New-session plus stays as the
only trailing action; the unread dot moves onto the chip body.

* chore(ui): prune removed agentChip.openConversation key from locale bundles

* fix(ui): keep the agent name in the chip menu trigger accessible name
2026-07-12 19:57:31 -07:00
Peter Steinberger
34bbd3820b test(ui): stabilize chat hover browser timeout 2026-07-12 22:44:54 -04:00
Peter Steinberger
a9761ab5af test(ui): align composer footer inset assertions with centered chip padding
PR #105866 split the footer block inset evenly (calc(inset/2) top/bottom)
but left chat-responsive.browser.test.ts asserting the full inset, breaking
checks-ui on main.
2026-07-12 19:35:06 -07:00
Peter Steinberger
2f756c70a6 fix(ui): center composer footer controls between divider and card edge (#105866)
* fix(ui): center composer footer controls between divider and card edge

* docs: add PR number to composer footer changelog entry
2026-07-12 19:13:17 -07:00
Peter Steinberger
6eae468d45 feat(ui): scope the sidebar sessions list to the chip-selected agent (#105832)
* feat(ui): scope the sidebar sessions list to the selected agent

* fix(ui): render the target agent's cached sessions during a chip switch

* fix(ui): key the sessions list off the chip-selected agent
2026-07-12 18:43:11 -07:00
Peter Steinberger
a948168690 fix(ui): restore logs auto-follow when re-enabled (#105809) 2026-07-12 18:13:09 -07:00
Peter Steinberger
462edb3373 fix(ui): scope usage insights to active filters (#105792) 2026-07-12 17:46:54 -07:00
Peter Steinberger
491e1f6f6d feat(ui): agent-centric sidebar footer chip with utility menu (#105777)
* feat(ui): agent-centric sidebar footer chip with utility menu

* feat(ui): agent chip menu anchoring, link styling, locale sync

* fix(ui): keep agent chip presence announcement out of the aria-hidden avatar

* fix(ui): resolve agent chip resume sessions against the target agent, not the route agent

* fix(ui): tie unprefixed session keys to the system default agent in chip resume

* style(ui): oxfmt layout.css
2026-07-12 17:25:41 -07:00
Peter Steinberger
0ba1e5ca2e fix(ui): honor session delete no-op results (#105778) 2026-07-12 17:17:05 -07:00
Vincent Koc
c9012f2037 refactor(ui): trim private API type exports (#105772) 2026-07-13 08:11:24 +08:00
Peter Steinberger
1c33c52f1b refactor(mcp): trim private app exports (#105771) 2026-07-12 17:07:58 -07:00
Peter Steinberger
1ffccaab94 fix(ui): omit blank cron delivery account ids (#105762) 2026-07-12 16:56:54 -07:00
Peter Steinberger
a6e87f7caf fix(ui): send idle stop aliases as normal messages (#105742)
* fix(ui): send idle stop aliases as messages

* chore: leave release notes to release automation
2026-07-12 16:36:57 -07:00
Jason (Json)
1663c8801d fix(ui): preserve MCP App previews across reloads (#105728)
* fix(mcp): harden app preview lifecycle

* fix(ui): defer MCP app initialization payload

* test(mcp): align current policy expectations

* fix(ui): preserve MCP app previews

* fix(mcp): reject disabled app restoration

* fix(mcp): preserve reconstructed app state

* fix(mcp): bind reconstructable app data

* fix(ui): deduplicate MCP app preview copies

* style(ui): format MCP app preview test

* fix(mcp): satisfy metadata access lint

* style(mcp): format metadata access
2026-07-12 17:30:34 -06:00
Peter Steinberger
f494f1579a fix(ui): align session PR rows with the composer width (#105604) 2026-07-12 16:03:05 -07:00
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