ActivityWatch
net.activitywatch.android
Zapstore _@zapstore.dev Republished from GitHub / F-Droid by the Zapstore main account.
ActivityWatch is an open-source cross-platform application that tracks how you spend time on your devices, and keeps you in control of your data. It is the same ActivityWatch you know and love, but for Android! It builds on the same core as the desktop version, enabling us to offer the same features whichever platform you are on. Note about accessibility permission: the app allows users to optionally grant the accessibility permission to enable collection of browsing history, by tracking URLs from supported browsers. You can report issues and view the source code on GitHub: https://github.com/ActivityWatch/aw-android
First release: Oct 13, 2023, 4 total releases.
Most recent release: Sep 23, 2026.
Appears in 0 app stacks.
0 sats / 0 zaps received in the past year.
Sats Received
Underlying data available via MCP: app_zaps, app_releases.
Zap Count
Underlying data available via MCP: app_zaps, app_releases.
Releases
- Sep 23, 2026 0.14.2These 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
Moreβ¦
Changes since [v0.14.1](https://github.com/ActivityWatch/aw-android/releases/tag/v0.14.1): ## π¦ aw-android ### β¨ Features (4) - feat(sync): show next scheduled sync time in Sync Settings ([#290](https://github.com/ActivityWatch/aw-android/issues/290)) ([`347c067`](https://github.com/ActivityWatch/aw-android/commit/347c067)) - feat(ci): filter Play Store changelog to user-facing changes ([#286](https://github.com/ActivityWatch/aw-android/issues/286)) ([`8da1b2a`](https://github.com/ActivityWatch/aw-android/commit/8da1b2a)) - feat(sync): record and show what each sync pass actually did ([#285](https://github.com/ActivityWatch/aw-android/issues/285)) ([`41913a1`](https://github.com/ActivityWatch/aw-android/commit/41913a1)) - feat(mobile): research build flavor with own applicationId and port ([#281](https://github.com/ActivityWatch/aw-android/issues/281)) ([`43b26d5`](https://github.com/ActivityWatch/aw-android/commit/43b26d5)) ### π Fixes (13) <details><summary>Click to expand</summary> <p> - fix(onboarding): relaunch MainActivity after onboarding finishes ([#298](https://github.com/ActivityWatch/aw-android/issues/298)) ([`b73cd46`](https://github.com/ActivityWatch/aw-android/commit/b73cd46)) - fix(sync): suppress desktop 'zero peers' warning in Sync Settings; show push-only note ([#293](https://github.com/ActivityWatch/aw-android/issues/293)) ([`9ff13cc`](https://github.com/ActivityWatch/aw-android/commit/9ff13cc)) - fix(widget): read category colors from aw-webui settings ([#289](https://github.com/ActivityWatch/aw-android/issues/289)) ([`66cfd13`](https://github.com/ActivityWatch/aw-android/commit/66cfd13)) - fix(android): migrate unsanitized hostname after sanitizer change ([#273](https://github.com/ActivityWatch/aw-android/issues/273)) ([`2add24f`](https://github.com/ActivityWatch/aw-android/commit/2add24f)) - fix(ci): correct AGP bundle output path for flavored variants ([#283](https://github.com/ActivityWatch/aw-android/issues/283)) ([`31c245f`](https://github.com/ActivityWatch/aw-android/commit/31c245f)) - fix(ci): strip -research suffix in versionName assertion; document research builds ([#280](https://github.com/ActivityWatch/aw-android/issues/280)) ([`12d33d5`](https://github.com/ActivityWatch/aw-android/commit/12d33d5)) - fix(watcher): construct RustInterface off the calling thread ([#277](https://github.com/ActivityWatch/aw-android/issues/277)) ([`51ed0f9`](https://github.com/ActivityWatch/aw-android/commit/51ed0f9)) - fix(ci): guard Play publish from -research tags (GitHub release only) ([#278](https://github.com/ActivityWatch/aw-android/issues/278)) ([`06bb413`](https://github.com/ActivityWatch/aw-android/commit/06bb413)) - fix(android): match system bars to webui theme; drop drawer teal gradient ([#276](https://github.com/ActivityWatch/aw-android/issues/276)) ([`5f3ae65`](https://github.com/ActivityWatch/aw-android/commit/5f3ae65)) - fix(sync): persist JNI error string on last-sync status ([#275](https://github.com/ActivityWatch/aw-android/issues/275)) ([`12f8ee7`](https://github.com/ActivityWatch/aw-android/commit/12f8ee7)) - fix: re-enable orientation change without reloading the webview ([#271](https://github.com/ActivityWatch/aw-android/issues/271)) ([`0c5081f`](https://github.com/ActivityWatch/aw-android/commit/0c5081f)) - fix(watcher): bound accessibility tree traversal to stop StackOverflowError ([#269](https://github.com/ActivityWatch/aw-android/issues/269)) ([`bf41547`](https://github.com/ActivityWatch/aw-android/commit/bf41547)) - fix(android): harden startup paths that turned a slow datastore into a hang ([#262](https://github.com/ActivityWatch/aw-android/issues/262)) ([`29577ab`](https://github.com/ActivityWatch/aw-android/commit/29577ab)) </p> </details> ### π¨ Misc (11) <details><summary>Click to expand</summary> <p> - chore: bump versionName to 0.14.2, versionCode to 46 ([`0a48372`](https://github.com/ActivityWatch/aw-android/commit/0a48372)) - chore: bump versionName to 0.14.2b4, versionCode to 45 ([`9069700`](https://github.com/ActivityWatch/aw-android/commit/9069700)) - chore: bump versionName to 0.14.2b3, versionCode to 45 ([`5d66d91`](https://github.com/ActivityWatch/aw-android/commit/5d66d91)) - chore(submodule): bump aw-server-rust to[``](https://github.com/ActivityWatch/aw-android/issues/)([#295](https://github.com/ActivityWatch/aw-android/issues/295)) ([`6123052`](https://github.com/ActivityWatch/aw-android/commit/6123052)) - chore: bump versionName to 0.14.2b2, versionCode to 44 ([`cce2f0e`](https://github.com/ActivityWatch/aw-android/commit/cce2f0e)) - test(e2e): harden syncToggleReceivesRealTap with bounded tap retry ([#287](https://github.com/ActivityWatch/aw-android/issues/287)) ([`d8beef9`](https://github.com/ActivityWatch/aw-android/commit/d8beef9)) - test(e2e): wait for the rotated layout before post-rotation inset assertion ([#282](https://github.com/ActivityWatch/aw-android/issues/282)) ([`f7b0b38`](https://github.com/ActivityWatch/aw-android/commit/f7b0b38)) - docs: add CITATION.cff pointing to ActivityWatch DOI ([#279](https://github.com/ActivityWatch/aw-android/issues/279)) ([`839e713`](https://github.com/ActivityWatch/aw-android/commit/839e713)) - chore: bump versionName to 0.14.2b1, versionCode to 43 ([`97ff8e4`](https://github.com/ActivityWatch/aw-android/commit/97ff8e4)) - test(e2e): tap the sync switch by view bounds instead of a uiautomator lookup ([#266](https://github.com/ActivityWatch/aw-android/issues/266)) ([`7f1c15d`](https://github.com/ActivityWatch/aw-android/commit/7f1c15d)) - test(e2e): upgrade-with-history test β server must answer while legacy data migrates ([#264](https://github.com/ActivityWatch/aw-android/issues/264)) ([`6806996`](https://github.com/ActivityWatch/aw-android/commit/6806996)) </p> </details> *(excluded 3 less relevant [commits](https://github.com/ActivityWatch/aw-android/compare/v0.14.1...v0.14.2))* ## π¦ aw-server-rust ### β¨ Features (5) - feat(aw-sync): daemon pull is opt-in via aw-sync config.toml ([#716](https://github.com/ActivityWatch/aw-server-rust/issues/716)) ([`70ba50d`](https://github.com/ActivityWatch/aw-server-rust/commit/70ba50d)) - feat(sync): reconcile owner-originated event edits ([#678](https://github.com/ActivityWatch/aw-server-rust/issues/678)) ([`3d3b9dd`](https://github.com/ActivityWatch/aw-server-rust/commit/3d3b9dd)) - feat(aw-sync): return and persist a SyncReport from each pass ([#699](https://github.com/ActivityWatch/aw-server-rust/issues/699)) ([`37aa0b0`](https://github.com/ActivityWatch/aw-server-rust/commit/37aa0b0)) - feat(android): make JNI startServer port configurable ([#705](https://github.com/ActivityWatch/aw-server-rust/issues/705)) ([`6386dbd`](https://github.com/ActivityWatch/aw-server-rust/commit/6386dbd)) - feat(aw-sync): add `status` doctor command and fail-loud empty-pull warnings ([#687](https://github.com/ActivityWatch/aw-server-rust/issues/687)) ([`988e606`](https://github.com/ActivityWatch/aw-server-rust/commit/988e606)) ### π Fixes (12) <details><summary>Click to expand</summary> <p> - fix(aw-sync): isolate per-peer discovery errors; extract discover_peers; add dedup test ([#712](https://github.com/ActivityWatch/aw-server-rust/issues/712)) ([`ac47b09`](https://github.com/ActivityWatch/aw-server-rust/commit/ac47b09)) - fix(aw-sync): dedup boundary events on resume to prevent cursor re-imports ([#711](https://github.com/ActivityWatch/aw-server-rust/issues/711)) ([#713](https://github.com/ActivityWatch/aw-server-rust/issues/713)) ([`a7ddf50`](https://github.com/ActivityWatch/aw-server-rust/commit/a7ddf50)) - fix(aw-sync): scan pre-[#697](https://github.com/ActivityWatch/aw-server-rust/issues/697) buckets by origin to avoid re-import after Android hostname migration ([#708](https://github.com/ActivityWatch/aw-server-rust/issues/708)) ([`745918d`](https://github.com/ActivityWatch/aw-server-rust/commit/745918d)) - fix(aw-sync): daemon discovers 3-level Android peers in sync_run ([#710](https://github.com/ActivityWatch/aw-server-rust/issues/710)) ([`e8bcb18`](https://github.com/ActivityWatch/aw-server-rust/commit/e8bcb18)) - fix(aw-sync): skip broken peers in sync_run instead of aborting the pass ([#703](https://github.com/ActivityWatch/aw-server-rust/issues/703)) ([`b0fab73`](https://github.com/ActivityWatch/aw-server-rust/commit/b0fab73)) - fix(aw-sync): skip dot-directories when walking peer databases ([#702](https://github.com/ActivityWatch/aw-server-rust/issues/702)) ([`94bfc54`](https://github.com/ActivityWatch/aw-server-rust/commit/94bfc54)) - fix(aw-sync): sanitize whitespace hostnames on import; make per-bucket errors non-fatal ([#697](https://github.com/ActivityWatch/aw-server-rust/issues/697)) ([`d1a61b1`](https://github.com/ActivityWatch/aw-server-rust/commit/d1a61b1)) - fix(aw-sync): open peer databases read-only; skip version mismatch ([#700](https://github.com/ActivityWatch/aw-server-rust/issues/700)) ([`d2ae2e6`](https://github.com/ActivityWatch/aw-server-rust/commit/d2ae2e6)) - fix(aw-sync): do not stage a local db on pull-only sync_run ([#698](https://github.com/ActivityWatch/aw-server-rust/issues/698)) ([`5c12d3d`](https://github.com/ActivityWatch/aw-server-rust/commit/5c12d3d)) - fix(aw-sync): skip duplicate device_id folders that truncate history on pull ([#686](https://github.com/ActivityWatch/aw-server-rust/issues/686)) ([`876709e`](https://github.com/ActivityWatch/aw-server-rust/commit/876709e)) - fix(android): don't let Rust panics abort the app across the JNI boundary ([#681](https://github.com/ActivityWatch/aw-server-rust/issues/681)) ([`611eb71`](https://github.com/ActivityWatch/aw-server-rust/commit/611eb71)) - fix(android): return an error object from getBuckets instead of panicking ([#680](https://github.com/ActivityWatch/aw-server-rust/issues/680)) ([`3b7ac33`](https://github.com/ActivityWatch/aw-server-rust/commit/3b7ac33)) </p> </details> ### π¨ Misc (6) - docs(aw-sync): document the working sync path; drop stale limitations ([#701](https://github.com/ActivityWatch/aw-server-rust/issues/701)) ([`7636fcd`](https://github.com/ActivityWatch/aw-server-rust/commit/7636fcd)) - docs: add CITATION.cff pointing to ActivityWatch DOI ([#704](https://github.com/ActivityWatch/aw-server-rust/issues/704)) ([`b84a1ee`](https://github.com/ActivityWatch/aw-server-rust/commit/b84a1ee)) - perf(query): borrow variables for read-only function calls ([#675](https://github.com/ActivityWatch/aw-server-rust/issues/675)) ([`9a78451`](https://github.com/ActivityWatch/aw-server-rust/commit/9a78451)) - perf(export): serialize HTTP exports with bounded event buffering ([#677](https://github.com/ActivityWatch/aw-server-rust/issues/677)) ([`b834a8f`](https://github.com/ActivityWatch/aw-server-rust/commit/b834a8f)) - perf(transform): merge overlapping events without vector insertions ([#674](https://github.com/ActivityWatch/aw-server-rust/issues/674)) ([`4272075`](https://github.com/ActivityWatch/aw-server-rust/commit/4272075)) - perf(datastore): select an endtime index for recent interval reads ([#676](https://github.com/ActivityWatch/aw-server-rust/issues/676)) ([`fde0a48`](https://github.com/ActivityWatch/aw-server-rust/commit/fde0a48)) ## π¦ aw-webui ### π Fixes (3) - fix(activity): use actual bucket IDs in multidevice query (fixes BucketNotFound with aw-sync data) ([#969](https://github.com/ActivityWatch/aw-webui/issues/969)) ([`52ad886`](https://github.com/ActivityWatch/aw-webui/commit/52ad886)) - fix(buckets): render device.device_id instead of missing device.id ([#983](https://github.com/ActivityWatch/aw-webui/issues/983)) ([`efb8d4d`](https://github.com/ActivityWatch/aw-webui/commit/efb8d4d)) - fix(ci): authenticate CML release lookup ([#981](https://github.com/ActivityWatch/aw-webui/issues/981)) ([`4d58a55`](https://github.com/ActivityWatch/aw-webui/commit/4d58a55)) **Full Changelog**: https://github.com/ActivityWatch/aw-android/compare/v0.14.1...v0.14.2 - Sep 14, 2026 0.14.1These are the release notes for ActivityWatch for Android version v0.14.1. # Contributors Thanks to everyone who contributed to this release: @0xbrayo, @TimeToBuildBob # Changelog
Moreβ¦
Changes since [v0.14.0](https://github.com/ActivityWatch/aw-android/releases/tag/v0.14.0): ## π¦ aw-android ### π Fixes (2) - fix(android): inset native windows below system bars ([#258](https://github.com/ActivityWatch/aw-android/issues/258)) ([`7142aab`](https://github.com/ActivityWatch/aw-android/commit/7142aab)) - fix(android): handle rejected foreground service starts ([#257](https://github.com/ActivityWatch/aw-android/issues/257)) ([`34247c3`](https://github.com/ActivityWatch/aw-android/commit/34247c3)) ### π¨ Misc (1) - chore: bump versionName to 0.14.1, versionCode to 42 ([`a92177a`](https://github.com/ActivityWatch/aw-android/commit/a92177a)) *(excluded 2 less relevant [commits](https://github.com/ActivityWatch/aw-android/compare/v0.14.0...v0.14.1))* ## π¦ aw-server-rust ### π Fixes (2) - fix(datastore): make legacy Android bucket merge linear instead of quadratic ([#679](https://github.com/ActivityWatch/aw-server-rust/issues/679)) ([`5e67ac8`](https://github.com/ActivityWatch/aw-server-rust/commit/5e67ac8)) - fix(datastore): apply privacy filters on save and startup ([#662](https://github.com/ActivityWatch/aw-server-rust/issues/662)) ([`062a20e`](https://github.com/ActivityWatch/aw-server-rust/commit/062a20e)) **Full Changelog**: https://github.com/ActivityWatch/aw-android/compare/v0.14.0...v0.14.1 - Sep 13, 2026 0.14.0These are the release notes for ActivityWatch for Android version v0.14.0. # Contributors Thanks to everyone who contributed to this release: @0xbrayo, @2e3s, @750, @almirb, @BelKed, @brayo-pip, @cosine0, @davidfraser, @deancureton, @Elijah-Bodden, @erikbjare, @fanxing11, @iloveitaly, @istudyatuni, @jkbh, @johan-bjareholt, @kenoma-hld, @Lorite, @matt-seb-ho, @musicinmybrain, @nathanmerrill, @nerumo, @NickWick13, @Noorts, @Organoidus, @pkvach, @RTnhN, @Senophyx, @skaparis, @TiberiusNemesis, @TimeToBuildBob, @vieteh # Changelog
Moreβ¦
Changes since [v0.12.1](https://github.com/ActivityWatch/aw-android/releases/tag/v0.12.1): ## π¦ aw-android ### β¨ Features (30) - feat(sync): show last completion status ([#251](https://github.com/ActivityWatch/aw-android/issues/251)) ([`5b2449a`](https://github.com/ActivityWatch/aw-android/commit/5b2449a)) - feat(widget): add picker preview and document NotifyWorker rollup ([#234](https://github.com/ActivityWatch/aw-android/issues/234)) ([`fa0fd58`](https://github.com/ActivityWatch/aw-android/commit/fa0fd58)) - feat: add Material You monochrome launcher icon ([#230](https://github.com/ActivityWatch/aw-android/issues/230)) ([`375b851`](https://github.com/ActivityWatch/aw-android/commit/375b851)) - feat(sync): bridge SAF-granted URI to aw-sync output (Phase 2) ([#209](https://github.com/ActivityWatch/aw-android/issues/209)) ([`d9802dd`](https://github.com/ActivityWatch/aw-android/commit/d9802dd)) - feat(sync): add SyncSettingsActivity β enable/disable toggle + SAF directory picker ([#204](https://github.com/ActivityWatch/aw-android/issues/204)) ([`41d5b5a`](https://github.com/ActivityWatch/aw-android/commit/41d5b5a)) - feat(notify): read alert config from server settings, fall back to defaults ([#202](https://github.com/ActivityWatch/aw-android/issues/202)) ([`348a0a3`](https://github.com/ActivityWatch/aw-android/commit/348a0a3)) - feat(notify): add aw-notify support β activity-time threshold alerts ([#199](https://github.com/ActivityWatch/aw-android/issues/199)) ([`26dcfb5`](https://github.com/ActivityWatch/aw-android/commit/26dcfb5)) - feat: add POST_NOTIFICATIONS permission and runtime request ([#195](https://github.com/ActivityWatch/aw-android/issues/195)) ([`3144444`](https://github.com/ActivityWatch/aw-android/commit/3144444)) - feat(auth): bootstrap android dashboard token ([#157](https://github.com/ActivityWatch/aw-android/issues/157)) ([`6afd735`](https://github.com/ActivityWatch/aw-android/commit/6afd735)) - feat(watcher): multi-browser WebWatcher with Firefox Compose toolbar support ([#187](https://github.com/ActivityWatch/aw-android/issues/187)) ([`3e719ed`](https://github.com/ActivityWatch/aw-android/commit/3e719ed)) - feat(sync): disable automatic sync by default ([#184](https://github.com/ActivityWatch/aw-android/issues/184)) ([`812c25c`](https://github.com/ActivityWatch/aw-android/commit/812c25c)) - feat: migrate legacy db hostnames ([`1c05168`](https://github.com/ActivityWatch/aw-android/commit/1c05168)) - feat: unlock watcher ([`cc4d966`](https://github.com/ActivityWatch/aw-android/commit/cc4d966)) - feat: update widget every 5 mins ([`a6a50bf`](https://github.com/ActivityWatch/aw-android/commit/a6a50bf)) - feat: update widget every 15 mins ([`3f37a4e`](https://github.com/ActivityWatch/aw-android/commit/3f37a4e)) - feat: bump ci versions ([`e92ad7e`](https://github.com/ActivityWatch/aw-android/commit/e92ad7e)) - feat: media watcher ([`0ad7232`](https://github.com/ActivityWatch/aw-android/commit/0ad7232)) - feat: add widget refresh animation ([`778cca4`](https://github.com/ActivityWatch/aw-android/commit/778cca4)) - feat: implement widget background worker ([`fee7803`](https://github.com/ActivityWatch/aw-android/commit/fee7803)) - feat: enhance widget with visual indicators ([`e8a412c`](https://github.com/ActivityWatch/aw-android/commit/e8a412c)) - feat: implement category time widget ([`d5b2ecb`](https://github.com/ActivityWatch/aw-android/commit/d5b2ecb)) - feat: add sync support methods to RustInterface ([`5362608`](https://github.com/ActivityWatch/aw-android/commit/5362608)) - feat: experimental parsing of events in background ([`b96d64a`](https://github.com/ActivityWatch/aw-android/commit/b96d64a)) - feat: always active in the background ([`f1c4667`](https://github.com/ActivityWatch/aw-android/commit/f1c4667)) - feat: implemented generic web watcher with support of multiple web browsers ([`54f95b2`](https://github.com/ActivityWatch/aw-android/commit/54f95b2)) - feat(android): implement automatic background sync ([`b34bb0c`](https://github.com/ActivityWatch/aw-android/commit/b34bb0c)) - feat(android): add SyncInterface.kt with JNI bindings for aw-sync ([`dac00fb`](https://github.com/ActivityWatch/aw-android/commit/dac00fb)) - feat:use device name as hostname ([`c77dbbc`](https://github.com/ActivityWatch/aw-android/commit/c77dbbc)) - feat(release): auto-set versionName from tag on release builds ([#168](https://github.com/ActivityWatch/aw-android/issues/168)) ([`1ca0268`](https://github.com/ActivityWatch/aw-android/commit/1ca0268)) - feat(auth): add API key settings screen ([#156](https://github.com/ActivityWatch/aw-android/issues/156)) ([`ef703ce`](https://github.com/ActivityWatch/aw-android/commit/ef703ce)) ### π Fixes (100) <details><summary>Click to expand</summary> <p> - fix(notify): accept canonical shared config schema ([#246](https://github.com/ActivityWatch/aw-android/issues/246)) ([`b908428`](https://github.com/ActivityWatch/aw-android/commit/b908428)) - fix(sync): pick up aw-server-rust API-key JNI client and set data dir ([#249](https://github.com/ActivityWatch/aw-android/issues/249)) ([`e5ff57f`](https://github.com/ActivityWatch/aw-android/commit/e5ff57f)) - fix(android): open Activity view with device hostname, not unknown ([#250](https://github.com/ActivityWatch/aw-android/issues/250)) ([`86a712e`](https://github.com/ActivityWatch/aw-android/commit/86a712e)) - fix(notify): open the activity view when an alert is tapped ([#242](https://github.com/ActivityWatch/aw-android/issues/242)) ([`4eb6391`](https://github.com/ActivityWatch/aw-android/commit/4eb6391)) - fix(android): migrate aw-watcher-android-test buckets on startup ([#244](https://github.com/ActivityWatch/aw-android/issues/244)) ([`cc0e368`](https://github.com/ActivityWatch/aw-android/commit/cc0e368)) - fix(webview): open a document picker for untyped file inputs ([#248](https://github.com/ActivityWatch/aw-android/issues/248)) ([`cd6d448`](https://github.com/ActivityWatch/aw-android/commit/cd6d448)) - fix(android): report the app's version from /api/0/info ([#240](https://github.com/ActivityWatch/aw-android/issues/240)) ([`835b8bf`](https://github.com/ActivityWatch/aw-android/commit/835b8bf)) - fix(android): load background settings from datastore ([#237](https://github.com/ActivityWatch/aw-android/issues/237)) ([`23d1fc4`](https://github.com/ActivityWatch/aw-android/commit/23d1fc4)) - fix(widget): revert category grouping to top-level ([#233](https://github.com/ActivityWatch/aw-android/issues/233)) ([`8c50bc8`](https://github.com/ActivityWatch/aw-android/commit/8c50bc8)) - fix(notify): restore notification text from PR [#223](https://github.com/ActivityWatch/aw-android/issues/223) while keeping icon fix from PR [#227](https://github.com/ActivityWatch/aw-android/issues/227) ([#232](https://github.com/ActivityWatch/aw-android/issues/232)) ([`af809af`](https://github.com/ActivityWatch/aw-android/commit/af809af)) - fix: save bucket exports from the WebView instead of dropping them ([#229](https://github.com/ActivityWatch/aw-android/issues/229)) ([`ed15dae`](https://github.com/ActivityWatch/aw-android/commit/ed15dae)) - fix(sync): make Sync Settings reachable from the navigation drawer ([#221](https://github.com/ActivityWatch/aw-android/issues/221)) ([`85a98cc`](https://github.com/ActivityWatch/aw-android/commit/85a98cc)) - fix(notify): open MainActivity when notification is tapped ([#225](https://github.com/ActivityWatch/aw-android/issues/225)) ([`dddc5e6`](https://github.com/ActivityWatch/aw-android/commit/dddc5e6)) - fix(sync): make the SAF mirror recursive and structure-preserving ([#222](https://github.com/ActivityWatch/aw-android/issues/222)) ([`928814f`](https://github.com/ActivityWatch/aw-android/commit/928814f)) - fix(notify): use ActivityWatch logo as notification small icon ([#227](https://github.com/ActivityWatch/aw-android/issues/227)) ([`9738e73`](https://github.com/ActivityWatch/aw-android/commit/9738e73)) - fix(widget): group category time by full path, matching the Activity view ([#231](https://github.com/ActivityWatch/aw-android/issues/231)) ([`8a0d697`](https://github.com/ActivityWatch/aw-android/commit/8a0d697)) - fix: reword foreground notification to not expose internals ([#223](https://github.com/ActivityWatch/aw-android/issues/223)) ([`9088923`](https://github.com/ActivityWatch/aw-android/commit/9088923)) - fix(release): cap Play Store changelog at 500 characters ([#219](https://github.com/ActivityWatch/aw-android/issues/219)) ([`4c220f4`](https://github.com/ActivityWatch/aw-android/commit/4c220f4)) - fix: add prominent disclosure before accessibility settings redirect ([#215](https://github.com/ActivityWatch/aw-android/issues/215)) ([`63d8716`](https://github.com/ActivityWatch/aw-android/commit/63d8716)) - fix: replace Material attrs with AppCompat in settings activities ([#211](https://github.com/ActivityWatch/aw-android/issues/211)) ([`4f93433`](https://github.com/ActivityWatch/aw-android/commit/4f93433)) - fix(widget): match Activity view startOfDay and add open-app button ([#198](https://github.com/ActivityWatch/aw-android/issues/198)) ([`1bd18cc`](https://github.com/ActivityWatch/aw-android/commit/1bd18cc)) - fix(notify): trim DEFAULT_ALERTS to 2-3 thresholds per category ([#206](https://github.com/ActivityWatch/aw-android/issues/206)) ([`4a8fa57`](https://github.com/ActivityWatch/aw-android/commit/4a8fa57)) - fix(fastlane): add changelog 36.txt and auto-generate changelogs in CI ([#194](https://github.com/ActivityWatch/aw-android/issues/194)) ([`2dd4d52`](https://github.com/ActivityWatch/aw-android/commit/2dd4d52)) - fix(auth): call ensureDashboardApiKey in BackgroundService.onStartCommand ([#192](https://github.com/ActivityWatch/aw-android/issues/192)) ([`8eaebd7`](https://github.com/ActivityWatch/aw-android/commit/8eaebd7)) - fix(auth): persist auth-disabled setting across restarts ([#193](https://github.com/ActivityWatch/aw-android/issues/193)) ([`a28b9d7`](https://github.com/ActivityWatch/aw-android/commit/a28b9d7)) - fix: remove FOREGROUND_SERVICE_DATA_SYNC permission (unblocks v0.14.0 Play Store upload) ([#190](https://github.com/ActivityWatch/aw-android/issues/190)) ([`920e35e`](https://github.com/ActivityWatch/aw-android/commit/920e35e)) - fix: CSV/JSON export via WebAppInterface + FileProvider (fixes [#104](https://github.com/ActivityWatch/aw-android/issues/104)) ([#186](https://github.com/ActivityWatch/aw-android/issues/186)) ([`49d9363`](https://github.com/ActivityWatch/aw-android/commit/49d9363)) - fix: use Build.DEVICE instead of Build.MODEL for hostname fallback ([#183](https://github.com/ActivityWatch/aw-android/issues/183)) ([`39e840f`](https://github.com/ActivityWatch/aw-android/commit/39e840f)) - fix(ci): use version regex for SUPPLY_TRACK instead of semver is_stable ([#182](https://github.com/ActivityWatch/aw-android/issues/182)) ([`b6ccf63`](https://github.com/ActivityWatch/aw-android/commit/b6ccf63)) - fix(ci): add rubygems.org source before fastlane release step ([#180](https://github.com/ActivityWatch/aw-android/issues/180)) ([`16b61ce`](https://github.com/ActivityWatch/aw-android/commit/16b61ce)) - fix: revert "chore: replace the default android.jks.age" ([#175](https://github.com/ActivityWatch/aw-android/issues/175)) ([`caf8365`](https://github.com/ActivityWatch/aw-android/commit/caf8365)) - fix(migration): handle plain-text success response from migrateHostname JNI ([#172](https://github.com/ActivityWatch/aw-android/issues/172)) ([`62b8670`](https://github.com/ActivityWatch/aw-android/commit/62b8670)) - fix(ci): validate all jniLibs ABIs and exclude armeabi-v7a from debug builds ([#173](https://github.com/ActivityWatch/aw-android/issues/173)) ([`5d34795`](https://github.com/ActivityWatch/aw-android/commit/5d34795)) - fix(activity): skip main startup during onboarding ([`584c002`](https://github.com/ActivityWatch/aw-android/commit/584c002)) - fix(web): guard WebWatcher bucket initialization ([`510665b`](https://github.com/ActivityWatch/aw-android/commit/510665b)) - fix(media): handle bucket init failures ([`0458ff8`](https://github.com/ActivityWatch/aw-android/commit/0458ff8)) - fix(ci): call startForeground() before native init to avoid 5s ANR ([`c996d12`](https://github.com/ActivityWatch/aw-android/commit/c996d12)) - fix(service): call startForeground() in onCreate() to avoid 5s OS timeout ([`096ad26`](https://github.com/ActivityWatch/aw-android/commit/096ad26)) - fix(ci): avoid multi-line shell construct in e2e runner script ([`980e1d8`](https://github.com/ActivityWatch/aw-android/commit/980e1d8)) - fix(ci): keep e2e runner script in one shell ([`4e4465d`](https://github.com/ActivityWatch/aw-android/commit/4e4465d)) - fix(ci): stabilize aw-android web watcher e2e ([`c19c92d`](https://github.com/ActivityWatch/aw-android/commit/c19c92d)) - fix: move MediaWatcher bucket init off main thread; recycle WebWatcher node ([`ad935df`](https://github.com/ActivityWatch/aw-android/commit/ad935df)) - fix: restore SCHEDULE_EXACT_ALARM permission for widget updates ([`af2a3be`](https://github.com/ActivityWatch/aw-android/commit/af2a3be)) - fix: handle alarm errors and test JNI artifact restore ([`5ae06e6`](https://github.com/ActivityWatch/aw-android/commit/5ae06e6)) - fix: prevent overlapping-session double-count in SessionParser ([`8114118`](https://github.com/ActivityWatch/aw-android/commit/8114118)) - fix: drop unused SCHEDULE_EXACT_ALARM permission ([`a825e4f`](https://github.com/ActivityWatch/aw-android/commit/a825e4f)) - fix: use ConcurrentHashMap in MediaWatcher to prevent map-modification race ([`94fdb20`](https://github.com/ActivityWatch/aw-android/commit/94fdb20)) - fix: remove getTodayTimeline() that called deleted getTimelineForDay() ([`ac37e1b`](https://github.com/ActivityWatch/aw-android/commit/ac37e1b)) - fix: remove bulk-import helpers with no deduplication guard ([`89c1488`](https://github.com/ActivityWatch/aw-android/commit/89c1488)) - fix: remove dead CategoryTimeWidgetWorker and move SyncInterface init off main thread ([`3c4171d`](https://github.com/ActivityWatch/aw-android/commit/3c4171d)) - fix: distinguish server-down from fresh-install in EventParsingWorker guard ([`d73a99a`](https://github.com/ActivityWatch/aw-android/commit/d73a99a)) - fix: use conservative defaults for hostname migration success detection ([`6141493`](https://github.com/ActivityWatch/aw-android/commit/6141493)) - fix: remove test() debug method, clarify insertEvent KDoc, document suspend no-op ([`cc56b40`](https://github.com/ActivityWatch/aw-android/commit/cc56b40)) - fix: guard EventParsingWorker against epoch-0 cursor reset on cold server ([`37c9a17`](https://github.com/ActivityWatch/aw-android/commit/37c9a17)) - fix: keep AlarmManager fallback alarm alive when BackgroundService stops ([`6a46f35`](https://github.com/ActivityWatch/aw-android/commit/6a46f35)) - fix: add lifecycle-runtime-ktx dep, move SyncInterface init off main thread, deprecate sendHeartbeats() ([`8ea1334`](https://github.com/ActivityWatch/aw-android/commit/8ea1334)) - fix: pin all MediaWatcher callbacks to handlerThread to prevent data races ([`1e14f23`](https://github.com/ActivityWatch/aw-android/commit/1e14f23)) - fix: parse migrateHostname result as JSON instead of string-contains ([`61bd673`](https://github.com/ActivityWatch/aw-android/commit/61bd673)) - fix: prevent concurrent syncBoth() JNI calls via shared AtomicBoolean ([`2ce803e`](https://github.com/ActivityWatch/aw-android/commit/2ce803e)) - fix: move MediaWatcher polling and JNI heartbeat off main thread ([`a9124a1`](https://github.com/ActivityWatch/aw-android/commit/a9124a1)) - fix: recycle AccessibilityNodeInfo in WebWatcher.findWebView (API 26-32 leak) ([`d2a2958`](https://github.com/ActivityWatch/aw-android/commit/d2a2958)) - fix: restore widget periodic alarm in onUpdate (covers post-reboot case) ([`7169f61`](https://github.com/ActivityWatch/aw-android/commit/7169f61)) - fix: run hostname migration off main thread to avoid ANR; fix midnight calc ([`fdf6943`](https://github.com/ActivityWatch/aw-android/commit/fdf6943)) - fix: wire AlarmManager fallback in SyncScheduler so SYNC_ALARM is reachable ([`e9d7a4d`](https://github.com/ActivityWatch/aw-android/commit/e9d7a4d)) - fix: prevent concurrent syncs and unconditional hostname migration mark ([`d6605c5`](https://github.com/ActivityWatch/aw-android/commit/d6605c5)) - fix: restore background collection for session mode via goAsync in AlarmReceiver ([`76a22bd`](https://github.com/ActivityWatch/aw-android/commit/76a22bd)) - fix: bind session-event coroutine to Activity lifecycle; remove dual BOOT_COMPLETED (greploop final+1) ([`345bcc7`](https://github.com/ActivityWatch/aw-android/commit/345bcc7)) - fix: prevent async work from being orphaned in SyncAlarmReceiver (greploop final) ([`84e5c80`](https://github.com/ActivityWatch/aw-android/commit/84e5c80)) - fix: register SyncAlarmReceiver in manifest (greploop iteration 5) ([`2d33ddd`](https://github.com/ActivityWatch/aw-android/commit/2d33ddd)) - fix: pass foreground service type to startForeground on Android 14+ (greploop iteration 4) ([`b46440c`](https://github.com/ActivityWatch/aw-android/commit/b46440c)) - fix: prevent duplicate session insertion from concurrent callers (greploop iteration 3) ([`bf1d38a`](https://github.com/ActivityWatch/aw-android/commit/bf1d38a)) - fix: dispatch onUpdate off main thread to avoid ANR (greploop iteration 2) ([`01b5633`](https://github.com/ActivityWatch/aw-android/commit/01b5633)) - fix: address greptile review feedback (greploop iteration 1) ([`81204d9`](https://github.com/ActivityWatch/aw-android/commit/81204d9)) - fix: use KEEP policy for EventParsingWorker, remove dead widget code ([`e7f8556`](https://github.com/ActivityWatch/aw-android/commit/e7f8556)) - fix: rename production bucket from aw-watcher-android-test to aw-watcher-android ([`baa2f03`](https://github.com/ActivityWatch/aw-android/commit/baa2f03)) - fix(ci): skip deprecated 'tools' package in setup-android@v3 ([`fa39a20`](https://github.com/ActivityWatch/aw-android/commit/fa39a20)) - fix(ci): use default emulator target to avoid google_apis flakiness ([`e9224e5`](https://github.com/ActivityWatch/aw-android/commit/e9224e5)) - fix: address two greptile P1 findings ([`a92262a`](https://github.com/ActivityWatch/aw-android/commit/a92262a)) - fix(ci): preinstall ndk before emulator runner ([`4fbccb2`](https://github.com/ActivityWatch/aw-android/commit/4fbccb2)) - fix(sync): avoid replaying last session event ([`5e78333`](https://github.com/ActivityWatch/aw-android/commit/5e78333)) - fix(ci): stop masking e2e failures ([`14d85c4`](https://github.com/ActivityWatch/aw-android/commit/14d85c4)) - fix(sync): handle missing aw-sync library ([`28a5d46`](https://github.com/ActivityWatch/aw-android/commit/28a5d46)) - fix(ci): pass jniLibs via artifact upload/download instead of cache ([`dcdec24`](https://github.com/ActivityWatch/aw-android/commit/dcdec24)) - fix(ci): bypass onboarding, grant usage stats perm, unlock screen before screenshot ([`899466a`](https://github.com/ActivityWatch/aw-android/commit/899466a)) - fix(ci): install apk explicitly and use monkey to launch app before screenshot ([`08042bc`](https://github.com/ActivityWatch/aw-android/commit/08042bc)) - fix(ci): correct am start intent to use debug package + full class name ([`1177a81`](https://github.com/ActivityWatch/aw-android/commit/1177a81)) - fix(ci): launch app, sleep 1s, screenshot and logcat in emulator-runner script ([`de60534`](https://github.com/ActivityWatch/aw-android/commit/de60534)) - fix(ci): restore missing path key and set fail-on-cache-miss: false in cache restore steps ([`c178744`](https://github.com/ActivityWatch/aw-android/commit/c178744)) - fix(ci): remove fail-on-cache-miss from cache restore ([`52533f5`](https://github.com/ActivityWatch/aw-android/commit/52533f5)) - fix(ci): update sdkmanager, avdmanager, and emulator paths for setup-android@v3 ([`0bedc25`](https://github.com/ActivityWatch/aw-android/commit/0bedc25)) - fix: fix doNotStrip property not working ([`408c3af`](https://github.com/ActivityWatch/aw-android/commit/408c3af)) - fix: fix single-instance errors on android ([`607a73a`](https://github.com/ActivityWatch/aw-android/commit/607a73a)) - fix: fix launch on boot not working ([`36749b2`](https://github.com/ActivityWatch/aw-android/commit/36749b2)) - fix(ci): upgrade android-actions/setup-android from v2 to v3 ([#169](https://github.com/ActivityWatch/aw-android/issues/169)) ([`e9e3615`](https://github.com/ActivityWatch/aw-android/commit/e9e3615)) - fix: fix Rust initialize JNI return type ([#167](https://github.com/ActivityWatch/aw-android/issues/167)) ([`edca195`](https://github.com/ActivityWatch/aw-android/commit/edca195)) - fix(release): require committed versionName for tag builds ([#155](https://github.com/ActivityWatch/aw-android/issues/155)) ([`dbd05d1`](https://github.com/ActivityWatch/aw-android/commit/dbd05d1)) - fix(ci): bump aw-server-rust submodule to fix time-0.3.30 compile error on Rust 1.85+ ([#165](https://github.com/ActivityWatch/aw-android/issues/165)) ([`00b06c4`](https://github.com/ActivityWatch/aw-android/commit/00b06c4)) - fix(webui): keep embedded ActivityWatch URLs inside WebView ([#161](https://github.com/ActivityWatch/aw-android/issues/161)) ([`2e9e733`](https://github.com/ActivityWatch/aw-android/commit/2e9e733)) - fix: remove logspam in chrome watcher ([`9d32040`](https://github.com/ActivityWatch/aw-android/commit/9d32040)) - fix: added check that port 5600 is not already in use ([`806dc6c`](https://github.com/ActivityWatch/aw-android/commit/806dc6c)) </p> </details> ### π¨ Misc (32) <details><summary>Click to expand</summary> <p> - chore: bump versionName to 0.14.0, versionCode to 41 ([`e0cad8e`](https://github.com/ActivityWatch/aw-android/commit/e0cad8e)) - chore: bump versionName to 0.14.0b2, versionCode to 40 ([`5ec992b`](https://github.com/ActivityWatch/aw-android/commit/5ec992b)) - chore: bump versionName to 0.14.0b1, versionCode to 39 ([`a21b48c`](https://github.com/ActivityWatch/aw-android/commit/a21b48c)) - chore: bump versionName to 0.14.0dev202608101, versionCode to 38 ([`9a7a556`](https://github.com/ActivityWatch/aw-android/commit/9a7a556)) - chore: bump versionName to 0.14.0dev20260810, versionCode to 38 ([`9197df4`](https://github.com/ActivityWatch/aw-android/commit/9197df4)) - docs(ci): cross-reference shared Android signing strategy with gptme ([#207](https://github.com/ActivityWatch/aw-android/issues/207)) ([`f206252`](https://github.com/ActivityWatch/aw-android/commit/f206252)) - chore: bump versionName to 0.14.0dev20260723 ([`749e059`](https://github.com/ActivityWatch/aw-android/commit/749e059)) - chore: bump versionName to 0.14.0dev20260722 ([`8e0f9d6`](https://github.com/ActivityWatch/aw-android/commit/8e0f9d6)) - chore: bump versionName to 0.14.0dev202607121 ([`6f9ca02`](https://github.com/ActivityWatch/aw-android/commit/6f9ca02)) - chore: bump versionName to 0.14.0dev20260712 ([`67b2326`](https://github.com/ActivityWatch/aw-android/commit/67b2326)) - chore: bump aw-server-rust submodule ([`09f59e4`](https://github.com/ActivityWatch/aw-android/commit/09f59e4)) - chore: bump versionName to 0.14.0 ([`8ae1096`](https://github.com/ActivityWatch/aw-android/commit/8ae1096)) - Revert "fix(ci): avoid multi-line shell construct in e2e runner script" ([`2de01f0`](https://github.com/ActivityWatch/aw-android/commit/2de01f0)) - refactor: dedupe bucket-id constants and guard EventParsingWorker on usage access ([`7410568`](https://github.com/ActivityWatch/aw-android/commit/7410568)) - chore: linting diff ([`824880c`](https://github.com/ActivityWatch/aw-android/commit/824880c)) - chore: update settings.gradle ([`119ad2e`](https://github.com/ActivityWatch/aw-android/commit/119ad2e)) - refactor(ci): replace manual emulator setup with reactivecircus/android-emulator-runner@v2 ([`ef22ce5`](https://github.com/ActivityWatch/aw-android/commit/ef22ce5)) - refactor: simplify widget styling and worker logic ([`c8b4ea0`](https://github.com/ActivityWatch/aw-android/commit/c8b4ea0)) - refactor: optimize widget layout for 4x1 size ([`4c48273`](https://github.com/ActivityWatch/aw-android/commit/4c48273)) - chore: update aw-server-rust submodule reference ([`257e0bd`](https://github.com/ActivityWatch/aw-android/commit/257e0bd)) - refactor: improve RustInterface initialization ([`de6e0f6`](https://github.com/ActivityWatch/aw-android/commit/de6e0f6)) - chore: replace the default android.jks.age ([`d78c637`](https://github.com/ActivityWatch/aw-android/commit/d78c637)) - style: fix linting warrnings ([`63c6c3e`](https://github.com/ActivityWatch/aw-android/commit/63c6c3e)) - Update mobile/src/main/java/net/activitywatch/android/watcher/WebWatcher.kt ([`fe8be7e`](https://github.com/ActivityWatch/aw-android/commit/fe8be7e)) - chore: minimum api target bump ([`bc7251e`](https://github.com/ActivityWatch/aw-android/commit/bc7251e)) - chore: gradle version bump and misc ([`8b06a07`](https://github.com/ActivityWatch/aw-android/commit/8b06a07)) - refactor: refactored to improve accuracy of the timeline ([`fe0a582`](https://github.com/ActivityWatch/aw-android/commit/fe0a582)) - docs: update deprecated magick command ([`68fb439`](https://github.com/ActivityWatch/aw-android/commit/68fb439)) - chore: add 'sh' to README.md ([`4e6eb28`](https://github.com/ActivityWatch/aw-android/commit/4e6eb28)) - docs: added comment about versionName and versionCode ([`6671bd8`](https://github.com/ActivityWatch/aw-android/commit/6671bd8)) - chore: bumped versionName and versionCode to 0.12.1 ([`d95ca0d`](https://github.com/ActivityWatch/aw-android/commit/d95ca0d)) - docs(README): added Play Store ratings badge ([`85bce09`](https://github.com/ActivityWatch/aw-android/commit/85bce09)) </p> </details> *(excluded 25 less relevant [commits](https://github.com/ActivityWatch/aw-android/compare/v0.12.1...v0.14.0))* ## π¦ aw-server-rust ### β¨ Features (24) - feat(classify): optional priority field for category rules ([#663](https://github.com/ActivityWatch/aw-server-rust/issues/663)) ([`d2e7b80`](https://github.com/ActivityWatch/aw-server-rust/commit/d2e7b80)) - feat(profile): named instance profiles via --profile flag ([#652](https://github.com/ActivityWatch/aw-server-rust/issues/652)) ([`c8533a0`](https://github.com/ActivityWatch/aw-server-rust/commit/c8533a0)) - feat(server): let packaged builds override the reported version ([#656](https://github.com/ActivityWatch/aw-server-rust/issues/656)) ([`77defef`](https://github.com/ActivityWatch/aw-server-rust/commit/77defef)) - feat(android): add migration for aw-watcher-android-test bucket names ([#628](https://github.com/ActivityWatch/aw-server-rust/issues/628)) ([`c022e85`](https://github.com/ActivityWatch/aw-server-rust/commit/c022e85)) - feat(datastore): add opt-in SQLCipher encryption support ([#584](https://github.com/ActivityWatch/aw-server-rust/issues/584)) ([`af324f9`](https://github.com/ActivityWatch/aw-server-rust/commit/af324f9)) - feat(server): add --config override for server config path ([#601](https://github.com/ActivityWatch/aw-server-rust/issues/601)) ([`c82981d`](https://github.com/ActivityWatch/aw-server-rust/commit/c82981d)) - feat(privacy-filter): add heartbeat-level privacy filtering engine ([#600](https://github.com/ActivityWatch/aw-server-rust/issues/600)) ([`df49b3d`](https://github.com/ActivityWatch/aw-server-rust/commit/df49b3d)) - feat(client): add API key authentication support to aw-client-rust ([#587](https://github.com/ActivityWatch/aw-server-rust/issues/587)) ([`2875df5`](https://github.com/ActivityWatch/aw-server-rust/commit/2875df5)) - feat(server): add opt-in API key authentication via Bearer token ([#585](https://github.com/ActivityWatch/aw-server-rust/issues/585)) ([`7c33810`](https://github.com/ActivityWatch/aw-server-rust/commit/7c33810)) - feat(cors): add cors_regex config for custom regex-based CORS origins ([#569](https://github.com/ActivityWatch/aw-server-rust/issues/569)) ([`0b46e59`](https://github.com/ActivityWatch/aw-server-rust/commit/0b46e59)) - feat: fetch server side categories for querying ([#568](https://github.com/ActivityWatch/aw-server-rust/issues/568)) ([`0d4c285`](https://github.com/ActivityWatch/aw-server-rust/commit/0d4c285)) - feat: add an JNI endpoint for android querying ([`0b7fd68`](https://github.com/ActivityWatch/aw-server-rust/commit/0b7fd68)) - feat: set max-page size to 16KB for shared objects ([`f7965c7`](https://github.com/ActivityWatch/aw-server-rust/commit/f7965c7)) - feat(aw-sync): pass hostname from Android to JNI for proper sync directory structure ([`69afcab`](https://github.com/ActivityWatch/aw-server-rust/commit/69afcab)) - feat(aw-sync): add Android JNI support and library build ([`9467c2a`](https://github.com/ActivityWatch/aw-server-rust/commit/9467c2a)) - feat(sync): daemon support for advanced sync ([#528](https://github.com/ActivityWatch/aw-server-rust/issues/528)) ([`d40d712`](https://github.com/ActivityWatch/aw-server-rust/commit/d40d712)) - feat: add optional always-active-pattern to canonical queries ([#543](https://github.com/ActivityWatch/aw-server-rust/issues/543)) ([`10c50ba`](https://github.com/ActivityWatch/aw-server-rust/commit/10c50ba)) - feat(client): support single instance ([#522](https://github.com/ActivityWatch/aw-server-rust/issues/522)) ([`f4bb94d`](https://github.com/ActivityWatch/aw-server-rust/commit/f4bb94d)) - feat: canonical queries ([#529](https://github.com/ActivityWatch/aw-server-rust/issues/529)) ([`02504a6`](https://github.com/ActivityWatch/aw-server-rust/commit/02504a6)) - feat(sync): gracefully handle SIGTERMs ([#516](https://github.com/ActivityWatch/aw-server-rust/issues/516)) ([`869d65e`](https://github.com/ActivityWatch/aw-server-rust/commit/869d65e)) - feat: added query function in aw-client ([#477](https://github.com/ActivityWatch/aw-server-rust/issues/477)) ([`c056e50`](https://github.com/ActivityWatch/aw-server-rust/commit/c056e50)) - feat: added daemon default subcommand, syncing at 5min intervals ([`5dd5f34`](https://github.com/ActivityWatch/aw-server-rust/commit/5dd5f34)) - feat(sync): assume sync subcommand if none given ([`ae8f7bf`](https://github.com/ActivityWatch/aw-server-rust/commit/ae8f7bf)) - feat(sync): moved logic in sync-test scripts into rust, enabling sync with a single command ([#430](https://github.com/ActivityWatch/aw-server-rust/issues/430)) ([`3ab8291`](https://github.com/ActivityWatch/aw-server-rust/commit/3ab8291)) ### π Fixes (48) <details><summary>Click to expand</summary> <p> - fix(datastore): merge disjoint aw-watcher-android-test events on name collision ([#661](https://github.com/ActivityWatch/aw-server-rust/issues/661)) ([`8f03f04`](https://github.com/ActivityWatch/aw-server-rust/commit/8f03f04)) - fix(aw-sync): forward API key on Android JNI client ([#666](https://github.com/ActivityWatch/aw-server-rust/issues/666)) ([`6d4fdf7`](https://github.com/ActivityWatch/aw-server-rust/commit/6d4fdf7)) - fix(server): reject bucket creation with whitespace in client hostname ([#658](https://github.com/ActivityWatch/aw-server-rust/issues/658)) ([`840d11c`](https://github.com/ActivityWatch/aw-server-rust/commit/840d11c)) - fix(android): log Rust panics to logcat via android_log ([#654](https://github.com/ActivityWatch/aw-server-rust/issues/654)) ([`2de9533`](https://github.com/ActivityWatch/aw-server-rust/commit/2de9533)) - fix(android): load widget classes from datastore, not unauthenticated HTTP ([#653](https://github.com/ActivityWatch/aw-server-rust/issues/653)) ([`75722f3`](https://github.com/ActivityWatch/aw-server-rust/commit/75722f3)) - fix: resolve cargo build warnings ([#619](https://github.com/ActivityWatch/aw-server-rust/issues/619)) ([`ab9c848`](https://github.com/ActivityWatch/aw-server-rust/commit/ab9c848)) - fix(sync): never re-sync buckets synced from another host ([#648](https://github.com/ActivityWatch/aw-server-rust/issues/648)) ([`d827c15`](https://github.com/ActivityWatch/aw-server-rust/commit/d827c15)) - fix(aw-sync): only write $aw.sync.origin on pull, not push-staging ([#650](https://github.com/ActivityWatch/aw-server-rust/issues/650)) ([`40d0c65`](https://github.com/ActivityWatch/aw-server-rust/commit/40d0c65)) - fix(ci): remove brittle dependabot automerge PAT ([#643](https://github.com/ActivityWatch/aw-server-rust/issues/643)) ([`d030f63`](https://github.com/ActivityWatch/aw-server-rust/commit/d030f63)) - fix(query): return 400 Bad Request for query errors instead of 500 ([#644](https://github.com/ActivityWatch/aw-server-rust/issues/644)) ([`a422b6f`](https://github.com/ActivityWatch/aw-server-rust/commit/a422b6f)) - fix(aw-sync): forward API key from server config, stop panicking on 401 ([#640](https://github.com/ActivityWatch/aw-server-rust/issues/640)) ([`a8bf1e4`](https://github.com/ActivityWatch/aw-server-rust/commit/a8bf1e4)) - fix(cors): scope the moz-extension wildcard to aw-watcher-web endpoints ([#637](https://github.com/ActivityWatch/aw-server-rust/issues/637)) ([`45ca293`](https://github.com/ActivityWatch/aw-server-rust/commit/45ca293)) - fix(auth): API key bypass via percent-encoded paths ([#636](https://github.com/ActivityWatch/aw-server-rust/issues/636)) ([`8fd4e09`](https://github.com/ActivityWatch/aw-server-rust/commit/8fd4e09)) - fix(android): update JNI androidQuery bucket name to aw-watcher-android ([#632](https://github.com/ActivityWatch/aw-server-rust/issues/632)) ([`0094c14`](https://github.com/ActivityWatch/aw-server-rust/commit/0094c14)) - fix(sync): chunk event fetch in sync_one() to prevent OOM on large buckets ([#631](https://github.com/ActivityWatch/aw-server-rust/issues/631)) ([`d87bd93`](https://github.com/ActivityWatch/aw-server-rust/commit/d87bd93)) - fix(deps): upgrade reqwest 0.11 β 0.12 to fix rustls-webpki vulnerability ([#617](https://github.com/ActivityWatch/aw-server-rust/issues/617)) ([`6f6c64a`](https://github.com/ActivityWatch/aw-server-rust/commit/6f6c64a)) - fix(ci): harden dependabot automerge workflow ([#611](https://github.com/ActivityWatch/aw-server-rust/issues/611)) ([`288decb`](https://github.com/ActivityWatch/aw-server-rust/commit/288decb)) - fix(android): make compile-android.sh cwd-safe ([#609](https://github.com/ActivityWatch/aw-server-rust/issues/609)) ([`7812b56`](https://github.com/ActivityWatch/aw-server-rust/commit/7812b56)) - fix(android): load embedded server config ([#608](https://github.com/ActivityWatch/aw-server-rust/issues/608)) ([`0c8b2ad`](https://github.com/ActivityWatch/aw-server-rust/commit/0c8b2ad)) - fix(aw-client-rust): fail on non-2xx responses ([#607](https://github.com/ActivityWatch/aw-server-rust/issues/607)) ([`73389bc`](https://github.com/ActivityWatch/aw-server-rust/commit/73389bc)) - fix(query): support select_keys in regex rules ([#605](https://github.com/ActivityWatch/aw-server-rust/issues/605)) ([`5b3f0f8`](https://github.com/ActivityWatch/aw-server-rust/commit/5b3f0f8)) - fix(deps): bump time to 0.3.47 in Cargo.lock ([#589](https://github.com/ActivityWatch/aw-server-rust/issues/589)) ([`1e9c358`](https://github.com/ActivityWatch/aw-server-rust/commit/1e9c358)) - fix: prevent API key auth bypass via double slashes ([#588](https://github.com/ActivityWatch/aw-server-rust/issues/588)) ([`4f6c565`](https://github.com/ActivityWatch/aw-server-rust/commit/4f6c565)) - fix(import): merge events into existing bucket instead of failing ([#575](https://github.com/ActivityWatch/aw-server-rust/issues/575)) ([`0a94e0f`](https://github.com/ActivityWatch/aw-server-rust/commit/0a94e0f)) - fix(datastore): handle commit failures gracefully instead of panicking ([#572](https://github.com/ActivityWatch/aw-server-rust/issues/572)) ([`9a8802a`](https://github.com/ActivityWatch/aw-server-rust/commit/9a8802a)) - fix(transform): use scheme as domain for file:// URLs ([#570](https://github.com/ActivityWatch/aw-server-rust/issues/570)) ([`f9faa5e`](https://github.com/ActivityWatch/aw-server-rust/commit/f9faa5e)) - fix(dirs): restore /log subdirectory in log path after appdirs migration ([#565](https://github.com/ActivityWatch/aw-server-rust/issues/565)) ([`66e2e97`](https://github.com/ActivityWatch/aw-server-rust/commit/66e2e97)) - fix: replace appdirs with dirs for Windows ARM64 compatibility ([#562](https://github.com/ActivityWatch/aw-server-rust/issues/562)) ([`91ccf22`](https://github.com/ActivityWatch/aw-server-rust/commit/91ccf22)) - fix(datastore): preserve event ID in heartbeat cache after merge ([#561](https://github.com/ActivityWatch/aw-server-rust/issues/561)) ([`1c2920d`](https://github.com/ActivityWatch/aw-server-rust/commit/1c2920d)) - fix(aw-sync): add cdylib crate-type for JNI shared library generation ([`8cdeea6`](https://github.com/ActivityWatch/aw-server-rust/commit/8cdeea6)) - fix(aw-sync): make get_server_port conditional for Android ([`d67870f`](https://github.com/ActivityWatch/aw-server-rust/commit/d67870f)) - fix(aw-sync): make env mutable and conditionally compile config functions for Android ([`ef0ad9e`](https://github.com/ActivityWatch/aw-server-rust/commit/ef0ad9e)) - fix(aw-sync): fix type annotations and JNI reference in android.rs ([`cfabb77`](https://github.com/ActivityWatch/aw-server-rust/commit/cfabb77)) - fix(aw-sync): make clap import and ValueEnum derive conditional on cli feature ([`dc2111a`](https://github.com/ActivityWatch/aw-server-rust/commit/dc2111a)) - fix(datastore): use event ID instead of max(endtime) in replace_last_event ([#555](https://github.com/ActivityWatch/aw-server-rust/issues/555)) ([`7ffceb8`](https://github.com/ActivityWatch/aw-server-rust/commit/7ffceb8)) - fix(queries): eliminate double-escaping in regex patterns ([#541](https://github.com/ActivityWatch/aw-server-rust/issues/541)) ([`8289a0f`](https://github.com/ActivityWatch/aw-server-rust/commit/8289a0f)) - fix(android): jstring_to_string function to properly convert Java strings ([#547](https://github.com/ActivityWatch/aw-server-rust/issues/547)) ([`24d3bdf`](https://github.com/ActivityWatch/aw-server-rust/commit/24d3bdf)) - fix(sync): added `client.wait_for_start()` and improve error handling in sync daemon ([#495](https://github.com/ActivityWatch/aw-server-rust/issues/495)) ([`a0cdef9`](https://github.com/ActivityWatch/aw-server-rust/commit/a0cdef9)) - fix(sync): remove bug-causing workaround for spurious small db files (fixes [#466](https://github.com/ActivityWatch/aw-server-rust/issues/466)) ([#492](https://github.com/ActivityWatch/aw-server-rust/issues/492)) ([`5738246`](https://github.com/ActivityWatch/aw-server-rust/commit/5738246)) - fix(linux): add sd-notify for better systemd interop ([#489](https://github.com/ActivityWatch/aw-server-rust/issues/489)) ([`8d7ce89`](https://github.com/ActivityWatch/aw-server-rust/commit/8d7ce89)) - fix: fixed compilation warnings & deprecations ([#479](https://github.com/ActivityWatch/aw-server-rust/issues/479)) ([`14165e1`](https://github.com/ActivityWatch/aw-server-rust/commit/14165e1)) - fix: fix for served paths in new aw-webui build config (no more /static/) ([`f1f63c3`](https://github.com/ActivityWatch/aw-server-rust/commit/f1f63c3)) - fix: added sync dir config via global `--sync-dir` cli param and `AW_SYNC_DIR` env var ([#457](https://github.com/ActivityWatch/aw-server-rust/issues/457)) ([`1b56e03`](https://github.com/ActivityWatch/aw-server-rust/commit/1b56e03)) - fix: replace panics with results & better option types ([#437](https://github.com/ActivityWatch/aw-server-rust/issues/437)) ([`dc70318`](https://github.com/ActivityWatch/aw-server-rust/commit/dc70318)) - fix: set rocket_cors log level to Warn (fixes[[#975](https://github.com/ActivityWatch/aw-server-rust/issues/975)](https://github.com/ActivityWatch/activitywatch/issues/975)) ([`59ee035`](https://github.com/ActivityWatch/aw-server-rust/commit/59ee035)) - fix(datastore): fixed deprecations in chrono (timestamp_nanos and from_utc) ([`88464b5`](https://github.com/ActivityWatch/aw-server-rust/commit/88464b5)) - fix: return null for missing settings without 404 ([`d39f258`](https://github.com/ActivityWatch/aw-server-rust/commit/d39f258)) - fix: rewrote settings logic to mimic aw-server-python behavior ([#428](https://github.com/ActivityWatch/aw-server-rust/issues/428)) ([`728c00e`](https://github.com/ActivityWatch/aw-server-rust/commit/728c00e)) </p> </details> ### π¨ Misc (17) <details><summary>Click to expand</summary> <p> - various TODOs, FIXMEs ([#669](https://github.com/ActivityWatch/aw-server-rust/issues/669)) ([`8bb37ad`](https://github.com/ActivityWatch/aw-server-rust/commit/8bb37ad)) - perf(aw-transform): cache categorize results per event data to fix month-view timeout ([#657](https://github.com/ActivityWatch/aw-server-rust/issues/657)) ([`7429039`](https://github.com/ActivityWatch/aw-server-rust/commit/7429039)) - test(aw-query): add property-based fuzz tests for regex compilation ([#651](https://github.com/ActivityWatch/aw-server-rust/issues/651)) ([`4947c03`](https://github.com/ActivityWatch/aw-server-rust/commit/4947c03)) - perf: cache compiled regex in categorization rules ([#634](https://github.com/ActivityWatch/aw-server-rust/issues/634)) ([`d350f42`](https://github.com/ActivityWatch/aw-server-rust/commit/d350f42)) - aw-sync: add --mode to daemon, fix unrespected --start-date ([#620](https://github.com/ActivityWatch/aw-server-rust/issues/620)) ([`9e771ef`](https://github.com/ActivityWatch/aw-server-rust/commit/9e771ef)) - chore: bump webui submodule ([`c665f2d`](https://github.com/ActivityWatch/aw-server-rust/commit/c665f2d)) - perf(datastore): enable WAL journal mode ([#616](https://github.com/ActivityWatch/aw-server-rust/issues/616)) ([`d7349c2`](https://github.com/ActivityWatch/aw-server-rust/commit/d7349c2)) - Performance improvements ([#615](https://github.com/ActivityWatch/aw-server-rust/issues/615)) ([`73ae710`](https://github.com/ActivityWatch/aw-server-rust/commit/73ae710)) - chore: bump aw-server-rust version to v0.14.0 ([`826efce`](https://github.com/ActivityWatch/aw-server-rust/commit/826efce)) - fix(aw-sync): use passed hostname directly instead of client.hostname ([`3202963`](https://github.com/ActivityWatch/aw-server-rust/commit/3202963)) - chore: bumped aw-server version to 0.13.1 ([`b8330f1`](https://github.com/ActivityWatch/aw-server-rust/commit/b8330f1)) - docs(sync): updated README for aw-sync with proper usage instructions ([`41b030a`](https://github.com/ActivityWatch/aw-server-rust/commit/41b030a)) - docs: removed +nightly from example command ([`6a93563`](https://github.com/ActivityWatch/aw-server-rust/commit/6a93563)) - Remove references to nightly rust release ([`01107b6`](https://github.com/ActivityWatch/aw-server-rust/commit/01107b6)) - perf: improve performance of filter_period_intersect ([#436](https://github.com/ActivityWatch/aw-server-rust/issues/436)) ([`55cad4a`](https://github.com/ActivityWatch/aw-server-rust/commit/55cad4a)) - docs: removed old mention of caveats ([`0240dc0`](https://github.com/ActivityWatch/aw-server-rust/commit/0240dc0)) - chore: added dist to gitignore ([`9b8df05`](https://github.com/ActivityWatch/aw-server-rust/commit/9b8df05)) </p> </details> *(excluded 67 less relevant [commits](https://github.com/ActivityWatch/aw-server-rust/compare/7538163...02ae248))* ## π¦ aw-webui ### β¨ Features (43) - feat(categories): expose category rule priority ([#968](https://github.com/ActivityWatch/aw-webui/issues/968)) ([`3e7fb7c`](https://github.com/ActivityWatch/aw-webui/commit/3e7fb7c)) - feat(categories): support field-scoped regex rules on master ([#952](https://github.com/ActivityWatch/aw-webui/issues/952)) ([`a2ca625`](https://github.com/ActivityWatch/aw-webui/commit/a2ca625)) - feat(i18n): add Swedish translation ([#947](https://github.com/ActivityWatch/aw-webui/issues/947)) ([`3eebf68`](https://github.com/ActivityWatch/aw-webui/commit/3eebf68)) - feat(header): mark Research Edition builds ([#941](https://github.com/ActivityWatch/aw-webui/issues/941)) ([`71087a2`](https://github.com/ActivityWatch/aw-webui/commit/71087a2)) - feat(billing): add BillingView β category-grouped billable hours export ([#938](https://github.com/ActivityWatch/aw-webui/issues/938)) ([`d4bfd6f`](https://github.com/ActivityWatch/aw-webui/commit/d4bfd6f)) - feat(categories): let builds ship a preset category set active by default ([#936](https://github.com/ActivityWatch/aw-webui/issues/936)) ([`322159b`](https://github.com/ActivityWatch/aw-webui/commit/322159b)) - feat(ai-summary): add client-side AI activity summary page ([#922](https://github.com/ActivityWatch/aw-webui/issues/922)) ([`1be5633`](https://github.com/ActivityWatch/aw-webui/commit/1be5633)) - feat(settings): add aw-notify configuration panel ([#923](https://github.com/ActivityWatch/aw-webui/issues/923)) ([`009f484`](https://github.com/ActivityWatch/aw-webui/commit/009f484)) - feat(home): engagement-gated supporter nudge + route survey/forum links through /go/ ([#915](https://github.com/ActivityWatch/aw-webui/issues/915)) ([`464405d`](https://github.com/ActivityWatch/aw-webui/commit/464405d)) - feat(i18n): add vue-i18n with en, uk, de, ru, zh-CN locales ([#896](https://github.com/ActivityWatch/aw-webui/issues/896)) ([`948be8d`](https://github.com/ActivityWatch/aw-webui/commit/948be8d)) - feat(ui): pre-release polish pass β bug fixes, tests, and view-level revamps ([#857](https://github.com/ActivityWatch/aw-webui/issues/857)) ([`dc02ac8`](https://github.com/ActivityWatch/aw-webui/commit/dc02ac8)) - feat(home): add r/activitywatch community links ([#854](https://github.com/ActivityWatch/aw-webui/issues/854)) ([`363e1c7`](https://github.com/ActivityWatch/aw-webui/commit/363e1c7)) - feat(settings): add privacy filter editor ([#830](https://github.com/ActivityWatch/aw-webui/issues/830)) ([`6516230`](https://github.com/ActivityWatch/aw-webui/commit/6516230)) - feat: add saved query presets to Query Explorer ([#829](https://github.com/ActivityWatch/aw-webui/issues/829)) ([`f52008f`](https://github.com/ActivityWatch/aw-webui/commit/f52008f)) - feat(buckets): bulk delete buckets by host (closes [#662](https://github.com/ActivityWatch/aw-webui/issues/662)) ([#821](https://github.com/ActivityWatch/aw-webui/issues/821)) ([`b8ec3c0`](https://github.com/ActivityWatch/aw-webui/commit/b8ec3c0)) - feat(categorization): add category sets β named rule profiles with multi-set combining ([#804](https://github.com/ActivityWatch/aw-webui/issues/804)) ([`ea1b986`](https://github.com/ActivityWatch/aw-webui/commit/ea1b986)) - feat(auth): bootstrap API token from URL/session ([#806](https://github.com/ActivityWatch/aw-webui/issues/806)) ([`dd7ae07`](https://github.com/ActivityWatch/aw-webui/commit/dd7ae07)) - feat(categorization): extract findCommonPhrases util with bigram support and tests ([#803](https://github.com/ActivityWatch/aw-webui/issues/803)) ([`5529031`](https://github.com/ActivityWatch/aw-webui/commit/5529031)) - feat: add work time report view ([#775](https://github.com/ActivityWatch/aw-webui/issues/775)) ([`83dc881`](https://github.com/ActivityWatch/aw-webui/commit/83dc881)) - feat(timeline): add 'Merge by app' filter to reduce event flooding ([#782](https://github.com/ActivityWatch/aw-webui/issues/782)) ([`38663fb`](https://github.com/ActivityWatch/aw-webui/commit/38663fb)) - feat(timeline): add category filter to Timeline view ([#778](https://github.com/ActivityWatch/aw-webui/issues/778)) ([`137ee09`](https://github.com/ActivityWatch/aw-webui/commit/137ee09)) - feat(timeline): add AFK filter toggle to Timeline view ([#776](https://github.com/ActivityWatch/aw-webui/issues/776)) ([`ad06461`](https://github.com/ActivityWatch/aw-webui/commit/ad06461)) - feat(timeline): add keyboard and scroll panning support ([#777](https://github.com/ActivityWatch/aw-webui/issues/777)) ([`fdd2c4a`](https://github.com/ActivityWatch/aw-webui/commit/fdd2c4a)) - feat: add a dynamic period to the high uncategorized time notification ([#745](https://github.com/ActivityWatch/aw-webui/issues/745)) ([`7d43d81`](https://github.com/ActivityWatch/aw-webui/commit/7d43d81)) - feat: Add ability to better visualize value of custom events if not using title ([#698](https://github.com/ActivityWatch/aw-webui/issues/698)) ([`2cdfe0c`](https://github.com/ActivityWatch/aw-webui/commit/2cdfe0c)) - feat: hide top-window titles vis on android ([#737](https://github.com/ActivityWatch/aw-webui/issues/737)) ([`360b1b4`](https://github.com/ActivityWatch/aw-webui/commit/360b1b4)) - feat: add top bucket data by column vis ([#733](https://github.com/ActivityWatch/aw-webui/issues/733)) ([`7ed6115`](https://github.com/ActivityWatch/aw-webui/commit/7ed6115)) - feat: enhance colorisation for Top Window Titles ([#654](https://github.com/ActivityWatch/aw-webui/issues/654)) ([`906b005`](https://github.com/ActivityWatch/aw-webui/commit/906b005)) - feat(timeline): swimlanes, duration filter, and filter desc to timeline ([#679](https://github.com/ActivityWatch/aw-webui/issues/679)) ([`052656a`](https://github.com/ActivityWatch/aw-webui/commit/052656a)) - feat: add Top Stopwatch Events view ([#659](https://github.com/ActivityWatch/aw-webui/issues/659)) ([`9259df7`](https://github.com/ActivityWatch/aw-webui/commit/9259df7)) - feat: add number input support for event data editing ([#648](https://github.com/ActivityWatch/aw-webui/issues/648)) ([`cb9a7ec`](https://github.com/ActivityWatch/aw-webui/commit/cb9a7ec)) - feat: add top browser titles to activity visualization ([#631](https://github.com/ActivityWatch/aw-webui/issues/631)) ([`757f9f4`](https://github.com/ActivityWatch/aw-webui/commit/757f9f4)) - feat: detect and set preferred theme based on user settings ([#634](https://github.com/ActivityWatch/aw-webui/issues/634)) ([`606112e`](https://github.com/ActivityWatch/aw-webui/commit/606112e)) - feat(ux): improve timeline usability ([#610](https://github.com/ActivityWatch/aw-webui/issues/610)) ([`291da6f`](https://github.com/ActivityWatch/aw-webui/commit/291da6f)) - feat: revert to the default coloring for non-standard watchers ([#613](https://github.com/ActivityWatch/aw-webui/issues/613)) ([`85c007e`](https://github.com/ActivityWatch/aw-webui/commit/85c007e)) - feat: use category colors in the timeline view ([#609](https://github.com/ActivityWatch/aw-webui/issues/609)) ([`0cf7831`](https://github.com/ActivityWatch/aw-webui/commit/0cf7831)) - feat: Add 'app' and 'title' fields to CSV export in Reports ([#552](https://github.com/ActivityWatch/aw-webui/issues/552)) ([`7c0761d`](https://github.com/ActivityWatch/aw-webui/commit/7c0761d)) - feat: added categoryQuery support on Android, fixing 'Timeline (barchart)' visualization ([`0282eec`](https://github.com/ActivityWatch/aw-webui/commit/0282eec)) - feat: improved timeline tooltip, including better time formatting (hide date if same day), fixes [#494](https://github.com/ActivityWatch/aw-webui/issues/494) ([`54be44d`](https://github.com/ActivityWatch/aw-webui/commit/54be44d)) - feat: redesigned timeline filter settings, hid inside `<details>` ([`609a7cc`](https://github.com/ActivityWatch/aw-webui/commit/609a7cc)) - feat: filtering clients and hosts on timeline ([#502](https://github.com/ActivityWatch/aw-webui/issues/502)) ([`d7c70b4`](https://github.com/ActivityWatch/aw-webui/commit/d7c70b4)) - feat: added support for query caching in aw-client ([#501](https://github.com/ActivityWatch/aw-webui/issues/501)) ([`33784bd`](https://github.com/ActivityWatch/aw-webui/commit/33784bd)) - feat: server-side settings ([#493](https://github.com/ActivityWatch/aw-webui/issues/493)) ([`1131f9b`](https://github.com/ActivityWatch/aw-webui/commit/1131f9b)) ### π Fixes (131) <details><summary>Click to expand</summary> <p> - fix(categories): switchToSet marks dirty when active set changes, enabling Save ([#965](https://github.com/ActivityWatch/aw-webui/issues/965)) ([`2ddc69f`](https://github.com/ActivityWatch/aw-webui/commit/2ddc69f)) - fix(timeline): handle synced buckets where origin hostname contains underscores ([#970](https://github.com/ActivityWatch/aw-webui/issues/970)) ([`4cfaf0a`](https://github.com/ActivityWatch/aw-webui/commit/4cfaf0a)) - fix(settings): route the notifications settings group ([#972](https://github.com/ActivityWatch/aw-webui/issues/972)) ([`8365c47`](https://github.com/ActivityWatch/aw-webui/commit/8365c47)) - fix(categories): don't let persisted install defaults beat a shipped preset ([#974](https://github.com/ActivityWatch/aw-webui/issues/974)) ([`2618faa`](https://github.com/ActivityWatch/aw-webui/commit/2618faa)) - fix(timeline): prevent mobile horizontal overflow ([#971](https://github.com/ActivityWatch/aw-webui/issues/971)) ([`ec68d20`](https://github.com/ActivityWatch/aw-webui/commit/ec68d20)) - fix(ux): replace prompt() with modals for Android WebView compatibility ([#966](https://github.com/ActivityWatch/aw-webui/issues/966)) ([`2809ee2`](https://github.com/ActivityWatch/aw-webui/commit/2809ee2)) - fix: split week/month desktop queries by day to avoid 30s timeout ([#951](https://github.com/ActivityWatch/aw-webui/issues/951)) ([`ec73005`](https://github.com/ActivityWatch/aw-webui/commit/ec73005)) - fix(android): don't merge on 'title' key for aw-watcher-android buckets ([#960](https://github.com/ActivityWatch/aw-webui/issues/960)) ([`85db7b5`](https://github.com/ActivityWatch/aw-webui/commit/85db7b5)) - fix(categories): import JSON from Android SAF and persist a single save ([#956](https://github.com/ActivityWatch/aw-webui/issues/956)) ([`97891e1`](https://github.com/ActivityWatch/aw-webui/commit/97891e1)) - fix(ci): find server logs under the testing cache root, never fail on absence ([#962](https://github.com/ActivityWatch/aw-webui/issues/962)) ([`7141e39`](https://github.com/ActivityWatch/aw-webui/commit/7141e39)) - fix(queries): match Arc and Dia in the chrome appname patterns ([#928](https://github.com/ActivityWatch/aw-webui/issues/928)) ([`d88a9a5`](https://github.com/ActivityWatch/aw-webui/commit/d88a9a5)) - fix(query): use native date inputs in query options ([#953](https://github.com/ActivityWatch/aw-webui/issues/953)) ([`2e757c5`](https://github.com/ActivityWatch/aw-webui/commit/2e757c5)) - fix(categories): auto-select sole hostname and stop lying about missing watchers ([#950](https://github.com/ActivityWatch/aw-webui/issues/950)) ([`13a9428`](https://github.com/ActivityWatch/aw-webui/commit/13a9428)) - fix: three small dashboard fixes ([#232](https://github.com/ActivityWatch/aw-webui/issues/232), [#935](https://github.com/ActivityWatch/aw-webui/issues/935), [#299](https://github.com/ActivityWatch/aw-webui/issues/299)) ([#942](https://github.com/ActivityWatch/aw-webui/issues/942)) ([`3cbe349`](https://github.com/ActivityWatch/aw-webui/commit/3cbe349)) - fix(layout): preserve bottom margin on small screens ([#946](https://github.com/ActivityWatch/aw-webui/issues/946)) ([`3092e41`](https://github.com/ActivityWatch/aw-webui/commit/3092e41)) - fix(views): guard server info before dereferencing in templates ([#933](https://github.com/ActivityWatch/aw-webui/issues/933)) ([`d9b42c2`](https://github.com/ActivityWatch/aw-webui/commit/d9b42c2)) - fix(category-builder): support hosts with only Android/ScreenTime buckets ([#932](https://github.com/ActivityWatch/aw-webui/issues/932)) ([`7db0598`](https://github.com/ActivityWatch/aw-webui/commit/7db0598)) - fix(settings): unify aw-notify config schema ([#924](https://github.com/ActivityWatch/aw-webui/issues/924)) ([`266a714`](https://github.com/ActivityWatch/aw-webui/commit/266a714)) - fix(categories): prevent saving invalid regex patterns ([#921](https://github.com/ActivityWatch/aw-webui/issues/921)) ([`82407b4`](https://github.com/ActivityWatch/aw-webui/commit/82407b4)) - fix(activity): hide unsupported visualizations instead of showing warning ([#919](https://github.com/ActivityWatch/aw-webui/issues/919)) ([`e304925`](https://github.com/ActivityWatch/aw-webui/commit/e304925)) - fix(queries): don't split on semicolons inside string literals ([#918](https://github.com/ActivityWatch/aw-webui/issues/918)) ([`cefc618`](https://github.com/ActivityWatch/aw-webui/commit/cefc618)) - fix(ci): drop brittle PAT-based dependabot automerge ([#901](https://github.com/ActivityWatch/aw-webui/issues/901)) ([`58173d8`](https://github.com/ActivityWatch/aw-webui/commit/58173d8)) - fix(ios): screentime compatibility patch with Greptile review fixes ([#917](https://github.com/ActivityWatch/aw-webui/issues/917)) ([`bf0fc84`](https://github.com/ActivityWatch/aw-webui/commit/bf0fc84)) - fix(categories): filter null/empty segments before saving class name ([#902](https://github.com/ActivityWatch/aw-webui/issues/902)) ([`a5ec97b`](https://github.com/ActivityWatch/aw-webui/commit/a5ec97b)) - fix(build): allow root git dependencies for npm >= 12 (fixes activitywatch[#1356](https://github.com/ActivityWatch/aw-webui/issues/1356)) ([#913](https://github.com/ActivityWatch/aw-webui/issues/913)) ([`749585f`](https://github.com/ActivityWatch/aw-webui/commit/749585f)) - fix(buckets): show phone icon for Android devices in Raw Data view ([#905](https://github.com/ActivityWatch/aw-webui/issues/905)) ([`5799225`](https://github.com/ActivityWatch/aw-webui/commit/5799225)) - fix(activity): detect Android device at runtime for view selection ([#903](https://github.com/ActivityWatch/aw-webui/issues/903)) ([`de79efe`](https://github.com/ActivityWatch/aw-webui/commit/de79efe)) - fix(categories): allocate safe numeric ID when class list is empty ([#892](https://github.com/ActivityWatch/aw-webui/issues/892)) ([`0c0b846`](https://github.com/ActivityWatch/aw-webui/commit/0c0b846)) - fix(deps): resolve 16 npm audit vulnerabilities via audit fix ([#893](https://github.com/ActivityWatch/aw-webui/issues/893)) ([`122a2ca`](https://github.com/ActivityWatch/aw-webui/commit/122a2ca)) - fix(i18n): use Intl.DateTimeFormat for locale-aware date/time display ([#894](https://github.com/ActivityWatch/aw-webui/issues/894)) ([`17d4a4b`](https://github.com/ActivityWatch/aw-webui/commit/17d4a4b)) - fix(buckets): surface real server error message on import failure ([#890](https://github.com/ActivityWatch/aw-webui/issues/890)) ([`f24f6e9`](https://github.com/ActivityWatch/aw-webui/commit/f24f6e9)) - fix(tests): skip cross-locale assertions when Node lacks full-icu ([#884](https://github.com/ActivityWatch/aw-webui/issues/884)) ([`5b77a78`](https://github.com/ActivityWatch/aw-webui/commit/5b77a78)) - fix(deps): override esbuild to patched version ([#867](https://github.com/ActivityWatch/aw-webui/issues/867)) ([`38fcf69`](https://github.com/ActivityWatch/aw-webui/commit/38fcf69)) - fix(activity): revert timeline_barchart as wide vis β breaks default 3-vis layout ([#863](https://github.com/ActivityWatch/aw-webui/issues/863)) ([`8768475`](https://github.com/ActivityWatch/aw-webui/commit/8768475)) - fix(timeline): keep scroll zoom anchored to cursor ([#860](https://github.com/ActivityWatch/aw-webui/issues/860)) ([`53b1499`](https://github.com/ActivityWatch/aw-webui/commit/53b1499)) - fix(activity): widen timeline barchart card ([`89d8a77`](https://github.com/ActivityWatch/aw-webui/commit/89d8a77)) - fix(deps): override vulnerable d3-color ([#858](https://github.com/ActivityWatch/aw-webui/issues/858)) ([`afa1e61`](https://github.com/ActivityWatch/aw-webui/commit/afa1e61)) - fix(score): show selected period label ([#845](https://github.com/ActivityWatch/aw-webui/issues/845)) ([`5c04d24`](https://github.com/ActivityWatch/aw-webui/commit/5c04d24)) - fix(categories): keep durations readable for long names ([#843](https://github.com/ActivityWatch/aw-webui/issues/843)) ([`c72fffa`](https://github.com/ActivityWatch/aw-webui/commit/c72fffa)) - fix(timeline): localize chart date labels ([#825](https://github.com/ActivityWatch/aw-webui/issues/825)) ([`adbddb4`](https://github.com/ActivityWatch/aw-webui/commit/adbddb4)) - fix(ci): restore PAT for dependabot auto-merge ([#837](https://github.com/ActivityWatch/aw-webui/issues/837)) ([`475442e`](https://github.com/ActivityWatch/aw-webui/commit/475442e)) - fix(query-explorer): solid Rename/Delete buttons for saved queries ([#835](https://github.com/ActivityWatch/aw-webui/issues/835)) ([`0072d36`](https://github.com/ActivityWatch/aw-webui/commit/0072d36)) - fix(ui): replace `<wbr>` with zero-width space in timeline labels, move bulk-delete to dropdown ([#834](https://github.com/ActivityWatch/aw-webui/issues/834)) ([`0db3447`](https://github.com/ActivityWatch/aw-webui/commit/0db3447)) - fix(ci): skip unused setup-cml Vega install ([#832](https://github.com/ActivityWatch/aw-webui/issues/832)) ([`266b20b`](https://github.com/ActivityWatch/aw-webui/commit/266b20b)) - fix(deps): remove obsolete Vue CLI Jest plugin ([#833](https://github.com/ActivityWatch/aw-webui/issues/833)) ([`ddbb4f8`](https://github.com/ActivityWatch/aw-webui/commit/ddbb4f8)) - fix(ci): repair dependabot automation ([#828](https://github.com/ActivityWatch/aw-webui/issues/828)) ([`62ee4ed`](https://github.com/ActivityWatch/aw-webui/commit/62ee4ed)) - fix: remove deprecated keyboard option from vis-timeline ([#826](https://github.com/ActivityWatch/aw-webui/issues/826)) ([`18a3946`](https://github.com/ActivityWatch/aw-webui/commit/18a3946)) - fix(timeline): wrap long bucket labels on narrow screens ([#822](https://github.com/ActivityWatch/aw-webui/issues/822)) ([`af1f3fd`](https://github.com/ActivityWatch/aw-webui/commit/af1f3fd)) - fix(settings): prevent null localStorage values from overriding state defaults ([#815](https://github.com/ActivityWatch/aw-webui/issues/815)) ([`8d9a7f8`](https://github.com/ActivityWatch/aw-webui/commit/8d9a7f8)) - fix(views): use queryOptions.start for +1 week button (closes [#817](https://github.com/ActivityWatch/aw-webui/issues/817)) ([#819](https://github.com/ActivityWatch/aw-webui/issues/819)) ([`907959c`](https://github.com/ActivityWatch/aw-webui/commit/907959c)) - fix(deps): patch Dependabot security blockers ([#812](https://github.com/ActivityWatch/aw-webui/issues/812)) ([`f4b9379`](https://github.com/ActivityWatch/aw-webui/commit/f4b9379)) - fix(query-options): prefer known hosts over unknown defaults ([#809](https://github.com/ActivityWatch/aw-webui/issues/809)) ([`444ed4f`](https://github.com/ActivityWatch/aw-webui/commit/444ed4f)) - fix(categories): keep Top Categories colors when category query contains encoded segments ([#781](https://github.com/ActivityWatch/aw-webui/issues/781)) ([`f2d0396`](https://github.com/ActivityWatch/aw-webui/commit/f2d0396)) - fix(deps): reduce npm vulnerabilities from 37 to 32 via overrides ([#771](https://github.com/ActivityWatch/aw-webui/issues/771)) ([`1db85aa`](https://github.com/ActivityWatch/aw-webui/commit/1db85aa)) - fix(queries): use query_bucket directly when full bucket ID is known ([#760](https://github.com/ActivityWatch/aw-webui/issues/760)) ([`1c7802b`](https://github.com/ActivityWatch/aw-webui/commit/1c7802b)) - fix(timeline): truncate long synced bucket names in sidebar ([#757](https://github.com/ActivityWatch/aw-webui/issues/757)) ([`1393ec6`](https://github.com/ActivityWatch/aw-webui/commit/1393ec6)) - fix(timeline): position tooltip above cursor to prevent overlap ([#758](https://github.com/ActivityWatch/aw-webui/issues/758)) ([`fc5bdd9`](https://github.com/ActivityWatch/aw-webui/commit/fc5bdd9)) - fix: allow single-date selection in timeline date range picker ([#767](https://github.com/ActivityWatch/aw-webui/issues/767)) ([`8d32ea9`](https://github.com/ActivityWatch/aw-webui/commit/8d32ea9)) - fix(timeline): use group.id instead of group.content for bucket ID lookup ([#765](https://github.com/ActivityWatch/aw-webui/issues/765)) ([`0c0368c`](https://github.com/ActivityWatch/aw-webui/commit/0c0368c)) - fix(sunburst-clock): respect startOfDay offset when rendering the clock ([#766](https://github.com/ActivityWatch/aw-webui/issues/766)) ([`86a71c8`](https://github.com/ActivityWatch/aw-webui/commit/86a71c8)) - fix: support file exports in Tauri webview ([#763](https://github.com/ActivityWatch/aw-webui/issues/763)) ([`919e9f3`](https://github.com/ActivityWatch/aw-webui/commit/919e9f3)) - fix(settings): prevent categorization crash when hostname not yet resolved ([#759](https://github.com/ActivityWatch/aw-webui/issues/759)) ([`cd5aafe`](https://github.com/ActivityWatch/aw-webui/commit/cd5aafe)) - fix: add Helium to browser list ([#744](https://github.com/ActivityWatch/aw-webui/issues/744)) ([`c32b635`](https://github.com/ActivityWatch/aw-webui/commit/c32b635)) - fix: resolve npm security vulnerabilities (qs, babel) ([#762](https://github.com/ActivityWatch/aw-webui/issues/762)) ([`cbeca31`](https://github.com/ActivityWatch/aw-webui/commit/cbeca31)) - fix(views): load categories on Query Explorer mount ([#753](https://github.com/ActivityWatch/aw-webui/issues/753)) ([`0cc1e2f`](https://github.com/ActivityWatch/aw-webui/commit/0cc1e2f)) - fix(categories): prevent duplicate names from causing shared edits ([#755](https://github.com/ActivityWatch/aw-webui/issues/755)) ([`a2256c4`](https://github.com/ActivityWatch/aw-webui/commit/a2256c4)) - fix(settings): prevent confirm dialog persisting after leaving settings ([#754](https://github.com/ActivityWatch/aw-webui/issues/754)) ([`5fe4025`](https://github.com/ActivityWatch/aw-webui/commit/5fe4025)) - fix: minor label fixes to TimelineBarChart ([#674](https://github.com/ActivityWatch/aw-webui/issues/674)) ([`345f3ee`](https://github.com/ActivityWatch/aw-webui/commit/345f3ee)) - fix: add uppercase names for some browsers ([#695](https://github.com/ActivityWatch/aw-webui/issues/695)) ([`e2e6abf`](https://github.com/ActivityWatch/aw-webui/commit/e2e6abf)) - fix: fix dark mode timeline colors ([#705](https://github.com/ActivityWatch/aw-webui/issues/705)) ([`ebeb847`](https://github.com/ActivityWatch/aw-webui/commit/ebeb847)) - fix: fix duplicate android hosts in header ([#725](https://github.com/ActivityWatch/aw-webui/issues/725)) ([`61b9f58`](https://github.com/ActivityWatch/aw-webui/commit/61b9f58)) - fix: add Floorp Browser support ([#683](https://github.com/ActivityWatch/aw-webui/issues/683)) ([`076d050`](https://github.com/ActivityWatch/aw-webui/commit/076d050)) - fix: add another name for Zen Browser ([#685](https://github.com/ActivityWatch/aw-webui/issues/685)) ([`afef52e`](https://github.com/ActivityWatch/aw-webui/commit/afef52e)) - fix: handle ^ and $ in rules ([#684](https://github.com/ActivityWatch/aw-webui/issues/684)) ([`34b42ed`](https://github.com/ActivityWatch/aw-webui/commit/34b42ed)) - fix: remove router guard for unsaved category settings ([#664](https://github.com/ActivityWatch/aw-webui/issues/664)) ([`9842d3e`](https://github.com/ActivityWatch/aw-webui/commit/9842d3e)) - fix: add another name for Brave ([#653](https://github.com/ActivityWatch/aw-webui/issues/653)) ([`f64e785`](https://github.com/ActivityWatch/aw-webui/commit/f64e785)) - fix: correct duration formatting logic ([#643](https://github.com/ActivityWatch/aw-webui/issues/643)) ([`2b14364`](https://github.com/ActivityWatch/aw-webui/commit/2b14364)) - fix: add Zen Browser to browser list ([`1860f15`](https://github.com/ActivityWatch/aw-webui/commit/1860f15)) - fix: fix tests ([#642](https://github.com/ActivityWatch/aw-webui/issues/642)) ([`53cbaaa`](https://github.com/ActivityWatch/aw-webui/commit/53cbaaa)) - fix: update upload-artifact action to version 4 ([#641](https://github.com/ActivityWatch/aw-webui/issues/641)) ([`8ec401c`](https://github.com/ActivityWatch/aw-webui/commit/8ec401c)) - fix: add browser names from Flathub ([#623](https://github.com/ActivityWatch/aw-webui/issues/623)) ([`053b8d6`](https://github.com/ActivityWatch/aw-webui/commit/053b8d6)) - fix: add chromium-browser ([#630](https://github.com/ActivityWatch/aw-webui/issues/630)) ([`8f6e767`](https://github.com/ActivityWatch/aw-webui/commit/8f6e767)) - fix: correctly invert colors of alerts in dark mode ([#591](https://github.com/ActivityWatch/aw-webui/issues/591)) ([`e6ad4cd`](https://github.com/ActivityWatch/aw-webui/commit/e6ad4cd)) - fix: add a default color for Media category ([#593](https://github.com/ActivityWatch/aw-webui/issues/593)) ([`6ed3e83`](https://github.com/ActivityWatch/aw-webui/commit/6ed3e83)) - fix: add browser app name `Microsoft Edge Beta` on macOS ([#595](https://github.com/ActivityWatch/aw-webui/issues/595)) ([`ba1305d`](https://github.com/ActivityWatch/aw-webui/commit/ba1305d)) - fix: fixed extra space before punctuation in Home view on desktop ([`2f3d1e8`](https://github.com/ActivityWatch/aw-webui/commit/2f3d1e8)) - fix: fixes issue with migrating category settings to the server ([#583](https://github.com/ActivityWatch/aw-webui/issues/583)) ([`54769b7`](https://github.com/ActivityWatch/aw-webui/commit/54769b7)) - fix: dark mode (Timeline, Activity, Raw Data) ([#575](https://github.com/ActivityWatch/aw-webui/issues/575)) ([`05c25c9`](https://github.com/ActivityWatch/aw-webui/commit/05c25c9)) - fix: add saturday as option for 'start of week' setting ([`80db006`](https://github.com/ActivityWatch/aw-webui/commit/80db006)) - fix: only save updated settings to server, store theme and landingpage in localStorage as well ([#573](https://github.com/ActivityWatch/aw-webui/issues/573)) ([`021acc4`](https://github.com/ActivityWatch/aw-webui/commit/021acc4)) - fix: removed unused guard ([`bf16309`](https://github.com/ActivityWatch/aw-webui/commit/bf16309)) - fix: fixed test needing to await async loading of settings ([`98dee43`](https://github.com/ActivityWatch/aw-webui/commit/98dee43)) - fix: fixed categories and views not being stored/loaded from server-side settings ([`b99efb4`](https://github.com/ActivityWatch/aw-webui/commit/b99efb4)) - fix: correctly convert `words` from map to array ([#569](https://github.com/ActivityWatch/aw-webui/issues/569)) ([`5993db3`](https://github.com/ActivityWatch/aw-webui/commit/5993db3)) - fix: dark mode (Stopwatch, Category Builder) ([#570](https://github.com/ActivityWatch/aw-webui/issues/570)) ([`8245c37`](https://github.com/ActivityWatch/aw-webui/commit/8245c37)) - fix: showing of `UncategorizedNotification` ([#571](https://github.com/ActivityWatch/aw-webui/issues/571)) ([`1b1209d`](https://github.com/ActivityWatch/aw-webui/commit/1b1209d)) - fix: correct URL encoding for category filter query params ([#566](https://github.com/ActivityWatch/aw-webui/issues/566)) ([`d3a22c2`](https://github.com/ActivityWatch/aw-webui/commit/d3a22c2)) - fix: hopefully fixes bug in category builder for 'constructor' word (and other prototype stuff) ([#565](https://github.com/ActivityWatch/aw-webui/issues/565)) ([`9d58554`](https://github.com/ActivityWatch/aw-webui/commit/9d58554)) - fix: fixes bug in category builder when word 'constructor' exists ([#564](https://github.com/ActivityWatch/aw-webui/issues/564)) ([`74b0d31`](https://github.com/ActivityWatch/aw-webui/commit/74b0d31)) - fix: add 'librewolf-default' browser appname ([#541](https://github.com/ActivityWatch/aw-webui/issues/541)) ([`75dc005`](https://github.com/ActivityWatch/aw-webui/commit/75dc005)) - fix: add 'Arc.exe' to browser appnames ([#553](https://github.com/ActivityWatch/aw-webui/issues/553)) ([`ba148a9`](https://github.com/ActivityWatch/aw-webui/commit/ba148a9)) - fix: added librewolf-default browser appname ([`dd37252`](https://github.com/ActivityWatch/aw-webui/commit/dd37252)) - fix: move 'brave browser' browser-to-appname entries ([#283](https://github.com/ActivityWatch/aw-webui/issues/283)) ([`b867e80`](https://github.com/ActivityWatch/aw-webui/commit/b867e80)) - fix: fix URL matching for toggling of dark-mode style element ([#562](https://github.com/ActivityWatch/aw-webui/issues/562)) ([`b54b5cb`](https://github.com/ActivityWatch/aw-webui/commit/b54b5cb)) - fix: fixed dark theme toggle in webpack ([`64bc94d`](https://github.com/ActivityWatch/aw-webui/commit/64bc94d)) - fix: added pwa manifest generation in vite ([`f608a1e`](https://github.com/ActivityWatch/aw-webui/commit/f608a1e)) - fix: make files in ./static serve at root (harmonize webpack and vite) ([`b78ad4f`](https://github.com/ActivityWatch/aw-webui/commit/b78ad4f)) - fix: fix CSP for both vite and webpack ([`8b2d886`](https://github.com/ActivityWatch/aw-webui/commit/8b2d886)) - fix: fixed vite builds! ([`a5a6ea0`](https://github.com/ActivityWatch/aw-webui/commit/a5a6ea0)) - fix: more progress on vite builds ([`b9978e3`](https://github.com/ActivityWatch/aw-webui/commit/b9978e3)) - fix: rename jest.config.js -> jest.config.cjs ([`b62b4c3`](https://github.com/ActivityWatch/aw-webui/commit/b62b4c3)) - fix: fixed broken icons ([`0b032ec`](https://github.com/ActivityWatch/aw-webui/commit/0b032ec)) - fix: changed `require` to `import` ([`c7cdade`](https://github.com/ActivityWatch/aw-webui/commit/c7cdade)) - fix: Handle date clearing in Activity view ([#554](https://github.com/ActivityWatch/aw-webui/issues/554)) ([`97a1089`](https://github.com/ActivityWatch/aw-webui/commit/97a1089)) - fix: converted components to typescript ([#556](https://github.com/ActivityWatch/aw-webui/issues/556)) ([`400ba07`](https://github.com/ActivityWatch/aw-webui/commit/400ba07)) - fix: fixed Search view returning all events unfiltered, and converted component to typescript ([#555](https://github.com/ActivityWatch/aw-webui/issues/555)) ([`3a6a218`](https://github.com/ActivityWatch/aw-webui/commit/3a6a218)) - fix: use settings store to retrieve useColorFallback setting ([#533](https://github.com/ActivityWatch/aw-webui/issues/533)) ([`23df3fb`](https://github.com/ActivityWatch/aw-webui/commit/23df3fb)) - fix: add app name for Vivaldi on macOS ([#520](https://github.com/ActivityWatch/aw-webui/issues/520)) ([`845b12f`](https://github.com/ActivityWatch/aw-webui/commit/845b12f)) - fix: made navbar menu toggler visible in dark mode ([`7de395b`](https://github.com/ActivityWatch/aw-webui/commit/7de395b)) - fix: open edit modal when 'Add Category' clicked (add top-level category) ([`5540cb8`](https://github.com/ActivityWatch/aw-webui/commit/5540cb8)) - fix: fixed Score visualization on Android ([`d0d3682`](https://github.com/ActivityWatch/aw-webui/commit/d0d3682)) - fix: reload buckets when opening Buckets view ([`51330e4`](https://github.com/ActivityWatch/aw-webui/commit/51330e4)) - fix: fixed IBucket.first_seen for aw-server-python ([`8babe10`](https://github.com/ActivityWatch/aw-webui/commit/8babe10)) - fix: never choose 'unknown' host as default for category builder ([`819c4e3`](https://github.com/ActivityWatch/aw-webui/commit/819c4e3)) - fix: sort hosts by last_updated in buckets store, so that the first host is probably the primary one ([`fcbd586`](https://github.com/ActivityWatch/aw-webui/commit/fcbd586)) - fix: made CSP stricter in prod ([#503](https://github.com/ActivityWatch/aw-webui/issues/503)) ([`35ad0ae`](https://github.com/ActivityWatch/aw-webui/commit/35ad0ae)) - fix: respect request timeout setting (https://github.com/ActivityWatch/activitywatch/issues/979) ([`e05e805`](https://github.com/ActivityWatch/aw-webui/commit/e05e805)) - fix: better edge browser support ([`9600814`](https://github.com/ActivityWatch/aw-webui/commit/9600814)) - fix: better librewolf browser support ([#499](https://github.com/ActivityWatch/aw-webui/issues/499)) ([`d1fb86b`](https://github.com/ActivityWatch/aw-webui/commit/d1fb86b)) - fix: correct the regex for GIMP in default category rules ([#483](https://github.com/ActivityWatch/aw-webui/issues/483)) ([`608296f`](https://github.com/ActivityWatch/aw-webui/commit/608296f)) - fix: support Yandex browser on macOS ([#490](https://github.com/ActivityWatch/aw-webui/issues/490)) ([`62043c7`](https://github.com/ActivityWatch/aw-webui/commit/62043c7)) </p> </details> ### π¨ Misc (16) <details><summary>Click to expand</summary> <p> - docs(ai-summary): link the published agents-and-ai guide ([#958](https://github.com/ActivityWatch/aw-webui/issues/958)) ([`3ba41f4`](https://github.com/ActivityWatch/aw-webui/commit/3ba41f4)) - docs: add subscribe CTA to the Home Support section ([#914](https://github.com/ActivityWatch/aw-webui/issues/914)) ([`edb7d71`](https://github.com/ActivityWatch/aw-webui/commit/edb7d71)) - chore: bump media submodule ([`0a43547`](https://github.com/ActivityWatch/aw-webui/commit/0a43547)) - test(timeline): add regression tests for cursor-anchored zoom ([#847](https://github.com/ActivityWatch/aw-webui/issues/847)) ([#866](https://github.com/ActivityWatch/aw-webui/issues/866)) ([`9cdc708`](https://github.com/ActivityWatch/aw-webui/commit/9cdc708)) - docs: add --webpath instructions for aw-server-rust ([#764](https://github.com/ActivityWatch/aw-webui/issues/764)) ([`934daca`](https://github.com/ActivityWatch/aw-webui/commit/934daca)) - refactor(queries): simplify browser detection using case-insensitive regex, support Firefox ESR ([#752](https://github.com/ActivityWatch/aw-webui/issues/752)) ([`f3d95d4`](https://github.com/ActivityWatch/aw-webui/commit/f3d95d4)) - chore: add .pre-commit-config.yaml and fix formatting ([`b16d3bb`](https://github.com/ActivityWatch/aw-webui/commit/b16d3bb)) - chore: fix formatting ([`60706f1`](https://github.com/ActivityWatch/aw-webui/commit/60706f1)) - chore: hide API Browser link while running rust servers ([#614](https://github.com/ActivityWatch/aw-webui/issues/614)) ([`a0e70bc`](https://github.com/ActivityWatch/aw-webui/commit/a0e70bc)) - chore: fix some typos in comments ([#720](https://github.com/ActivityWatch/aw-webui/issues/720)) ([`11785df`](https://github.com/ActivityWatch/aw-webui/commit/11785df)) - style: fix Raw JSON visibility in dark mode ([#736](https://github.com/ActivityWatch/aw-webui/issues/736)) ([`691c57b`](https://github.com/ActivityWatch/aw-webui/commit/691c57b)) - chore: add macos browser app name for Zen ([#675](https://github.com/ActivityWatch/aw-webui/issues/675)) ([`ca6fafd`](https://github.com/ActivityWatch/aw-webui/commit/ca6fafd)) - refactor: migrate timeline.js to typescript ([#680](https://github.com/ActivityWatch/aw-webui/issues/680)) ([`52b2360`](https://github.com/ActivityWatch/aw-webui/commit/52b2360)) - test: fixed import errors in tests ([`cc82b3d`](https://github.com/ActivityWatch/aw-webui/commit/cc82b3d)) - refactor: converted the remaining components to typescript ([#558](https://github.com/ActivityWatch/aw-webui/issues/558)) ([`3ae4060`](https://github.com/ActivityWatch/aw-webui/commit/3ae4060)) - Revert "fix: use settings store to retrieve useColorFallback setting ([#533](https://github.com/ActivityWatch/aw-webui/issues/533))" ([`6bffa65`](https://github.com/ActivityWatch/aw-webui/commit/6bffa65)) </p> </details> *(excluded 102 less relevant [commits](https://github.com/ActivityWatch/aw-webui/compare/573b728...d0cf630))* ## π¦ media ### π¨ Misc (2) - docs: added LICENSE ([`a451514`](https://github.com/ActivityWatch/media/commit/a451514)) - docs: added README ([`ae8d373`](https://github.com/ActivityWatch/media/commit/ae8d373)) **Full Changelog**: https://github.com/ActivityWatch/aw-android/compare/v0.12.1...v0.14.0 - Oct 13, 2023 0.12.1Finally, a new release! - Supports Android 13 π€ - Includes all the improvements to ActivityWatch since the last aw-android version in 2021 π - Much improved startup time π - New onboarding flow ## What's Changed PRs since v0.10.0
Moreβ¦
* Add ChromeWatcher by @miguelrochefort in https://github.com/ActivityWatch/aw-android/pull/30 * ci: fetch builds from aw-server-rust repo, instead of building (and some minor fixes) by @ErikBjare in https://github.com/ActivityWatch/aw-android/pull/75 * ci: continued migration to GitHub Actions by @ErikBjare in https://github.com/ActivityWatch/aw-android/pull/76 * build: downgrade NDK to r21e, misc build fixes by @ErikBjare in https://github.com/ActivityWatch/aw-android/pull/87 * test: E2E instrumented testing with basic screenshot test by @ErikBjare in https://github.com/ActivityWatch/aw-android/pull/88 * minor misc fixes by @ErikBjare in https://github.com/ActivityWatch/aw-android/pull/89 * CI restructure by @ErikBjare in https://github.com/ActivityWatch/aw-android/pull/91 * build(deps): bump NDK to 25c by @ErikBjare in https://github.com/ActivityWatch/aw-android/pull/95 ## New Contributors * @miguelrochefort made their first contribution in https://github.com/ActivityWatch/aw-android/pull/30 **Full Changelog**: https://github.com/ActivityWatch/aw-android/compare/v0.10.0...v0.12.1