Peter Steinberger
f9b1079283
build: cut 2026.3.28 stable
2026-03-29 02:33:41 +01:00
Peter Steinberger
587e18cd3f
chore: prepare 2026.3.28-beta.1 release
2026-03-28 22:24:51 +00:00
Peter Steinberger
8a24cbf450
chore: bump version to 2026.3.28
2026-03-28 22:05:21 +00:00
lixuankai
f0a57fad42
fix: isolate device chat defaults ( #53752 ) (thanks @lixuankai)
...
* [feat]Multiple nodes session context isolated from each other
* feat(android): Multiple nodes session context isolated from each other
* feat(android): Multiple nodes session context isolated from each other
* feat(android): Multiple nodes session context isolated from each other
* fix(android): isolate device chat defaults
---------
Co-authored-by: lixuankai <lixuankai@oppo.com>
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-28 12:19:47 +05:30
Ayaan Zaidi
29b6e27c9e
fix(android): auto-send voice turns on silence
2026-03-28 11:17:13 +05:30
Ayaan Zaidi
a7b8034a2b
fix(android): use native tts in voice tab
2026-03-28 10:47:08 +05:30
Peter Steinberger
72ba2b3653
chore: bump version metadata to 2026.3.27
2026-03-28 02:00:22 +00:00
Peter Steinberger
14b3360c22
chore: bump versions to 2026.3.26
2026-03-27 02:03:22 +00:00
Peter Steinberger
883239a560
build: prepare 2026.3.25 unreleased
2026-03-26 13:57:45 +00:00
Peter Steinberger
dc4d2ca263
build: prepare 2026.3.24
2026-03-23 21:05:59 -07:00
Peter Steinberger
870b0d216a
build: prepare 2026.3.23-beta.1
2026-03-23 11:54:49 -07:00
Vincent Koc
8b02ef1332
fix(android): gate canvas bridge to trusted pages ( #52722 )
...
* fix(android): gate canvas bridge to trusted pages
* fix(changelog): note android canvas bridge gating
* Update apps/android/app/src/main/java/ai/openclaw/app/node/CanvasActionTrust.kt
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
* fix(android): snapshot canvas URL on UI thread
---------
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2026-03-23 01:24:51 -07:00
Peter Steinberger
412a3eb1ac
build: bump version to 2026.3.22
2026-03-22 11:58:33 -07:00
Kaneki
d551d8b8f7
fix: make Android current-location callback cancellation-safe ( #52318 ) (thanks @Kaneki-x)
...
* Android: make current-location callback cancellation-safe
* fix: make Android current-location callback cancellation-safe (#52318 ) (thanks @Kaneki-x)
---------
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-22 22:40:45 +05:30
Kaneki
c7788773bf
fix: serialize TalkModeManager player cleanup ( #52310 ) (thanks @Kaneki-x)
...
* Android: fix MediaPlayer double-release race in TalkModeManager
* Android: guard currentPosition read against concurrent player release
* fix: serialize TalkModeManager player cleanup
* fix: serialize TalkModeManager player cleanup (#52310 ) (thanks @Kaneki-x)
---------
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-22 22:31:30 +05:30
Felippe Mercurio
8790c54635
fix(android): use scheme default port for gateway setup URLs ( #43540 )
...
* fix(android): use scheme default port for gateway setup URLs
* test(android): cover gateway endpoint default ports
* fix(android): preserve direct gateway default port
* fix(android): preserve explicit cleartext port display
* fix: preserve Android gateway setup URL ports (#43540 ) (thanks @fmercurio)
---------
Co-authored-by: clawdia <clawdia@fmercurio.tech>
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-22 10:21:38 +05:30
Goweii
e7e4c68caf
Android: update status bar appearance in OpenClawTheme ( #51098 )
...
* Android: update status bar appearance in OpenClawTheme
* fix: update Android status bar appearance (#51098 ) (thanks @goweii)
---------
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-22 09:33:24 +05:30
Kaneki
1e98dbcad3
Android: fix Bitmap memory leaks in PhotosHandler ( #41888 )
...
* Android: fix Bitmap memory leaks in PhotosHandler
Bitmaps created by decodeScaledBitmap and intermediate scaled copies
inside encodeJpegUnderBudget were never recycled, leaking native memory
on every photos.latest invocation (up to 20 bitmaps per call).
- latest(): wrap bitmap usage in try/finally to guarantee recycle
- decodeScaledBitmap(): recycle the decoded bitmap after scaling
- encodeJpegUnderBudget(): use try/finally to recycle intermediate
scaled bitmaps on all exit paths (success, compress failure, and
cannot-shrink-further early returns)
Made-with: Cursor
* Android: guard decodeScaledBitmap against scale() exceptions
* fix: note Android photos bitmap cleanup (#41888 ) (thanks @Kaneki-x)
---------
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-22 08:53:26 +05:30
Kaneki
2909d8cd12
Android: fix Bitmap memory leaks in CanvasController snapshots ( #41889 )
...
* Android: fix Bitmap memory leaks in CanvasController snapshots
snapshotPngBase64() and snapshotBase64() create bitmaps via
captureBitmap() and scaleForMaxWidth() but never recycle them,
leaking native memory on every canvas snapshot invocation.
Wrap both methods in nested try/finally blocks:
- outer: always recycles the captured bitmap
- inner: recycles the scaled bitmap only when it differs from the
captured one (scaleForMaxWidth returns `this` when no scaling needed)
Made-with: Cursor
* fix: note Android canvas snapshot bitmap leak in changelog (#41889 ) (thanks @Kaneki-x)
---------
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-22 08:50:42 +05:30
Kaneki
88da51d91b
Android: fix temp file leak in CameraHandler.handleClip ( #41890 )
...
* Android: fix temp file leak in CameraHandler.handleClip
When readBytes() throws (IOException, OOM, etc.), the recorded clip
file was never deleted because delete() only ran on the success path.
Move file.delete() into a finally block so the temp file is cleaned up
regardless of whether readBytes() succeeds or fails.
Made-with: Cursor
* fix: Android camera clip cleanup (#41890 ) (thanks @Kaneki-x)
---------
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-22 08:49:50 +05:30
kaneki
f7866c1c15
Android: escape SQL LIKE wildcards in contacts search query
...
The contacts search passed user input directly into a LIKE pattern
without escaping % and _ characters, causing them to act as SQL
wildcards and return incorrect results.
Add an escapeLikePattern() helper that escapes \, %, and _ with a
backslash, and add ESCAPE '\' to the selection clause so SQLite
treats them as literal characters.
Made-with: Cursor
2026-03-22 08:48:29 +05:30
kaneki
d38561acbe
Android: fix Bitmap memory leaks in CameraCaptureManager.snap
2026-03-22 08:44:06 +05:30
Kaneki
d6346aaf63
Android: fix sensor callback race condition in MotionHandler ( #43781 )
...
* Android: fix sensor callback race in MotionHandler using tryResume
* call completeResume before unregisterListener to avoid coroutine leak
* replace internal tryResume/completeResume with AtomicBoolean guard
* use CancellableContinuation.resume(value, onCancellation) for cancellation safety
* use non-deprecated resume overload for kotlinx.coroutines 1.10+
* fix: simplify Android motion continuation resume
---------
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-22 08:41:02 +05:30
Kaneki
e7814f7ba0
Android: fix incomplete JS string escaping in A2UI action status ( #43784 )
...
* Android: fix incomplete JS string escaping in A2UI action status
* escape U+2028/U+2029 Unicode line terminators in JS strings
* refactor(android): serialize A2UI action status strings
* fix: serialize Android A2UI action status strings (#43784 ) (thanks @Kaneki-x)
---------
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-22 08:39:53 +05:30
Ayaan Zaidi
b67baae1f6
fix: make permission rationale completion single-shot
2026-03-22 08:34:02 +05:30
kaneki
6db72746fb
Android: keep permission dialog cleanup on the main thread
2026-03-22 08:34:02 +05:30
kaneki
518d2dd6a9
Android: harden permission dialogs across activity teardown
2026-03-22 08:34:02 +05:30
Ayaan Zaidi
4c60956d8e
build(android): update Gradle tooling
2026-03-20 17:12:10 +05:30
Ayaan Zaidi
3bda64f75c
perf(android): reduce tab-switch CPU churn
2026-03-20 17:10:18 +05:30
Ayaan Zaidi
0c2e6fe97f
ci(android): use explicit flavor debug tasks
2026-03-20 12:55:52 +05:30
Ayaan Zaidi
f09f98532c
feat(android): hide restricted capabilities in play builds
2026-03-20 12:45:25 +05:30
Ayaan Zaidi
ecec0d5b2c
build(android): add play and third-party release flavors
2026-03-20 12:45:25 +05:30
Ayaan Zaidi
2afd65741c
fix: preserve talk provider and speaking state
2026-03-20 11:08:21 +05:30
Ayaan Zaidi
47e412bd0b
fix(review): preserve talk directive overrides
2026-03-20 11:01:24 +05:30
Ayaan Zaidi
4a0341ed03
fix(review): address talk cleanup feedback
2026-03-20 11:01:24 +05:30
Ayaan Zaidi
4386a0ace8
refactor(android): remove legacy elevenlabs talk stack
2026-03-20 11:01:24 +05:30
Ayaan Zaidi
e3afaca1a6
refactor(android): route talk playback through gateway
2026-03-20 11:01:24 +05:30
Ayaan Zaidi
f7fe75a68b
refactor(android): simplify talk config parsing
2026-03-20 11:01:24 +05:30
xubaolin
bfe979dd5b
refactor: add Android LocationHandler test seam ( #50027 ) (thanks @xu-baolin)
2026-03-19 20:57:43 +05:30
Ayaan Zaidi
040c43ae21
feat(android): benchmark script
2026-03-19 13:13:14 +05:30
Ayaan Zaidi
0443ee82be
fix(android): auto-connect gateway on app open
2026-03-19 12:49:18 +05:30
Ayaan Zaidi
608b9a9af2
fix(android): show copyable gateway diagnostics
2026-03-19 10:47:12 +05:30
lixuankai
c86de678f3
feat(android): support android node sms.search ( #48299 )
...
* feat(android): support android node sms.search
* feat(android): support android node sms.search
* fix(android): split sms search permissions
* fix: document android sms.search landing (#48299 ) (thanks @lixuankai)
---------
Co-authored-by: lixuankai <lixuankai@oppo.com>
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-19 08:52:15 +05:30
Ayaan Zaidi
64e412e57e
fix(android): lazy-init node runtime after onboarding
2026-03-16 18:54:51 +05:30
Ayaan Zaidi
3e360ec8cb
fix(android): shrink chat image attachments
2026-03-16 18:47:09 +05:30
Ayaan Zaidi
a41be2585f
fix(android): preserve chat message identity on refresh
2026-03-16 18:42:25 +05:30
Ayaan Zaidi
56e23a887f
fix(android): reduce chat recomposition churn
2026-03-16 18:42:20 +05:30
Ace Lee
d7ac16788e
fix(android): support android node `calllog.search` ( #44073 )
...
* fix(android): support android node `calllog.search`
* fix(android): support android node calllog.search
* fix(android): wire callLog through shared surfaces
* fix: land Android callLog support (#44073 ) (thanks @lxk7280)
---------
Co-authored-by: lixuankai <lixuankai@oppo.com>
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-15 14:54:32 +05:30
Ayaan Zaidi
37c79f84ba
fix(android): theme popup surfaces
2026-03-15 09:48:08 +05:30
Sebastian Schubotz
db20141993
feat(android): add dark theme ( #46249 )
...
* Android: add mobile dark theme
* Android: fix remaining dark mode card surfaces
* Android: address dark mode review comments
* fix(android): theme onboarding flow
* fix: add Android dark theme coverage (#46249 ) (thanks @sibbl)
---------
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-15 08:35:04 +05:30
Ayaan Zaidi
2ae8837987
fix: keep android canvas home visible after restart
2026-03-14 11:03:02 +05:30
Ayaan Zaidi
1f9cc647f8
build: upload Android native debug symbols
2026-03-14 09:44:31 +05:30
Ayaan Zaidi
f251e7e2c2
build: shrink Android app release bundle
2026-03-14 09:39:33 +05:30
Ayaan Zaidi
f1d9fcd407
build(android): strip unused dnsjava resolver service before R8
2026-03-14 09:25:17 +05:30
Ayaan Zaidi
3fb629219e
build(android): add auto-bump signed aab release script
2026-03-14 09:25:17 +05:30
Ayaan Zaidi
df765f602b
fix: default Android TLS setup codes to port 443
2026-03-14 08:54:01 +05:30
Ayaan Zaidi
45721d5dec
fix: polish Android QR scanner onboarding ( #45021 )
2026-03-13 17:13:54 +05:30
Ayaan Zaidi
b934cb49c7
fix(android): use Google Code Scanner for onboarding QR
2026-03-13 17:13:54 +05:30
Kaneki
84428bbba6
Android: fix HttpURLConnection leak in TalkModeVoiceResolver ( #43780 )
...
* Android: fix HttpURLConnection leak in TalkModeVoiceResolver.listVoices
* fix null errorStream NPE and preserve HTTP keep-alive
* fix: restore voice resolver disconnect cleanup
---------
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-13 14:59:21 +05:30
Ayaan Zaidi
c04544891d
feat(android): consolidate Settings into grouped card sections
...
Remove header bloat, merge Node info into a single Device card,
group permissions into Media/Notifications/Data Access cards with
internal dividers, and combine Screen+Debug into Preferences.
Sections reduced from 9 to 6.
2026-03-13 14:31:39 +05:30
Ayaan Zaidi
8b0e16a1c8
feat(android): soften chat role labels and deduplicate session header
...
Rename role labels to You/OpenClaw/System, update streaming label to
OpenClaw · Live, and remove the redundant SESSION row + Connected pill
since the top bar and chip row already convey both.
2026-03-13 14:31:39 +05:30
Ayaan Zaidi
c761b5b8a8
feat(android): compact chat composer layout
...
Remove MESSAGE label and divider, let text field auto-size instead
of fixed 92dp, and merge Detail/Attach into the bottom action row.
2026-03-13 14:31:39 +05:30
Ayaan Zaidi
720b9d2c45
feat(android): add speaker label and status pill to Voice tab
...
Add text label under speaker toggle, balance layout with matching
spacer column, and wrap status text in a colored pill.
2026-03-13 14:31:39 +05:30
Ayaan Zaidi
beff0cf02c
feat(android): redesign Connect tab with unified status cards
...
Merge endpoint and status into a single grouped card with icons.
Split connect/disconnect into context-aware buttons.
2026-03-13 14:31:39 +05:30
Ayaan Zaidi
aae75b5e57
feat(android): redesign onboarding flow UI
...
- Welcome: replace bullet list with icon+subtitle feature cards
- Gateway: simplify to single instruction line, collapse advanced by default, remove verbose developer text
- Permissions: group into System/Media/Personal Data sections, rewrite subtitles to plain English, style "Not granted" with warning color
- Review: replace plain text fields with icon cards matching Welcome style, add colored status cards for connect/pairing states
- Remove redundant "FIRST RUN" label, "Step X of 4" text, and StepRailWrap dividers
2026-03-13 12:25:39 +05:30
Ayaan Zaidi
402f2556b9
fix(android): clip CommandBlock accent bar to rounded container bounds
2026-03-13 11:39:23 +05:30
Peter Steinberger
16ececf0a6
chore: bump version to 2026.3.13
2026-03-13 04:38:32 +00:00
Peter Steinberger
c25e46a433
chore: prepare 2026.3.12 release
2026-03-13 01:38:20 +00:00
Peter Steinberger
589aca0e6d
refactor: unify gateway connect auth selection
2026-03-12 22:46:28 +00:00
Peter Steinberger
bf89947a8e
fix: switch pairing setup codes to bootstrap tokens
2026-03-12 22:23:07 +00:00
Peter Steinberger
29dc65403f
build: prepare 2026.3.11 release
2026-03-12 05:01:07 +00:00
Peter Steinberger
b125c3ba06
build: bump openclaw to 2026.3.11-beta.1
2026-03-12 04:08:19 +00:00
Peter Steinberger
ce5dd742f8
build: sync versions to 2026.3.11
2026-03-12 04:01:57 +00:00
Peter Steinberger
0e397e62b7
chore: bump version to 2026.3.10
2026-03-11 23:29:53 +00:00
Peter Steinberger
f9706fde6a
build: bump unreleased version to 2026.3.9
2026-03-09 08:33:58 +00:00
Peter Steinberger
fa580e33c1
refactor: split android talk voice resolution
2026-03-08 18:40:14 +00:00
Peter Steinberger
371c53b282
test: expand talk config contract fixtures
2026-03-08 18:40:14 +00:00
Peter Steinberger
cee2f3e8b4
refactor: dedupe android talk config parsing
2026-03-08 18:40:14 +00:00
Peter Steinberger
16a5f0b006
refactor: split talk gateway config loaders
2026-03-08 16:22:48 +00:00
Peter Steinberger
dc5645d459
test: add talk config contract fixtures
2026-03-08 16:22:48 +00:00
Peter Steinberger
8d3d742c6a
refactor: require canonical talk resolved payload
2026-03-08 16:22:48 +00:00
Peter Steinberger
b7ad8fd661
fix: fail closed talk provider selection
2026-03-08 16:22:48 +00:00
Peter Steinberger
b4c8950417
refactor: centralize talk silence timeout defaults
2026-03-08 14:58:29 +00:00
Peter Steinberger
4e2290b841
refactor: add canonical talk config payload
2026-03-08 14:58:29 +00:00
Peter Steinberger
0af3118d08
fix: harden talk silence timeout parsing ( #39607 ) (thanks @danodoesdesign)
...
Co-authored-by: dano does design <dano.does.design@gmail.com>
2026-03-08 14:30:25 +00:00
dano does design
6ff7e8f42e
talk: add configurable silence timeout
2026-03-08 14:30:25 +00:00
Ayaan Zaidi
04b4b48077
fix(android): persist legacy location mode migration
2026-03-08 16:25:49 +05:30
Ayaan Zaidi
709e11ea70
build(android): bump release version code
2026-03-08 16:25:49 +05:30
Ayaan Zaidi
46145fde19
fix(android): remove mic and screen foreground services
2026-03-08 16:25:49 +05:30
Ayaan Zaidi
1230cefe25
fix(android): remove background location mode
2026-03-08 16:25:49 +05:30
Ayaan Zaidi
0f9566b0b5
fix(android): remove self-update install flow
2026-03-08 16:25:49 +05:30
Ayaan Zaidi
d3c3d0e730
style(android): update app icon
2026-03-08 13:25:01 +05:30
Peter Steinberger
05217845a7
build: bump version to 2026.3.8
2026-03-08 05:59:04 +00:00
Vincent Koc
e4d80ed556
CI: restore main detect-secrets scan ( #38438 )
...
* Tests: stabilize detect-secrets fixtures
* Tests: fix rebased detect-secrets false positives
* Docs: keep snippets valid under detect-secrets
* Tests: finalize detect-secrets false-positive fixes
* Tests: reduce detect-secrets false positives
* Tests: keep detect-secrets pragmas inline
* Tests: remediate next detect-secrets batch
* Tests: tighten detect-secrets allowlists
* Tests: stabilize detect-secrets formatter drift
2026-03-07 10:06:35 -08:00
Peter Steinberger
997a9f5b9e
chore: bump version to 2026.3.7
2026-03-07 10:09:02 +00:00
Ayaan Zaidi
5568b393a8
fix(android): rename app package to ai.openclaw.app
2026-03-07 14:51:03 +05:30
Vincent Koc
42e3d8d693
Secrets: add inline allowlist review set ( #38314 )
...
* Secrets: add inline allowlist review set
* Secrets: narrow detect-secrets file exclusions
* Secrets: exclude Docker fingerprint false positive
* Secrets: allowlist test and docs false positives
* Secrets: refresh baseline after allowlist updates
* Secrets: fix gateway chat fixture pragma
* Secrets: format pre-commit config
* Android: keep talk mode fixture JSON valid
* Feishu: rely on client timeout injection
* Secrets: allowlist provider auth test fixtures
* Secrets: allowlist onboard search fixtures
* Secrets: allowlist onboard mode fixture
* Secrets: allowlist gateway auth mode fixture
* Secrets: allowlist APNS wake test key
* Secrets: allowlist gateway reload fixtures
* Secrets: allowlist moonshot video fixture
* Secrets: allowlist auto audio fixture
* Secrets: allowlist tiny audio fixture
* Secrets: allowlist embeddings fixtures
* Secrets: allowlist resolve fixtures
* Secrets: allowlist target registry pattern fixtures
* Secrets: allowlist gateway chat env fixture
* Secrets: refresh baseline after fixture allowlists
* Secrets: reapply gateway chat env allowlist
* Secrets: reapply gateway chat env allowlist
* Secrets: stabilize gateway chat env allowlist
* Secrets: allowlist runtime snapshot save fixture
* Secrets: allowlist oauth profile fixtures
* Secrets: allowlist compaction identifier fixture
* Secrets: allowlist model auth fixture
* Secrets: allowlist model status fixtures
* Secrets: allowlist custom onboarding fixture
* Secrets: allowlist mattermost token summary fixtures
* Secrets: allowlist gateway auth suite fixtures
* Secrets: allowlist channel summary fixture
* Secrets: allowlist provider usage auth fixtures
* Secrets: allowlist media proxy fixture
* Secrets: allowlist secrets audit fixtures
* Secrets: refresh baseline after final fixture allowlists
* Feishu: prefer explicit client timeout
* Feishu: test direct timeout precedence
2026-03-06 19:35:26 -05:00
Peter Steinberger
e08ba063d8
test(android): fix GatewaySessionInvokeTest coroutine job typing ( #31594 )
2026-03-02 15:47:21 +00:00
Peter Steinberger
b85facfb5d
refactor(android): share node JSON param parsing helpers
2026-03-02 14:36:41 +00:00
Peter Steinberger
2d8b8a17ab
test(android): dedupe node and gateway invoke tests
2026-03-02 13:52:36 +00:00