Commit Graph

1273 Commits

Author SHA1 Message Date
Peter Steinberger 51944498eb refactor(gateway): generalize bulk session patches (#120629)
* refactor(gateway): generalize bulk session patches

* fix(gateway): normalize bulk session fences

* refactor(gateway): simplify normalized target fence

* test(ui): align disconnected session wording
2026-08-08 15:00:09 -07:00
Peter Steinberger e3de98a451 feat(update): scheduled update campaigns with countdown, dev-channel auto-update, and Updates settings page (#120506)
* feat(update): scheduled update campaigns with countdown, dev-channel auto-update, and Updates settings page

* fix(ui): satisfy update campaign deadcode checks

* feat(update): extend scheduled update campaigns

* test(ui): include Updates page in settings sidebar search expectations

* fix(update): end campaigns when apply fails

* fix(update): pin dev campaign applies to the announced commit

* test(ui): align update e2e fixtures

* fix(update): pin adopted dev updates to the announced commit

* docs(update): document automatic dev update campaigns

* fix(ui): gate automatic dev updates on git installs

* fix(gateway): scope detailed update metadata to read-capable clients

* fix(gateway): break post-attach madge cycle with a leaf client-lookup type

* chore(protocol): regenerate clients after rebase

* test(gateway): update method tail after rebase

* fix(update): preserve campaign target and hold state

* test(update): align adoption mocks and split handoff suite

* test(update): route split handoff suites on Windows
2026-08-08 11:19:53 -07:00
openclaw-mantis[bot] 6cdb8187ab chore(i18n): refresh native locales (#120614)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-09 02:14:06 +08:00
Peter Steinberger 876a3f0d8f fix(ui): bulk session archive no longer stalls per thread (#120493)
* perf(ui): batch session archive requests

* fix(ci): sync bulk archive protocol surfaces

* fix(plugins): validate bulk archive ownership

* fix(ci): restore current main quality gates

* fix(ui): bound bulk archive dispatch

* fix(ui): bound bulk archive dispatch

* fix(ui): preserve bulk archive compatibility

* fix(ui): recover metadata-less archive fallback
2026-08-08 07:53:43 -07:00
openclaw-mantis[bot] a8f314d587 chore(i18n): refresh native locales (#120352)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-08 07:42:35 +08:00
joshavant 026f4045b7 Revert "fix(protocol): preserve gateway session attribution across node runs"
This reverts commit 735f176b01.
2026-08-07 18:40:17 -05:00
WhatsSkiLL 62937ea6fc fix(android): keep Wear chat on the latest reply (#120307)
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>
2026-08-07 16:32:30 -04:00
WhatsSkiLL a23444fc74 fix(android): gate Wear model controls by operator scope (#120016)
* fix(android): gate Wear model controls by operator scope

* chore(android): refresh native i18n inventory

---------

Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>
Co-authored-by: Colin Johnson <colin@solvely.net>
2026-08-07 11:00:41 -04:00
Dallin Romney 2a0bbd23f5 feat: expose session classification facts (#106832)
* feat: expose session presentation metadata

* fix: restrict session titles to safe display metadata

* fix: preserve saved session display names

* fix(protocol): tolerate future session presentation values

* fix(gateway): keep direct peer names out of presentation

* fix(protocol): connect session presentation to native rows

* fix(gateway): canonicalize session presentation metadata

* fix(gateway): satisfy session presentation CI checks

* feat(gateway): flatten session classification facts

* fix: repair session classification generated models

* fix(gateway): canonicalize session classification keys

* fix(gateway): classify spawned delivery sessions

* fix(android): retain session classification facts

* test(android): make scripted gateway calls concurrency-safe

* test(live-updater): isolate fixture git commands
2026-08-07 14:56:56 +08:00
Vincent Koc 735f176b01 fix(protocol): preserve gateway session attribution across node runs 2026-08-07 08:06:01 +08:00
openclaw-mantis[bot] d5668d83c0 chore(i18n): refresh native locales (#119669)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 20:08:30 +08:00
WhatsSkiLL 238c8bfc23 fix(android): show active session status in sidebar (#118624) 2026-08-05 11:55:10 -04:00
Peter Steinberger 4511c9b71f refactor(android): remove obsolete chat rendering paths (#119615) 2026-08-05 08:17:04 -07:00
Josh Avant 618fba92bf feat(audit): add execution identity inspection (#117034)
* feat(audit): add opt-in execution identity inspection

* fix(audit): gate recovery identity retention

* fix(audit): keep recovery identity type private

* test(audit): type internal recovery fixture

* test(audit): split recovery identity coverage

* docs(audit): define operator read trust boundary

* test(qa): register identity scenario child

* fix(audit): enforce shared identity retention bounds

* fix(audit): seal public ingress identity boundary

* fix(audit): keep ingress guard lint-clean

* fix(gateway): preserve advertised method order

* chore(protocol): sync advertised method order

* fix(protocol): encode audit selector invariants

* test(audit): prove exact execution guard

* fix(audit): keep identity storage lazy
2026-08-04 20:05:15 -05:00
openclaw-mantis[bot] 7f9994d4f9 chore(i18n): refresh native locales (#118883)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-04 05:07:27 +08: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 4b3d0b37be test(android): consolidate connection TLS fixtures (#118532) 2026-08-02 23:29:37 -07:00
Peter Steinberger d2ff210679 test(android): compact chat persistence fixtures (#118456) 2026-08-02 21:51:33 -07:00
Peter Steinberger 39c506bbf2 test(android): compact onboarding gateway fixtures (#118383) 2026-08-02 20:09:31 -07:00
Peter Steinberger 1d2fc98bf4 test(android): reduce voice fixture duplication (#118270) 2026-08-02 19:27:55 -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 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 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 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 aae0342f7c test(android): consolidate gateway security fixtures (#118165) 2026-08-02 13:17:01 -07:00
Peter Steinberger 4e4959b283 refactor(android): consolidate chat controller test setup (#117862) 2026-08-01 23:06:51 -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 e49c8339b8 refactor(android): simplify durable outbox test scenarios (#117667) 2026-08-01 15:45:02 -07:00
Peter Steinberger 9e43844264 build: generate native Canvas resources on demand (#117424) 2026-08-01 08:16:56 -07:00
WhatsSkiLL f0170ca238 Android: collapse sidebar search behind header action (#116956)
* feat(android): collapse sidebar search

* test(android): cover sidebar search toggle

Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>

* chore(android): refresh sidebar i18n inventory

Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>

* test(android): restore sidebar test clock

Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>

* test(android): remove stateful sidebar UI test

Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>

---------

Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-31 12:10:43 -07:00
Peter Steinberger 349cc33669 test(android): synchronize Wear channel transport close completion (#116788)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 04:36:37 -07:00
Vincent Koc 20e68e01df fix(gateway): sign device proofs with challenge time (#116679) 2026-07-31 16:45:53 +08:00
Vincent Koc 9309a4fce9 test(android): remove duplicate setup-code coverage (#116658) 2026-07-31 12:12:35 +08:00
Vincent Koc 88876f780b fix(android): preserve device work across lifecycle changes (#116593)
* fix(android): use configured SDK for screenshot AVDs

* fix(android): keep chat jump control clear of messages

* fix(wear): ignore stale control completions

* fix(android): advertise node permission changes

* fix(android): select play flavor for benchmarks

* test(android): decouple cron benchmark from copy

* fix(android): install play variant in perf scripts

* fix(wear): clear gateway control busy state

* fix(android): surface voice e2e connection errors

* test(android): cover common live node commands

* fix(android): retain share parsing across recreation

* fix(android): retain permission requests across recreation

* fix(wear): bind realtime audio to talk attempts

* fix(android): track active permission host

* fix(wear): own gateway control busy state

* fix(wear): admit realtime channels by attempt

* fix(android): refresh permissions on top resume

* fix(wear): serialize reconnect retirement with writes

* chore(i18n): refresh native source inventory

* fix(wear): retain pending audio through start RPC

* fix(wear): negotiate realtime channel compatibility

* test(wear): assert reconnect outcome without owner churn

* fix(android): move settings prompt with active host

* fix(wear): reject stale relay starts

* chore(changelog): leave notes to release generation
2026-07-31 09:49:11 +08:00
openclaw-mantis[bot] 8c61044576 chore(i18n): refresh native locales (#116567)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-31 08:29:26 +08:00
WhatsSkiLL 47f8c1d6b0 Android: add adaptive app navigation sidebar (#113908)
* feat(android): add adaptive navigation sidebar

* fix(android): satisfy native i18n checks

* fix(android): use adaptive Material navigation

* fix(android): preserve adaptive navigation state

* chore(i18n): refresh native source baseline

* fix(android): keep compact navigation labels on one line

* chore(android): refresh native i18n source lines

* fix(android): preserve sidebar gateway status

* fix(android): satisfy status label checks

---------

Co-authored-by: Colin <colin@solvely.net>
2026-07-30 17:27:45 -04:00
openclaw-mantis[bot] 81d165c612 chore(i18n): refresh native locales (#116213)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-30 15:17:38 +08:00
joshavant e4e7f37d24 chore(android): record 2026.7.4 Play metadata 2026-07-30 01:49:07 -05:00
joshavant eb263c5104 chore(android): prepare 2026.7.4 Play release 2026-07-30 01:19:40 -05:00
licheer-zte 6288a750ca fix(android): move Wear capability keep rules to raw keep files to prevent resource shrinking (#116068)
* fix(android): move Wear capability keep rules to raw keep files

Resource-shrinker keep directives in res/values/*.xml are not honored
by Android's resource shrinker during release builds. Move the
tools:keep declarations into dedicated res/raw/*.keep.xml files as
documented by Android:
https://developer.android.com/topic/performance/app-optimization/customize-which-resources-to-keep

Fixes openclaw/openclaw#116049

* fix(android): rename keep files - use underscores instead of dots

Android resource names must contain only lowercase a-z, 0-9, and underscores.
Dots in file names cause build failure with AAPT2 resource merger.

- ai.openclaw.app.phone.keep.xml -> ai_openclaw_app_phone_keep.xml
- ai.openclaw.app.wear.keep.xml -> ai_openclaw_app_wear_keep.xml

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-30 08:55:45 +08:00
Peter Steinberger e1cc617f86 feat(android): media renditions, MediaSession, video upload (#116037)
* feat(android): add media rendition and video support

* chore(android): refresh native i18n inventory

* fix(android): opt in to Media3 command API

* chore(android): sync native i18n source locations
2026-07-29 15:44:04 -04:00
Peter Steinberger ff72f287c3 fix(gateway): declare viewer presence explicitly instead of deriving it from subscriptions (#116001)
* fix(gateway): declare viewer presence explicitly instead of deriving it from subscriptions

* refactor(ui): isolate viewer presence lifecycle ownership

* chore(protocol): register viewer presence schema owner

* fix(ui): keep viewer presence cleared after detach

* chore: drop changelog edits from this PR

CHANGELOG.md is release-owned; release generation derives entries from merged
PRs. Release-note context stays in the PR body.
2026-07-29 13:56:54 -04:00
Peter Steinberger 80176dab8d feat(android): inline audio/video players with Media3 (#115916)
* feat(android): add inline media players

* fix(android): release inactive media players

* fix(android): preserve paused media playback

* test(android): include Media3 license notice

* chore(android): refresh native i18n inventory
2026-07-29 10:26:45 -04:00
Peter Steinberger 68a3d28906 fix: keep content after HTML-backed disclosures visible (#115877)
* fix(chat): close disclosures in coalesced HTML

Keep model-authored details closers visible to the shared disclosure contract when CommonMark absorbs them into type-6 HTML blocks across the Control UI and native apps.

* refactor(apps): isolate disclosure unfolding

Keep the native disclosure segmenter below its lint complexity and type-size limits, and refresh the source-owned native i18n inventory after the move.

* fix(apps): align disclosure helper visibility

Keep the extracted same-file helper compatible with Swift access control while leaving its implementation types hidden outside the source file.

* fix(apps): align source replacement visibility

Keep the source replacement helper at the same file-private boundary as the extracted disclosure unfolding types.
2026-07-29 10:24:46 -04:00
Peter Steinberger 662abec754 feat(gateway): push session PR indicators to subscribed clients (#115643)
* feat(gateway): push session PR indicators to subscribed clients

* test(gateway): fix PR indicator drift

* chore(protocol): allowlist PR-indicator event for native apps (Control UI surface)

* test: align PR indicator lifecycle coverage

* fix(ui): scope session PR store listeners to active watchers
2026-07-29 06:30:01 -04:00