Commit Graph

2641 Commits

Author SHA1 Message Date
Vincent Koc
3d64efbd3d test(ui): stabilize Control UI suite routing
Keep moved Control UI browser layout tests routed in both UI Vitest configs and stabilize chat suite-order assertions. Verified with Testbox UI proof and changed gate; final PR CI remains the merge gate.
2026-07-04 16:38:36 -07:00
github-actions[bot]
1c9e998d98 chore(ui): refresh control ui locales 2026-07-04 23:07:17 +00:00
Peter Steinberger
dd6bc2ec32 fix(ui): repair router refactor regressions (#100106) 2026-07-04 19:00:54 -04:00
Peter Steinberger
f5d446e483 chore(ui): translate terminal.detached across locales 2026-07-04 15:58:18 -07:00
Peter Steinberger
619fee1b4f fix(control-ui): never close live sessions from bulk teardown; reattach owns recovery 2026-07-04 15:58:18 -07:00
Peter Steinberger
2b89a9b14d docs(control-ui): document why teardown close RPCs cannot kill reattachable sessions 2026-07-04 15:58:18 -07:00
Peter Steinberger
ad6d55159a fix(control-ui): keep the terminal open preference across disconnects 2026-07-04 15:58:18 -07:00
Peter Steinberger
b33f09b40d feat(control-ui): reattach terminal sessions after reload/reconnect with replay 2026-07-04 15:58:18 -07:00
Shakker
65e12328aa feat: refactor the Control UI architecture
Refactor the Control UI around route-owned page lifecycle and state while preserving existing behavior and design.

Prepared head SHA: bd51b6fa76
Co-authored-by: Shakker <165377636+shakkernerd@users.noreply.github.com>
Reviewed-by: @shakkernerd
2026-07-04 23:19:38 +01:00
Peter Steinberger
7e8ea61b08 fix(gateway): harden embedded terminal policy (#100081)
* fix(gateway): harden operator terminal policy

* test(gateway): complete terminal context coverage

* test(gateway): narrow terminal policy mock

* test(gateway): satisfy CSP header lint

* docs: refresh terminal docs map

* test: route terminal temp helper importer
2026-07-04 16:34:07 -04:00
Peter Steinberger
fb8f62d8e4 fix(ui): localize mobile pairing in Hindi and Russian (#100040)
* fix(ui): localize mobile pairing fallbacks

* test(ui): typecheck pairing localization guard

* test(ui): typecheck pairing localization guard

* test(ui): typecheck pairing localization guard

* test(ui): typecheck pairing localization guard

* test(ui): typecheck pairing localization guard
2026-07-04 15:30:48 -04:00
Peter Steinberger
614e87cce1 chore: update dependencies (#100027) 2026-07-04 14:56:50 -04:00
github-actions[bot]
5304d006e5 chore(ui): refresh control ui locales 2026-07-04 18:38:46 +00:00
Peter Steinberger
6df0fb818d feat: add session thread management (#98510)
* feat: add session thread management

Squash of codex/thread-management (025aefc3ad1) onto origin/main:
pin/archive/rename sessions via sessions.patch, archived-aware
sessions.list, lifecycle fencing, read-only archived chat, SDK +
Swift protocol support, Control UI session management.

* refactor(ui): minimal session rows with hover-revealed management

Chat picker and sidebar recents share session-row primitives: single-line
rows, relative timestamps, rename/archive/pin revealed on hover or focus,
accent pin badge for pinned rows, and an active-run spinner in the trail
slot. Sidebar floats pinned sessions above recency via the shared
comparator and gains archive/pin actions through the unified sessions-view
patch fallback. Archive eligibility is one shared policy
(canArchiveSessionRow); the sidebar/picker active-run tooltip now uses the
real sessionsView.activeRun locale key.

* fix: align session admission with mailbox-era main

Integration fixes after rebasing onto current main: sessions_list mailbox
test expectations learn the archived/pinned row fields and archived:false
list param; gateway agent admission treats a session as deleted only when
both the requested and canonical alias sets miss it (legacy bare-main
stores and exec-approval followups read under different spellings); cron
persist tests keep a consistent store across claim-guarded persist calls;
the ACP abort hook test asserts abort propagation instead of signal
identity; drop dead lifecycle writes flagged by no-useless-assignment and
fix the promise-executor return in the codex compact test.

* fix(qa): align UI e2e and shard fixtures with redesigned session rows

Sidebar session rows are wrapper divs with an inner link now: update the
navigation browser tests and chat-flow Playwright selectors. Seed a real
per-test session store for the auto-fallback admission guard instead of
depending on leftover host files at /tmp/sessions.json. Teach the
test-projects routing fixture about the suites that newly import the
shared temp-dir helper. Document the Codex thread-format contract for
archivedAt/pinnedAt (flag derived from server-stamped timestamp, epoch ms
here vs Codex epoch seconds) at the type and in the session docs.

* test: route auto-fallback suite through temp-dir helper plans

The auto-fallback suite now imports the shared temp-dir helper for its
seeded session store, so the top-level helper routing fixture must list
it in the auto-reply plan.
2026-07-04 14:30:47 -04:00
github-actions[bot]
61da4f0917 chore(ui): refresh control ui locales 2026-07-04 18:26:54 +00:00
Peter Steinberger
6da5db21a6 chore(i18n): regenerate control-ui locale metadata after rebase 2026-07-04 11:18:43 -07:00
Peter Steinberger
d41cb3aab8 fix(control-ui): drop unused vitest import and bind captured request in terminal-connection test 2026-07-04 11:18:43 -07:00
Peter Steinberger
f2e5159f53 fix(control-ui): register terminal panel via guarded define for shared test registry 2026-07-04 11:18:42 -07:00
Peter Steinberger
3c03389925 fix(control-ui): drop the terminal exit the server emits during a close RPC 2026-07-04 11:18:42 -07:00
Peter Steinberger
3f976f9f86 fix(control-ui): reload the document when terminal enablement outpaces its CSP 2026-07-04 11:18:42 -07:00
Peter Steinberger
2399ce7c85 fix(control-ui): harden terminal panel lifecycle (pending-open cancel, live theme, viewport clamp) 2026-07-04 11:18:42 -07:00
Peter Steinberger
e275cd61d7 test(control-ui): keep terminal event listener while an open is in flight 2026-07-04 11:18:41 -07:00
Peter Steinberger
ec72de41fa feat(control-ui): dockable ghostty-web terminal panel 2026-07-04 11:18:41 -07:00
github-actions[bot]
c78b0d59f5 chore(ui): refresh control ui locales 2026-07-04 16:52:23 +00:00
Barbara Kudiess
129e0a8cf0 feat: pair mobile devices from the Control UI (#94672)
* feat(gateway): add device.pair.setupCode RPC for connect QR

The OpenClaw mobile/companion app scans a pairing setup code to connect to the gateway, but that code + QR could only be produced by the openclaw qr CLI (ASCII to stdout). Non-terminal clients driving onboarding had no way to display the connect QR.

Add a device.pair.setupCode gateway method that reuses resolvePairingSetupFromConfig + encodePairingSetupCode + renderQrPngDataUrl to return { setupCode, qrDataUrl?, gatewayUrl, auth, urlSource }. The embedded setup code mints a short-lived bootstrap token that hands off broad operator scopes (read/write/approvals/talk.secrets), so the method requires operator.admin (matching the wizard methods a companion already uses) and is not advertised. auth is a label only; the gateway credential is never returned, and an oversized QR is omitted so the response always satisfies the result schema.

Refs #94661.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* feat(ui): pair mobile devices from Control UI

* docs: refresh generated docs map

* docs: clarify mobile QR auto-connect

* docs: clarify mobile QR auto-connect

* docs: clarify mobile QR auto-connect

---------

Co-authored-by: Barbara Kudiess <76582160+bkudiess@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-04 12:41:14 -04:00
Peter Steinberger
33022da155 refactor(ui): dedupe chat styles and make the styles.css import order real (#99900)
* refactor(ui): dedupe chat styles and make styles.css import order real

* refactor(ui): dedupe chat tool-row styles into chat files

* refactor(ui): keep light bubble skin after role variants

* refactor(ui): keep light bubble skin after role variants

* refactor(ui): keep light bubble skin after role variants
2026-07-04 07:03:31 -04:00
Vincent Koc
530f6d867f test(ui): isolate chat render mocks 2026-07-04 10:11:31 +02:00
Peter Steinberger
384828770b feat: declutter the Control UI shell — reasoning effort slider, borderless composer controls, version out of the sidebar (#99838)
The chat composer's model picker and provider-usage pill become quiet borderless text controls; the reasoning flyout swaps its button list for a discrete Faster–Smarter slider (native range input) with stop dots, filled track, inherited-default marker, ghosted off-scale defaults, live value label, and one-click 'Use default' reset — single-level models render a toggle instead. The persistent sidebar VERSION pill is replaced by a slim connection-status line; the gateway version remains in Settings' Quick Settings footer. Includes review fixes from Codex autoreview (singleton level selectable) and the GitHub Codex review (off-scale default thumb), plus a 40px mobile touch target.

Closes #99837
2026-07-04 00:45:44 -07:00
Peter Steinberger
a07b4bed79 fix: stop rubber-band bounce of the Control UI shell in the Mac app web view (#99830)
The Control UI is an app shell: inner panes scroll, the root never should. macOS WKWebView (Mac app dashboard window) and desktop Safari still rubber-band the root scroller, so the whole UI bounced up and down whenever content fit the viewport. Apply overscroll-behavior: none to html/body globally instead of only in standalone PWA mode, and drop the now-redundant standalone-mode declaration.
2026-07-03 23:39:32 -07:00
Dallin Romney
3b4092dbaa test: add executable runtime fixture canaries (#99737)
* test(qa): add runtime fixture canaries

* test(voice-call): track fixture temp directories
2026-07-03 20:22:40 -07:00
github-actions[bot]
87d8887878 chore(ui): refresh fa control ui locale 2026-07-04 01:04:12 +00:00
github-actions[bot]
484d2e4599 chore(ui): refresh vi control ui locale 2026-07-04 01:03:58 +00:00
github-actions[bot]
54bd83d254 chore(ui): refresh nl control ui locale 2026-07-04 01:03:56 +00:00
github-actions[bot]
77b61d5590 chore(ui): refresh th control ui locale 2026-07-04 01:03:31 +00:00
github-actions[bot]
1622799eb4 chore(ui): refresh pl control ui locale 2026-07-04 01:03:28 +00:00
github-actions[bot]
ccd960ac4a chore(ui): refresh id control ui locale 2026-07-04 01:03:16 +00:00
github-actions[bot]
1f499b01c4 chore(ui): refresh uk control ui locale 2026-07-04 01:03:00 +00:00
github-actions[bot]
a1aaa32e14 chore(ui): refresh tr control ui locale 2026-07-04 01:02:45 +00:00
github-actions[bot]
7e11650d48 chore(ui): refresh it control ui locale 2026-07-04 01:02:42 +00:00
github-actions[bot]
44a8ea4f67 chore(ui): refresh ar control ui locale 2026-07-04 01:02:24 +00:00
github-actions[bot]
336b14978b chore(ui): refresh fr control ui locale 2026-07-04 01:01:53 +00:00
github-actions[bot]
257c50646e chore(ui): refresh es control ui locale 2026-07-04 01:01:43 +00:00
github-actions[bot]
1600621116 chore(ui): refresh ko control ui locale 2026-07-04 01:01:38 +00:00
github-actions[bot]
0ec62b0762 chore(ui): refresh ja-JP control ui locale 2026-07-04 01:01:32 +00:00
github-actions[bot]
261f97c9bf chore(ui): refresh zh-CN control ui locale 2026-07-04 01:01:05 +00:00
github-actions[bot]
d044595776 chore(ui): refresh de control ui locale 2026-07-04 01:00:57 +00:00
github-actions[bot]
c9b2d8d05f chore(ui): refresh zh-TW control ui locale 2026-07-04 01:00:52 +00:00
github-actions[bot]
d1406e835c chore(ui): refresh pt-BR control ui locale 2026-07-04 01:00:44 +00:00
Wynne668
61564f2d2e fix(ui): copy workspace file paths over plain HTTP (#98764) 2026-07-03 17:10:20 -07:00
qingminlong
f5c700bc4b fix(ui): keep landscape composer compact (#98683)
* fix(ui): keep landscape composer compact

* test(ui): cover landscape composer adjunct scroll

* fix(ui): keep active slash option visible

* fix(ui): constrain slash menu keyboard scroll

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-03 05:00:43 -07:00