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
Peter Steinberger
e0ab154e5e
fix(ui): explain unavailable MCP tool catalogs ( #115994 )
...
* fix(ui): explain undiscovered MCP tools
* fix(ui): scope MCP discovery notices to the viewed connector
2026-07-29 15:12:08 -04:00
Vincent Koc
14e65ab6b3
test(ui): split terminal accessibility coverage
2026-07-30 02:54:10 +08:00
Vincent Koc
8d6dae1e81
test(ui): cover terminal picker pointer paths
2026-07-30 02:46:37 +08:00
Peter Steinberger
b240703cfc
fix(ui): compact the macOS gateway picker menu ( #115977 )
...
* fix(ui): compact native gateway menu
* chore: leave changelog to release automation
* test: stabilize UI and CLI process checks
2026-07-29 14:42:18 -04:00
Vincent Koc
e677b8cbc8
fix(ui): type terminal shadow focus checks
2026-07-30 02:19:21 +08:00
Peter Steinberger
777cfed85a
feat(mac): hand off gateway-owned settings panes to the dashboard ( #115999 )
...
* feat(mac): hand off gateway-owned settings panes to the dashboard
Gateway-config Settings tabs (Channels, Skills, Cron Jobs, Threads,
Instances) now default to a native handoff page with an Open in Dashboard
deep link; a Debug toggle re-enables the legacy native panes. Adds an
openclaw:native-navigate host->shell event with generation-guarded URL
fallback, and lifts the dashboard route map + same-app path validation
into OpenClawKit for future iOS reuse. Exec Approvals stays native: the
Dashboard's host-native policy editor is read-only by contract.
* fix(mac): satisfy native-i18n inventory and type budget
* fix(mac): refresh native i18n source locations
2026-07-29 14:12:42 -04:00
Vincent Koc
1294df882a
fix(ui): make terminal session picker keyboard accessible
2026-07-30 02:06:44 +08:00
Peter Steinberger
ff72f287c3
fix(gateway): declare viewer presence explicitly instead of deriving it from subscriptions ( #116001 )
...
* fix(gateway): declare viewer presence explicitly instead of deriving it from subscriptions
* refactor(ui): isolate viewer presence lifecycle ownership
* chore(protocol): register viewer presence schema owner
* fix(ui): keep viewer presence cleared after detach
* chore: drop changelog edits from this PR
CHANGELOG.md is release-owned; release generation derives entries from merged
PRs. Release-note context stays in the PR body.
2026-07-29 13:56:54 -04:00
Peter Steinberger
b930ee055c
fix(ui): preserve initials for missing user avatars ( #115976 )
...
* fix(ui): preserve initials for missing user avatars
* test(ui): prove missing avatar fallback in browser
* chore: defer avatar note to release workflow
* test(ui): stabilize avatar fallback browser proof
2026-07-29 13:34:36 -04:00
Vincent Koc
14ffd4393e
feat(ui): add provider icons to coding catalogs ( #115956 )
2026-07-30 01:33:15 +08:00
Peter Steinberger
b44890bf2d
fix(sessions): recover deleted chats without endless retries ( #115974 )
...
* fix(sessions): recover deleted chats without lifecycle races
* fix(sessions): narrow deleted route commit keys
* test(sessions): isolate deleted-chat recovery regressions
* fix(sessions): recover chats after agent removal
* fix(sessions): fence recreated session deletion races
* fix(sessions): preserve filtered active conversations
* test(sessions): preserve canonical main during chat recovery
* test(ui): follow canonical agent channels route
2026-07-29 13:22:29 -04:00
Peter Steinberger
d7d3fc5dad
feat(ui): enable tool-loop detection from Labs ( #115983 )
...
* feat(ui): add tool loop detection lab
* docs(tools): mention loop detection lab
2026-07-29 13:21:52 -04:00
Vincent Koc
a47d81e7b3
fix(ui): derive cron timezone suggestions ( #115973 )
2026-07-30 01:12:45 +08:00
Peter Steinberger
c87e545c88
fix(ui): rename the Memory Palace browser to Memory Wiki and document it ( #115954 )
...
* fix(ui): rename the Memory Palace browser to Memory Wiki and document it
* refactor(memory-wiki): drop the old memory-palace module files
* docs: refresh generated docs map
* test(ui): align dream-diary hub-tab assertion with the wiki sub-tab id
* docs: describe memory wiki clustering behavior accurately
* docs(memory-wiki): record the wiki.overview rename decision at the registration site
* test(ui): query the Agents channels hub tab by tab role after the hub-tabs refactor
2026-07-29 12:51:37 -04:00
Peter Steinberger
5bfc65d7f4
refactor: remove 3,543 lines of redundant runtime and tests ( #115961 )
...
* refactor: remove 3,543 lines of redundant runtime and tests
* refactor: ratchet production environment variable budget
2026-07-29 11:43:41 -04:00
Peter Steinberger
af717db39c
feat(ui): add per-connector tool access to composer ( #115907 )
...
* feat(ui): per-connector tool access in composer menu
* fix(ui): harden tool access loading and dynamic keys
* fix(ui): harden tool access reads and catalog freshness
* fix(ui): invalidate tool catalog on connector edits
* test(ui): fix composer capability checks
2026-07-29 11:39:53 -04:00
Peter Steinberger
68a3ca740d
fix(ui): harden chat and session interactions ( #115967 )
2026-07-29 11:39:10 -04:00
Vincent Koc
f083518506
Merge pull request #115942 from openclaw/fix/macos-keyboard-accessibility
...
fix(accessibility): restore web view navigation and layout-aware shortcuts
* commit 'fd28cd3becfded364107f236f526b08422f8ebab':
fix(ui): support shortcuts on non-Latin keyboards
fix(macos): enable keyboard navigation in web views
2026-07-29 23:29:56 +08:00
Peter Steinberger
df3674f577
refactor(ui): unify tab navigation on the shared hub tabs ( #115934 )
...
* refactor(ui): unify tab navigation on shared hub tabs
* refactor(ui): move cron navigation to hub tabs
* test(ui): update agent overview tab locator
2026-07-29 11:24:44 -04:00
Vincent Koc
fd28cd3bec
fix(ui): support shortcuts on non-Latin keyboards
2026-07-29 23:09:22 +08:00