Peter Steinberger
8e398d9591
fix(macos): prevent app-owned child processes surviving shutdown ( #123538 )
...
* fix(macos): reap app-owned child process groups
macOS-owned SSH, Codex, and node-host descendants no longer survive terminal shutdown. Codex retains EOF-first graceful exit before bounded process-group termination and reaping.
* fix(macos): correct managed cleanup wake binding
* fix(macos): preserve Codex shutdown escalation
Keep the app-owned EOF grace window while allowing abortive requests to interrupt it before process-group TERM and KILL.
2026-08-14 01:09:32 -07: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
Peter Steinberger
4d27b5b67e
refactor(macos): move PortGuardian state to SQLite ( #110527 )
...
* refactor: compose native SQLite bootstrap tables
* refactor: share native SQLite state bootstrap
* refactor(macos): move PortGuardian state to SQLite
* test: align PortGuardian future-schema fixture
* fix(macos): reserve PortGuardian ledger across tunnel spawn
* fix(ci): align PortGuardian migration gates
* fix(macos): tolerate vanished SQLite sidecars
* fix(macos): revalidate PortGuardian writes
* test(macos): use sqlite identity bootstrap
2026-07-18 18:15:17 +01:00
Peter Steinberger
96f0983a85
fix(onboarding): skip setup for configured gateways and require inference first ( #102883 )
...
* fix(crestodian): keep onboarding RPCs restart-safe
* fix(profiles): isolate approval state migrations
* fix(crestodian): bypass configured gateway setup
* test(crestodian): type onboarding mocks
* fix(onboarding): require inference before Crestodian
* fix(onboarding): enforce verified inference handoff
* fix(macos): reset setup on gateway endpoint edits
* chore(i18n): refresh native source inventory
* fix(gateway): keep socket on request cancellation
* test(packaging): require workspace templates
* fix(onboarding): bind setup to verified inference
* fix(onboarding): align inference gate contracts
* fix(crestodian): classify concurrent policy rejection
* test(crestodian): expect registry restoration
* fix(onboarding): bind setup to configured gateways
* fix(codex): preserve startup phase deadlines
* test(crestodian): match fail-closed policy ordering
* test(onboarding): assert bound gateway handoff
* fix(codex): bind runtime resolution to spawn cwd
* test(crestodian): assert policy rejection order
* fix(cli): preserve gateway routing across restarts
* fix(macos): fail closed during gateway edits
* test(macos): cover gateway route generation races
* chore: keep release notes out of onboarding PR
* fix(ci): refresh onboarding generated checks
* style(swift): align gateway channel formatting
* fix(ci): refresh plugin SDK surface budgets
* fix(ci): resync native string inventory
* refactor(swift): split gateway channel support
* test(doctor): isolate plugin compatibility registry
* test(macos): isolate gateway onboarding fixtures
* test(macos): assert gateway lease health ordering
* fix(codex): reconcile computer-use startup changes
2026-07-11 10:25:14 -07:00
Peter Steinberger
091584b197
chore(swift): restore compact conditional bodies ( #103832 )
...
* style(swift): restore compact conditional bodies
* fix(ios): remove redundant startup timeout await
* chore(swift): sync native i18n inventory
2026-07-10 18:12:00 +01:00
Peter Steinberger
62bd760c0e
chore(swift): enforce current formatting and lint rules ( #103313 )
...
* style: apply SwiftFormat 0.62.1 rules
Refs #103202
* ci: enforce deterministic Swift lint
Refs #103202
* refactor: keep gateway connect lint-clean
Refs #103202
* style: keep iOS typography checks warning-free
* ci: route MLX Swift changes through pre-push
* fix: preserve native i18n extraction after Swift cleanup
* refactor: keep rebased Swift surfaces lint-clean
* style: format latest Swift additions
* chore: refresh native i18n inventory
* style: keep generated Swift formatter-clean
* fix: preserve node route invalidation callbacks
* fix: keep native translation IDs stable
* fix: retain native translation identifiers
* fix: preserve translations across Swift source moves
2026-07-10 11:54:08 +01:00
Peter Steinberger
1256aa0a47
refactor(macos): lock and unify PortGuardian tunnel record persistence so concurrent app instances cannot lose orphan records ( #100601 )
...
* refactor(macos): single locked write path and per-instance ownership for PortGuardian tunnel records
* chore(i18n): sync native app string inventory for PortGuardian refactor
* chore(i18n): sync native app string inventory for PortGuardian refactor
2026-07-06 07:43:45 +01:00
Peter Steinberger
d537139521
feat(macos): adopt the shared read-only chat transcript cache ( #100275 )
...
* feat(macos): adopt shared read-only chat transcript cache
Cache-first cold open for the macOS chat window/panel: the last known
transcript and session list paint immediately from the shared SQLite
transcript cache, then live gateway history replaces them wholesale.
Recent chats stay browsable read-only while the gateway is unreachable;
sending remains gated by connection state.
- Wires OpenClawChatSQLiteTranscriptCache into WebChatSwiftUIWindowController;
DB at ~/Library/Application Support/OpenClaw/chat-cache.sqlite.
- Gateway identity (MacChatTranscriptCache.gatewayID), derivable offline:
local keys on the canonical gateway state dir; remote/direct keys on the
full canonical URL (scheme, host, resolved port, percent-encoded
path/query); remote/ssh keys on the SSH target plus the resolved remote
gateway port, mirroring the tunnel port resolution. Unconfigured mode
gets no cache.
- macOS file protection: no per-file Data Protection classes; iOS-only
attribute stays gated behind #if os(iOS) in the shared store, and the
per-user container plus FileVault protect at rest.
- Onboarding chat stays uncached (transient guided setup session).
Part of #100194
* feat(macos): wire the offline command outbox into chat windows
* style(macos): fix orphaned doc comment; regenerate docs map
* style(macos): doc-comment lint fix; regenerate docs map on current main
2026-07-06 05:57:16 +01:00
Peter Steinberger
4a5bdc6ae3
fix(macos): orphaned SSH tunnels from crashed app instances keep running and squat the preferred local port ( #100489 )
...
* fix(macos): reap orphaned SSH tunnels that survive app crashes and squat the preferred local port
* chore(i18n): sync native app string inventory for PortGuardian changes
2026-07-06 02:53:33 +01:00
Peter Steinberger
c64a306f90
fix(macos): preserve PATH for SSH helpers ( #100214 )
2026-07-05 00:45:08 -07:00
Peter Steinberger
af420dbee5
fix(macos): remote mode fails with managed SSH aliases ( #99661 )
...
* fix(macos): support managed SSH aliases safely
* test(macos): serialize gateway state isolation
2026-07-03 15:19:01 -07:00
Peter Steinberger
29653e4106
fix: harden Mac gateway transport selection
2026-05-18 04:06:17 +01:00
Peter Steinberger
5b383af736
feat: add native mac dashboard window
2026-05-16 23:49:18 +01:00
Peter Steinberger
b277eac656
fix: pin macos ssh remote url to loopback
2026-04-26 05:01:25 +01: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
Peter Steinberger
cf67e374c0
refactor(macos): dedupe UI, pairing, and runtime helpers
2026-03-02 11:32:20 +00:00
Peter Steinberger
9a7160786a
refactor: rename to openclaw
2026-01-30 03:16:21 +01:00