Commit Graph

320 Commits

Author SHA1 Message Date
Val Alexander
da982a3118 fix(macos): avoid Tailscale hydration config rewrites
Fixes #59545.

Suppress the macOS General/Tailscale initial hydration apply path from rewriting openclaw.json when settings are unchanged, and add regression coverage for gateway/auth/meta/wizard preservation.

Verified on the retry head 8a30aa831c:
- GitHub CI completed successfully, including macos-node, macos-swift, check-docs, security, Workflow Sanity, and OpenGrep.
- Review threads were empty before merge.
- Duplicate sweep kept #59545 as the canonical standalone issue; no duplicate closures were appropriate.
2026-05-02 03:23:00 -05:00
Fuma2013
3f3ed80300 fix(macos): route Talk providers through gateway TTS
Route remote and custom macOS Talk providers through Gateway talk.speak before falling back to the system voice.\n\nThanks @Fuma2013.
2026-05-02 08:57:26 +01:00
Val Alexander
7c2802b212 fix(macos): preserve gateway auth config writes
Preserve existing gateway.auth and unrelated config keys during macOS app fallback writes, while requiring explicit opt-in for auth mutation paths.\n\nValidation:\n- swift test --package-path apps/macos --filter OpenClawIPCTests.OpenClawConfigFileTests\n- swift test --package-path apps/macos --filter OpenClawIPCTests.ConfigStoreTests\n- node scripts/check-changed.mjs CHANGELOG.md apps/macos/Sources/OpenClaw/ConfigStore.swift apps/macos/Sources/OpenClaw/OpenClawConfigFile.swift apps/macos/Sources/OpenClaw/TailscaleIntegrationSection.swift apps/macos/Tests/OpenClawIPCTests/OpenClawConfigFileTests.swift\n\nCloses #75631.
2026-05-01 23:45:55 -05:00
Peter Steinberger
ecef57831c fix: route macos voice wake to selected session 2026-05-02 02:54:33 +01:00
Peter Steinberger
d6f84a4114 test: update onboarding wizard step fixtures 2026-05-02 02:47:34 +01:00
Peter Steinberger
c1996f5d75 fix: downmix speech buffers for macos voice 2026-05-02 02:47:33 +01:00
Peter Steinberger
ff45bc1f88 fix: render talk transcripts in native webchat 2026-05-02 02:47:33 +01:00
Peter Steinberger
f8e16be711 fix: accept trigger-only voice wake test 2026-05-02 02:28:49 +01:00
Vincent Koc
aaa2f32175 fix(app): retry device tokens on pinned gateways (#75537) 2026-05-01 04:55:59 -07:00
Nimrod Gutman
f42645037f refactor(macos): move sessions into context submenu (#75489)
Merged via squash.

Prepared head SHA: bbf5450572
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com>
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com>
Reviewed-by: @ngutman
2026-05-01 10:22:29 +03:00
Nimrod Gutman
b0b627e5a9 fix(macos): reserve exec approval dialog layout space (#75470)
Merged via squash.

Prepared head SHA: 8a3ca92150
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com>
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com>
Reviewed-by: @ngutman
2026-05-01 09:32:47 +03:00
Nimrod Gutman
58a0b077c1 fix(macos): keep A2UI canvas content visible (#75039) 2026-04-30 14:21:06 +03:00
Nimrod Gutman
eecd758e39 fix(macos): repair stale gateway tls pins (#75038)
Merged via squash.

Prepared head SHA: 35196f8f71
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com>
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com>
Reviewed-by: @ngutman
2026-04-30 14:14:03 +03:00
Luka Dolenc
25d2e9bdac fix(macos): keep attach-only from stopping gateway launchd 2026-04-30 04:10:54 +01:00
Peter Steinberger
548f946ffd test(macos): remove conflict marker 2026-04-28 05:28:04 +01:00
Peter Steinberger
5dec95f35c test(macos): stabilize gateway control test 2026-04-28 05:28:04 +01:00
Vincent Koc
4102f8d28d fix(macos): parse model catalog without JavaScriptCore
Replaces JavaScriptCore catalog evaluation with a bounded fail-closed object-literal parser for the generated macOS model catalog.\n\nValidation: macos-node, macos-swift, security-fast, security-scm-fast, security-dependency-audit, workflow sanity checks passed on PR #73112.
2026-04-27 20:16:51 -07:00
Peter Steinberger
c72f8f357b fix: harden mac app computer use docs 2026-04-28 01:25:31 +01:00
martingarramon
4f50921e0f fix(gateway/schema): require hello-ok auth
Fixes #68160.

Drops stale optionality from the hello-ok auth schema and keeps generated Swift models, macOS fixtures, browser client types, protocol docs, and merged-base test boundaries aligned.
2026-04-27 06:40:36 -05:00
Peter Steinberger
113794f277 fix(voicewake): harden trigger routing rebase 2026-04-26 06:19:35 +01:00
Longbiao CHEN
cbcc1227d3 fix(voicewake): require token boundaries for filler-prefix matches 2026-04-26 06:19:35 +01:00
Longbiao CHEN
afe1abc297 feat(voicewake): refresh trigger routing on main 2026-04-26 06:19:35 +01:00
Peter Steinberger
ae45eebef1 fix: route remote mac browser through node host 2026-04-26 05:25:59 +01:00
Peter Steinberger
b277eac656 fix: pin macos ssh remote url to loopback 2026-04-26 05:01:25 +01:00
Peter Steinberger
02f3e9cfa2 fix(talk): honor configured speech locale 2026-04-25 21:05:24 +01:00
Peter Steinberger
5699209d00 fix: match bare exec allowlist commands
Co-authored-by: Kengwei Lu <kengwei@kvvlu.com>
Co-authored-by: ZC <chenzhangcode@163.com>
Co-authored-by: dengluozhang <275862143+dengluozhang@users.noreply.github.com>
2026-04-25 04:18:24 +01:00
Peter Steinberger
3731a7c8f2 fix(macos): retry talk tts via gateway 2026-04-25 04:09:43 +01:00
Val Alexander
245451b6a9 fix(whatsapp): keep QR login state in sync
Keep WhatsApp QR login state synced across gateway, macOS, and UI wait flows.

- Preserve the latest QR data URL/version while login polling rotates codes.
- Keep the wait-result protocol bounded to current QR metadata.
- Stabilize QR rendering and media fixture coverage after rebasing on main.

Validation:
- pnpm test extensions/whatsapp/src/login-qr.test.ts extensions/whatsapp/src/media.test.ts extensions/whatsapp/src/agent-tools-login.test.ts src/gateway/protocol/channels.schema.test.ts src/gateway/server-methods/web.start.test.ts ui/src/ui/controllers/channels.test.ts
- pnpm test:extension whatsapp
- cd apps/macos && swift test --filter ChannelsSettingsSmokeTests
- GitHub PR checks: 62 success, 5 skipped
2026-04-24 15:37:16 -05:00
Peter Steinberger
a290e91b12 style: fix macos app lint warnings 2026-04-20 14:17:25 +01:00
Devin Robison
503b748a8e fix(exec-approvals): escape control characters in display sanitizers (#68198)
* fix(exec-approvals): escape control characters in display sanitizers

* docs(changelog): add exec approval control-char display sanitizer entry

* fix(exec-approvals): redact before escape, cover U+2028/U+2029 in display sanitizers

* fix(exec-approvals): strip invisibles before redaction and align forwarder test

* fix(exec-approvals): cover Zs bypass and preserve multi-line context on obfuscated secrets

* fix(exec-approvals): compare redaction outputs by content, not length

* fix(exec-approvals): suppress raw command on bypass; cover non-ASCII Zs in macOS sanitizer

* fix(exec-approvals): use position-bitmap bypass detection and bound input size

* style(exec-approvals): satisfy oxlint no-new-array-single-argument and SwiftFormat

* fix(exec-approvals): iterate by code point and redact before truncating
2026-04-17 15:59:08 -06:00
Devin Robison
114b87caf2 fix(macos): require trusted SSH host keys (#68199)
* fix(macos): require trusted SSH host keys

* chore(changelog): add macOS SSH strict host-key entry
2026-04-17 11:11:10 -06:00
Val Alexander
f377db1015 feat: add macOS screen snapshots for monitor preview (#67954) thanks @BunsDev
Co-authored-by: Val Alexander <68980965+BunsDev@users.noreply.github.com>
2026-04-17 02:58:21 -05:00
Luke
7c72b694f1 macOS: add MLX Talk provider MVP (#63539)
Merged via squash.

Prepared head SHA: da43563513
Co-authored-by: ImLukeF <92253590+ImLukeF@users.noreply.github.com>
Co-authored-by: ImLukeF <92253590+ImLukeF@users.noreply.github.com>
Reviewed-by: @ImLukeF
2026-04-09 17:13:34 +10:00
Peter Steinberger
0fbaef799f fix(macos): stabilize shell timeouts and command resolution tests 2026-04-09 03:52:59 +01:00
oliviareid-svg
089423bbaa fix(macos): strip commit hash from CLI version output (#61111)
Merged via squash.

Prepared head SHA: 6478de0b4e
Co-authored-by: oliviareid-svg <269669958+oliviareid-svg@users.noreply.github.com>
Co-authored-by: ImLukeF <92253590+ImLukeF@users.noreply.github.com>
Reviewed-by: @ImLukeF
2026-04-06 22:10:40 +10:00
Jacob Tomlinson
a23c33a681 macOS: use MagicDNS for wide-area gateway discovery (#57833)
* macOS: use MagicDNS for wide-area gateway discovery

Co-authored-by: nexrin <268879349+nexrin@users.noreply.github.com>

* macOS: tighten wide-area discovery review follow-ups

---------

Co-authored-by: nexrin <268879349+nexrin@users.noreply.github.com>
2026-03-31 10:04:11 +01:00
Peter Steinberger
92fb0caf35 fix: harden mac gateway attach smoke 2026-03-29 00:35:40 +00:00
Peter Steinberger
5efed49208 fix: keep mac local gateway attached 2026-03-29 00:28:32 +00:00
Peter Steinberger
4900890626 test: align macOS config audit expectations 2026-03-28 04:53:02 +00:00
Peter Steinberger
c5c9640374 fix: harden config write auditing 2026-03-28 03:54:54 +00:00
ImLukeF
6c9126ec19 macOS: test gateway version normalization 2026-03-28 12:05:34 +11:00
huohua-dev
8545cbd358 fix(macos): strip "OpenClaw " prefix before parsing gateway version
`openclaw --version` outputs "OpenClaw 2026.x.y-z" but
readGatewayVersion() passed the full string to Semver.parse(),
which failed on the "OpenClaw " prefix. This caused the app to
fall back to reading package.json from a local source checkout
(~/Projects/openclaw), reporting a false version mismatch.

Strip the product name prefix before parsing so the installed
CLI version is correctly recognized.
2026-03-28 12:05:33 +11:00
Seungwoo hong
138a92373b fix(talk): prevent double TTS playback when system voice times out (#53511)
Merged via squash.

Prepared head SHA: 864d556fa6
Co-authored-by: hongsw <1100974+hongsw@users.noreply.github.com>
Co-authored-by: grp06 <1573959+grp06@users.noreply.github.com>
Reviewed-by: @grp06
2026-03-26 15:37:40 -07:00
Peter Steinberger
b19cc399b6 test: fix clobbered config snapshot expectation 2026-03-25 04:54:37 -07:00
Peter Steinberger
5ab3782215 fix: add config clobber forensics 2026-03-24 04:50:30 +00:00
Peter Steinberger
4d50084c6e fix(exec): escape invisible approval filler chars 2026-03-22 22:52:14 -07:00
Peter Steinberger
a94ec3b79b fix(security): harden exec approval boundaries 2026-03-22 09:35:25 -07:00
Josh Avant
7abfff756d Exec: harden host env override handling across gateway and node (#51207)
* Exec: harden host env override enforcement and fail closed

* Node host: enforce env override diagnostics before shell filtering

* Env overrides: align Windows key handling and mac node rejection
2026-03-20 15:44:15 -05:00
Nimrod Gutman
c4a4050ce4 fix(macos): align exec command parity (#50386)
* fix(macos): align exec command parity

* fix(macos): address exec review follow-ups
2026-03-19 13:51:17 +02:00
Brian Ernesto
ab1da26f4d fix(macos): show sessions after controls in tray menu (#38079)
* fix(macos): show sessions after controls in tray menu

When many sessions are active, the injected session rows push the
toggles, action buttons, and settings items off-screen, requiring
a scroll to reach them.

Change findInsertIndex and findNodesInsertIndex to anchor just before
the separator above 'Settings…' instead of before 'Send Heartbeats'.
This ensures the controls section is always immediately visible on
menu open, with sessions appearing below.

* refactor: extract findAnchoredInsertIndex to eliminate duplication

findInsertIndex and findNodesInsertIndex shared identical logic.
Extract into a single private helper so any future anchor change
(e.g. Settings item title) only needs one edit.

* macOS: use structural tray menu anchor

---------

Co-authored-by: Brian Ernesto <bernesto@users.noreply.github.com>
Co-authored-by: ImLukeF <92253590+ImLukeF@users.noreply.github.com>
2026-03-18 11:29:11 +11:00