Peter Steinberger
4643bb4c2c
fix(mac): keep remote nodes connected during config metadata writes ( #106419 )
...
* fix(mac): ignore config metadata churn
* chore: keep release note in PR
2026-07-13 06:31:11 -07:00
Peter Steinberger
5ca0e634bc
fix(ios): connect iPhone and Watch to protocol v3 gateways ( #106294 )
...
* fix(ios): support gateway protocol v3
* chore(i18n): refresh native source metadata
* fix(watchos): keep direct transport on protocol v4
* chore(i18n): refresh Watch source metadata
2026-07-13 05:44:49 -07:00
Peter Steinberger
e1a92c99cf
fix(ios): persist chat thinking selections ( #106287 )
...
* refactor(apple): share chat gateway requests
* fix(ci): sync native app inventory
* docs: keep Apple release note in PR body
2026-07-13 05:44:08 -07:00
Peter Steinberger
d9a6be9b16
fix(ios): typography audit rejects localized accessibility labels ( #106092 )
...
* test(ios): exempt accessibility metadata from typography audit
* test(ios): cover adjacent visual text audit
* test(ios): tighten accessibility typography exemption
* test(ios): preserve strict accessibility typography audit
* test(ios): handle multiline accessibility closures
* test(ios): classify accessibility typography per line
* test(ios): parse nested accessibility metadata
2026-07-13 05:42:46 -07:00
Peter Steinberger
265f79e607
fix(mac): allow five-minute node worker cold starts ( #106380 )
...
* fix(mac): extend node worker startup timeout
* chore: keep release notes in PR
2026-07-13 05:35:09 -07:00
Peter Steinberger
0bab08510e
feat: Linux desktop companion app with auto-install, Gateway lifecycle, and Control UI window ( #106352 )
...
* feat(linux): add Tauri desktop companion app and openclaw dashboard --json
* test(dashboard): assemble fake token fixture to satisfy secret scanners
* test(dashboard): avoid secret-scanner-shaped mock factory line
* fix(linux): actionable error when installed CLI predates dashboard --json
* docs: regenerate docs map for linux platform heading change
2026-07-13 05:17:27 -07:00
Peter Steinberger
6c5084f1ad
feat(xai): add realtime voice provider ( #106267 )
...
* feat(xai): add realtime voice provider
Co-authored-by: Vitor Cepeda Lopes <vitor@vitorcepedalopes.com >
* fix(xai): satisfy realtime voice validation
* fix(xai): harden realtime relay boundaries
* chore: drop release-owned changelog edit
* chore(i18n): refresh native voice catalogs
* chore(i18n): refresh Control UI raw-copy baseline
* chore(plugin-sdk): refresh API baseline hashes
* chore(i18n): use canonical main catalogs
* chore(i18n): refresh realtime voice source inventory
* chore: refresh xai voice landing head [skip ci]
* chore: refresh integrated protocol artifacts [skip ci]
---------
Co-authored-by: Vitor Cepeda Lopes <vitor@vitorcepedalopes.com >
2026-07-13 05:17:24 -07:00
Peter Steinberger
e9e62b5637
chore(i18n): refresh native locales
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-13 13:14:32 +01:00
Peter Steinberger
bfdfd35e5d
fix(mac): allow slow node worker startup ( #106281 )
...
* fix(mac): allow slow node worker startup
* chore: leave release notes to release flow
2026-07-13 05:00:48 -07:00
Peter Steinberger
88fccc6735
fix(ci): refresh generated Swift protocol
2026-07-13 12:35:26 +01:00
Peter Steinberger
b0ebb81e89
refactor(macos): use swift-log contracts ( #106270 )
2026-07-13 04:18:32 -07:00
openclaw-mantis[bot]
801252c66e
chore(i18n): refresh native locales ( #106260 )
...
* chore(i18n): refresh native locales
* chore(i18n): sync generated app resources
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-13 03:49:36 -07:00
Peter Steinberger
0e520d68e7
fix(ci): stabilize runtime test retries
2026-07-13 11:41:15 +01:00
Peter Steinberger
d7a2ec779a
fix(ci): retain macOS notification test observer
2026-07-13 10:39:25 +01:00
Peter Steinberger
73a0bf4b7c
refactor(apple): share chat gateway payload mapping ( #106154 )
...
* refactor(apple): share chat gateway payload mapping
* test(apple): track shared event mapping
2026-07-13 02:39:01 -07:00
Peter Steinberger
938d41014f
feat(mobile): default pairing to full node access ( #105928 )
...
* feat(mobile): default pairing to full node access
* chore: leave release notes to release workflow
* refactor(mobile): bound pairing helpers
* chore(i18n): refresh mobile access inventory
* chore(ci): lower mobile pairing LOC baseline
* fix(mobile): complete pairing validation artifacts
* ci: remove stale transcript target export baseline
* fix(ios): wrap access upgrade guidance
* fix(ios): preserve localized access key
* fix(ci): dedupe read-only SQLite guardrail
* fix(mobile): secure full-access node setup
2026-07-13 02:30:45 -07:00
Peter Steinberger
16b1bd2032
fix(android): support gateway protocol v3 ( #106205 )
2026-07-13 02:29:16 -07:00
Peter Steinberger
3261667b73
fix(ios): keep reconnect errors visible ( #105875 )
...
* fix(ios): keep reconnect errors visible
* fix(ios): clear stale errors on gateway switch
* chore(ios): keep release notes in PR
* fix(ios): reset status when switching gateways
* fix(ios): retain errors through same-target reconnect
* fix(ios): unpause explicit pairing retries
* fix(ios): isolate retained reconnect errors
* chore(i18n): resync rebased native inventory
* fix(ios): separate reconnect display state
2026-07-13 02:11:26 -07:00
Peter Steinberger
bafabba0df
fix(gateway): preserve Control UI turns across restarts ( #106151 )
...
* fix(gateway): preserve Control UI turns across restart
* perf(sessions): index restart recovery state
* fix(sessions): avoid replaying pre-admitted turns
* fix(sessions): index per-entry recovery status
* fix(sessions): guard restart failure notices
* fix(sessions): preserve terminal claims across admissions
* fix(sessions): retry failed recovery notices
* fix(sessions): harden restart retry ownership
* fix(gateway): tighten restart recovery typing
* fix(sessions): close restart recovery races
* refactor(sessions): split restart recovery ownership
* chore(sessions): clean restart recovery lint
* chore: drop release-owned changelog entry
* fix(gateway): satisfy restart recovery guards
* test(gateway): cover Control UI durable admission
2026-07-13 02:08:56 -07:00
Peter Steinberger
a18da069c5
fix(ci): eliminate experience review gate failures
2026-07-13 04:08:00 -04:00
Peter Steinberger
4e46f08fed
fix(macos): keep CLI path discovery off main actor ( #106089 )
2026-07-13 00:41:59 -07:00
Peter Steinberger
17630226fc
improve(ios): make gateway QR pairing prominent in Settings ( #106111 )
...
Reorder Settings -> Gateway by intent: pairing (Add Gateway with Scan QR,
setup code, discovered gateways) right below status, nav-bar QR scanner
button on the gateway route, and a Scan QR to Pair status-card hero while
nothing is paired (honoring the shared connect lock). Manual Gateway and
credentials move to the bottom. Fix setup-code Connect busy spinner to
track the whole attempt. New strings ran the full native i18n pipeline.
Closes #106013
2026-07-13 00:35:38 -07:00
Peter Steinberger
d2b382528e
feat(ios): guide first launch through pairing explainer and permissions ( #106129 )
...
* feat(ios): guide first launch through pairing explainer and permissions
* fix(ios): keep first-run flow resumable and surface limited grants in onboarding
* chore(ios): regenerate native i18n after rebase
* chore(android): project refreshed native translations into strings.xml
* fix(ios): move i18n wrapper contract to shared permission row and sync catalog
2026-07-13 00:35:31 -07:00
Peter Steinberger
29781ab39e
feat(android): generate gateway protocol models ( #106011 )
...
* feat(android): generate gateway protocol models
* fix(ci): recognize generated Kotlin event constants
* fix(android): normalize generated event catalog
* fix(ci): type Kotlin event coverage exports
* fix(ci): satisfy Kotlin codegen gates
2026-07-13 00:34:57 -07:00
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
b57e7b74e6
feat: add native Skills management parity ( #105814 )
...
* feat(apps): add native skills management parity
* chore(i18n): refresh native skills inventory
* style(apps): apply canonical Swift formatting
* style(ios): wrap skills status message
* chore(i18n): refresh native skill locales
* refactor(apps): trim native skills review surface
* chore(i18n): regenerate native app resources
* chore: keep release changelog owner-only
* fix(ios): remove dead gateway and watch wrappers
2026-07-13 00:11:11 -07:00
Peter Steinberger
f1076c23d4
fix(ci): isolate macOS node restart notifications
2026-07-13 02:54:10 -04:00
Colin Johnson
6242842722
fix(ios): focus missing gateway credentials ( #98189 )
...
* fix(ios): focus missing gateway credentials
Co-authored-by: Colin <colin@solvely.net >
* test(macos): let main actor polling suspend
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-12 23:36:29 -07:00
Ayaan Zaidi
143fed81c1
feat(sessions): reopen history around search hits
2026-07-13 10:27:29 +05:30
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
c81ae0412c
fix(ios): localize Settings accessibility labels ( #105859 )
...
* fix(ios): preserve localized accessibility labels
* chore(i18n): refresh native source inventory
2026-07-12 19:33:27 -07:00
Ayaan Zaidi
c029d997a9
chore(i18n): resync native inventory line metadata
...
Direct iOS/Android commits on main shifted source line numbers without
running the path-filtered native-i18n job, so `native:i18n:check` fails
on any PR that touches a native path. Metadata-only resync; entry count
unchanged (4200).
2026-07-13 07:42:52 +05:30
Vincent Koc
818eca2c09
fix(ios): coalesce automatic overview refreshes
2026-07-13 03:53:15 +02:00
Vincent Koc
918745ed21
docs(changelog): note native app reliability fixes
2026-07-13 03:53:15 +02:00
Vincent Koc
5e9bc0916f
fix(ios): harden gateway and watch state handling
2026-07-13 03:53:15 +02:00
Vincent Koc
b9d53d3cce
fix(android): keep disconnected nodes offline
2026-07-13 03:53:15 +02:00
Peter Steinberger
af326b98d7
fix(macos): avoid SwiftUI macro plugin dependency ( #105768 )
...
* fix(macos): avoid SwiftUI macro plugin dependency
* fix(macos): scope chat previews to iOS
* chore(i18n): refresh native source locations
* fix(macos): preserve explicit environment keys in formatter
* chore(pr): keep changelog release-owned
2026-07-12 17:40:41 -07:00
Peter Steinberger
e01d1e85f3
ci(swift): enforce shared OpenClawKit dead-code coverage ( #105770 )
...
* ci(swift): enforce shared kit dead-code coverage
* chore(i18n): sync native source inventory
* ci(swift): install pinned iOS scan tools
2026-07-12 17:35:47 -07:00
Peter Steinberger
2264816f1d
ci(macos): add enforced periphery dead-code lane and delete the 12 current findings ( #105743 )
...
* refactor(macos): delete dead code flagged by periphery
* ci(macos): add enforced periphery dead-code lane
* fix(ci): scope-label the periphery skip message
* chore(i18n): sync native inventory line coordinates
2026-07-12 16:39:15 -07:00
Peter Steinberger
d287c9b414
refactor(mac): make app node a CLI capability superset ( #105642 )
...
* refactor(mac): reuse CLI node-host runtime
* fix(mac): prefer checkout CLI in debug builds
* chore: leave release notes to release automation
* chore(mac): sync native string inventory
* chore(mac): refresh native locale artifacts
* fix(node): satisfy native and deadcode gates
2026-07-12 13:16:07 -07:00
Peter Steinberger
5e45ebe82b
feat(ios): add private HealthKit summaries ( #105616 )
...
* feat(ios): add private HealthKit summaries
* fix(ios): satisfy Health settings lint
* chore(ios): sync Health localization artifacts
* chore(ios): refresh generated localization and docs
* fix(ios): reject partial Health history
* chore(ios): sync Health string catalogs
* fix(ios): bridge Health authorization dates
* fix(ios): scope Health summaries to today
2026-07-12 12:52:38 -07:00
WhatsSkiLL
5d61d97a33
fix(android): autofocus command palette search ( #105471 )
...
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
2026-07-12 15:20:14 -04:00
Peter Steinberger
2821abc1f5
feat(android): polish skill management ( #105592 )
...
* feat(android): polish skill management
* chore(android): sync skill localization
2026-07-12 11:46:59 -07:00
Peter Steinberger
f60d052846
chore(i18n): sync native inventory line coordinates
...
apps dead-code removal (ec62328eb8 ) shifted ChatViewModel.swift string
coordinates without refreshing apps/.i18n/native-source.json, failing the
native-i18n CI shard on every PR. Inventory-only sync via pnpm native:i18n:sync.
2026-07-12 11:24:42 -07:00
Peter Steinberger
ec62328eb8
chore(apps): remove dead code
2026-07-12 10:18:03 -07:00
Vincent Koc
b6d26269e4
chore(i18n): refresh live activity coordinates
2026-07-12 18:33:47 +02:00
Vincent Koc
5ec053a6e9
refactor(ios): remove unused live activity wrapper
2026-07-12 18:33:47 +02:00
Vincent Koc
8eda61a0fa
chore(i18n): translate sidebar reveal action
2026-07-12 18:33:47 +02:00
Vincent Koc
f64eb0cbaa
fix(ios): localize sidebar reveal actions
2026-07-12 18:33:47 +02:00
Vincent Koc
59bed9db0b
test(ios): inspect typed sidebar action labels
2026-07-12 18:33:47 +02:00