Peter Steinberger
3010318ba3
fix(android): isolate debug app installs ( #125099 )
2026-08-16 23:36:57 -07:00
openclaw-mantis[bot]
2d322d1ae7
chore(i18n): refresh native locales ( #124089 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-15 01:54:57 -07:00
WhatsSkiLL
e37e63ceb6
feat(android): add Wear Agent Pulse ( #122123 )
...
* feat(android): add Wear agent pulse
* fix-android-wear-pulse-selected-session
* fix(android): count direct Wear Pulse subagents
* fix(android): gate Wear Pulse page by capability
* fix:bound-wear-pulse-gateway-reads
* fix: keep native locale artifacts generated
---------
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
Co-authored-by: Colin Johnson <colin@solvely.net >
Co-authored-by: Solvely-Colin <159171061+Solvely-Colin@users.noreply.github.com >
Co-authored-by: Colin Johnson <211764741+Solvely-Colin@users.noreply.github.com >
2026-08-14 12:22:26 -04:00
Peter Steinberger
edf1777ddb
refactor(i18n): re-key native i18n artifacts to content-hash identity (v2) ( #123347 )
...
* refactor(i18n): re-key native i18n artifacts to content-hash identity (v2)
The native inventory stored a write-only 'line' field per entry, so any
unrelated edit above a string rewrote apps/.i18n/native-source.json
(~half of all commits touching it were pure line-number churn). Identity
was (surface, path, source), duplicating the same string per file
(5385 entries for 4187 unique pairs) and churning IDs on file moves.
Locale artifacts were positional arrays repeating full English source
text, so one inserted string rewrote diff spans in all 21 files.
v2 artifacts: inventory entries keyed by (surface, source) with merged
per-site {path, kind} lists and pure sha256 content-hash IDs; locale
files become id-keyed sorted translation maps. Existing translations
carry over by source match with a deterministic duplicate pick; the
sticky-ID reuse machinery and positional validation are deleted.
Everything under apps/.i18n plus generated platform locale artifacts is
marked linguist-generated. ci-changed-scope gains a one-time
owner-complete migration escape mirroring the control-ui precedent.
CLI surface (baseline/check/sync/verify) and the locale-refresh
workflow are unchanged.
* ci: register run-attempt-state test in its Vitest lane
Commit e04dfd26e2 added extensions/codex/src/app-server/run-attempt-state.test.ts
without a lane owner, so the full-suite ownership audit
(test/vitest-projects-config.test.ts) fails on main. Register it in the
attempt-light shard alongside its run-attempt siblings.
2026-08-13 19:39:32 -07: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
Peter Steinberger
860b4ee4a7
test(android): share Wear transport fixtures ( #118177 )
2026-08-02 14:01:28 -07: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
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
Vincent Koc
c0a472f0b2
chore(i18n): refresh native locales ( #115532 )
2026-07-29 13:11:40 +08:00
Vincent Koc
d92062b970
fix(android): respect locale in compact labels
2026-07-28 23:49:44 +08:00
Chris M.
37bddc75cc
fix(android): finish Wear OS release readiness [AI-assisted] ( #110425 )
...
* fix(android): harden Wear release quality
* fix(android): use Wear minimum touch targets
Co-authored-by: Chris Mish <chrism@promethean-dynamic.com >
* fix(android): localize Wear accessibility actions
Co-authored-by: Chris Mish <chrism@promethean-dynamic.com >
* fix(android): preserve dictation without live voice
Co-authored-by: Chris Mish <chrism@promethean-dynamic.com >
* fix(android): isolate Wear locale source changes
Co-authored-by: Chris Mish <chrism@promethean-dynamic.com >
* fix(android): keep Wear dictate preview exclusive
Co-authored-by: Chris Mish <chrism@promethean-dynamic.com >
* fix(android): separate large-font Wear hit targets
Co-authored-by: Chris Mish <chrism@promethean-dynamic.com >
* test(pr): isolate review artifact ripgrep fixture
* ci: extend embedded-agent fork watchdog
* refactor(android): clarify Wear voice action availability
* style(android): preserve Wear locale source lines
* chore(i18n): refresh native source inventory
* style(android): restore Wear label indentation
---------
Co-authored-by: Chris Mish <chrism@promethean-dynamic.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-28 05:41:53 -04:00
Vincent Koc
9000da0451
refactor(android): remove unused Wear voice button ( #115061 )
2026-07-28 16:19:34 +08:00
Vincent Koc
7838c6a6fd
fix(apps): fence stale mobile delivery state
2026-07-28 08:15:52 +02:00
NianJiu
aa26ecfac1
fix(android): Wear Talk works after exiting and reopening ( #112383 )
...
* fix(android): scope Wear Talk client to ViewModel
* test(android): exercise Wear ViewModel factory lifecycle
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
---------
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-27 23:35:10 -04:00
Peter Steinberger
935ee7fedf
fix(wear): keep active watch replies when older turns finish ( #113804 )
...
* fix(wear): preserve active replies when older turns end
* fix(wear): isolate terminal events at the watch
---------
Co-authored-by: Peter Steinberger <steipete@golden-gate.local >
2026-07-25 12:42:42 -07:00
WhatsSkiLL
b3752e375d
feat(android): add Wear instant talk tile ( #112721 )
...
* feat(android): add Wear instant talk tile
* fix(android): preserve Wear screenshot warm launches
* fix(android): preserve Wear state on warm launch
---------
Co-authored-by: Colin <colin@solvely.net >
2026-07-22 19:28:41 -04:00
WhatsSkiLL
80aaaeea3e
fix(android): respect reduced motion in Wear avatar ( #112245 )
...
* fix(android): respect reduced motion in Wear avatar
* fix(android): observe effective Wear animation scale
* fix(android): refresh legacy Wear motion scale
* fix(android): initialize Wear motion scale before snapshot observation
---------
Co-authored-by: Colin <colin@solvely.net >
2026-07-22 09:22:29 -04:00
Peter Steinberger
bd03b4d658
fix(i18n): regenerate native locale artifacts after Android inventory drift
2026-07-21 14:15:31 -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
joshavant
9089e33a1a
Android: add Wear OS screenshot pipeline
2026-07-21 00:06:15 -05: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
WhatsSkiLL
50ce5dedea
fix(android): improve Wear thread follow behavior ( #111459 )
...
* improve(android): move Wear agent, session, and model pickers to Home
* fix(android): improve Wear thread follow behavior
* fix(android): stabilize Wear thread follow lifecycle
* fix(android): keep streamed Wear tail visible
Co-authored-by: JARVIS-Glasses <whatsskilll@gmail.com >
---------
Co-authored-by: Colin <colin@solvely.net >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-19 10:54:10 -07:00
WhatsSkiLL
e24420bc1c
fix(android): stabilize Wear realtime Talk audio and tool calls ( #111033 )
...
* fix(android): relay Wear realtime Talk tool calls
* fix(android): preserve Wear realtime audio streams
* refactor(android): share realtime agent coordination
Co-authored-by: JARVIS-Glasses <whatsskilll@gmail.com >
* fix(android): bound Wear realtime audio pipelines
Co-authored-by: JARVIS-Glasses <whatsskilll@gmail.com >
* fix(android): close realtime correlation races
Co-authored-by: JARVIS-Glasses <whatsskilll@gmail.com >
* fix(android): scope realtime correlation jobs
Co-authored-by: JARVIS-Glasses <whatsskilll@gmail.com >
* fix(android): bound Wear realtime audio work
Co-authored-by: JARVIS-Glasses <whatsskilll@gmail.com >
* fix(android): bound realtime run correlation
Co-authored-by: JARVIS-Glasses <whatsskilll@gmail.com >
* fix(android): stop stale Wear audio delivery
Co-authored-by: JARVIS-Glasses <whatsskilll@gmail.com >
* fix(android): track Wear playback per chunk
Co-authored-by: JARVIS-Glasses <whatsskilll@gmail.com >
* chore(android): refresh native i18n inventory
Co-authored-by: JARVIS-Glasses <whatsskilll@gmail.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-19 05:21:38 -07:00
WhatsSkiLL
19184a9fc6
improve(android): move Wear agent, session, and model pickers to Home ( #110661 )
...
* improve(android): move Wear agent, session, and model pickers to Home
* fix(android): harden Wear home context controls
Co-authored-by: JARVIS-Glasses <whatsskilll@gmail.com >
* fix(android): preserve Wear session model in capped lists
Co-authored-by: JARVIS-Glasses <whatsskilll@gmail.com >
* fix(android): scope Wear model catalogs to sessions
Co-authored-by: JARVIS-Glasses <whatsskilll@gmail.com >
* fix(android): harden Wear context request ordering
Co-authored-by: JARVIS-Glasses <whatsskilll@gmail.com >
* fix(android): scope Wear model responses to event cursors
Co-authored-by: JARVIS-Glasses <whatsskilll@gmail.com >
* fix(android): reload Wear catalog after model selection
Co-authored-by: JARVIS-Glasses <whatsskilll@gmail.com >
* fix(android): keep bounded Wear models navigable
Co-authored-by: JARVIS-Glasses <whatsskilll@gmail.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-18 23:57:25 +01:00
Chris M.
cc920838bc
fix(android): recover Wear requests from stale phone routes ( #110423 )
...
* fix(android): harden Wear phone routing
* fix(android): preserve proven Wear phone routes
Co-authored-by: Chris Mish <chrism@promethean-dynamic.com >
* fix(android): guard Wear discovery invalidation
Co-authored-by: Chris Mish <chrism@promethean-dynamic.com >
---------
Co-authored-by: Chris Mish <chrism@promethean-dynamic.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-18 11:33:57 +01:00
WhatsSkiLL
9f25b0dc12
fix(android): polish Wear light and dark surfaces ( #110314 )
2026-07-18 03:32:43 +01:00
WhatsSkiLL
9dedacf577
fix(android): restore the complete Wear companion experience ( #110130 )
...
* fix(android): restore full Wear companion UI
* chore(android): sync native i18n inventory
* fix(android): negotiate Wear companion capabilities
* chore(android): sync generated Japanese localization
* fix(android): preserve Wear reply notification setup
Co-authored-by: JARVIS-Glasses <whatsskilll@gmail.com >
* fix(android): harden Wear conversation controls
Co-authored-by: JARVIS-Glasses <whatsskilll@gmail.com >
* fix(android): preserve Wear control context
Co-authored-by: JARVIS-Glasses <whatsskilll@gmail.com >
* fix(android): keep Wear sessions agent-scoped
Co-authored-by: JARVIS-Glasses <whatsskilll@gmail.com >
* fix(android): isolate Wear conversation context
Co-authored-by: JARVIS-Glasses <whatsskilll@gmail.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-18 00:03:45 +01:00
WhatsSkiLL
4d3b18811e
feat(android): add Wear real-time Talk controls ( #109483 )
...
* feat(android): add Wear real-time Talk controls
* fix(android): satisfy Wear Talk CI checks
* fix(talk): remove unused client language parameter
* fix(android): harden Wear realtime Talk routing
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
* chore(android): refresh Wear Talk metadata
* chore(android): align native i18n baseline
---------
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-17 13:46:05 +01:00
Peter Steinberger
8d5e39afcd
feat(android): add Wear OS companion ( #109433 )
...
* feat(android): add Wear OS companion
Co-authored-by: Sebastian Schubotz <git@sibbl.net >
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
* style(android): format Wear release gate test
* test(android): cover Wear release CI contracts
* test(android): import Wear JSON fixture type
* fix(android): harden Wear proxy event actor
* test(android): stabilize Wear proxy actor tests
* test(android): isolate Wear proxy actor lifecycles
* test(android): own Wear actor dispatchers
* test(android): use real time for Wear actor tests
* test(android): own Wear actors in test scope
* test(android): stop Wear actors explicitly
* test(android): drain Wear actor cancellation
* test(android): isolate Wear actors from test scheduler
* test(android): inject Wear test clock
---------
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
2026-07-16 20:59:29 -07:00