Commit Graph

4831 Commits

Author SHA1 Message Date
Vincent Koc 466c987264 test(ui): prove curated settings defaults 2026-07-31 16:06:28 +08:00
Vincent Koc b1c565c35b fix(ui): restore curated settings defaults 2026-07-31 16:06:27 +08:00
Vincent Koc 58d888d573 fix(ui): restore inherited settings defaults 2026-07-31 16:06:26 +08:00
Vincent Koc 22e84c6ced fix(ui): show local provider identity after setup 2026-07-31 12:46:47 +08:00
Vincent Koc b3ce00b480 refactor(schema): share config validation runtime (#116622) 2026-07-31 12:40:48 +08:00
Vincent Koc 9906f810f6 test(ui): remove duplicate avatar route coverage (#116656) 2026-07-31 12:02:12 +08:00
Vincent Koc 7bc216394a fix(ui): preserve mixed schema union values (#116602) 2026-07-31 11:15:21 +08:00
Vincent Koc 2bd9329af2 merge: sync origin/main
* origin/main:
  fix(ai): prevent websocket cache clobber on concurrent acquire (#116216)
  test(ui): settle custodian mobile layout assertions (#116613)
  fix(agents): resume Code Mode through gateway restarts (#116605)
2026-07-31 09:43:10 +08:00
Vincent Koc 871abad910 test(ui): settle custodian mobile layout assertions (#116613) 2026-07-31 09:35:16 +08:00
Vincent Koc 9e965073e5 Merge remote-tracking branch 'origin/main' into experiment/google-cli-supported-paths
* origin/main: (168 commits)
  fix(plugins): keep registry sqlite root consistent (#116427)
  fix(cli): keep Gateway auth failures parseable in JSON (#116597)
  fix(trajectory): preserve prompts in oversized events (#116220)
  test(buzz): add live QA Lab channel lane (#116298)
  chore(i18n): refresh native locales (#116567)
  feat: add OpenClaw TUI prototype skill (#116583)
  fix(update): accept concrete versions selected by ranges (#116585)
  fix(agents): preserve locked session model routes
  test(qa-lab): preserve Matrix fault proxy identity
  fix(ci): extend OpenAI live profile setup budget (#116580)
  fix: prevent configured models from stalling startup (#116553)
  fix(cli): close MCP listener after one-shot commands
  fix(auto-reply): keep explicit NO_REPLY silent (#116548)
  test(discord): cover deferred backpressure terminals
  fix(discord): cancel backpressured realtime playback
  test(discord): cover realtime output backpressure
  fix(codex): add remote WebSocket heartbeat and reconnect (#116135)
  fix(macos): wait for the current reconnect snapshot (#116550)
  fix(outbound): recognize current-source message-tool sends (#116560)
  fix(voice-call): type cancelled consult outcomes
  ...

# Conflicts:
#	extensions/google/setup-api.test.ts
#	ui/src/e2e/model-setup.e2e.test.ts
2026-07-31 09:30:03 +08:00
Vincent Koc 94b85cba5f feat(setup): improve local model onboarding 2026-07-31 08:53:13 +08:00
Vincent Koc e96b9d2cd0 improve(ui): verify llama.cpp model setup 2026-07-30 23:41:58 +08:00
Vincent Koc 183db47e97 fix(ui): preserve schema-backed settings edits (#116282)
* fix(ui): harden schema-backed settings controls

Co-authored-by: wangmiao0668000666 <wang.miao86@xydigit.com>

* test(ui): match config secret label in Chromium

* chore(ui): remove release-owned changelog entry

* test(agents): mock incremental registry persistence

---------

Co-authored-by: wangmiao0668000666 <wang.miao86@xydigit.com>
2026-07-30 23:08:53 +08:00
Vincent Koc ca1328dddb Merge pull request #116285 from openclaw/fix/control-ui-session-dedupe
* origin/fix/control-ui-session-dedupe:
  chore: leave release notes to release flow
  fix(ui): deduplicate gateway-native session hosts
2026-07-30 22:53:53 +08:00
Vincent Koc 5e5d436579 fix(ui): clarify blocked inference setup 2026-07-30 22:51:30 +08:00
Omar Shahine 5f4471c8d3 feat(ui): finish cron -> Automations rename in visible strings (#114853)
* feat(ui): finish cron -> Automations rename in visible strings

* fix(ui): strip persisted pre-rename Cron labels before applying the Automation prefix

Codex review finding: gateway rows persist labels as 'Cron: ...' (and keep
writing them until the strings PR lands), so the renamed typed prefix
double-rendered as 'Automation: Cron: ...'. Legacy label prefixes are now
stripped before prefixing; regression tests cover both stored shapes.

* fix(ui): catalog typed-session prefixes and refresh locale catalogs for the rename

Review follow-ups: typed-session prefixes come from the i18n catalog and
display branching uses machine identity (session kind), not translated text;
remaining English feature labels (config group, settings nav, dreaming intro)
renamed; all 20 locale catalogs refreshed through the owner sync (translated,
strict ui:i18n:check green) with a non-English regression protecting the
renamed keys.

* chore(ui): reconcile locale catalogs after rebase onto main locale refresh

* fix(ui): keep locale bundles workflow-owned; pin the rename at the English source

CI isolates generated locale artifacts from source PRs (preflight changed-scope
gate); the post-merge control-ui-locale-refresh workflow owns retranslation.
This PR ships the English source, catalog prefix keys, and machine-identity
display branching; the regression pins the renamed keys at the source of truth.

* fix(ui): move rename catalog test out of workflow-owned locales dir

---------

Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com>
2026-07-30 07:18:19 -07:00
Peter Steinberger 7a9d2c3e72 fix(ui): show the correct Threads page size (#116349)
* fix(ui): correct sessions page-size controls

* test(ui): defer unrelated memory mock repair

* style(ui): format page-size regression
2026-07-30 04:12:41 -07:00
Peter Steinberger 7fa95e2656 feat(ui): add composable skill references (#116330)
* feat(ui): add composable skill references

* fix(ui): align skill reference CI contracts

* fix(ui): scope skill references to WebChat
2026-07-30 04:07:02 -07:00
Peter Steinberger dbe7140397 fix(ui): restore Workboard routing and full-gate contracts (#116342)
* fix(ui): restore full-gate routing contracts

* fix(ui): preserve startup route redirects

* fix(ui): import route location type
2026-07-30 03:40:25 -07:00
Vincent Koc bb68389a66 fix(ui): deduplicate gateway-native session hosts 2026-07-30 15:22:37 +08:00
Vincent Koc 69f10e72f2 fix(ollama): retry unreachable setup in place (#116210) 2026-07-30 12:23:56 +08:00
Shakker e7d01b511b style: format dynamic route coverage (#116197) 2026-07-30 04:04:07 +01:00
Shakker 6aae5c184f test: cover dynamic route startup reconnect 2026-07-30 04:04:07 +01:00
Shakker e2ae02a0c4 refactor: keep dynamic route identity page-owned 2026-07-30 04:04:07 +01:00
Shakker 5285b28c5e fix: load dynamic deep links once 2026-07-30 04:04:07 +01:00
Vincent Koc 12e5eb6a23 fix(ui): clarify model setup flows (#116086) 2026-07-30 09:47:57 +08:00
Vincent Koc 2d9cf7b6d1 improve(ui): guide optional channel setup after model setup (#116078) 2026-07-30 09:08:07 +08:00
Vincent Koc 1065c1d697 fix(ui): identify source builds in settings footer (#116134)
* fix(ui): identify source builds in settings footer

* fix(release): classify all official Control UI builds
2026-07-30 08:58:34 +08:00
Vincent Koc e473598c2c fix(ui): make model setup actionable before selection (#116079) 2026-07-30 08:34:43 +08:00
Shakker 68c472f379 refactor: keep update timing constants private 2026-07-30 01:03:51 +01:00
Shakker 899573a8c6 fix: reject stale update reconciliation 2026-07-30 01:03:51 +01:00
Shakker e2654017d4 refactor: keep update status response private 2026-07-30 01:03:51 +01:00
Shakker 302e394455 fix: bound update status reconciliation 2026-07-30 01:03:51 +01:00
Shakker f8aa44dcda fix: preserve uncertain update outcomes 2026-07-30 01:03:51 +01:00
Shakker 8d47c7d274 refactor: keep update reconciliation within size budgets 2026-07-30 01:03:51 +01:00
Shakker ce8995f716 fix: release update reconciliation on access loss 2026-07-30 01:03:51 +01:00
Shakker 1408dad5d5 test: cover both managed update response orders 2026-07-30 01:03:51 +01:00
Shakker a69fea5f2d fix: reconcile ambiguous gateway updates 2026-07-30 01:03:51 +01:00
Peter Steinberger d60436a4ee feat(ui): transcode renditions and waveform audio cards (#116115)
* feat(ui): add chat media renditions and waveforms

* fix(ui): tighten media playback guards

* fix(ui): bound waveform decode memory

* fix(ui): harden media playback retries

* fix(ui): preserve valid media state

* fix(ui): stop detached video playback

* fix(ui): bound media artifact resolution

* fix(ui): reject failed media fallback sources

* refactor(ui): split attachment availability helpers

* fix(ui): unload media across auth resets

* fix(ui): retain the longest-lived media ticket
2026-07-29 16:44:05 -07:00
Vincent Koc 5141a3593c fix(ui): keep external settings mutations from racing saves (#116031)
* fix(ui): serialize external config mutations

* test(ui): align plugin E2E refresh ordering
2026-07-30 06:33:49 +08:00
Vincent Koc 925fdb023e refactor(ui): remove retired time format bootstrap (#116097) 2026-07-29 22:23:27 +00:00
Vincent Koc 9eee6181d7 fix(ui): serialize Control UI config writers (#116029) 2026-07-30 05:09:23 +08:00
Vincent Koc b7193cd3fc fix(ui): recover curated settings state (#116032) 2026-07-30 04:29:44 +08:00
Vincent Koc dcae280db6 Merge remote-tracking branch 'origin/audit/macos-accessibility-followup' into audit/macos-accessibility-land-116026
* origin/audit/macos-accessibility-followup:
  fix(ui): dismiss picker after focus leaves widget
  fix(ui): keep picker trigger inside focus boundary
  test(ui): split terminal accessibility coverage
  test(ui): cover terminal picker pointer paths
  chore: leave accessibility notes to release prep
  fix(ui): type terminal shadow focus checks
  fix(ui): make terminal session picker keyboard accessible
2026-07-30 04:16:32 +08:00
Shakker 4849ec4982 fix: clear partial Talk startup state (#116067) 2026-07-29 21:08:21 +01:00
Shakker cae9a61f6d refactor: keep Talk reset internal 2026-07-29 21:08:21 +01:00
Shakker c1438475eb test: cover realtime Talk teardown 2026-07-29 21:08:21 +01:00
Shakker 8671148999 fix: isolate realtime Talk sessions 2026-07-29 21:08:21 +01:00
Vincent Koc 702892e1c3 fix(ui): dismiss picker after focus leaves widget 2026-07-30 03:58:24 +08:00
Vincent Koc 2ad7427e16 fix(ui): keep picker trigger inside focus boundary 2026-07-30 03:27:24 +08:00