Commit Graph

4855 Commits

Author SHA1 Message Date
Peter Steinberger 21b3904e91 test(macos): deduplicate Claude session catalog fixtures (#118571) 2026-08-03 01:45:12 -07:00
joshavant 1f78c39bd8 fix: adapt completion delivery to current main 2026-08-03 02:48:34 -05:00
Peter Steinberger c49b68328e test(android): consolidate Wear bridge fixtures (#118559) 2026-08-03 00:42:43 -07:00
Peter Steinberger f96fc529c3 test(ios): consolidate talk config fixtures (#118533) 2026-08-02 23:42:06 -07:00
Peter Steinberger 4b3d0b37be test(android): consolidate connection TLS fixtures (#118532) 2026-08-02 23:29:37 -07:00
Peter Steinberger fd2fb643b8 test(macos): consolidate node runtime fixtures (#118521) 2026-08-02 23:15:55 -07:00
Peter Steinberger ffa9f74670 test(swift): consolidate device identity fixtures (#118510) 2026-08-02 23:02:19 -07:00
Peter Steinberger 0c9cc40c02 refactor(macos): consolidate endpoint publication (#118463) 2026-08-02 22:20:40 -07:00
Peter Steinberger 79568e2005 test(swift): dedupe gateway session connects (#118484) 2026-08-02 22:17:43 -07:00
Vincent Koc a842f482d5 fix(ios): keep attachments in composer when route is unavailable (#116787)
* fix(ios): retain attachments when delivery route is unavailable

Refs #116724

* chore(i18n): refresh native source inventory
2026-08-03 12:53:48 +08:00
Peter Steinberger d2ff210679 test(android): compact chat persistence fixtures (#118456) 2026-08-02 21:51:33 -07:00
Peter Steinberger 43d9ba493d refactor(ios): remove redundant node test seams (#118387)
* refactor(ios): remove redundant node test seams

* fix(ios): keep approval route context private

* fix(ios): preserve routing task assertion

* fix(ios): retain private talk permission test seam

* fix(ios): retain operator options boundary
2026-08-02 21:44:45 -07:00
Peter Steinberger 9f19e5e39e test(swift): dedupe gateway connect options (#118429) 2026-08-02 21:10:46 -07:00
Peter Steinberger c33e9ba05b refactor(macos): consolidate gateway lifecycle state (#118412) 2026-08-02 20:47:50 -07:00
Peter Steinberger 27ec985fe2 test(swift): dedupe chat view model fixtures (#118394) 2026-08-02 20:14:28 -07:00
Peter Steinberger 39c506bbf2 test(android): compact onboarding gateway fixtures (#118383) 2026-08-02 20:09:31 -07:00
Jason (Json) d3c5ac85ae fix(chat): preserve trace across history reloads (#118332) 2026-08-02 21:08:09 -06:00
openclaw-mantis[bot] 4f9af40078 chore(i18n): refresh native locales (#118356)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-03 10:32:19 +08:00
Peter Steinberger 22033d7836 test(swift): centralize transcript cache fixtures (#118322) 2026-08-02 19:28:36 -07:00
Peter Steinberger 1d2fc98bf4 test(android): reduce voice fixture duplication (#118270) 2026-08-02 19:27:55 -07:00
clawsweeper[bot] fa0e298d84 fix(ios): route forced realtime consults through Gateway relay (#117485)
* fix(ios): route forced realtime consults through Gateway relay

* fix(ios): route forced realtime consults through Gateway relay

* fix(ios): route forced realtime consults through Gateway relay

* fix(ios): route forced realtime consults through Gateway relay

* style(ios): drop redundant Self in requiresForcedAgentConsultRelay

* style(ios): use explicit self for firstString per swiftformat

---------

Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-02 18:06:19 -07:00
PollyBot13 d9669ce72c fix(ios): finish Calendar and Reminders grants without relaunch (#116504) 2026-08-02 18:01:41 -07:00
Peter Steinberger c43ba8e3fc fix(cli): speed up hook status reads through the Gateway (#118288)
* perf(cli): reuse gateway hook status (#118222)

* chore(protocol): register hooks.status schema module in generated surfaces
2026-08-02 17:21:28 -07:00
WhatsSkiLL 4c136a7dea fix-android-sidebar-search-results (#117981)
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>
2026-08-02 17:13:16 -07:00
Peter Steinberger d803843cfd test(macos): consolidate Codex catalog fixtures (#118233) 2026-08-02 16:35:01 -07:00
Peter Steinberger 3ebb0ca3b6 chore(lint): resolve the 40 reserved baseline findings to a zero-noise lint:all (#118256)
* fix(lint): resolve reserved runtime findings

* chore(lint): scope intentional contract findings

* fix(android): preserve WebMessageListener bridge contract
2026-08-02 16:08:57 -07:00
Peter Steinberger 840ed45b86 test(macos): consolidate onboarding probe fixtures (#118218) 2026-08-02 16:02:16 -07:00
Peter Steinberger a1c2009b91 chore(android): stabilize branch coordination unit tests (#118210)
* test(android): stabilize branch coordination tests

* test(android): await outbox drain boundary

* test(android): isolate reconciliation drain fixture
2026-08-02 15:25:19 -07:00
Peter Steinberger 7c70571683 chore(lint): clear 172 lint:all baseline violations in five batches (#118098)
* chore(lint): clean Android-Linux app assets batch

* chore(lint): clean setup-launcher-plugin batch

* chore(lint): clean changelog-updater batch

* chore(lint): clean QA-runtime-helper batch

* chore(lint): clean script-tests batch

* fix(mxc): await sandbox spawn before bridge selection

* fix(test): make fake plutil metacharacter escaping survive the template hop
2026-08-02 14:08:09 -07:00
Peter Steinberger 7214577cf1 test(macos): fix three races in the bounded process suites (#118196)
BoundedCommandTests and BoundedProcessTests failed nondeterministically:
4/20 runs idle, 7/8 under CPU saturation. Three separate causes.

1. #require inside a retry loop. waitForPID polled through readPID with
   `try?`, but #require records an issue even when its error is swallowed,
   so the first read of a created-but-not-yet-written pid file failed the
   test outright. Added a non-recording pollPID for the polling path and
   kept the recording read as the authoritative final attempt. The two
   single-read call sites now poll too - echo $$ > file creates and writes
   in two steps, so any single read can see a missing or empty file.

2. A 0.1s deadline racing process spawn. BoundedCommand starts its timeout
   concurrently with the spawn, so the deadline also bounded /bin/sh
   starting and publishing its pid; under load the child was killed before
   it ever wrote the file. Wait for the pid while the run is in flight and
   give the child a deadline well clear of spawn cost.

3. A 1s per-process budget on the concurrent fan-outs. Instrumenting the
   deadline showed a stalled run observed all 64 exits at ~3.1s, clustered
   within 100ms of each other - a global stall, not a straggler. Those
   tests assert that no exit is lost during monitor registration, not
   latency, so the timeout should not double as a performance assertion.
   A missed exit still fails: the 50ms pollUntilExit fallback would never
   complete.

Also widened waitUntilGone, since reaping is asynchronous.

No production code changed. Proof: 30/30 idle and 20/20 under full 32-core
saturation, against 16/20 and 1/8 before.
2026-08-02 14:03:57 -07:00
Peter Steinberger 860b4ee4a7 test(android): share Wear transport fixtures (#118177) 2026-08-02 14:01:28 -07:00
Peter Steinberger 1787cbb9de test(android): compact chat recovery fixtures (#118166) 2026-08-02 13:21:29 -07:00
Peter Steinberger 54c4ff3c06 refactor(swift): consolidate gateway problem mapping (#118107) 2026-08-02 13:17:22 -07:00
Peter Steinberger aae0342f7c test(android): consolidate gateway security fixtures (#118165) 2026-08-02 13:17:01 -07:00
Peter Steinberger b8a6ea12cc refactor(macos): remove the custom menu bar hover card (#118116)
* refactor(macos): remove the custom menu bar hover card

The status item showed two hover affordances at once: the native AppKit
tooltip and a custom SwiftUI panel rendering an "Idle / No recent activity"
card. Keep the native tooltip and drop the custom HUD.

The HUD was the only consumer of the status item's hover tracking, so the
NSTrackingArea and onHoverChanged plumbing in StatusItemMouseRouter goes
with it; click routing is unchanged. WorkActivityStore.lastToolLabel had no
other reader either.

* chore(i18n): refresh native i18n inventory after hover card removal

Deleting HoverHUD.swift shifted the MenuBar.swift line numbers that
apps/.i18n/native-source.json records. Regenerated with
`pnpm native:i18n:baseline`; only line numbers change, no strings added
or removed.

* refactor(macos): drop the orphaned anchored chat panel

Removing the hover card left WebChatManager.togglePanel() without a caller,
and it was the only thing that created the menu-bar-anchored chat popover.
Delete that presentation path: togglePanel/panelHidden, the panel controller
state, WebChatPresentation, WebChatPanel, presentAnchored and its dismiss
monitor, and WindowPlacement.anchoredBelowFrame.

Chat is unaffected as a window - WebChatManager.show() still backs the Dock
menu, --chat and deep links. The status item highlight that tracked chat
window visibility is preserved, renamed to onChatWindowVisibilityChanged
now that no panel exists to confuse it with.

Periphery reports no unused code.

* chore: drop CHANGELOG edit from this PR

AGENTS.md: CHANGELOG.md is release-only and release generation derives it
from merged PRs. Release-note context lives in the PR body instead.

* chore: restore CHANGELOG to the branch base

Correct the previous commit, which restored CHANGELOG.md from current
origin/main and so pulled in an unrelated entry added after this branch
forked. Reset to the merge-base content: this PR now touches no changelog.
2026-08-02 13:10:27 -07:00
Peter Steinberger 5c2559e2d9 test(macos): deduplicate onboarding AI setup fixtures (#118092)
* test(macos): deduplicate onboarding AI setup fixtures

* test(macos): fix fixture handler binding
2026-08-02 11:52:04 -07:00
Peter Steinberger 0335317679 fix(macos): preserve external remote gateway config edits (#118046)
* fix(macos): reconcile external gateway config edits

* refactor(macos): split gateway reconciliation helpers

* chore(macos): refresh native i18n inventory

* refactor(macos): remove obsolete gateway config helper

* test(macos): seed watcher fixtures as canonical

* fix(macos): add gateway config conflict recovery
2026-08-02 11:21:07 -07:00
Peter Steinberger 079d26c92c test(ios): consolidate gateway connection fixtures (#118072) 2026-08-02 11:10:17 -07:00
Peter Steinberger ad53d4419e fix: make gateway token recovery usable from macOS onboarding (#118051)
* fix(gateway): add safe token recovery

Co-authored-by: 宇宙熊Yzx <53250620+849261680@users.noreply.github.com>

* chore: move gateway release note to PR

* test(cli): classify gateway token output

---------

Co-authored-by: 宇宙熊Yzx <53250620+849261680@users.noreply.github.com>
2026-08-02 10:06:50 -07:00
Peter Steinberger 19aad4ac2a fix(macos): cron editor drops advanced delivery routes (#118047)
* fix(macos): preserve advanced cron delivery routing

* fix(macos): mark cron routing labels verbatim

* fix(macos): keep cron routing inventory stable
2026-08-02 10:04:58 -07:00
Peter Steinberger b3da16ffbb test(apple): consolidate outbox fixtures (#118052) 2026-08-02 10:03:57 -07:00
openclaw-mantis[bot] c1e31f1784 chore(i18n): refresh native locales (#117948)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-02 23:03:59 +08:00
Peter Steinberger 2472782622 fix(macos): gate remote onboarding on gateway auth (#117904)
* fix(macos): gate remote onboarding on gateway auth

* fix(macos): address onboarding CI failures

* test(macos): stabilize gateway auth routing coverage

* fix(macos): bound remote gateway onboarding probe

* fix(macos): satisfy remote probe CI guards

* fix(macos): scope remote probe cleanup ownership

* refactor(macos): remove unused health snapshot wrapper
2026-08-02 04:14:54 -07:00
Peter Steinberger 76cb418b6f fix(macos): reopen AI choice, fix daemon error text, hand onboarding off to the dashboard custodian (#117921)
* fix(macos): let onboarding replace an auto-connected AI

The AI page auto-tests the best detected candidate and connects without
asking, then hides every alternative route. Add 'Choose a different AI'
to the connected banner: a re-detect pass with auto-activation
suppressed that ends at the picker (candidates, provider sign-in, API
keys). Also disable the manual key Connect button while another test
runs (submitManualKey silently dropped the tap), and isolate a test
that read the machine's real resume store.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(macos): surface real daemon errors past the Node banner

Gateway daemon failures summarized as 'Node.js v26.5.1' because the
summary takes the last non-empty line and Node fatal errors end with a
version banner. Drop trailing banner lines and prefer the last
error-shaped line above them; all other output keeps its last line.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* feat(macos): hand onboarding off to the dashboard custodian

Native onboarding now ends once inference verifies: welcome, connection,
install (when needed), AI setup. Finish opens the dashboard at
/custodian?onboarding=1, where the custodian onboarding owns memory
import, channels, app recommendations, and the hatch (browser-first per
the onboarding redesign). The native memory-import and permissions
pages leave the first-run flow; 'Set up later' keeps the native ready
page. The native navigation bridge gains a validated optional search
field so the handoff can request onboarding chrome; the URL fallback
carries the query alongside the token fragment.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* refactor(macos): delete the unreachable native memory-import module

The dashboard handoff removed the memory-import page from every flow,
leaving the module reachable only from tests. CI's dead-code scan
rightly flagged the first orphans; remove the whole path (model, page,
mascot wiring, tests) instead of trimming symbol by symbol. The
dashboard's own memory-import surface owns the feature.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-02 02:57:25 -07:00
Peter Steinberger 4e4959b283 refactor(android): consolidate chat controller test setup (#117862) 2026-08-01 23:06:51 -07:00
Peter Steinberger 90a377470f refactor(macos): consolidate gateway process fixtures (#117740) 2026-08-01 19:18:34 -07:00
Peter Steinberger 78193deff3 fix(macos): avoid self-named defaults suite (#117690)
* fix(macos): avoid self-named defaults suite

* chore: keep changelog release-owned
2026-08-01 18:57:42 -07:00
Vincent Koc ff770f9a48 fix(i18n): sync pinned native translations (#117726) 2026-08-02 09:36:29 +08:00
WhatsSkiLL 2fc32204b4 fix(android): show pinned state in sidebar sessions (#117063)
* fix(android): show pinned state in sidebar sessions

* fix(ci): leave native locale refresh to workflow

---------

Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>
2026-08-01 16:16:49 -07:00
Peter Steinberger a3bdc53a71 test(ios): deduplicate node invoke fixtures (#117670) 2026-08-01 16:07:19 -07:00