Peter Steinberger
9ad59ae788
improve(macos): replace browser cookie-import modal with an inline dashboard banner ( #104591 )
...
* feat(macos): replace browser cookie-import modal with dashboard banner
* fix(macos): cross-browser menu identity, banner pane ownership, docs map
* chore: refresh native i18n inventory
* fix(macos): stale import status polls no longer clobber fresher banner state
* fix(macos): generation-guard stale import polls; drop dashboard-show poll trigger
* fix(macos): session-sticky dismissal and localized banner copy
2026-07-11 11:11:42 -07: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
c3b426f280
feat: add Claude session fleet ( #104528 )
...
* feat: add Claude session fleet
* chore: leave release notes to release automation
* chore: refresh generated catalogs
* fix: satisfy session catalog lint gates
2026-07-11 08:22:59 -07:00
Peter Steinberger
05aecc1d6f
feat: show Codex transcripts in the sidebar ( #104437 )
...
* feat: show Codex transcripts in sidebar
* fix: clear Codex sidebar on Gateway switch
* chore: leave release notes to release workflow
* chore: refresh native i18n inventory
* fix: satisfy macOS Codex node lint
* fix: refresh native localization inventory
* docs: refresh documentation map
* chore: refresh UI locale metadata
2026-07-11 05:39:29 -07:00
Peter Steinberger
1d84acf2c3
test(macos): remove Swift warning and timing flake ( #104434 )
2026-07-11 04:30:35 -07:00
Peter Steinberger
df16372af3
fix(macos): host the dashboard sidebar toggle beside back/forward in the titlebar ( #104380 )
...
* fix(macos): host the dashboard sidebar toggle beside back/forward in the titlebar
The Control UI's floating sidebar-expand button rendered as a bordered web
control crowding the traffic lights in the dashboard window. The toggle now
lives as a native borderless button in the leading titlebar accessory ahead
of back/forward (Safari ordering) and bridges to the web UI via the
openclaw:native-toggle-sidebar event; the injected chrome script advertises
the capability with an openclaw-native-nav class so the web control retires
itself visually while staying keyboard/screen-reader reachable.
* docs: note the macOS app's native titlebar sidebar toggle in the Control UI guide
2026-07-11 03:19:33 -07:00
Peter Steinberger
518c5823d8
feat(macos): navigate dashboard history with Command brackets ( #104328 )
...
* feat(macos): add dashboard history shortcuts
* chore: leave release changelog to release flow
* chore(macos): sync native i18n inventory
* fix(macos): keep titlebar navigation on dashboard
2026-07-11 02:22:28 -07:00
Peter Steinberger
0ef9a62eaf
fix(codex): allow slower Mac session catalogs ( #104332 )
2026-07-11 02:05:55 -07:00
Peter Steinberger
88c563b241
fix: address update-card review findings (channel normalization, hidden-nav affordance, prerelease pinning, policy-aware bridge) ( #104316 )
...
* fix(mac): prerelease-exact launch resolution and policy-aware update ownership
* fix(ui): keep update affordance when nav is hidden and fall back on native decline
* chore(i18n): sync native inventory
2026-07-11 01:44:26 -07:00
Peter Steinberger
e0e67abfa9
fix: cancel expired macOS node approvals ( #104302 )
...
* fix: cancel expired macOS node approvals
* chore: keep node approval fix out of release notes
2026-07-11 01:25:36 -07:00
Peter Steinberger
20fe3f46db
fix: paired Mac Codex sessions finish loading ( #104299 )
...
* fix(codex): allow cold Mac session catalogs
* chore: keep release notes in PR body
2026-07-11 01:14:36 -07:00
Peter Steinberger
f9ebefba29
feat(macos): onboarding mascot reacts with moods, randomized idle behavior, and Easter eggs ( #104255 )
...
* feat(macos): mascot moods, randomized idle behavior, and onboarding Easter eggs
* feat(apps): opt About window and iOS hero marks into mascot Easter eggs
* chore(i18n): sync native app i18n inventory
2026-07-11 01:01:26 -07:00
Peter Steinberger
ebc848deec
feat: sidebar update card (web + macOS) with app-first mac update flow and Sparkle beta track ( #104171 )
...
* feat: sidebar update card (web + macOS) with app-first mac update flow and Sparkle beta track
Squashed from claude/update-notification-display-c6cfb9 after semantic merge
with #104178 (channel-aware CLI installs). See PR #104171 body for details.
* chore(i18n): resync generated inventories after rebase
* chore(i18n): resync locale metadata after rebase
2026-07-11 00:34:10 -07:00
Peter Steinberger
f94a7dc183
feat(codex): supervise native Codex sessions ( #104045 )
...
* feat(codex): add native session supervision
* fix(codex): harden supervision integration
* fix(codex): preserve locked harness ownership
* fix(codex): fence native session archive
* fix(codex): revalidate archive binding ownership
* feat(codex): integrate supervision runtime
* feat(sessions): preserve harness-owned execution
* feat(sessions): persist harness ownership invariants
* feat(gateway): enforce harness-owned sessions
* feat(setup): enable detected Codex supervision
* feat(mac): expose supervised Codex sessions
* feat(ui): make Codex sessions actionable
* docs(codex): document session supervision
* test(codex): cover integration ownership
* chore(i18n): refresh supervision inventories
* fix(setup): finalize Codex activation atomically
* test(codex): narrow binding store update
* fix(sessions): preserve legacy model locks
* test(macos): serialize Codex catalog fixtures
* fix(sessions): preserve legacy lock admission
* chore(i18n): reconcile supervision metadata
* test(sessions): mark legacy lock fixture
* fix(macos): drain final Codex catalog frame
* docs: leave supervision note to release
* style(macos): satisfy Codex catalog type length
* chore: record session accessor seam owners
* fix(macos): honor configured Codex supervision
* fix(codex): preserve harness-owned model locks
* fix(codex): satisfy supervision lint gates
* chore(i18n): refresh native supervision inventory
* fix(codex): align supervision validation contracts
* fix(codex): close supervision boundary gaps
* fix(codex): preserve supervision activation contracts
* fix(codex): dispose standalone supervision runtime
* fix(codex): pin supervised source connection
* fix(plugins): bind delegated runs to exact session target
* fix(codex): scope supervised sessions to configured agents
* fix(codex): fingerprint effective supervision home
* fix(codex): normalize supervision plugin policy
* fix(codex): keep supervised bindings stable across upgrades
* fix(codex): guard all supervised binding connections
* fix(codex): preserve catalog filters and pending CAS identity
* fix(codex): preserve supervision identity for diagnostics
* fix(codex): bind uncertain commits to supervision connection
* fix(codex): satisfy supervision type boundaries
* fix(macos): reconcile current main validation
* fix(codex): handle absent runtime config in supervision
* fix(doctor): own local audio acceleration check
* fix(codex): satisfy integration lint gates
* fix(codex): satisfy lifecycle safety guards
2026-07-11 00:12:08 -07:00
Vincent Koc
96b1be10f5
feat(macos): keep MLX TTS model resident ( #104200 )
...
* test(macos): cover MLX helper packaging
* feat(macos): define framed MLX TTS protocol
* feat(macos): keep MLX TTS model resident
* feat(macos): reuse MLX TTS helper transport
* fix(macos): preserve MLX TTS fallback lifecycle
* chore(swift): lint MLX TTS protocol sources
* fix(macos): keep MLX helper input nonblocking
* test(macos): cover forced MLX helper shutdown
* fix(macos): fall back after MLX memory eviction
* fix(macos): discard canceled MLX audio
2026-07-11 13:45:27 +08:00
Peter Steinberger
4b3d4020d3
fix(macos): offer CLI channels for unreleased builds ( #104178 )
...
* fix(macos): choose CLI channel for dev builds
* chore: leave release notes to automation
* chore(macos): sync native string inventory
* style(macos): wrap CLI channel guidance
* fix(macos): return CLI version policy
2026-07-10 22:27:57 -07:00
Peter Steinberger
9f53f8a256
feat(macos): import local browser login ( #104177 )
...
* feat(macos): import local browser login
* chore: leave release notes to release workflow
* chore(macos): refresh native i18n inventory
* chore(macos): refresh native i18n inventory
* chore(macos): refresh native i18n inventory
* chore: sync release summary executable bit
* chore(macos): refresh native i18n inventory
* style(macos): wrap browser import result
* chore(macos): refresh native i18n inventory
* chore(macos): refresh native i18n inventory
2026-07-10 22:14:36 -07:00
Peter Steinberger
b7156ce688
fix(macos): drag the window from split-view pane headers ( #104048 )
...
* fix(macos): drag the window from split-view pane headers
In the macOS app, split-screen pane header rows (session title strip) now
start a native window drag instead of selecting the title text. The Control
UI posts an openclawWindowDrag script message on mousedown over passive
header chrome; the dashboard window validates the trusted main-frame source
and the in-flight left-mouse press before calling NSWindow.performDrag.
Pane headers are chrome, so they are also no longer text-selectable.
* refactor(macos): move the dashboard failure page out of the window controller
SwiftLint type_body_length: the drag-message handler pushed
DashboardWindowController past 800 lines; the failure-page HTML is
presentation-only and now lives in DashboardFailurePage.
2026-07-10 19:07:04 -07:00
Peter Steinberger
b29fe954f1
fix(macos): start existing CLI gateway during onboarding ( #104051 )
...
* fix(macos): start detected CLI gateway during onboarding
* chore(macos): refresh native i18n inventory
2026-07-10 19:02:51 -07:00
Peter Steinberger
425c5b9f26
fix(macos): reject revoked forwarded exec approvals ( #103968 )
...
* fix(macos): reject revoked forwarded exec approvals
* fix(macos): split approval plan validation
* chore(i18n): refresh native source lines
2026-07-10 19:01:17 -07:00
Peter Steinberger
df067770d7
fix(mac): deflake exec-approvals socket guard test and create state dir with 0700 directly ( #104028 )
2026-07-10 18:07:35 -07:00
Peter Steinberger
249e6efe63
feat(mac): add bulk Approve All / Reject All to the pairing approval panel ( #104011 )
...
* feat(mac): add bulk Approve All / Reject All to the pairing approval panel
* fix(mac): resolve bulk pairing decisions against the rendered snapshot
2026-07-11 01:44:34 +01:00
Peter Steinberger
0120cacf9e
fix(macos): let onboarding use taller windows ( #104004 )
...
* fix(macos): make onboarding resize vertically
* chore(macos): refresh onboarding i18n inventory
* chore: leave changelog to release generation
2026-07-11 01:39:49 +01:00
Peter Steinberger
3ec2a50d6c
fix(exec): prevent revoked policy from authorizing delayed node runs ( #103950 )
...
* fix(cli): fail closed on exec policy rollback races
* refactor(cli): reuse canonical exec policy ordering
* fix(exec): bind delayed approvals to prepared policy
* fix(macos): revalidate delayed exec approvals
* fix(exec): align approval snapshot validation gates
2026-07-11 01:37:37 +01:00
Peter Steinberger
98902c790f
fix(macos): preserve launchd gateway during port sweep ( #103972 )
2026-07-10 23:46:30 +01:00
Peter Steinberger
a0354e5243
fix(onboarding): make fresh AI setup reliable and transparent ( #103962 )
...
* fix(onboarding): harden inference setup
* fix(mac): preserve setup request cancellation
* test(crestodian): align setup audit expectation
* test(crestodian): cover approval persistence warning
* fix(crestodian): preserve setup credentials and success
* chore(pr): leave changelog to release flow
* fix(onboarding): repair native CI gates
2026-07-10 23:44:53 +01:00
Peter Steinberger
d92d5774f5
fix(node): report Mac exec policy defaults ( #103945 )
2026-07-10 22:07:44 +01:00
Peter Steinberger
9b1c36d23c
fix: prevent exec approval revocation races ( #103515 )
...
* fix(security): serialize exec approval mutations
* fix(security): preserve additive approval writes
* test(cli): expect normalized approval shape
* fix(security): preserve exec approval compatibility
* test(security): exercise locked approval initialization
* test(security): mock serialized approval helpers
* test(exec): derive enforced command path from plan
* fix(gateway): always return approval CAS conflicts
* fix(macos): serialize exec approvals writes
* fix(security): repair approval build errors
* fix(security): serialize exec approval mutations
* fix(security): fail closed on approval persistence errors
* test(security): cover detached approval persistence failures
* fix(security): harden exec approval state
* style(macos): format exec approval sources
* fix(security): complete exec approval hardening
Co-authored-by: Coy Geek <65363919+coygeek@users.noreply.github.com >
* fix(macos): preserve approved login-shell semantics
* fix(macos): keep login shell approvals one-shot
* fix(security): linearize exec authorization
Co-authored-by: Coy Geek <65363919+coygeek@users.noreply.github.com >
* fix(security): preserve durable approval basis
Co-authored-by: Coy Geek <65363919+coygeek@users.noreply.github.com >
* fix(security): bind exec grants to current policy
Co-authored-by: Coy Geek <65363919+coygeek@users.noreply.github.com >
* test(security): fix exec revocation fixtures
* test(security): align gateway approval fixtures
* fix(macos): return approval decisions
* chore(i18n): sync native approval strings
* test(security): align approval hardening fixtures
* test(node): authorize completed event fixture
* test(security): fix approval decision fixtures
* test(security): await durable approval visibility
* fix(exec): preserve concurrent approval grants
* fix(exec): address exact-head CI failures
* fix(exec): preserve concurrent approval promotions
* fix(exec): make Swift shutdown state explicit
* test(macos): handle approval read failures
* fix(macos): harden approval socket paths
* fix(macos): preserve exact shell payload bytes
* test(macos): make approval fixtures explicit
* test(macos): fix approval suite compilation
* fix(macos): bound approval socket JSONL reads
* chore: move exec approval note to release process
* chore: move exec approval note to release process
---------
Co-authored-by: Coy Geek <65363919+coygeek@users.noreply.github.com >
2026-07-10 21:35:05 +01:00
Peter Steinberger
5a48e73973
fix(macos): duplicate launches open SSH tunnels before handoff ( #103892 )
...
* fix(macos): gate tunnels behind singleton launch
* chore(macos): leave changelog to release workflow
* chore(macos): sync native i18n inventory
2026-07-10 19:54:04 +01: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
d628e35574
fix(apple): prevent stale thinking after model switches and reconnects ( #103767 )
...
* fix(apple): prevent stale model thinking state
* test(apple): complete attachment transport fixture
* fix(apple): scope model patch ordering by route identity
* chore(apple): sync native CI metadata
2026-07-10 16:48:11 +01:00
NianJiu
067edbcb2d
fix(ios): make Talk audio lifecycle-safe ( #103072 )
...
* fix(ios): cancel queued push-to-talk invokes
* fix(ios): make push-to-talk cancellation lifecycle-safe
* style(ios): use switch expression for PTT result
* fix(ios): bind audio capture to lifecycle owners
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
* style(ios): format rebased lifecycle changes
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
* fix(ios): preserve routing hydration across reconnects
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
* fix(ios): cancel routing hydration on target switch
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
* chore(ios): refresh native i18n inventory
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
* fix(i18n): preserve native localization IDs
* chore: leave changelog to release automation
* refactor(apple): split lifecycle and gateway helpers
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
* fix(ios): make lifecycle parsing nonisolated
* fix(ios): consume canonical Talk events
---------
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-10 15:03:40 +01:00
Peter Steinberger
dff4c634f1
fix(macos): keep dashboard tab reuse and ordering accurate ( #103464 )
...
* fix(macos): preserve dashboard tab identity
* test(macos): strengthen dashboard tab regressions
* fix(macos): retire failed dashboard navigation aliases
2026-07-10 11:57:04 +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
6eb9a5ada2
test(macos): isolate config change notifications ( #103481 )
2026-07-10 11:47:26 +01:00
Peter Steinberger
9ecb2f3a84
feat(ui): restore sidebar chrome, delete the pane workspace strip, compact native narrow header ( #103561 )
...
* feat(ui): restore sidebar chrome and remove the pane workspace strip
Reverse course from #103426 on the app chrome: the left sidebar owns
brand, pinned navigation + More, New session, sessions, and the footer
(status dot, Settings, Docs, pairing, theme) again, and the desktop
topbar is gone. What stays from that PR: the dockable workspace rail
(right/bottom, drag or button), the in-flow split-pane headers, and
Cmd+B now hides the sidebar entirely (no 78px icon rail) with a
floating expand control.
The real target of the original request: the vertical icon strip at
each pane's right edge is deleted. A collapsed workspace rail renders
nothing; the toggle (with a changed-file badge) lives in the split-pane
header next to split/close, or floats at the top-right in single-pane
chat. Shift+Cmd+B still toggles.
Narrow native macOS windows (e.g. the in-app link browser splitting
the window) previously stacked 50px of injected titlebar padding on
top of the 58px drawer row; the web CSS now folds that into one
compact 58px row beside the traffic lights, with selectors that
outrank the rules shipped Mac apps inject.
* chore(ui): regenerate locale bundles and docs map for sidebar restore
* fix(ui): bind showPaneHeader explicitly on the classic single pane
* chore(ui): reconcile locale metadata after rebase onto lobster wild cards
2026-07-10 09:35:14 +01:00
Peter Steinberger
3bec587d74
fix(computer): stop typing after cancellation ( #103528 )
2026-07-10 08:37:37 +01:00
Peter Steinberger
ed74d8dc7d
test(macos): deflake Codex pipe drain ( #103478 )
2026-07-10 08:02:39 +01:00
Peter Steinberger
4a72a6cb2f
feat(ui): move app chrome into a topbar and dock the session workspace rail ( #103426 )
...
* feat(ui): move app chrome into a topbar and dock the session workspace rail
The desktop shell now uses a slim topbar for brand, primary navigation
(Chat + pinned routes + More menu), command-palette search, pairing,
theme, and Settings; the left column slims down to a sessions-only
panel (Cmd+B hides it entirely — the 78px icon rail is gone). Split
view drops the fixed geometry-mirroring toolbar for in-flow per-pane
headers. The session workspace rail can dock right or bottom inside
its pane — drag its header between edges or use the dock button — and
the collapsed strip's file glyph is now a real button (it used to be a
dead, button-looking span) with a changed-file count badge. The Mac
app's injected chrome CSS slims down accordingly; its drag-region
geometry is unchanged and the topbar brand strip stays passive under
it.
* chore(ui): regenerate locale bundles for topbar and workspace dock strings
* fix(ui): keep the native macOS drawer clear of the titlebar overlay
The narrow-width slide-over drawer sits fixed at the window top, over
the AppKit traffic lights and drag regions. The old Mac-app-injected
CSS padded .sidebar-shell for this; that rule moved web-side for the
desktop topbar, so restore drawer clearance here for both the app
drawer and the in-drawer settings sidebar.
* chore(ui): translate topbar and workspace dock strings; regen docs map
2026-07-10 07:32:57 +01:00
Peter Steinberger
477b2860d5
feat(macos): add tabs to the dashboard link browser sidebar ( #103438 )
...
Each inline link opens in its own tab (exact-URL dedupe); sidebar
target=_blank links open new tabs. Tab strip on top with click to
activate, close buttons, middle-click close, pointer-drag reorder, and
a per-tab context menu (Open in Default Browser, Copy Link, Reload,
Close Tab, Close Other Tabs). Navigation controls sit below the tabs
and follow the active tab. Closing the last tab collapses the sidebar
with no lingering webviews or history.
2026-07-10 06:51:49 +01:00
Peter Steinberger
461772868d
fix(computer): prevent stale, replayed, and post-cancel desktop actions ( #103422 )
...
* fix(ai): preserve streamed tool-call identity
* fix(computer): bind actions to current tool authority
* fix(macos): serialize computer control lifecycle
* docs(computer): document hardened control contract
* chore: follow release-owned changelog policy
* test(agents): cover node list cancellation
2026-07-10 06:47:56 +01:00
Peter Steinberger
a789b92b39
fix(macos): harden fresh AI onboarding ( #102637 )
...
* fix(macos): bootstrap Codex before onboarding test
* fix(plugins): activate deferred runtimes on demand
* fix(macos): stage Codex runtime for onboarding probe
* fix(macos): expose sanitized onboarding errors
* fix(codex): reuse native CLI auth during onboarding
* fix(macos): hide Crestodian without inference
* fix(codex): honor explicit runtime policy during setup
* fix(onboarding): redact verification errors
* fix(macos): reset onboarding state with gateway route
* fix(onboarding): persist Codex plugin install metadata
* chore: refresh onboarding inventories
* fix(macos): restart AI setup after gateway change
* chore: refresh native onboarding inventory
* fix(onboarding): defer gateway restart until setup persists
* fix(macos): reset Crestodian on gateway changes
* chore(macos): refresh native i18n inventory
* fix(onboarding): harden inference setup state
* docs(skills): reuse pristine Parallels snapshots
* chore(macos): refresh onboarding i18n inventory
* fix(onboarding): prevent stale gateway and install state
* docs(skills): preserve saved Parallels sessions
* fix(macos): balance AI onboarding layout
* fix(parallels): parse npm workspace pack output
* chore(macos): refresh onboarding i18n inventory
* fix(parallels): bundle workspace runtime in package artifact
* fix(parallels): isolate canonical package helper
* fix(parallels): pack self-contained workspace artifact
* fix(packaging): exclude macOS app bundle
* fix(macos): restart inference checks after route changes
* docs(changelog): defer onboarding note to release
* fix(onboarding): enforce inference-first gateway setup
2026-07-10 04:59:15 +01:00
NianJiu
04c090fb50
fix(ios): return promptly from noncooperative timeouts ( #103066 )
...
* fix(ios): return promptly from noncooperative timeouts
* fix(apple): harden async timeout cancellation
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
* fix(apple): preserve legacy location requests
* style(apple): format location continuation code
---------
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-10 00:29:03 +01:00
Peter Steinberger
4aa8bf12e3
refactor(voice): dedupe talk audio primitives into OpenClawKit ( #103099 )
...
* refactor(voice): dedupe talk audio primitives into OpenClawKit
One buffered TTS clip player (watchdog + metering) shared by iOS and
macOS replaces the near-identical pair; macOS TalkPlaybackResult was a
field-for-field duplicate of StreamingPlaybackResult and is gone. One
AVAudioPCMBuffer RMS helper replaces five per-file copies; the metered
PCM passthrough moves into PCMPlaybackEnvelope; TalkModeManager's
duplicated ElevenLabs PCM-then-mp3-retry blocks collapse into one
helper. Net -378 lines, no behavior change.
* fix(ios): drop stray blank line and resync i18n inventory
* fix(ios): drop stray blank line after helper extraction
2026-07-09 22:21:00 +01:00
Peter Steinberger
d8d369b065
feat(macos): open dashboard links in a sidebar browser ( #102899 )
...
* feat(macos): add dashboard link browser
* fix(macos): preserve browser navigation state
* fix(macos): preserve accessible external link activation
* fix(macos): preserve trusted editor handoff
* docs: refresh dashboard link map
* chore: keep dashboard release note in PR
* fix(macos): harden sidebar browser lifecycle
2026-07-09 16:40:50 +01:00
Peter Steinberger
b80062be3a
improve(ui): drop the redundant desktop top bar and add back/forward navigation to the macOS app ( #102808 )
...
* feat(ui): drop the desktop top bar in favor of sidebar navigation
The Control UI top bar only rendered the OpenClaw › agent › page breadcrumb
on desktop, duplicating the sidebar. Desktop now renders no topbar row; the
row returns solely as the chat split toolbar's backdrop. Narrow viewports
keep the header (drawer toggle, brand, command-palette search) and now show
the brand across the whole drawer range. Routing already uses pushState, so
browser back/forward traverses navigation.
* feat(macos): add back/forward controls to the dashboard window
Native titlebar buttons next to the traffic lights drive WKWebView history,
which carries the Control UI's pushState navigation; enabled state tracks
canGoBack/canGoForward via KVO and trackpad swipe gestures are enabled too.
Back/forward traversals to entries from a replaced gateway endpoint cancel
silently instead of opening a dead URL in the system browser.
* fix(macos): keep the dashboard drag strip off the web content column
With the desktop topbar row removed, the 28px mid-window drag region sat on
top of the content column (chat thread has no top padding) and swallowed
clicks as window drags. Shrink it to a 12px edge strip; the sidebar region
over the reserved native-chrome padding stays the primary drag surface.
2026-07-09 15:46:59 +01:00
Peter Steinberger
f8dbd34ab8
feat(nodes): add computer use (computer.act) on macOS nodes via Peekaboo ( #102776 )
...
* feat(nodes): add computer use (computer.act) on macOS nodes via Peekaboo
* fix(nodes): release held computer.act input on node disconnect/stop/disable
* fix(nodes): release held computer.act input armed after a lifecycle release
* fix(nodes): scope computer.act lifecycle catch-up release to the arming action
* chore(nodes): register computer tool display metadata, sync native i18n, doc-comment constants
* fix(nodes): preserve caught-error cause in computer tool resolver; regen docs map
2026-07-09 15:28:09 +01:00
Peter Steinberger
c046fbd451
fix(macos): open dashboard for existing gateways ( #102677 )
...
* fix(macos): skip onboarding for existing gateways
* chore: keep changelog release-owned
* chore(macos): refresh native i18n inventory
2026-07-09 12:17:41 +01:00
Peter Steinberger
5154fe08fa
feat: show Codex sessions across Gateway and paired nodes ( #102586 )
...
* feat(codex): add federated session catalog
* fix(codex): align session catalog checks
* fix(ui): translate Codex session catalog
---------
Co-authored-by: Peter Steinberger <peter@steipete.me >
2026-07-09 03:42:03 -07:00
Peter Steinberger
201acd4e7a
fix(macos): keep Settings below native titlebar controls ( #102663 )
...
* fix(macos): clear settings titlebar controls
* chore: leave release notes to release automation
2026-07-09 11:41:29 +01:00