Commit Graph

3072 Commits

Author SHA1 Message Date
Peter Steinberger
b2b87e956e fix(macos): center dashboard traffic lights with the hosted titlebar buttons (#106099)
* fix(macos): center dashboard traffic lights with the hosted titlebar buttons

Give the dashboard window an empty unified toolbar so its titlebar grows
to 52pt, vertically centering the macOS traffic lights against the row of
web-hosted titlebar buttons (sidebar toggle, back/forward) instead of
hugging the top edge. Bump the injected --openclaw-native-titlebar-height
to match, and nudge the hosted controls' left offset from 78px to 92px so
the traffic-light cluster and the first web button read as separate groups.

The toolbar exists only to size the titlebar, so View > Hide Toolbar (and
the corresponding shortcut) are refused; hiding it would collapse the
titlebar while the web inset stays pinned at 52pt, resurrecting the
misalignment. Smoke tests cover toolbar presence/style, hide refusal, and
the exact injected height.

* chore(i18n): resync native inventory line metadata
2026-07-13 00:17:13 -07:00
Peter Steinberger
b5273e78d6 fix(ui): restore app-sidebar content with IconName type import
The previous commit accidentally truncated app-sidebar.ts to an empty
file while fixing the missing IconName import from #105850. This
restores the full component with the corrected icons import.
2026-07-13 00:15:43 -07:00
Peter Steinberger
08843c74de fix(ui): restore IconName type import in app-sidebar
#105850 added AGENT_MENU_LINKS typed with IconName without importing
the type, breaking check-prod-types/check-test-types on main.
2026-07-13 00:14:34 -07:00
Peter Steinberger
3c30634de4 fix(ui): order model-dependent chat settings (#106095)
* fix(ui): order model-dependent chat settings

* fix(ui): serialize picker model transitions

* chore: remove release-owned changelog edit
2026-07-13 00:08:15 -07:00
Peter Steinberger
cb1b5779ea feat(ui): docs, help, Discord, and changelog links in the agent chip menu (#105850)
* feat(ui): docs, help, Discord, and changelog links in the agent chip menu

* chore(i18n): normalize locale bundle metadata after rebase

* refactor(ui): move the agent menu links into the nav-menus module for the LOC ratchet

* Revert "refactor(ui): move the agent menu links into the nav-menus module for the LOC ratchet"

This reverts commit 0e4d72f4c6.
2026-07-13 00:05:42 -07:00
Peter Steinberger
adf6b08ab4 refactor: consolidate duration parsing and formatting (#105988)
* refactor: consolidate duration handling

* docs: leave release notes to release workflow

* fix: preserve build timing precision

* ci: align plugin sdk surface budgets
2026-07-12 23:38:22 -07:00
Peter Steinberger
ab8cbfd73c fix(ui): allow manual folders on exec-only nodes (#106012)
* fix(ui): allow manual folders on exec-only nodes

* test(ui): type exec-node request params

* style(ui): format exec-node request assertion
2026-07-12 23:23:06 -07:00
Peter Steinberger
16fa19cd72 improve(control-ui): compress and cache bundled assets (#105890)
* perf(control-ui): compress bundled assets

* chore(control-ui): remove release-owned changelog edit

* fix(control-ui): release assets before compression

* refactor(control-ui): split static response helpers

* perf(control-ui): precompress bundled assets

* refactor(control-ui): keep encoding internals private

* chore(control-ui): refresh LOC baseline
2026-07-12 23:13:04 -07:00
Peter Steinberger
fcb45b4400 feat(ui): render streaming chat markdown live instead of plain text (#106062)
Streaming assistant replies in the Control UI now render markdown live: the in-flight tail is repaired with remend (zero-dep, Apache-2.0, extracted from Vercel's Streamdown) before the existing markdown-it + DOMPurify pipeline, and open code fences stream as live-highlighted code blocks. Deletes the plain-text streaming tail path (toStreamingPlainTextHtml) and extracts an uncached render core so tail deltas stop churning the markdown LRU cache. Closes #106053
2026-07-12 23:11:45 -07:00
Peter Steinberger
03d4b05593 style(ui): format tool card tests 2026-07-13 02:05:04 -04:00
Peter Steinberger
bebcf52d23 ci: isolate Control UI tool card tests 2026-07-13 02:00:58 -04:00
Jason (Json)
30cbc1118a fix(ui): keep restored prompts visible during runs (#106001) 2026-07-12 23:55:53 -06:00
Peter Steinberger
e4a17ee160 refactor(ui): split Workboard controller modules (#105995)
* refactor(ui): split Workboard controller modules

* chore(ui): track moved Workboard export

* chore(ui): avoid unrelated LOC baseline validation

* ci: refresh TypeScript LOC baseline

* ci: drop stale transcript export baseline
2026-07-12 22:55:07 -07:00
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