Vincent Koc
116a38c167
test(android): cover locale-neutral branch counts
2026-07-22 06:33:27 +08:00
Vincent Koc
b622fc74c8
fix(android): make branch counts locale-neutral
2026-07-22 06:33:27 +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
Peter Steinberger
b36342ee6f
feat(android): chat rewind/fork actions and branch switcher with branch-safe outbox ( #112284 )
2026-07-21 14:31:47 -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
Vincent Koc
5b2a084048
fix(i18n): refresh iOS location menu inventory
2026-07-22 05:11:45 +08:00
joshavant
a69ebf3067
fix(ios): keep snapshot results outside upload tree
2026-07-21 13:44:11 -05:00
joshavant
b3cdb49aca
test(ios): stabilize appearance screenshot
2026-07-21 13:44:11 -05:00
joshavant
12515ad182
fix(ios): harden App Store release flow
2026-07-21 13:44:11 -05: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
26165bbe80
fix(ios): smooth sidebar drags and remove background seams ( #112299 )
...
* fix(ios): polish sidebar drawer interaction
* fix(ios): latch sidebar drag direction
2026-07-21 08:40:30 -07:00
Peter Steinberger
5e7cb225e4
fix(mobile): load pinned and base-path Control UI pages ( #112175 )
...
* fix(mobile): harden Control UI webviews
* refactor(mobile): keep native inventory stable
* docs(android): clarify shared pinned trust
* fix(ios): preserve encoded Control UI base paths
2026-07-21 08:19:07 -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
liuhao1024
cd38cdef05
fix(macos): respect OPENCLAW_STATE_DIR in openclaw-mac CLI config resolution ( fixes #98591 ) ( #98631 )
...
* fix(macos): resolve OPENCLAW_STATE_DIR in openclaw-mac CLI config resolution
Add shared resolveOpenClawConfigURL() to GatewayConfig.swift with
precedence: OPENCLAW_CONFIG_PATH > OPENCLAW_STATE_DIR > default home.
Switch ConfigureRemoteCommand and loadGatewayConfig to use it.
Add focused tests for all three precedence paths.
* fix(macos): honor state directory in openclaw-mac
Use one normalized config resolver for connect, wizard, and configure-remote, with explicit config path precedence over the selected state directory.
Co-authored-by: liuhao1024 <sunsky.lau@gmail.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-21 05:59:21 -07:00
Vincent Koc
8187c09a58
style(android): satisfy compact token ktlint
2026-07-21 20:54:26 +08:00
Vincent Koc
85ba26ebad
fix(android): localize compact token suffixes
2026-07-21 20:54:26 +08:00
Peter Steinberger
e5610976cf
fix(linux): harden Quick Chat widget lifecycle ( #112261 )
...
* fix(linux): harden Quick Chat widget lifecycle
* fix(linux): retry stale widget cleanup before reveal
2026-07-21 05:35:06 -07:00
Peter Steinberger
b2aa21612d
feat(ui): show PR status on Claude threads ( #112180 )
...
* feat(ui): show PR status on catalog threads
* fix(ui): complete PR summary protocol artifacts
* perf(anthropic): bound PR metadata deduplication
2026-07-21 05:01:04 -07:00
Peter Steinberger
aeeff149b9
feat(android): port the working claw indicator, wait phrases, and turn recap ( #112221 )
...
* feat(android): decode session run metadata
* feat(android): animate the working claw
* feat(android): show settled turn recaps
* fix(android): preserve legacy cache migration
* fix(android): expire hidden recap watches
* chore(i18n): refresh native source anchors
* fix(android): drop unsettled hidden recaps
* fix(android): keep claw timing local
* fix(android): anchor settled turn recaps
* chore(i18n): refresh native source anchors after rebase
* fix(android): route chat status copy through native i18n
2026-07-21 04:43:27 -07:00
Peter Steinberger
8481c69cbe
feat(apple): port the working claw indicator, wait phrases, and turn recap to iOS/macOS ( #112188 )
...
* feat(chat): add native working progress state
* feat(chat): port working claw indicator to Apple
* fix(apple): isolate generated locale catalog
* style(apple): use doc comments on ChatWorkingPhrase API declaration
2026-07-21 04:35:27 -07:00
Peter Steinberger
89fe452991
feat(gateway): session observer digests over the utility model ( #112216 )
...
* feat(gateway): session observer digests over the utility model
* fix(gateway): split session-observer modules and satisfy ci gates
* fix(gateway): observer reads session entries without materializing agent state
2026-07-21 04:04:13 -07:00
Peter Steinberger
312e656138
fix(ios): show agent avatars and use more sidebar space ( #112082 )
...
* fix(ios): improve agent sidebar menu layout
* chore(i18n): refresh native source inventory
2026-07-21 03:05:18 -07:00
Vincent Koc
c6c1151c3a
build(i18n): generate Wear locale resources
2026-07-21 17:36:49 +08:00
Vincent Koc
6a26f9f383
fix(android): localize Wear connection failures
2026-07-21 17:36:49 +08:00
Vincent Koc
d4021c351c
fix(macos): localize settings surfaces ( #112185 )
2026-07-21 16:15:40 +08:00
Peter Steinberger
262deec72c
feat(mobile): session Dashboard on iOS and Android via authenticated Control UI webview ( #112163 )
...
* feat(mobile): session dashboard screens on iOS and Android via authenticated Control UI webview
* fix(android): keep configured Control UI base path in session dashboard URL
* docs(android): note system-trust boundary of the shared Control UI webview
* fix(android): origin-only document-start rule for Control UI auth script
* chore(i18n): refresh native inventory on rebased head
* fix(ios): swiftlint closure form in session dashboard toolbar
* fix(i18n): tolerate workflow-owned pending native rows in PR alignment checks
* fix(android): KTX toUri per lint and refresh native inventory
* fix(android): ktlint import order incl. main-inherited fleet test, refresh inventory
2026-07-21 01:13:23 -07:00
Vincent Koc
9e0c5f94b5
fix(macos): support background-only launches ( #112168 )
...
* fix(macos): support background-only launches
* fix(macos): refresh native i18n inventory
* fix(i18n): refresh native inventory after main sync
2026-07-21 15:41:49 +08:00
Peter Steinberger
6d1c215a78
fix(macos): reject public plaintext Gateway profiles ( #112161 )
...
* fix(macos): reject public ws gateway profiles
* fix(macos): normalize bracketed private IPv6 hosts
* test(macos): preserve bracketed localhost policy
2026-07-21 00:35:13 -07:00
Vincent Koc
2c316f51f7
fix(apps): harden mobile gateway and watch state
2026-07-21 09:00:21 +02:00
joshavant
985ec0650f
Android: record 2026.7.3 correction metadata
2026-07-21 01:16:42 -05:00
joshavant
c56dd50d2a
Android: prepare 2026.7.3 correction build
2026-07-21 01:08:20 -05:00
joshavant
b63ccef409
Android: align Wear internal release track
2026-07-21 01:06:12 -05:00
Peter Steinberger
be5e427f56
feat(dashboard): plugin-declared widget data bindings and action verbs ( #112083 )
...
* feat(dashboard): add plugin capability declarations
* docs(dashboard): describe plugin capabilities
* fix(plugins): preserve registry map cloning
* fix(dashboard): make plugin grant ids unambiguous
* fix(dashboard): align generated plugin grant ids
* chore(boards): internalize verb ids and refresh protocol snapshots
2026-07-20 22:43:04 -07:00
joshavant
9089e33a1a
Android: add Wear OS screenshot pipeline
2026-07-21 00:06:15 -05:00
joshavant
d445a251f7
fix(android): remove retired voice release screenshot
2026-07-20 23:04:56 -05:00
joshavant
49349577e0
chore(android): prepare 2026.7.3 Play release
2026-07-20 22:51:52 -05:00
Peter Steinberger
67a15e63e2
feat(dashboard): widget presentation contract, shared frame inset, and intrinsic auto height ( #111977 )
...
* feat(boards): widget presentation contract and height mode in protocol, store, and show_widget
* feat(dashboard): card inset, full-bleed and frameless presentations plus intrinsic auto height
* fix(boards): preserve frame prefs on re-pin, pin legacy resizes, reserve touch chrome in auto height
* fix(dashboard): pass pointer events through the overlay bar to widget content
* fix(dashboard): re-layout auto-height rows when pointer capability changes
* refactor(dashboard): extract widget sizing policy module and split oversized board tests
* test(dashboard): complete frame lifecycle host stubs for content-height callback
* fix(dashboard): fold sizing into grid module, scope bar interactivity, drop useless fixture escape
* fix(dashboard): inline widget-size literal and drop orphan sizing module for startup budget
2026-07-20 20:18:27 -07:00
Peter Steinberger
9f66f53fb5
feat(chat): collapse long user prompts ( #111866 )
...
* feat(chat): collapse long user prompts
* fix(chat): sync disclosure strings
* fix(android): reuse disclosure labels
* chore(i18n): refresh native inventory
* perf(ui): trim prompt disclosure chunk
2026-07-20 20:10:15 -07:00
Peter Steinberger
f06b6be182
feat(macos): manage Gateway profiles and multiple windows ( #111986 )
...
* feat(macos): manage gateway profiles and windows
* fix(macos): preserve gateway settings localization
* fix(deps): update axios past security advisory
2026-07-20 18:10:02 -07:00
Josh Avant
33720886c8
fix(agents): keep sender-scoped tools in delegated runs ( #110345 )
...
* fix(agents): preserve requester policy across delegation
* fix(agents): keep policy types internal
* test(codex): cover delegated policy forwarding
* fix(agents): harden delegated policy contract
* fix(agents): preserve split-owner completion policy
* fix: version delegated requester snapshots
* fix: refresh delegated policy protocol artifacts
2026-07-20 19:42:06 -05:00
Peter Steinberger
49ff6a4497
fix(protocol): classify system agents in rosters ( #111920 )
...
* fix(protocol): classify system agents in rosters
* fix(ci): align agent kind client gates
* fix(ci): keep roster filtering in startup bundle
* chore(ui): remove superseded roster module
* style(android): satisfy agent kind test formatting
* style(linux): format merged agent capability assertion
* fix(config): reject reserved system agent ids
* chore(i18n): refresh native source inventory
* style(android): format agent kind surfaces
* fix(gateway): preserve configured agent ownership
2026-07-20 16:57:04 -07:00
Peter Steinberger
d5a8233e76
feat(gateway,ui): agent-scoped model provider credentials ( #111796 )
...
* feat: scope model provider credentials by agent
* fix: reject unknown model auth agent ids
* fix: discard stale model provider preload
* fix(gateway): reject whitespace-only explicit agent ids
* fix: scope model provider probes by agent
* fix: complete model provider agent scoping
* fix(ui): always clear the providers refresh flag on completion
* fix(ui): keep probe epochs monotonic across agent switches
* fix: derive agent scope for provider aborts
* fix: satisfy model provider CI checks
2026-07-20 16:22:09 -07:00
Colin Johnson
0d3cbae6a1
fix(ios): sidebar drags jitter and toolbar control flickers ( #111831 )
...
* fix(ios): smooth sidebar gestures and toolbar controls
* fix(ios): keep sidebar edge gesture below toolbar
* chore(ios): refresh native localization inventory
* fix(ios): preserve edge content interactions
* fix(ios): restore smooth sidebar tracking
* test(ios): align drawer source guards
2026-07-20 17:26:17 -04:00
Peter Steinberger
a52eb2134b
feat(apps): connect multiple gateways simultaneously ( #111932 )
...
* feat(apps): support simultaneous gateways
* fix(apps): satisfy multi-gateway checks
* chore(apps): refresh multi-gateway baselines
* style(android): format gateway fleet code
2026-07-20 13:06:29 -07:00
Peter Steinberger
ba3711bb82
feat(linux): render widgets in Quick Chat ( #111933 )
2026-07-20 11:56:03 -07:00
Peter Steinberger
38df399ed8
fix(macos): show local ClickClack session discussions ( #111883 )
...
* fix(macos): show local ClickClack session discussions
* fix(macos): support loopback aliases in discussion embeds
* fix(macos): allow trusted hosted ClickClack embeds
* fix(macos): trust only dashboard-initiated discussion frames
2026-07-20 09:33:27 -07:00
WhatsSkiLL
ec9bc46e80
Wear: animate Talk avatar from playback audio ( #111516 )
...
* Wear: animate Talk avatar from playback audio
* fix(wear): preserve PCM mouth frame continuity
---------
Co-authored-by: Colin <colin@solvely.net >
2026-07-20 12:33:09 -04:00
Peter Steinberger
154a49a78b
feat(dashboard): widget capabilities — net CSP, host tools, hardened shared sandbox ( #111687 )
...
* feat(boards): enforce widget capability grants
* feat(ui): expose dashboard widget capabilities
* test(dashboard): align rebased gateway contracts
* refactor(dashboard): finish capability alignment
* chore: internalize unused board sandbox exports
* test(dashboard): bind grants to widget instances
* fix(dashboard): close widget authority lifetime gaps
* refactor(ui): preserve modular widget frame ownership
* test(ui): preserve explicit MCP App lease refresh
* test(ui): use shared dashboard sandbox server
* fix(ui): settle widget requests on reconnect
* fix(ui): retry transient widget document loads
* refactor(dashboard): document WebRTC egress residual
* fix(dashboard): clear landing checks
2026-07-20 06:54:44 -07:00