Skip to content

v0.14.3

Latest

Choose a tag to compare

@github-actions github-actions released this 11 Oct 14:55
· 8 commits to master since this release

These are the release notes for ActivityWatch for Android version v0.14.3.

Contributors

Thanks to everyone who contributed to this release:

@0xbrayo, @ErikBjare, @TimeToBuildBob

Changelog

Changes since v0.14.2:

📦 aw-android

✨ Features (3)

  • feat(sync): surface per-peer hostnames in sync report UI (#303) (ec0233e)
  • feat(ui): show a banner while usage history is still importing (#316) (59b4566)
  • feat(release): publish per-ABI APKs alongside the universal APK (#308) (3cd8a38)

🐛 Fixes (16)

Click to expand

  • fix(startup): rewrite bucket hostnames before anything opens the datastore (#354) (c45a5f2)
  • fix(server): make startServerTask() single-instance guard atomic (#324) (abaf09c)
  • fix(ci): grant /dev/kvm access so emulator jobs stop running under TCG (#353) (854c672)
  • fix(sync): stop syncing twice per interval (#340) (e223e20)
  • fix(web-watcher): write browser events off the accessibility main thread (#344) (9186623)
  • fix(android): use light-only theme for Auth/Sync/Onboarding screens (#309) (96372f6)
  • fix(strings): update welcome text for v0.14 with sync support (#314) (9dbb63a)
  • fix(watcher): count the in-progress foreground session (#337) (d811495)
  • fix(ci): dismiss System UI ANR dialog during release smoke onboarding (#352) (24c04d5)
  • fix(server): don't crash at startup when the server socket can't be created (#315) (b64a581)
  • fix(anr): defer SessionEventWatcher.rust init and dispatch heartbeats to IO (#325) (9d6c7ed)
  • fix(sync): use case-insensitive filter for 'zero peers' warning (#323) (500cc11)
  • fix(ui): walk WebView history on back before finishing MainActivity (#327) (c9c651f)
  • fix(ui): let SyncSettingsActivity follow system dark mode (#326) (c222740)
  • fix(export): stream large JSON downloads to a cache file (#304) (6484f5c)
  • fix(android): follow system theme so WebView sees correct prefers-color-scheme (#301) (6e4e92d)

🔨 Misc (8)

Click to expand

  • chore: bump versionName to 0.14.3, versionCode to 48 (968319f)
  • chore: bump versionName to 0.14.3b1, versionCode to 47 (ea54faa)
  • chore(submodule): bump aw-server-rust to master � (#305) (4633f23)
  • perf(service): construct RustInterface off the main thread (#346) (9fd6879)
  • perf(sync): skip unchanged files when mirroring to the SAF directory (#347) (1a75c72)
  • test(e2e): convert view bounds to screen coordinates (#320) (a921dbe)
  • docs(fastlane): add phone screenshots for F-Droid/store listings (#322) (558981d)
  • docs(readme): link F-Droid listing and activitywatch.net downloads (#319) (a188544)

(excluded 3 less relevant commits)

📦 aw-server-rust

✨ Features (18)

  • feat(server): serve query reads from a read-only datastore handle (#807) (af70e58)
  • feat(query): per-request time budget and slow-query logging (#806) (6f4204f)
  • feat(query): cache results for finished past periods (#764) (1f2fb0b)
  • feat(aw-client-rust): add get_classes with fallback to the default classes (#735) (7497182)
  • feat(aw-client-rust): add query_cached (name/cache query parameters) (#732) (5621b5f)
  • feat(aw-client-rust): filter get_event_count by start/end (#731) (3f574ef)
  • feat(aw-client-rust): add an offline request queue for heartbeats (#738) (d7e741d)
  • feat(aw-client-rust): add new_with_protocol to allow https (#736) (ab35070)
  • feat(aw-client-rust): add export_all, export_bucket and import_bucket (#727) (e7c5439)
  • feat(aw-client-rust): expose pretty_query, querystr_to_array and escape_doublequote (#734) (e193dce)
  • feat(aw-client-rust): add set_setting (#726) (f1adc61)
  • feat(aw-client-rust): add an aw-client CLI behind a cli feature (#740) (5bd198f)
  • feat(aw-client-rust): read aw-client.toml and add AwClient::from_config (#737) (04d9a45)
  • feat(aw-client-rust): add get_event, and return 404 for missing events (#725) (935c88f)
  • feat(server): add streaming CSV export endpoint for bucket events (#722) (ae38664)
  • feat(aw-client-rust): pre-merge queued heartbeats with a commit interval (#739) (515c43a)
  • feat(aw-sync): v2 segment writer + manifest behind sync-v2 feature flag (#719) (11f9166)
  • feat(aw-sync): add dedupe subcommand for pre-#713 -synced-from- duplicates (#718) (a5de81b)

🐛 Fixes (33)

Click to expand

  • fix(android): open the JNI datastore exactly once (#801) (faeded2)
  • fix(query-cache): charge timestamps-only in key weight, not query text (#799) (4c1cda9)
  • fix(aw-server): dedup re-imports against the privacy-filtered form of events (#768) (9793c91)
  • fix(datastore): infer schema version when a restored DB has user_version 0 (#776) (96f4113)
  • fix(export): prefix CSV data keys that collide with id/timestamp/duration (#795) (344f476)
  • fix(dirs): restore %LOCALAPPDATA% on Windows, migrate v0.14.0 Roaming data, pin paths (#791) (dc01d74)
  • fix(server): warn at startup when the web UI has no index.html (#794) (d059a4c)
  • fix(aw-server): re-importing an updated export replaces events in place (#766) (bb7f769)
  • fix(query): remove duplicate clippy allow attributes on parser module (#779) (22a77dc)
  • fix(datastore): commit stopwatch changes before acknowledging (#743) (fe0dfce)
  • fix(aw-server): return JSON errors with a reason for 400/404/422 under /api (#772) (fcc1ede)
  • fix(datastore): log why legacy import was skipped, add explicit --import-legacy (#780) (692fa0a)
  • fix(aw-sync): warn on orphaned 2-level staging db in aw-sync status (#788) (0078d8d)
  • fix(server): explain missing web UI instead of a bare 404 on / (#777) (a6d7730)
  • fix(datastore): make v3→v4 key_value migration idempotent (#792) (d5d848b)
  • fix(endpoints): reject events with negative duration and heartbeats with negative pulsetime (#785) (acbb3ee)
  • fix(aw-transform): empty regex rules never match (#774) (9008520)
  • fix(query): allow clippy::block_scrutinee in generated parser (#771) (7ed5bb8)
  • fix(transform): return merge_events_by_keys groups in first-seen order (#757) (09c9367)
  • fix(aw-server): give imported events new ids instead of replacing existing ones (#754) (6e93380)
  • fix(aw-client-rust): percent-encode bucket IDs and setting keys in request URLs (#730) (03037f6)
  • fix(aw-client-rust): pass start/stop to get_event_count in status_errors tests (#761) (68c1446)
  • fix(aw-client-rust): return an error instead of panicking on a bad event count (#729) (c558062)
  • fix(aw-sync): read v4/v5 peer databases instead of skipping them (#756) (db2c9ce)
  • fix(models): reject non-finite and out-of-range durations instead of saturating (#751) (9a51a02)
  • fix(aw-client-rust): restore the toml dependency; fix a Windows wait_for_start test flake (#753) (9e766c8)
  • fix(aw-client-rust): wait_for_start waits for /api/0/info, not just a TCP connection (#733) (3701776)
  • fix(models): round durations to the nearest nanosecond when parsing (#750) (7e50394)
  • fix(transform): split union_no_overlap events around zero-duration events (#744) (39e6bbd)
  • fix(transform): port aw-core's flood() so both servers agree (#748) (84d69e0)
  • fix(transform): port aw-core's filter_period_intersect, keeping zero-duration events (#749) (92b8e19)
  • fix(export): send HTTP headers before serializing large exports (#721) (05c7b38)
  • fix(install-ndk.sh): avoid GNU-only readlink -f so the script runs on macOS (#720) (73ba83c)

🔨 Misc (9)

Click to expand

  • test(aw-client-rust): read wait_for_start mock connections concurrently (#783) (3ebca20)
  • chore(transform): deprecate chunk_events_by_key (#758) (bec71d5)
  • bench(transform): add flood, sort, filter_keyvals, chunk benches (#769) (32637fa)
  • test(aw-client-rust): pass start/end to get_event_count in the decode-error test (#760) (c72a82f)
  • perf(transform): rank-ordered rule evaluation in categorize (#762) (541b8a7)
  • test(aw-client-rust): skip half-open connections in the wait_for_start mock (#759) (cb9126f)
  • test(aw-sync): make test temp paths unique so parallel tests don't collide (#742) (0fd275d)
  • perf(query): serialize /query results directly instead of via json!() (#741) (a05d7ef)
  • perf(transform): avoid redundant allocations when grouping events (#673) (c68d32c)

(excluded 9 less relevant commits)

📦 aw-webui

✨ Features (10)

  • feat(categories): add 'Add on top of mine' option to import dialog (#1071) (f76e1e2)
  • feat(bucket): show most recent events when the selected range is empty (#1030) (47377e5)
  • feat(categories): layer category sets, and stop dropping edits made while layered (#1027) (fabdeab)
  • feat(categories): softer default palette without breaking stored defaults (#1065) (9bda65d)
  • feat(settings): add enabled toggle to notifications panel (Phase 3.1) (#1057) (1a9f221)
  • feat(activity): add custom date range period (#1005) (d65cfe1)
  • feat(activity): choose all devices or a subset of devices in the Activity view (#1004) (ddf567f)
  • feat(activity): always show Year period, remove showYearly setting (#1003) (eef32d5)
  • feat(buckets): use server-side CSV export endpoint (#997) (f5391fe)
  • feat(ai-summary): typed, privacy-filtered activity context (#925) (#948) (918ebaf)

🐛 Fixes (48)

Click to expand

  • fix(activity): build the Year barchart from day chunks and show progress for every chunked load (#1098) (655a00a)
  • fix(queries): match Helium in the chrome bucket when no dedicated bucket exists (#989) (3b1c444)
  • fix: recover category builder loading on Android (#992) (df9d85d)
  • fix(work-report): tidy action buttons and dates on narrow screens (#1041) (2a5e91e)
  • fix(buckets): keep row actions inside the card on phones (#1087) (952c697)
  • fix: snap period-start URL dates; fix Trends chart height and x-axis labels (#1059) (af9d80b)
  • fix(timespiral): scale spiral to fit narrow screens (#1036) (65b15e3)
  • fix(queries): unescape browser regex backslashes after JSON.stringify (fixes Arc.exe on Windows) (#1084) (c8b46d6)
  • fix(settings): keep the uncategorized-hint toggle beside its heading (#1047) (69da8e8)
  • fix(sunburst): keep category sunburst labels inside the chart box (#1040) (226d1e0)
  • fix(bucket): reload events when navigating to another bucket (#1044) (d2b4890)
  • fix(work-report): count sessions using the break time (#1046) (5875847)
  • fix(graph): draw category graph at container width and label nodes (#1042) (239cf0a)
  • fix(trends): stop category table from overflowing on narrow screens (#1038) (919c936)
  • fix(views): replace stored desktop defaults with Android views on Android (#1088) (6ce8a8c)
  • fix(categories): persist layered category renames and deletions (#1072) (0755d1f)
  • fix(activity): show browser data on Android when only aw-watcher-web is present (#1069) (bdbbc39)
  • fix(activity): align week/month/year periods to their start (#1045) (ac2c277)
  • fix(sunburst): fit category labels to their ring instead of clipping them (#1064) (db18bbc)
  • fix(queries): use real bucket ids for synced hosts in single-host views (#1068) (6812979)
  • fix(work-report): name hosts by bucket hostname and query their real bucket ids (#1067) (9c441bd)
  • fix(ui): color Top Applications by each app's dominant category (#1063) (8493914)
  • fix(ui): dismissable multi-device note; drop synthetic category tag from search results (#1062) (58abaf4)
  • fix(build): honour --os=android under ESM config (#1061) (34cdfb3)
  • fix(timeline): consistent row labels for synced buckets; fix dark theme stripes (#1060) (6a182d4)
  • fix(dark-mode): set color-scheme: normal on iframes for custom visualizations (#1050) (e2cc882)
  • fix(categorization): persist Category Builder ignored words across reloads (#1031) (7d2efba)
  • fix(activity): explain why 'Time active' differs from period bar totals (#1029) (83605b0)
  • fix(categories): don't throw when the edit modal is destroyed before its deferred hide (#1028) (89a8fdd)
  • fix(categories): treat blank regex rules as matching nothing everywhere (#1026) (4e8789c)
  • fix(hosts): keep the 'unknown' pseudo-host out of device pickers (#1023) (822c8c0)
  • fix(bucket): show event count and a not-found state for unknown buckets (#1022) (64a6036)
  • fix(timeline): clamp hourly bar stacks to 1h (fixes y-axis > 1h) (#1021) (dada6c7)
  • fix(dark-mode): restore appsummary bar-chart label contrast (#1002) (9092392)
  • fix(sunburst): resolve 'auto' theme for the root circle color (#1020) (49f21f0)
  • fix(bucket): show the event count again; hide empty bucket data (#1054) (95cd6b4)
  • fix(settings): treat an unset aw-notify setting as defaults (#1043) (3db1a08)
  • fix(deps): resolve high-severity npm audit findings (#1033) (926c5fe)
  • fix(import): show success message and propagate server error to UI (carry of #874) (#1019) (45e9c41)
  • fix(activity): address remaining All time review findings (#1008) (56e8de7)
  • fix(timeline): bound Daily Timeline scrolling to the queried day (#998) (a36e77c)
  • fix(queries): keep comments out of generated AQL (#1001) (54ac546)
  • fix(mobile): wrap long tooltip data and example pattern so the page doesn't widen (#991) (23c95ed)
  • fix(ci): pin CML binary instead of unauthenticated setup-cml (#994) (7eac81a)
  • fix(export): stream large bucket exports without JSON.parse (#993) (c8c0306)
  • fix(multidevice): include Android hosts that lack an afkstatus bucket (#988) (22cb53b)
  • fix(queries): match Dia/Arc chrome forks and surface empty Browser view (#949) (5d5378a)
  • fix(search,buckets): drop early-dev notice, case-insensitive search, relocate data-collection alert (#986) (262322d)

🔨 Misc (3)

  • test(queries): fix stale double-escaping in the Helium chrome-fork tests (5e3daa4)
  • test(activity): add store-level tests for query_browser_only action (#1070) (7250113)
  • test: tighten review follow-ups from #1001 and #1003 (#1007) (f0b733c)

(excluded 13 less relevant commits)

Full Changelog: v0.14.2...v0.14.3