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
b0ebb81e89
refactor(macos): use swift-log contracts ( #106270 )
2026-07-13 04:18:32 -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
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
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
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
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
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
ec62328eb8
chore(apps): remove dead code
2026-07-12 10:18:03 -07:00
Peter Steinberger
5b293af917
fix(mac): remove unused presence reporter capture ( #105361 )
2026-07-12 13:25:39 +01:00
Peter Steinberger
c6dc5bc764
fix(canvas): hosted pages fail on macOS with scoped Gateway auth ( #105336 )
...
* fix(canvas): harden hosted Canvas on macOS
Resolve Gateway-hosted Canvas and A2UI targets through refreshed node capabilities, keep bridge and live-reload behavior correct, and restrict native action dispatch to the exact trusted main-frame document.
Preserve scalar evaluation results, secure action IDs, and hidden state-directory watching.
Co-authored-by: GuoJiaming <804436395@qq.com >
Co-authored-by: Lucenx9 <185146821+Lucenx9@users.noreply.github.com >
Co-authored-by: zeng-weihan <ceng.weihan@xydigit.com >
* chore(canvas): defer release note
* chore(canvas): refresh native i18n inventory
* refactor(canvas): isolate hosted surface resolution
---------
Co-authored-by: GuoJiaming <804436395@qq.com >
Co-authored-by: Lucenx9 <185146821+Lucenx9@users.noreply.github.com >
Co-authored-by: zeng-weihan <ceng.weihan@xydigit.com >
2026-07-12 13:02:27 +01:00
Peter Steinberger
251f54baec
fix(apps): remove dead native code
2026-07-12 02:41:17 -07:00
Peter Steinberger
a8b104c4e3
feat(mac): swap dashboard titlebar buttons with sidebar state ( #105175 )
...
* feat(mac): swap dashboard titlebar buttons with sidebar state
The Control UI reports sidebar collapsed/width over a new openclawNav
WKScriptMessage; the titlebar accessory shows toggle+back/forward
right-aligned to the sidebar edge while expanded, and
toggle+search+new-session while collapsed. Search opens the command
palette and + opens the new-session surface via openclaw:native-*
events. Older gateway bundles that never report keep the shipped
toggle/back/forward layout.
Refs #105129
* docs: describe state-dependent mac titlebar buttons
2026-07-12 10:13:36 +01:00
Peter Steinberger
55254c3a0b
feat(nodes): route alerts to the active computer ( #105083 )
...
* feat(nodes): route alerts by active computer
* fix(ci): allowlist node presence mobile coverage
* test(prompts): refresh node presence snapshots
* fix(macos): await presence reporter actor hop
* fix(macos): type presence test delivery state
* docs(nodes): add active presence guide
* docs(nodes): format presence troubleshooting
2026-07-12 10:05:50 +01:00
Peter Steinberger
6038480915
feat(ui): browse Gateway and node folders from one root ( #105114 )
...
* feat(ui): browse Gateway and node folders
* chore: keep changelog release-owned
* chore: refresh native i18n inventory
* refactor(macos): isolate node filesystem commands
2026-07-12 09:07:07 +01:00
Peter Steinberger
da4a480089
chore(apps): remove more dead code
2026-07-12 00:58:32 -07:00
Peter Steinberger
952733d6fa
test(macos): isolate gateway device stores ( #105048 )
2026-07-12 08:42:20 +01:00
Peter Steinberger
bf13c3bb1b
chore(apps): remove dead native code
2026-07-11 23:51:21 -07:00
Peter Steinberger
a40e43e46e
feat(mac): redesign the menu bar critter to match the mascot ( #104846 )
...
* feat(mac): redesign menu bar critter to match the mascot
* fix(mac): draw happy-eye arcs upward and guard stale celebration expiry
* docs(mac): update menu bar icon states for critter redesign
* fix(mac): own celebration expiry with a start-only generation counter
* fix(mac): give voice-wake antennae real headroom at 18pt
2026-07-12 06:35:02 +01:00
Peter Steinberger
4b6bbd52e6
fix(mac): prevent onboarding installer output hang ( #104827 )
2026-07-11 18:05:06 -07:00
xingzhou
57c2d65ad5
fix(apps): reconcile slow Apple chat replies ( #97722 )
...
* fix(apps): reconcile slow chat replies
Co-authored-by: zhang-guiping <zhang.guiping@xydigit.com >
* style(apps): wrap wait diagnostic
* chore(apps): refresh native i18n inventory
* chore: leave changelog release-owned
* style(apps): normalize Swift modifiers
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-11 17:01:40 -07:00
Peter Steinberger
847460600f
feat(macos): redesign device-code sign-in ( #104766 )
...
* feat(macos): redesign device-code sign-in
* chore(i18n): refresh native string inventory
* fix(macos): localize device-code completion action
* fix(auth): preserve device-code fallback copy
* fix(xai): report browser launch accurately
2026-07-11 16:43:21 -07:00
Peter Steinberger
c60b1b25bf
fix(macos): make onboarding default action keyboard-accessible ( #104705 )
2026-07-11 14:20:36 -07:00
Peter Steinberger
da257661f3
fix(ui): hide web sidebar toggles when the macOS titlebar hosts the toggle ( #104694 )
2026-07-11 13:46:15 -07:00
Peter Steinberger
8fe6ac7fb9
refactor: remove pre-2026.4 compatibility shims and legacy migrations ( #104650 )
...
* refactor(matrix): retire pre-2026.4 legacy crypto and flat-storage migrations
* refactor(cli): drop pre-tsdown daemon-cli dist compat shim from the build
* refactor(diffs): remove deprecated image*/format tool params and output aliases
* refactor(ui): drop pre-gateway-scoped localStorage readers and legacy theme map
* refactor: remove assorted pre-2026.4 compat shims and deprecated aliases
* fix(discord): map legacy thread-binding fields in the doctor JSON import
* fix(msteams): keep bot read fallback for legacy imported conversation rows
* test(msteams): cover legacy bot-only imported conversation references
* fix(ui): keep channel-prefixed session key display fallback
* chore: refresh native i18n inventory and build-docker step count
* chore(matrix): drop now-unused migration-config module
* chore: re-pin plugin SDK public export budget after compat removals
* chore: refresh native i18n inventory after rebase
* chore: re-pin plugin SDK callable budget and refresh i18n inventory after rebase
2026-07-11 13:22:27 -07:00
Peter Steinberger
8310c565e0
feat(onboarding): add provider sign-in ( #104502 )
...
* feat(onboarding): add provider sign-in flows
* fix(oauth): keep callback compatibility
* fix(onboarding): reconcile lost auth outcomes
* fix(onboarding): lock auth cancellation at commit
* fix(onboarding): close provider auth lifecycle gaps
* fix(onboarding): make terminal auth failures dismissable
* fix(onboarding): satisfy native app checks
* fix(onboarding): reconcile absent auth sessions
* fix(onboarding): bound provider auth sessions
* fix(onboarding): open provider auth links safely
* test(onboarding): use scanner-safe auth fixtures
* revert: keep established onboarding auth fixtures
* fix(onboarding): close provider auth cancellation gaps
* fix(gateway): retain uncollected wizard results
* fix(onboarding): bind provider reconciliation attempt
* fix(i18n): avoid guessing moved string identities
* style(onboarding): normalize remote auth choices efficiently
* fix(protocol): refresh optional provider auth choices
* test(gateway): cover provider auth dispatch order
* refactor(macos): split onboarding setup support
* fix(macos): refresh merged native checks
2026-07-11 13:00:17 -07:00
Peter Steinberger
38edd6969a
feat(macos): relocate transient app launches ( #104661 )
2026-07-11 12:44:00 -07:00
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
60c6960168
fix(macos): add breathing room between dashboard titlebar buttons ( #104572 )
2026-07-11 10:12: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
fa77fe10d5
chore: migrate active GPT-5.5 references to GPT-5.6 ( #104452 )
...
* chore(models): migrate active GPT-5.5 references
* test(workboard): expect GPT-5.6 Sol default
* chore: keep release notes in PR body
* test(models): align picker fixtures with Sol default
* test: update PDF default model expectation
* test(qa): migrate thinking smoke to Luna
* test(gateway): align mock catalog with Sol default
* ci: retrigger exact-head PR checks
* test(gateway): document default catalog invariant
2026-07-11 06:30:57 -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
b4a9a4c3d4
fix(mac): silence lock result warning ( #104408 )
2026-07-11 03:53:28 -07:00
Peter Steinberger
7ec0d4abb8
chore: update Peekaboo to 3.9.0 ( #104398 )
...
* build(macos): update Peekaboo to 3.9.0
* chore: keep release notes in PR body
* fix(macos): trust current Peekaboo release signers
2026-07-11 03:44:13 -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
7c9cb54f09
fix: Codex CLI login fails during fresh Mac setup ( #104150 )
...
* fix(onboarding): preload Codex runtime for setup probe
* fix(onboarding): refresh Codex runtime discovery
* fix(onboarding): use native Codex CLI auth
* fix(onboarding): probe bundled Codex login
* chore(macos): refresh onboarding i18n inventory
* fix(onboarding): live-test custom Codex providers
2026-07-11 01:53:49 -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