Skip to content

v0.13.0

Compare
Choose a tag to compare
@github-actions github-actions released this 04 Jun 13:07
· 15 commits to master since this release
v0.13.0
04fbfac

These are the release notes for ActivityWatch version v0.13.0.

New to ActivityWatch? Check out the website and the README.

Installation

See the getting started guide in the documentation.

Downloads

Contributors

Thanks to everyone who contributed to this release:

@2e3s, @750, @Alwinator, @BelKed, @chaoky, @Elijah-Bodden, @ErikBjare, @hooger, @iloveitaly, @jkbh, @johan-bjareholt, @Julianoe, @nathanmerrill, @noisersup, @ochen1, @omahs, @Organoidus, @pkvach, @ShootingKing-AM, @skaparis, @skewballfox, @StefanoChiodino, @TSRBerry, @vedantmgoyal2009, @victorlin, @vieteh

Changelog

Changes since v0.12.2

Summary

  • ✨ New modules are now shipped with ActivityWatch! (not yet started by default)
    • aw-sync syncs your local datastore with a sync folder (default ~/ActivityWatchSync, which you can sync with Syncthing, Dropbox, etc). We encourage you to try it out and give us your feedback!
    • aw-notify sends you notifications about your activity, like the top categories each hour.
    • aw-watcher-input collects more fine-grained input activity, like mouse delta/clicks/keypresses.
  • ✨ Server-side settings. Your categories and other settings are now preserved across browsers!
  • 🍎 Stability improvements on macOS, tracking should now be much more reliable (hybrid polling)
  • 🎨 Improvements to the dark theme
  • 🐛 Fixed tracking issues on Windows for applications running with elevated permissions
  • 🐛 Fixed issue on Linux/X11 where aw-watcher-window was getting stuck in a hot loop
  • 🐛 Many bug fixes
  • And a lot more...

📦 activitywatch

🐛 Fixes (3)

  • fix(windows): re-add leading double brace to AppId (3ada578)
  • fix(windows): remove extra '{' in AppId, potentially fixing #886 (7aeb31c)
  • fix: trying to fix building extras on macOS (#935) (2c0216d)

🔨 Misc (7)

Click to expand

  • scripts: add line with count of excluded commits in build_changelog.sh (20649af)
  • scripts: many changes to build_changelog.py (038d48a)
  • scripts: adapted build_changelog.py to work for any repo (6b67ec6)
  • test: make integration tests also run for aw-server-rust (42187d8)
  • chore: update tool versions (#940) (de9dbad)
  • docs(README): replaced occurrences of "our" (eea6713)
  • docs: added CITATION.cff (712f45a)

(excluded 106 less relevant commits)

📦 aw-server

✨ Features (3)

  • feat: added settings endpoints (#147) (520c77c)
  • feat: added special hostname !local (#140) (7527c8d)
  • feat: added support for bucket data object and updating bucket metadata (#128) (8fecb98)

🐛 Fixes (8)

Click to expand

  • fix: fix a 404 error when loading the dashboard (#144) (8b2cc22)
  • fix: refactor Flask init code (b211131)
  • fix: fixed updated JSON handling in Flask 2.3+ (7f30c17)
  • fix: remove unneeded dependency (#139) (0e035c2)
  • fix: removed MANIFEST.in (replaced with pyproject.toml include) (df76a77)
  • fix: changed exit(0) to sys.exit(0) (64f57ae)
  • fix: removed use of deprecated log_file_json param for setup_logging (99ab85d)
  • fix: added ruff linting, fixed lints (abd5b67)

🔨 Misc (4)

  • format: formatted aw-server.spec (b686b14)
  • chore: added py.typed marker file (400a17e)
  • test: improved test_settings (60269e7)
  • test: fixed test (dc510b1)

(excluded 46 less relevant commits)

📦 aw-server-rust

✨ Features (8)

  • feat: added query function in aw-client (#477) (c056e50)
  • feat: added daemon default subcommand, syncing at 5min intervals (5dd5f34)
  • feat(sync): assume sync subcommand if none given (ae8f7bf)
  • feat(sync): moved logic in sync-test scripts into rust, enabling sync with a single command (#430) (3ab8291)
  • feat: embed webui assets into the binary (#385) (26acc28)
  • feat: split client to async and blocking (#396) (e689636)
  • feat: added special hostname !local (#399) (857c2a3)
  • feat: allow specifying exactly which db file to sync with (72993e7)

🐛 Fixes (14)

Click to expand

  • fix: fixed compilation warnings & deprecations (#479) (14165e1)
  • fix: fix for served paths in new aw-webui build config (no more /static/) (f1f63c3)
  • fix: added sync dir config via global --sync-dir cli param and AW_SYNC_DIR env var (#457) (1b56e03)
  • fix: replace panics with results & better option types (#437) (dc70318)
  • fix: set rocket_cors log level to Warn (fixes[#975](#975)) (59ee035)
  • fix(datastore): fixed deprecations in chrono (timestamp_nanos and from_utc) (88464b5)
  • fix: return null for missing settings without 404 (d39f258)
  • fix: rewrote settings logic to mimic aw-server-python behavior (#428) (728c00e)
  • fix: improve AW_WEBUI_DIR handling (#424) (448312d)
  • fix: embed files even in debug mode, minor android build script improvements, update aw-webui (2e3298e)
  • fix(android): removed use of asset_path in favor of asset_resolver (f284213)
  • fix: fixed verbose logging, added proper closing of db connections, removed NoResponse message (c2374b5)
  • fix: period_union with empty args (#366) (1f4f07d)
  • fix: Remove unwraps from filter_keyvals_regex (bd547ad)

🔨 Misc (10)

Click to expand

  • docs(sync): updated README for aw-sync with proper usage instructions (41b030a)
  • docs: removed +nightly from example command (6a93563)
  • Remove references to nightly rust release (01107b6)
  • perf: improve performance of filter_period_intersect (#436) (55cad4a)
  • docs: removed old mention of caveats (0240dc0)
  • chore: added dist to gitignore (9b8df05)
  • docs: corrected command (#404) (505b66a)
  • refactor: moved site_data_dir and get_asset_path to dirs.rs (5a7e84d)
  • Update logging.rs (49b2026)
  • debug: redir stderr panic log to logger (729f27b)

(excluded 62 less relevant commits)

📦 aw-webui

✨ Features (12)

  • feat: Add 'app' and 'title' fields to CSV export in Reports (#552) (7c0761d)
  • feat: added categoryQuery support on Android, fixing 'Timeline (barchart)' visualization (0282eec)
  • feat: improved timeline tooltip, including better time formatting (hide date if same day), fixes #494 (54be44d)
  • feat: redesigned timeline filter settings, hid inside
    (609a7cc)
  • feat: filtering clients and hosts on timeline (#502) (d7c70b4)
  • feat: added support for query caching in aw-client (#501) (33784bd)
  • feat: server-side settings (#493) (1131f9b)
  • feat: updated design of 'Raw data' (Buckets) view (#448) (5484d68)
  • feat: add productivity score for categories (#258) (f4e0793)
  • feat(wip): added bucket validator (#441) (184cc83)
  • feat(wip): added bucket merge tool (#434) (d805a02)
  • feat: show bucket data field in Bucket view (384cb82)

🐛 Fixes (59)

Click to expand

  • fix: only save updated settings to server, store theme and landingpage in localStorage as well (#573) (021acc4)
  • fix: removed unused guard (bf16309)
  • fix: fixed test needing to await async loading of settings (98dee43)
  • fix: fixed categories and views not being stored/loaded from server-side settings (b99efb4)
  • fix: correctly convert words from map to array (#569) (5993db3)
  • fix: dark mode (Stopwatch, Category Builder) (#570) (8245c37)
  • fix: showing of UncategorizedNotification (#571) (1b1209d)
  • fix: correct URL encoding for category filter query params (#566) (d3a22c2)
  • fix: hopefully fixes bug in category builder for 'constructor' word (and other prototype stuff) (#565) (9d58554)
  • fix: fixes bug in category builder when word 'constructor' exists (#564) (74b0d31)
  • fix: add 'librewolf-default' browser appname (#541) (75dc005)
  • fix: add 'Arc.exe' to browser appnames (#553) (ba148a9)
  • fix: added librewolf-default browser appname (dd37252)
  • fix: move 'brave browser' browser-to-appname entries (#283) (b867e80)
  • fix: fix URL matching for toggling of dark-mode style element (#562) (b54b5cb)
  • fix: fixed dark theme toggle in webpack (64bc94d)
  • fix: added pwa manifest generation in vite (f608a1e)
  • fix: make files in ./static serve at root (harmonize webpack and vite) (b78ad4f)
  • fix: fix CSP for both vite and webpack (8b2d886)
  • fix: fixed vite builds! (a5a6ea0)
  • fix: more progress on vite builds (b9978e3)
  • fix: rename jest.config.js -> jest.config.cjs (b62b4c3)
  • fix: fixed broken icons (0b032ec)
  • fix: changed require to import (c7cdade)
  • fix: Handle date clearing in Activity view (#554) (97a1089)
  • fix: converted components to typescript (#556) (400ba07)
  • fix: fixed Search view returning all events unfiltered, and converted component to typescript (#555) (3a6a218)
  • fix: use settings store to retrieve useColorFallback setting (#533) (23df3fb)
  • fix: add app name for Vivaldi on macOS (#520) (845b12f)
  • fix: made navbar menu toggler visible in dark mode (7de395b)
  • fix: open edit modal when 'Add Category' clicked (add top-level category) (5540cb8)
  • fix: fixed Score visualization on Android (d0d3682)
  • fix: reload buckets when opening Buckets view (51330e4)
  • fix: fixed IBucket.first_seen for aw-server-python (8babe10)
  • fix: never choose 'unknown' host as default for category builder (819c4e3)
  • fix: sort hosts by last_updated in buckets store, so that the first host is probably the primary one (fcbd586)
  • fix: made CSP stricter in prod (#503) (35ad0ae)
  • fix: respect request timeout setting (#979) (e05e805)
  • fix: better edge browser support (9600814)
  • fix: better librewolf browser support (#499) (d1fb86b)
  • fix: correct the regex for GIMP in default category rules (#483) (608296f)
  • fix: support Yandex browser on macOS (#490) (62043c7)
  • fix: removed unnecessary margin on small screens (573b728)
  • fix: make uncategorized notification less aggressive (2bcd615)
  • fix: support Arc browser on macOS (#473) (cf74080)
  • fix: wording s/ignore case/case insensitive/ (#478) (f76721a)
  • fix: don't get previous day for the 'Daily Timeline (Chronological)' visualization (d2fa858)
  • fix: add missing title parameter to URL of Custom Visualization (#475) (9c84f22)
  • fix: fixed bugs in PeriodUsage (wrong date labels) and TimelineBarChart (suggestedMax not set correctly) (fb019df)
  • fix: added text-shadow to improve readability on dark theme (51b1a2e)
  • fix: added link to issue for server-side settings (1f194ff)
  • fix: added multidevice support to query_active_history (#451) (9b387d2)
  • fix: add librewolf support (#433) (6468b39)
  • fix: add mattermost to category rule Comms::IM (#363) (6d49cd4)
  • fix: add NeoChat to category rule Comms::IM (#361) (29193cb)
  • fix: adds Microsoft-edge to list of browser names (#398) (ec4cce6)
  • fix: apply typing fixes needed after updating dependencies (ab5f598)
  • fix: set uncategorized notification isVisible ratio to 0.3, disabled when category query param set (03caaa0)
  • fix: made daterange selector date-inclusive/include the day of the end date (fixes[#693](#693)) (839366e)

🔨 Misc (6)

  • test: fixed import errors in tests (cc82b3d)
  • refactor: converted the remaining components to typescript (#558) (3ae4060)
  • Revert "fix: use settings store to retrieve useColorFallback setting (#533)" (6bffa65)
  • format: fixed formatting (78dd436)
  • test: updated test snapshot (0244144)
  • docs(README): fix typos (#421) (7306fc1)

(excluded 54 less relevant commits)

📦 media

🔨 Misc (1)

📦 aw-watcher-afk

🐛 Fixes (3)

  • fix: add +1ms to get rid of 20s afk-events not being merged by heartbeat (#64) (84dd679)
  • fix: fixed typechecking issue (0e356fe)
  • fix: fixed lints (575a6f5)

(excluded 7 less relevant commits)

📦 aw-watcher-window

✨ Features (2)

  • feat: added back wmi method on Windows as fallback for admin processes (#96) (2d878c5)
  • feat: added hybrid polling method for macOS (#95) (af38b35)

🐛 Fixes (3)

  • fix: fixed lints (310ce78)
  • fix: downgrade python-xlib to 0.31 to work around #89 (1a334d8)
  • fix(macOS): guards against missing notification data (#86) (82d9673)

(excluded 7 less relevant commits)

📦 aw-qt

✨ Features (1)

  • feat: added 'Open config folder' button (#104) (a259608)

🐛 Fixes (1)

(excluded 9 less relevant commits)

📦 aw-core

✨ Features (1)

  • feat: added update_bucket methods to datastores, finished support for bucket 'data' attribute (#121) (c38713e)

🐛 Fixes (10)

Click to expand

  • fix: fixed log path (again) (6adeed9)
  • fix: change back to old log dir after breaking change in platformdirs, pinned platformdirs (6b3d670)
  • fix: prevent KeyError: 'title' in filter_keyvals_regex() (#123) (c0bd507)
  • fix: migrate to platformdirs from deprecated appdirs (#122) (ebdf2dd)
  • fix: fixed bug in peewee storage where updated/migrated model was expected (f5f3816)
  • fix: removed pythonjsonlogger and json logging support (7f494f5)
  • fix: removed mongodb storage (330b415)
  • fix: fixed warnings/nits reported by ruff (085d823)
  • fix: applied black (b6362bb)
  • fix: applied black (c193153)

🔨 Misc (4)

(excluded 15 less relevant commits)

📦 aw-client

✨ Features (3)

  • feat(example): added working_hours_gspread.py example script (#81) (c2b051e)
  • feat: default to using server-side categories for queries (75ae591)
  • feat: added methods get_setting and set_setting (858672d)

🐛 Fixes (7)

Click to expand

  • fix(examples): fixed bug where it doesn't update rows between midnight and day_offset (7e12bf2)
  • fix: added comment about categories always fetched from prod to get_classes() (b4598ff)
  • fix: added ActivityWatchClient to all (6b04bd5)
  • fix: fixed typechecking issue (5d06b08)
  • fix(examples): update merge buckets example script (#75) (99c597b)
  • fix(examples): fixed deprecated kwargs in to_datetime (3b4b6f0)
  • fix: fixed lints and formatting (fc83616)

🔨 Misc (2)

(excluded 8 less relevant commits)

📦 aw-notify

✨ Features (6)

  • feat: use server-side categories, invoke start as default subcommand (4efe542)
  • feat: load categories from file, added yesterday summary, misc cleanup (1667535)
  • feat: added start_new_day notification (ff5c000)
  • feat: added proper icon and media submodule (1f4d036)
  • feat: misc improvements, added hourly command (d9e2e28)
  • feat: added checkin notification (9cecdbc)

🐛 Fixes (10)

Click to expand

  • fix: fixed AwClient initialization (respect --testing), misc cleanup (ca1a075)
  • fix: output all + top 3 top-level categories in checkin (instead of hardcoded) (de461a9)
  • fix: added potential workaround for failing NSBundle bundleIdentifier check in desktop-notifier (c640ee3)
  • fix: fixed logging (d1d0dec)
  • fix: touch init.py to fix mypy complaining (15a5aa0)
  • fix: added main.py (350bf7c)
  • fix: set positive=true for Work alert (d88473a)
  • fix: added ttl-based caching, misc fixes (144f9c9)
  • fix: set up CLI, added installation & usage to README (139afac)
  • fix: refactor (c0f021e)

🔨 Misc (4)

(excluded 7 less relevant commits)

📦 aw-watcher-input

✨ Features (2)

  • feat: added basic custom visualization (810c4b3)
  • feat: working MVP (e0efd6a)

🐛 Fixes (8)

Click to expand

  • fix: increase default poll_time to 5s, sleep such that we get even intervals (e012b51)
  • fix: fixed visualization when running on non-standard port (c9a4052)
  • fix(build): include pynput hidden imports in pyinstaller spec (#11) (2a45376)
  • fix: fixed incorrect variable name (7791a5e)
  • fix: respect testing mode (4abce0a)
  • fix: fixed incorrect parameter name 'stop' -> 'end' (154432e)
  • fix: fixed bucket not being created (9bb85c4)
  • fix: start client queue thread (fixes #10) (5ffcacd)

🔨 Misc (7)

Click to expand

  • docs(README): added instructions for usage with aw-server-rust (63ae7d5)
  • docs(README): improved README, and some very minor changes (408174c)
  • docs(README): pug-cli package is needed for pug command used in make build (#14) (3313b4a)
  • Merge pull request #12 from ActivityWatch/dev/custom-vis (32a717c)
  • docs: use 'poetry run' to ensure command is in PATH (714ce5f)
  • docs: added screenshot and links to how it's implemented/looks in ulogme (87d2100)
  • initial commit (a08e2e6)

(excluded 14 less relevant commits)

Full Changelog: v0.12.2...v0.13.0