* 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
* 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
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
* feat: add Asia/Shanghai to cron timezone suggestions
Adds Asia/Shanghai to the CRON_TIMEZONE_SUGGESTIONS list for users
in the Asia region who want to use their local timezone in cron schedules.
* fix(ui): preserve original cron contribution during main refresh
* fix(ui): suggest Asia/Shanghai for cron schedules
Preserve @finallylly original PR #65936; move its one-line IANA timezone suggestion to the current cron UI owner and cover the actual rendered Chromium datalist.
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com>
* fix(chat): close disclosures in coalesced HTML
Keep model-authored details closers visible to the shared disclosure contract when CommonMark absorbs them into type-6 HTML blocks across the Control UI and native apps.
* refactor(apps): isolate disclosure unfolding
Keep the native disclosure segmenter below its lint complexity and type-size limits, and refresh the source-owned native i18n inventory after the move.
* fix(apps): align disclosure helper visibility
Keep the extracted same-file helper compatible with Swift access control while leaving its implementation types hidden outside the source file.
* fix(apps): align source replacement visibility
Keep the source replacement helper at the same file-private boundary as the extracted disclosure unfolding types.
* fix(ui): raise muted theme text tokens to WCAG AA contrast
Secondary text using --muted/--muted-foreground measured 3.1-3.5:1 on
several bundled themes (issue #107299), below the 4.5:1 AA floor for
normal text. Nudges the offending hex tokens and adds a vitest guardrail
that parses base.css and asserts every text-on-surface token pairing in
every theme block stays >= 4.5:1 so future palette edits can't regress
this silently.
Closes#107299
* fix(ui): satisfy oxlint and noUncheckedIndexedAccess in contrast test
- Number.parseInt over global parseInt, ** over Math.pow, toSorted over sort
- Guard regex capture groups and indexed access under noUncheckedIndexedAccess
* test(ui): cover rendered theme contrast in Chromium
* test(ui): prove Skill Workshop mobile width in Chromium
* test(ui): stabilize deferred history prepend anchors
* test(ui): serialize rendered theme color diagnostics
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com>
* feat(ui): composer capability menu with per-session overrides
* refactor(ui): keep chat render within lint ceiling
* fix(ui): preserve loaded capability overrides
* fix(ui): remove stale capability menu field
* fix(ui): gate capability menu on runtime-config readiness