These are the release notes for ActivityWatch for Android version v0.14.2.
Contributors
Thanks to everyone who contributed to this release:
@0xbrayo, @ErikBjare, @Q-Ze, @TimeToBuildBob
Changelog
Changes since v0.14.1:
📦 aw-android
✨ Features (4)
- feat(sync): show next scheduled sync time in Sync Settings (#290) (
347c067) - feat(ci): filter Play Store changelog to user-facing changes (#286) (
8da1b2a) - feat(sync): record and show what each sync pass actually did (#285) (
41913a1) - feat(mobile): research build flavor with own applicationId and port (#281) (
43b26d5)
🐛 Fixes (13)
Click to expand
- fix(onboarding): relaunch MainActivity after onboarding finishes (#298) (
b73cd46) - fix(sync): suppress desktop 'zero peers' warning in Sync Settings; show push-only note (#293) (
9ff13cc) - fix(widget): read category colors from aw-webui settings (#289) (
66cfd13) - fix(android): migrate unsanitized hostname after sanitizer change (#273) (
2add24f) - fix(ci): correct AGP bundle output path for flavored variants (#283) (
31c245f) - fix(ci): strip -research suffix in versionName assertion; document research builds (#280) (
12d33d5) - fix(watcher): construct RustInterface off the calling thread (#277) (
51ed0f9) - fix(ci): guard Play publish from -research tags (GitHub release only) (#278) (
06bb413) - fix(android): match system bars to webui theme; drop drawer teal gradient (#276) (
5f3ae65) - fix(sync): persist JNI error string on last-sync status (#275) (
12f8ee7) - fix: re-enable orientation change without reloading the webview (#271) (
0c5081f) - fix(watcher): bound accessibility tree traversal to stop StackOverflowError (#269) (
bf41547) - fix(android): harden startup paths that turned a slow datastore into a hang (#262) (
29577ab)
🔨 Misc (11)
Click to expand
- chore: bump versionName to 0.14.2, versionCode to 46 (
0a48372) - chore: bump versionName to 0.14.2b4, versionCode to 45 (
9069700) - chore: bump versionName to 0.14.2b3, versionCode to 45 (
5d66d91) - chore(submodule): bump aw-server-rust to
�(#295) (6123052) - chore: bump versionName to 0.14.2b2, versionCode to 44 (
cce2f0e) - test(e2e): harden syncToggleReceivesRealTap with bounded tap retry (#287) (
d8beef9) - test(e2e): wait for the rotated layout before post-rotation inset assertion (#282) (
f7b0b38) - docs: add CITATION.cff pointing to ActivityWatch DOI (#279) (
839e713) - chore: bump versionName to 0.14.2b1, versionCode to 43 (
97ff8e4) - test(e2e): tap the sync switch by view bounds instead of a uiautomator lookup (#266) (
7f1c15d) - test(e2e): upgrade-with-history test — server must answer while legacy data migrates (#264) (
6806996)
(excluded 3 less relevant commits)
📦 aw-server-rust
✨ Features (5)
- feat(aw-sync): daemon pull is opt-in via aw-sync config.toml (#716) (
70ba50d) - feat(sync): reconcile owner-originated event edits (#678) (
3d3b9dd) - feat(aw-sync): return and persist a SyncReport from each pass (#699) (
37aa0b0) - feat(android): make JNI startServer port configurable (#705) (
6386dbd) - feat(aw-sync): add
statusdoctor command and fail-loud empty-pull warnings (#687) (988e606)
🐛 Fixes (12)
Click to expand
- fix(aw-sync): isolate per-peer discovery errors; extract discover_peers; add dedup test (#712) (
ac47b09) - fix(aw-sync): dedup boundary events on resume to prevent cursor re-imports (#711) (#713) (
a7ddf50) - fix(aw-sync): scan pre-#697 buckets by origin to avoid re-import after Android hostname migration (#708) (
745918d) - fix(aw-sync): daemon discovers 3-level Android peers in sync_run (#710) (
e8bcb18) - fix(aw-sync): skip broken peers in sync_run instead of aborting the pass (#703) (
b0fab73) - fix(aw-sync): skip dot-directories when walking peer databases (#702) (
94bfc54) - fix(aw-sync): sanitize whitespace hostnames on import; make per-bucket errors non-fatal (#697) (
d1a61b1) - fix(aw-sync): open peer databases read-only; skip version mismatch (#700) (
d2ae2e6) - fix(aw-sync): do not stage a local db on pull-only sync_run (#698) (
5c12d3d) - fix(aw-sync): skip duplicate device_id folders that truncate history on pull (#686) (
876709e) - fix(android): don't let Rust panics abort the app across the JNI boundary (#681) (
611eb71) - fix(android): return an error object from getBuckets instead of panicking (#680) (
3b7ac33)
🔨 Misc (6)
- docs(aw-sync): document the working sync path; drop stale limitations (#701) (
7636fcd) - docs: add CITATION.cff pointing to ActivityWatch DOI (#704) (
b84a1ee) - perf(query): borrow variables for read-only function calls (#675) (
9a78451) - perf(export): serialize HTTP exports with bounded event buffering (#677) (
b834a8f) - perf(transform): merge overlapping events without vector insertions (#674) (
4272075) - perf(datastore): select an endtime index for recent interval reads (#676) (
fde0a48)
📦 aw-webui
🐛 Fixes (3)
- fix(activity): use actual bucket IDs in multidevice query (fixes BucketNotFound with aw-sync data) (#969) (
52ad886) - fix(buckets): render device.device_id instead of missing device.id (#983) (
efb8d4d) - fix(ci): authenticate CML release lookup (#981) (
4d58a55)
Full Changelog: v0.14.1...v0.14.2