joshavant
eb263c5104
chore(android): prepare 2026.7.4 Play release
2026-07-30 01:19:40 -05:00
Vincent Koc
d92062b970
fix(android): respect locale in compact labels
2026-07-28 23:49:44 +08:00
Vincent Koc
7838c6a6fd
fix(apps): fence stale mobile delivery state
2026-07-28 08:15:52 +02:00
Vincent Koc
2c316f51f7
fix(apps): harden mobile gateway and watch state
2026-07-21 09:00:21 +02:00
joshavant
49349577e0
chore(android): prepare 2026.7.3 Play release
2026-07-20 22:51:52 -05:00
Peter Steinberger
20677baf76
feat(android): copy or save rendered widgets as images from the chat transcript ( #111030 )
...
* feat(android): copy or save rendered widgets as images from the chat transcript
* chore(i18n): sync native app i18n inventory for widget export strings
* chore(i18n): regenerate native locale artifacts for widget export strings
2026-07-18 17:31:30 -07: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
WhatsSkiLL
6bd9e5f158
fix(android): keep composer media with its chat ( #109200 )
...
* fix(android): keep composer media with its chat
* fix(android): retry shared media after chat switch
* fix(android): bind composer media synchronously
* fix(android): bind composer state to chat owners
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
* chore(android): keep release notes app-scoped
* refactor(android): reuse localized outbox failure text
* style: format web push state migration
* style: format google meet setup test
* fix(android): restore composer build compatibility
* chore(android): sync native i18n inventory
* fix(android): satisfy composer warning gate
* fix(android): align composer ownership tests
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
* test(android): align durable composer assertions
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
* test(android): bound outbox scheduler advances
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
* fix(ci): recalibrate status startup memory budget (#109887 )
* fix(android): admit live composer payload
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
* fix(android): refresh native i18n inventory
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
* fix(android): bound composer admission receipts
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
* fix(android): preserve owner-bound async state
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
* fix(android): bind composer drafts to saved state
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 >
Co-authored-by: Peter Steinberger <peter@steipete.me >
2026-07-17 13:05:38 +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
Leon-SK668
5dce814ca1
fix(android): preserve emoji in shell initials ( #108830 )
...
* fix(android): preserve emoji in shell initials
* chore(android): refresh native i18n inventory
* refactor(android): share Unicode initial extraction
* fix(android): preserve grapheme cluster initials
* chore(android): refresh native i18n inventory
* fix(android): satisfy ICU iterator nullability
* test(android): run shell initials under Robolectric
Co-authored-by: Leon-SK668 <0668001470@xydigit.com >
* style(android): format localized initial helper
Co-authored-by: Leon-SK668 <0668001470@xydigit.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-16 13:38:27 -07:00
Peter Steinberger
4023eb92d2
feat(android): add foreground Voice Wake ( #107081 )
...
* feat(android): add foreground voice wake
* chore(android): refresh voice wake artifacts
* fix(android): refresh voice wake capability readiness
* chore(android): sync voice wake translations
* chore: keep release notes in PR context
2026-07-13 21:48:29 -07:00
Josh Avant
2e6fd00871
fix(android): release screenshots stall on gateway scene ( #106884 )
...
* chore(android): prepare 2026.7.2 Play release
* fix(android): unblock gateway release screenshots
2026-07-13 18:26:59 -05:00
Peter Steinberger
334e7f3f21
feat(apps): add native mobile Automations parity ( #106355 )
...
* fix(apps): address native Skills review feedback
* feat(apps): add native Automations parity
* fix(ios): preserve automation editor selection
* fix(android): page automation discovery
* chore(apps): refresh native source inventory
* fix(ios): refresh invalid automation diagnostics
* chore(apps): sync native localization
* fix(cron): stabilize paginated snapshots
* refactor(cron): split pagination helpers
* fix(apps): address final native review feedback
* chore(apps): refresh native source inventory
* fix(ios): dedupe automation list actions
* chore: keep release note in PR context
* fix(ci): repair current main architecture gates
* fix(ios): default new skill requirement fields
* fix(ios): retain queued automation reservations
2026-07-13 15:35:32 -07:00
Peter Steinberger
16b1bd2032
fix(android): support gateway protocol v3 ( #106205 )
2026-07-13 02:29:16 -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
2821abc1f5
feat(android): polish skill management ( #105592 )
...
* feat(android): polish skill management
* chore(android): sync skill localization
2026-07-12 11:46:59 -07:00
snowzlmbot
84fb7a664d
feat(android): manage skills from settings ( #101864 )
...
* feat(android): manage skills from settings
Co-authored-by: snowzlmbot <293528334+snowzlmbot@users.noreply.github.com >
* fix(android): scope skill install claims
* chore(android): refresh native i18n inventory
* chore(android): refresh native locale artifacts
* fix(android): localize skill management state
* chore(android): refresh skill localization artifacts
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: snowzlmbot <293528334+snowzlmbot@users.noreply.github.com >
2026-07-12 13:12:43 +01:00
Peter Steinberger
448b90a594
feat(android): adopt per-device app sessions ( #105115 )
...
* feat(android): adopt per-device app sessions
Co-authored-by: snowzlmbot <293528334+snowzlmbot@users.noreply.github.com >
* test(android): assert latest session adoption wins
---------
Co-authored-by: snowzlmbot <293528334+snowzlmbot@users.noreply.github.com >
2026-07-12 09:06:45 +01:00
WhatsSkiLL
604c026409
fix(android): keep session search in context ( #104792 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
2026-07-12 06:27:07 +01:00
Peter Steinberger
ac89350327
feat(apps): review durable approvals on mobile ( #104913 )
...
* feat(apps): Android, iPhone, and Watch approval clients
Squash-rebased #103912 segment onto the deep-links tip on current main.
Native approval surfaces: iOS approval presentation with gateway-switch
lease preservation and resolution fencing, watchOS inbox + approval
actions with shipped-shape payload codec, Android approval notices with
publication-tokened dismissal. Native i18n inventory regenerated.
(cherry picked from commit 428a76670ffeede54248b7bd7aa4438e2589851b)
(cherry picked from commit 80225d5707c3645eeea5435f266131037b50ede6)
(cherry picked from commit 2a23b714dc30d773a294aa45adc617e46b80732e)
(cherry picked from commit 9ff1153827769e2cbab7c11c153f0f8634662c28)
(cherry picked from commit 5b25723525bd562e5f97478af492f7b46ad30fd1)
(cherry picked from commit 8c80e8467b5fe89aad0d4c74a0573f1600ed3af9)
(cherry picked from commit ad4037bc9846bf6f082b41c129ee68aa344576c3)
(cherry picked from commit fdf767dd662cff3c8a5a6d571f38f153410651ca)
(cherry picked from commit 00c120376ffd992ea68ce29254a9bc0a25ed1740)
(cherry picked from commit f36a95213e561ceadc9da799e7f7803f9905844f)
(cherry picked from commit e2c25cbe2baacab44d21871d8cb6734704f065ac)
(cherry picked from commit 7c4fda519080486d341a9f4df36d63f9e24b1235)
(cherry picked from commit 1b3d4eda3dc5988012124597f9454ae21fb187a1)
(cherry picked from commit 2a606197227b0221d5f21f0fb92bdce5bf57eeec)
(cherry picked from commit 6f0c3865677f5988f4d1bccce8e46a0949c18ea2)
(cherry picked from commit 784a5857b7ade84b42866b8b7789d315ff04eadd)
(cherry picked from commit cbf294e026841c9bc2799da0fc7db666a69c52db)
* fix(apps): harden approval reconciliation and watch states
2026-07-11 19:59:07 -07:00
snowzlmbot
be373ea516
improve(android): show provider-configured model details ( #101912 )
...
* feat(android): show provider model inventory
Co-authored-by: snowzlmbot <293528334+snowzlmbot@users.noreply.github.com >
* fix(gateway): project provider inventory routes
* style(android): satisfy provider inventory ktlint
* chore(android): sync provider inventory i18n
* style(android): finish provider inventory formatting
* fix(android): harden provider inventory refresh
* test(gateway): type provider inventory fixture
* chore(protocol): regenerate Swift model choice
* chore(android): sync provider inventory i18n
* test(gateway): pin provider inventory discovery mode
* chore(android): sync provider inventory landing
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: snowzlmbot <293528334+snowzlmbot@users.noreply.github.com >
2026-07-11 17:22:16 -07:00
Igor Guarisma
4147345bcd
feat(android): show agent avatar instead of first-letter badge ( #103248 )
...
* feat(android): render configured agent avatars
Co-authored-by: Igor Guarisma <igor.guarisma@gmail.com >
* style(android): satisfy avatar ktlint
* style(android): fix avatar test formatting
* style(android): align avatar test indentation
* fix(android): initialize safe image client first
* chore(android): sync avatar i18n inventory
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-11 17:07:46 -07:00
NianJiu
d1f614c9e6
feat(android): add system share target ( #104571 )
...
* feat(android): receive system shares safely
Co-authored-by: NianJiuZst <3235467914@qq.com >
* fix(android): preserve share FIFO in composer
* fix(android): serialize cross-task share imports
* chore(android): sync share import i18n
* fix(android): retry shares in resumed composer
* chore(android): sync resumed share i18n
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-11 16:44:34 -07:00
Josh Avant
793fe4bfc7
fix(android): require installed-apps disclosure consent ( #97888 )
...
* fix(android): require installed-apps disclosure consent
Co-authored-by: Josh Avant <830519+joshavant@users.noreply.github.com >
* chore(android): sync native i18n inventory
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-11 15:56:12 -07:00
NianJiu
b5bea9073d
fix: recover Android permission request timeouts ( #103011 )
...
* fix(android): recover permission request timeouts
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
* chore(android): sync native i18n inventory
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
2026-07-11 15:35:41 -07:00
Peter Steinberger
7fe004d852
feat: show build identity in About screens ( #103595 )
...
* feat: show build identity in About screens
* chore: leave root changelog to release automation
* fix: translate Control UI About build details
2026-07-10 10:42:36 +01:00
joshavant
17fafcc901
chore(android): prepare 2026.7.1 Play release
2026-07-08 02:47:55 -05:00
WhatsSkiLL
4b3941c7f2
fix(android): tune screenshot mode visual sizing ( #100895 )
...
* fix(android): tune screenshot mode visual sizing
* chore(android): refresh screenshot i18n inventory
* refactor(android): simplify screenshot mode sizing
---------
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-07 02:01:02 +01:00
WhatsSkiLL
bce414d8b8
improve(android): align command palette row affordances ( #101072 )
...
* android: tidy command palette row affordances
* docs(android): credit command palette polish
---------
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-07 01:14:46 +01:00
Peter Steinberger
054e3675e1
feat(android): publish signed APKs with stable releases ( #101212 )
...
* feat(android): publish signed release APKs
* fix(android): preserve fallback corrections
* test(android): isolate APK signer fixtures
* docs: refresh generated docs map
2026-07-07 00:39:59 +01:00
Peter Steinberger
d931839e0c
feat(android): multi-gateway registry, per-gateway credentials, and switching ( #100947 )
2026-07-06 23:31:49 +01:00
Peter Steinberger
b05001a68b
fix(android): prevent native channel notification duplicates ( #101170 )
2026-07-06 21:12:08 +01:00
Peter Steinberger
2638113c68
feat(android): add Listen action speaking assistant messages via gateway TTS ( #100772 )
...
* docs(android): document the chat Listen action
* feat(android): add Listen action for assistant messages
2026-07-06 20:30:54 +01:00
Peter Steinberger
c4c4caadfe
fix(android): clarify SMS command authorization ( #100993 )
2026-07-06 18:36:05 +01:00
Peter Steinberger
d0dd18dd7f
feat(android): richer Settings About screen with mascot hero and project links ( #100994 )
2026-07-06 18:10:50 +01:00
Peter Steinberger
61a29a7836
feat(android): read-only workspace Files browser with preview and share ( #100776 )
...
* feat(android): add read-only workspace Files browser with preview and share
* fix(android): degrade malformed base64 image payloads to no-preview instead of crashing
* fix(android): keep workspace paths verbatim from the gateway
* test(android): cover the overview Files card in shell logic tests
* fix(android): reset workspace browser across agents
* fix(android): isolate workspace share exports
* docs(android): note workspace file browser
* chore(i18n): refresh Android Files inventory
* docs(android): refresh workspace files map
2026-07-06 17:14:38 +01:00
Peter Steinberger
063eeb69f3
feat(android): support opt-in background location ( #100967 )
...
* feat(android): support background location
Co-authored-by: Iori Kojima <iori@iori.dev >
* chore(android): refresh native i18n inventory
* docs(android): move release note to app changelog
---------
Co-authored-by: Iori Kojima <iori@iori.dev >
2026-07-06 16:36:58 +01:00
Peter Steinberger
8582895ca7
fix(android): finish onboarding after permission reapproval ( #100959 )
...
* fix(android): finish onboarding after permission reapproval
* chore(android): sync onboarding i18n inventory
2026-07-06 16:13:48 +01:00
Peter Steinberger
bc49cb41e9
fix(android): open system notifications on tap ( #100888 )
...
* fix(android): open system notifications on tap
* chore(android): sync notification i18n inventory
2026-07-06 14:14:29 +01:00
Peter Steinberger
876ab9bb0b
feat(android): add chat message actions ( #100879 )
...
* fix(android): add chat message actions
* chore(android): sync native i18n inventory
* fix(i18n): collect Android action labels
* fix(i18n): preserve Android placeholders
2026-07-06 13:50:16 +01:00
Peter Steinberger
90e1ef1768
fix(android): hide internal chat history rows ( #100826 )
...
* fix(android): hide internal chat history rows
* chore(android): sync native i18n inventory
2026-07-06 12:37:39 +01:00
Peter Steinberger
a467ceb523
fix(android): finish PTT relay handoff safely ( #100786 )
...
* fix(android): finish PTT relay handoff safely
* style(android): satisfy PTT ktlint
* test(android): make relay resume tests deterministic
* fix(android): recheck PTT finishing ownership
* chore(android): refresh native i18n inventory
2026-07-06 12:20:26 +01:00
Peter Steinberger
988c4d45dc
docs(android): credit landed app improvements ( #100702 )
...
* docs(android): credit landed app improvements
* docs: sync ClawHub map
2026-07-06 08:06:54 +01:00
Ben.Li
eda99cb8df
feat(android): reconnect gateway when validated network returns ( #100347 )
...
* feat(android): reconnect gateway when validated network returns
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix(android): dedupe validated network reconnects
* fix(android): wake gateway reconnect backoff safely
* fix(android): close network monitor startup race
* chore(android): refresh native i18n inventory
---------
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-06 07:20:39 +01:00
Voscko
d924ddc428
feat(android): show cron job details ( #95107 )
...
* feat(android): add cron job detail view
* fix(android): harden cron job detail loading
* chore(android): refresh native i18n inventory
* test(plugins): register workboard typed hook
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-06 06:25:37 +01:00
Peter Steinberger
851156af3b
feat: animate the OpenClaw mascot across web, iOS, and Android
...
Ports the openclaw.ai hero mascot animation (body float 4s, eye blink 3s,
antenna wiggle 2s, staggered claw snaps 4s) to every product surface that
shows the logo:
- web: ui/public/favicon.svg now carries SMIL animations, so every <img>
usage (login gate, sidebar brand, agent avatar fallback) animates with
no markup changes; CSS animations do not run in <img>-loaded SVGs.
- iOS: new OpenClawMascotView renders the canonical 120x120 vector via
Canvas + TimelineView (30fps, honors Reduce Motion); OpenClawProMark
uses it in onboarding, sidebar, and command center. Static PNG imageset
deleted (watch app keeps its own copy).
- Android: new OpenClawMascot composable (PathParser + infinite
transitions, honors the OS animator scale) replaces the static vector
drawable in onboarding and the chat/shell/voice headers, with tint
support for the monochrome header silhouettes. Drawable deleted.
2026-07-04 20:14:34 -07:00
joshavant
341231831b
chore(android): prepare 2026.6.11 Play release
2026-07-01 17:26:11 -05:00
Vincent Koc
0671c08900
chore(release): close out 2026.6.10 on main ( #96271 )
...
* chore(release): close out 2026.6.10 on main
* chore(release): align native app metadata for 2026.6.10
* chore(release): sync Android 2026.6.10 notes
* docs(changelog): preserve 2026.6.9 history
* docs(changelog): preserve 2026.6.9 history
2026-06-24 11:51:14 +08:00
joshavant
9405b8f075
chore(android): prepare 2026.6.9 Play release
2026-06-23 14:23:52 -05:00