Commit Graph

2145 Commits

Author SHA1 Message Date
Peter Steinberger
a914fcd1f7 fix(mac): hide duplicate Gateway in dashboard picker over SSH (#115963)
* fix(mac): dedupe active SSH gateway profile

* fix(mac): dedupe gateway before tunnel readiness

* chore(mac): defer release note to release process
2026-07-29 12:27:32 -04:00
Vincent Koc
e94693aa52 fix(macos): enable keyboard navigation in web views 2026-07-29 22:59:39 +08:00
Peter Steinberger
afae681085 feat(apple): add inline media players (#115903) 2026-07-29 10:36:38 -04:00
Vincent Koc
0686676ebd perf(macos): reduce onboarding mascot redraw cadence (#115896) 2026-07-29 21:50:05 +08:00
Vincent Koc
592f81ca33 fix(macos): eliminate subprocess polling for SSH tunnel readiness (#115846)
* fix(macos): inspect tunnel listener sockets in process

* test(macos): cover exact process listener inspection

* fix(macos): scan listeners to the child fd limit

* refactor(macos): normalize libproc byte counts

* chore(macos): keep release notes in the PR
2026-07-29 21:48:52 +08:00
Vincent Koc
1c3e669f30 fix(macos): bound SSH tunnel teardown (#115861)
* fix(macos): bound SSH tunnel teardown

* test(macos): cover resistant tunnel process groups

* fix(macos): escalate surviving tunnel process groups

* chore(i18n): refresh macOS tunnel source offsets

* chore(macos): keep release notes in the PR

* refactor(macos): own SSH tunnel process lifecycle

* test(macos): stress tunnel teardown lifecycle

* fix(macos): unpublish tunnels before async teardown

* chore(i18n): refresh macOS tunnel source offsets

* test(macos): remove unused tunnel process accessor

* fix(macos): preserve tunnel launch diagnostics

* test(macos): cover tunnel launch failures

* chore(i18n): refresh tunnel diagnostic offsets
2026-07-29 21:47:25 +08:00
Vincent Koc
7d00787e20 fix(macos): skip unchanged config forensics (#115886)
* perf(macos): skip unchanged config forensics

* test(macos): cover config forensic read caching

* test(macos): make config metadata changes deterministic
2026-07-29 21:42:36 +08:00
Vincent Koc
cba59e4674 fix(macos): prevent remote discovery hangs during Tailscale checks (#115852)
* fix(macos): bound discovery subprocess execution

* refactor(macos): migrate tailscale discovery runner

* refactor(macos): make wide-area discovery asynchronous

* test(macos): prove discovery subprocess cleanup

* chore(macos): keep release notes in the PR
2026-07-29 21:38:57 +08:00
Vincent Koc
6e046daf82 fix(macos): reap timed-out shell process groups (#115859)
* fix(macos): reap timed-out shell process groups

* test(macos): cover shell timeout process cleanup

* fix(macos): finish timeout process-group escalation

* fix(macos): preserve inherited shell input

* chore(macos): keep release notes in the PR
2026-07-29 20:28:16 +08:00
Peter Steinberger
e8524a5839 feat: add Fish Audio S2.1 and local MLX speech (#115790)
* feat: add Fish Audio speech support

* chore: remove unused speech exports

* chore: keep Fish API constant private

* test: remove stale code mode import

* style: use bracket access for Fish voice ids

* test: restore QA evidence validator import
2026-07-29 05:15:33 -04:00
Peter Steinberger
138675aeeb feat(apps): render collapsible details natively (#115641)
* feat(apps): render collapsible details natively in chat

* fix(apps): preserve reference definitions when folding disclosures

* fix(apps): keep authored details summaries unlocalized

* fix(apps): keep raw-HTML disclosure examples literal

* refactor(apps): isolate summaries and raw HTML contexts

* fix(apps): honor all CommonMark raw HTML contexts in disclosures

* chore(apps): refresh native i18n inventory for disclosure strings
2026-07-29 02:52:54 -04:00
Vincent Koc
5ecd5f45db chore(i18n): refresh native locales (#115608) 2026-07-29 13:59:04 +08:00
Peter Steinberger
26bfa88bb2 fix: restore native Talk transcripts, fallback, and microphone access (#115577)
* fix(ios): decode frameless Talk events

* fix(android): keep browser-only Talk models native

* fix(macos): gate dashboard media capture

* docs(talk): clarify native platform fallbacks

* chore(i18n): refresh native source inventory

* fix(android): gate relay entry on provider-level browser-only models too
2026-07-29 01:55:47 -04:00
Vincent Koc
c0a472f0b2 chore(i18n): refresh native locales (#115532) 2026-07-29 13:11:40 +08:00
Peter Steinberger
1d57a4989b fix(mac): stop repeated exec approvals migration retries (#115502)
* fix(mac): classify exec-approvals migration errors and stop retry storm

* fix(mac): refresh native i18n inventory
2026-07-29 01:09:22 -04:00
Peter Steinberger
5d1311c19e test(macos): block real process fallthrough (#113337)
* test(macos): block real process fallthrough

* test(macos): cover SwiftPM helper executable paths

Co-authored-by: Peter Steinberger <steipete@gmail.com>

* test(macos): avoid process-age timing assumption

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-28 13:21:10 -04:00
Peter Steinberger
5c6bccff4a feat(macos): enable Computer Control by default and diagnose stale Accessibility grants (#115280)
* feat(macos): enable and diagnose computer control

* docs(macos): explain computer control permissions

* chore: refresh macOS i18n and docs indexes

* test: update macOS computer control i18n fixture
2026-07-28 13:00:32 -04:00
Vincent Koc
289c8ff992 fix(apple): localize gateway discovery status 2026-07-28 23:48:57 +08:00
dongdong
84555934f6 fix: preserve OpenClaw profile env in macOS launch-at-login plist (#99752)
* fix(macos): preserve profile env in launch-at-login plist

* fix(macos): preserve login profile environment

Co-authored-by: Jasmine Zhang <jasminezhang@JasminedeMac-mini.local>

* test(macos): isolate launch agent PATH coverage

Co-authored-by: Jasmine Zhang <jasminezhang@JasminedeMac-mini.local>

---------

Co-authored-by: Jasmine Zhang <jasminezhang@JasminedeMac-mini.local>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-28 11:32:42 -04:00
Bryan Tegomoh, MD, MPH
15866acef5 Refresh macOS skills after node reconnect (#107660)
* Refresh macOS skills after node reconnect

* fix(macos): queue skills refresh during reconnect

* chore(i18n): refresh native skills inventory

* fix(macos): refresh skills from gateway invalidations

Co-authored-by: Bryan Tegomoh <bryan.tegomoh@gmail.com>

* fix(android): update gateway event catalog

Co-authored-by: Bryan Tegomoh <bryan.tegomoh@gmail.com>

* refactor(skills): keep remote eligibility helper bounded

Co-authored-by: Bryan Tegomoh <bryan.tegomoh@gmail.com>

* ci(test): pin model shard worker budget

Co-authored-by: Bryan Tegomoh <bryan.tegomoh@gmail.com>

* ci(test): isolate network-sensitive agent suites

Co-authored-by: Bryan Tegomoh <bryan.tegomoh@gmail.com>

* test: align isolated prefix routing expectation

Co-authored-by: Bryan Tegomoh <bryan.tegomoh@gmail.com>

* test(macos): isolate gateway process test port

Co-authored-by: Bryan Tegomoh <bryan.tegomoh@gmail.com>

* fix(macos): recover skills after failed refresh

Co-authored-by: Bryan Tegomoh <bryan.tegomoh@gmail.com>

* fix(ci): avoid duplicate agent test routing

Co-authored-by: Bryan Tegomoh <bryan.tegomoh@gmail.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-28 09:10:45 -04:00
Peter Steinberger
4b05d83035 fix: generated images do not appear in native chat (#115042)
* fix(chat): render managed images in native clients

Co-authored-by: Francesco Giannicola <francescogiannicola1@gmail.com>

* chore: keep release changelog owned

* refactor(macos): split managed image loading

* test(apple): prove managed image header policy

* test(native): stabilize managed image proof

* test(apple): satisfy strict concurrency checks

---------

Co-authored-by: Francesco Giannicola <francescogiannicola1@gmail.com>
2026-07-28 04:39:53 -04:00
Nick
5d4ff17d7d fix: macOS reports CLI-only Tailscale as not installed (#114179)
* fix(macos): detect CLI-only Tailscale

* fix(macos): distinguish Tailscale app and CLI installs

Co-authored-by: Nick <18488428+nickxma@users.noreply.github.com>

* chore(macos): refresh native i18n inventory

* test(pr): provide rg in artifact fixture

* fix(macos): gate Tailscale interface evidence

* chore(pr): drop superseded fixture shim

* chore(macos): realign native i18n inventory

* refactor(macos): keep Tailscale status guidance generic

---------

Co-authored-by: Nick <18488428+nickxma@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-28 04:00:18 -04:00
Peter Steinberger
86e92486aa fix(macos): stop replacement handoff retry storms (#114975)
* fix(macos): bound app replacement handoffs

* chore: leave release notes to release flow

* chore(macos): refresh native i18n inventory

* chore(apps): sync native i18n inventory

* fix(macos): revalidate terminal replacement target
2026-07-28 03:21:25 -04:00
Peter Steinberger
2ed2e46763 fix(mac): cache gateway profile registry and isolate dev keychain items (#114956) 2026-07-28 02:36:25 -04:00
Peter Steinberger
4b59f06d27 fix(mac): bound node worker crash retries (#114974) 2026-07-28 02:22:27 -04:00
Peter Steinberger
01f6ad67d5 chore(i18n): refresh native locale catalogs (#114915)
* chore(i18n): refresh native locale catalogs

* chore(i18n): sync native translation artifacts
2026-07-28 00:42:59 -04:00
Yiğit ERDOĞAN
dae1817a17 fix: block CXXCPP host env override (#112684)
CPP was added to blockedEverywhereKeys in #112560, but its Autoconf twin
CXXCPP was not. Autoconf defines the preprocessor selectors as a pair —
AC_PROG_CPP sets CPP, AC_PROG_CXXCPP sets CXXCPP — and this list already
carries the compiler pair CC/CXX for the same reason.

Measured on current main: CC, CXX and CPP all report dangerous, while
CXXCPP lands in no category at all (blockedPrefixes is only DYLD_, LD_
and BASH_FUNC_, so no prefix rule covers it either).
2026-07-27 23:58:41 -04:00
haruai
b168e4b5ed fix: align macos remote url validation copy (#98548)
* fix: align macos remote url validation copy

* fix(macos): match remote URL guidance to policy

Co-authored-by: haruaiclone-droid <281899875+haruaiclone-droid@users.noreply.github.com>

* chore(i18n): refresh native source inventory

Co-authored-by: haruaiclone-droid <281899875+haruaiclone-droid@users.noreply.github.com>

---------

Co-authored-by: haruaiclone-droid <281899875+haruaiclone-droid@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-27 23:18:41 -04:00
Peter Steinberger
981b4cc3fe fix(mac): redesign onboarding remote-gateway detail section (#114494)
* fix(mac): redesign onboarding remote-gateway detail section

* chore(i18n): refresh native inventory for onboarding redesign
2026-07-27 06:36:02 -04:00
Peter Steinberger
5a8db91459 fix(macos): keep polling gateway-executed wizard steps (#114383)
* fix(macos): keep polling gateway-executed wizard steps

* docs(ui): note the prebuilt control-UI bundle in live verification

* test(macos): fail fast when gateway progress polling stalls

* chore(i18n): refresh native source inventory anchors
2026-07-27 04:33:09 -04:00
Peter Steinberger
9eae43bd37 refactor(infra): move exec approvals into the shared SQLite state DB (#114063)
* refactor(infra): move exec approvals into the shared SQLite state DB

Delete the file-runtime exec-approvals store (exec-approvals.json + .lock
sidecar machinery) on both runtimes and make the reserved
exec_approvals_config singleton row canonical. Doctor owns the one-time
import with claim/verify/receipt discipline; runtime fails closed with a
doctor instruction while un-migrated legacy state exists. The wire CAS
contract, socket semantics, and gateway auth-token derivations are
unchanged. Kills the #113929 lock-contention bug class structurally and
nets around -2.9k lines.

* fix(infra): green CI gates and retire file-era exec approvals tests

Break the migration-type import cycle with a leaf contract, regenerate the
plugin-SDK API and native i18n baselines for the intentional surface change,
drop unused exports, and replace the macOS file-era approvals test suite with
SQLite-backed behavior coverage per the obsolete-internals test policy.

* chore: green max-lines ratchet, native i18n baseline, and unused-export scan
2026-07-26 06:39:23 -04:00
Peter Steinberger
f0b7542a22 feat(mac): gateway menu-bar surfaces and Gateways main menu (#114038)
* feat(mac): add gateway menu surfaces

* docs(mac): document gateway menu surfaces

* test(mac): make dashboard frame assertions display-independent
2026-07-26 02:13:13 -04:00
Peter Steinberger
adfb59c19b feat(mac): dashboard gateway picker with in-place switching (#113965)
* feat(mac): add dashboard gateway switching

* feat(ui): add dashboard gateway picker

* docs(mac): document dashboard gateway picker

* fix(mac): harden gateway switching after review

* fix(ui): refresh gateway picker snapshots

* fix(mac): carry TLS pins through promotion and serialize gateway switches

* style(ui): satisfy lint rules in gateway picker files

* fix(ui): tolerate absent context in gateway picker pane props

* chore(ci): refresh generated inventories

* style(mac): satisfy Swift CI checks

* refactor(mac): drop dead GatewayEndpointStore.requireConfig

* perf(ui): own gateway capability in the chat chunk

* chore(ui): keep gateway capability factory module-private
2026-07-25 20:57:28 -07:00
Peter Steinberger
af44cb1a72 feat(native): show Swarm progress in chat (#113850)
* feat(native): show swarm progress

* fix(native): align swarm progress lifecycle

* chore(native): shorten swarm progress source name

* style(macos): pad swarm progress surfaces

* chore(native): use compact swarm source name

* fix(native): harden swarm route ownership

* fix(native): preserve swarm render ownership

* chore(i18n): refresh native swarm inventory

* fix(native): bound swarm refresh ownership

* fix(native): remove unused swarm capability initializer
2026-07-25 15:11:19 -07:00
openclaw-mantis[bot]
92e404176b chore(i18n): refresh native locales (#113493)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-25 20:33:38 +08:00
Peter Steinberger
7e80f36723 fix(apps): restore live session updates after native reconnects (#113634)
* fix(apps): replay session visibility across native reconnects

* fix(apps): refresh shifted native i18n source lines

---------

Co-authored-by: Peter Steinberger <steipete@golden-gate.local>
2026-07-25 04:58:41 -07:00
Peter Steinberger
c30c07071f feat(setup): download-model actions on web and macOS onboarding (#113476)
* feat: add local model download setup actions

* chore(i18n): refresh native source inventory

* fix(setup): satisfy model setup lint checks
2026-07-24 20:52:58 -07:00
Pavan Kumar Gondhi
1fc81c2054 fix: reusable exec approvals apply to approved arguments (#112946)
* fix: bind allow-always exec approvals to argv

* test: update exec approval persistence expectations

* fix: hash reusable exec approval arguments

* test: pin POSIX exec approval hash expectation

* fix: match hashed exec approvals in macOS

* fix: encode exec approval argv hashes unambiguously

* fix: bind native exec approval grants to argv

* test: expect hashed exec approval patterns

* fix: ignore legacy broad exec approval grants

* fix: hash shell script allow-always grants

* fix: require argv binding for package manager grants

* fix: bind positional carrier approval grants

* fix: address approval check failures

* fix: format approval policy test

* fix: reject context-changing package manager grants

* fix: keep build-enabled pnpm dlx grants one-shot

* fix: reject npm exec context grants

* fix: catch npm exec tail context options

* fix: block npm package context approvals

* fix: block leading pnpm dlx context grants

* fix: restrict durable positional carrier grants

* docs: clarify generated exec approvals

* fix: block post-dlx pnpm context grants
2026-07-24 15:38:38 +05:30
Pavan Kumar Gondhi
ab2ad22533 fix: block cpp host env overrides (#112560) 2026-07-22 19:54:24 +05:30
Peter Steinberger
9f501c77a6 fix(macos): migrate legacy Gateway profiles (#112629) 2026-07-22 05:08:45 -07:00
Peter Steinberger
62a6dfb082 fix(macos): direct Gateway TLS pins protect operator traffic (#112353)
* fix(macos): enforce direct Gateway TLS pins

* fix(macos): preserve existing TLS pin owner keys

* fix(macos): reuse localized TLS error labels

* test(macos): avoid nested Swift Testing require

* test(macos): isolate TLS Keychain tests

* test(macos): isolate TLS integration Keychain

* chore(i18n): update native source inventory
2026-07-22 03:38:10 -07:00
Peter Steinberger
88bf2d3350 test(macos): isolate flaky gateway and worker tests (#112563) 2026-07-22 00:37:58 -07:00
Peter Steinberger
9231bcb38f fix(macos): keep permissions reachable on short screens (#112507)
* fix(macos): keep permissions reachable on short screens

* fix(macos): preserve onboarding i18n inventory
2026-07-21 21:53:07 -07:00
github-actions[bot]
a8537805bd chore(i18n): refresh native locales 2026-07-22 10:22:42 +08:00
Peter Steinberger
c84921634d fix(macos): require explicit consent for privacy-sensitive access (#112321)
* fix(macos): avoid passive Automation prompts

* fix(macos): keep Voice Wake recognition on device

* fix(macos): require consent for activity presence

* chore(apps): refresh native i18n inventory

* fix(macos): preserve presence clears across gateway versions

* fix(macos): prioritize activity privacy opt-out

* chore(apps): refresh native i18n inventory

* fix(macos): scrub legacy presence activity

* fix(macos): migrate permission status caller

* fix(macos): preserve unknown permission state

* fix(macos): refresh privacy change artifacts

* refactor(macos): remove stale presence helper

* fix(deps): patch URI and Jaeger advisories

* test(gateway): adopt pairing-bound node sessions
2026-07-21 15:28:13 -07:00
Jason (Json)
35e058711d fix(macos): reuse gateway with path advisory (#112381) 2026-07-21 15:17:47 -06:00
Peter Steinberger
bd03b4d658 fix(i18n): regenerate native locale artifacts after Android inventory drift 2026-07-21 14:15:31 -07:00
Peter Steinberger
8f31892b55 feat(apps): native session branch switcher with branch-safe durable outbox (#112056)
Branch menu (list/switch) for macOS+iOS shared chat via sessions.branches.*;
rewind/fork/switch gated on run activity and pending outbox work through a
durable session-mutation lease; outbox rows carry branch-epoch ownership with
local-only flush checks, atomic confirm/park transitions, attempt-versioned
delivery callbacks, fresh retry identity for possibly-accepted rows, and
epoch-guarded branch evidence; 21-locale native translations for new strings.
2026-07-21 10:59:44 -07:00
Peter Steinberger
3a1351a303 fix(cron): show script automations across user clients (#112195)
* fix(cron): preserve script jobs across clients

* chore(i18n): refresh native cron strings

* chore(i18n): align rebased native catalogs

* chore(i18n): defer generated locale refresh
2026-07-21 08:02:59 -07:00
Papilionidae
3dfb4c9cd7 fix(anthropic): accept "cli" entrypoint in Claude session catalog discovery (#105162)
* fix(anthropic): accept "cli" entrypoint in Claude session catalog discovery

Claude Code v2.x writes entrypoint: "cli" in its JSONL session files.
Previously only "sdk-cli" was recognized, causing all v2.x sessions to
be silently skipped.

Extract CLI_ENTRYPOINTS set and isCliEntrypoint() helper, then apply
the same fix to both TypeScript catalog and macOS paired-node native
catalog. Add matching regression coverage on both platforms.

Closes #105164

* fix(anthropic): refresh Claude CLI session discovery

Apply the reviewed cli/sdk-cli allowlist, mirrored negative coverage, and fallback-scope documentation to current main.

Co-authored-by: 黄攀0668000858 <huang.pan@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-21 07:14:42 -07:00