Changelog

Note

These changelogs are badly formatted and may be incomplete (especially for old versions). They are generated semi-automatically using commit history and manual modifications.

You may find more information about a release on the releases page.

v0.14.0

Released 2026-10-06. Release page and downloads

Huzzah! v0.14.0 is finally here! 🎉

Almost two years since v0.13.2, and eight betas later. This is a big one: faster, steadier, a new desktop app, and an Android app that has caught up. And syncing between your devices works, local-first, with whatever sync tool you already use: it’s still early and opt-in, with a few rough edges (see the announcement and the sync docs). More than 30 people contributed.

Since the last stable release, ActivityWatch also passed 1 million downloads, and it’s now downloaded over 10,000 times a week. Thank you!

Read more: the announcement · the full changelog (about 1,000 changes, too long for this page)

Summary

  • ⚡ Much faster, especially once you have years of data: dashboards load day by day and cache finished days, so long ranges no longer time out and repeat visits are near instant

  • 🐛 Steadier all round: crashed watchers restart on their own, a macOS memory leak and crash are fixed, and a long tail of annoyances is gone

  • 🔄 Sync between your devices works. It is local-first: no ActivityWatch server, no account. Point it at a folder you already sync with Syncthing, Dropbox or anything else, and each device’s data shows up on the others. It is still rough in places (it takes more disk space than it should, and setup is manual), so it is opt-in (how to set it up)

  • 👀 See all your devices together: the Activity view can now merge any set of devices into one view

  • 📱 Android caught up: ActivityWatch for Android 0.14 shipped last month, its first stable release since 2023, with far fewer crashes and the same sync built in

  • 🖥️ A new desktop app built on Tauri: same features as the classic one and lighter, but less battle-tested so far, so the classic app ships too and stays the default

  • 🌐 A refreshed web UI: a better timeline, custom date ranges, a work-time report, billable hours export, and category sets for switching between rule profiles

  • 🌍 ActivityWatch now speaks Swedish, German, Ukrainian, Russian and Chinese

  • 🔒 More control over what gets stored: filter sensitive window titles before they ever reach the database

  • 🛡️ For those who want it: put an API key on the server

  • 🍎 macOS: signed and notarized builds for Apple Silicon and Intel, and browser URLs are tracked properly again

  • 🐧 Linux: Wayland support out of the box in the new app, and arm64 builds

  • 🤖 For the AI crowd: one canonical query that returns clean, categorized events, so an assistant can answer questions about your time without a custom integration (agents and AI)

  • And a lot more…

Honorable mentions

Many of this release’s features came from the community. Thank you:

  • @0xbrayo for aw-tauri, from prototype to a release-ready app, and for aw-notify-rs and the Rust side of Android sync

  • @BohdanRykush for the Ukrainian, German and Russian translations, and the original i18n setup and language picker (ActivityWatch/aw-webui#855)

  • @JhihJian for the Simplified Chinese translation (ActivityWatch/aw-webui#865)

  • @NickWick13 for the Swedish translation (ActivityWatch/aw-webui#947)

  • @BelKed for rewriting the browser extension for Manifest V3 (ActivityWatch/aw-watcher-web#152), plus theme detection and top browser titles in the web UI

  • @2e3s for awatcher, which gives the new app native Wayland support

  • @nerumo for timeline swimlanes and the duration filter (ActivityWatch/aw-webui#679)

  • @rrogerc for capturing URLs from Firefox-based browsers on macOS (ActivityWatch/aw-watcher-window#134)

  • @hawai-i for the macOS Apple Events entitlement, which brought native browser URL capture back (#1411)

  • @FractalMachinist for browser tracking on Android (ActivityWatch/aw-android#151)

  • @Lorite for fixes to Android’s folder-picker sync (ActivityWatch/aw-android#221, ActivityWatch/aw-android#222)

  • @wind-mask for the Tauri app’s headless --daemon and --mini modes

  • @Q-Ze for fixing the multi-device view with synced data (ActivityWatch/aw-webui#969)

  • @RTnhN for the universal columns visualization (ActivityWatch/aw-webui#733)

  • @behdadmansouri for clearer import feedback (ActivityWatch/aw-webui#874)

  • @fanxing11 for a string of fixes across the watchers, client and notifications

More detail

Faster

Measured on a real 9-year database (9.2 million events, 1.8 GB) on an M2 Mac, with each version’s own dashboard queries. The new dashboard asks for long ranges one day at a time, so the servers are compared on that same workload:

Year view, 365 daily queries

v0.13.2

v0.14 first load

v0.14 repeat load

Classic app (Python server)

120 s

41 s

0.6 s

Tauri app (Rust server)

139 s

32 s

0.2 s

The v0.13.2 dashboard fetched a Year as a single request instead. That took 120 s on the Python server (past the default 30 s timeout, so it failed) and 19 s on the Rust server. Asking day by day is what makes caching, progress and per-day charts possible. All time across nine years reopens in 5 s on the classic app; the Tauri app doesn’t cache All time yet (aw-server-rust#784). Under the hood: new database indexes, SQLite WAL mode, cached category rules (categorizing a year of window titles went from 53 s to 10 s) and streaming exports.

Sync

aw-sync copies each device’s data into a sync folder (~/ActivityWatchSync by default). You choose how that folder moves between devices: Syncthing, Dropbox, a network drive, anything that syncs files. Your data never touches a server of ours. Each device only writes its own files and opens everyone else’s read-only, so devices can’t corrupt each other, and synced data shows up as -synced-from- buckets that you can query, merge in the Activity view, or ignore.

This cycle we ran it on our own desktops and phones and fixed what we hit: duplicate events after a resume, one broken device aborting a whole sync, phone data not being picked up, and a new aw-sync status that tells you what each device has synced. Known rough edges: every device keeps a full copy of every other device’s data, so it uses more disk than it should (a much more compact format is in the works), settings and deletions don’t sync, and setup is manual. It isn’t started by default: turn it on in the app’s modules menu, or run aw-sync.

Android

ActivityWatch for Android 0.14 (v0.14.0 to v0.14.2, September) is the first stable Android release since 2023. User-perceived crashes went from about 7.8% to under 1%. It adds alerts, a home-screen widget, Firefox and Chrome tracking, CSV and JSON export, and the same sync: pick a folder, and your phone’s data shows up on your desktop.

More reliable

  • Crashed watchers restart automatically, with crash logs, in both apps; only one instance runs at a time

  • macOS window watcher: fixed a crash on unusual window titles and a leak of up to ~359 MB of memory per day on busy machines

  • AFK: locking the screen counts as AFK on macOS, held keys count once, gamepads count on Linux, recovery after an X server restart, and a Windows idle-time overflow after 49.7 days is fixed

  • Data safety: heartbeats are rejected cleanly under load instead of risking corruption, a damaged database recovers on startup, and imports merge into existing buckets instead of failing

  • The Python and Rust servers now return the same query results, checked by a new parity test suite (server comparison)

The new app (Tauri)

aw-tauri ships alongside the classic aw-qt app for Windows, macOS (Apple Silicon and Intel) and Linux (x86_64 and arm64). It has its own window, runs the Rust server inside the app, is smaller to download, supports Wayland on Linux, and updates itself on macOS and Linux (on Windows, install new versions manually for now). The story: A lighter, faster ActivityWatch with Tauri.

Also new

  • Web UI: timeline swimlanes and AFK/category/duration filters, “merge by app”, keyboard and scroll panning, rule priority and field-scoped regex rules, top browser titles, top stopwatch events, CSV export that streams large buckets, and bulk delete of a device’s buckets

  • Browsers: Arc, Dia, Zen, Helium, Floorp, Firefox ESR and more Chromium variants; URLs from Firefox-based browsers on macOS

  • Notifications rewritten in Rust (aw-notify-rs), with a settings panel. They are now off until you enable them

  • Start at login is a toggle in the app

  • iOS: Screen Time data imported with aw-import-screentime shows up correctly

Upgrade notes

  • The first start after upgrading updates the database indexes once. Your data isn’t changed. On large databases this takes a while (about 30 s for the classic app and a minute for the Tauri app on a 1.8 GB database), and the dashboard may not connect until it’s done. Leave ActivityWatch running and reload.

  • Notifications (aw-notify) are now opt-in. Enable them in Settings if you used them before.

  • macOS 12 or newer is required.

Supporting ActivityWatch

ActivityWatch has no ads, no venture funding and no data business. It is maintained by a tiny team, and ActivityWatch Pro, our patronage subscription, keeps releases like this coming. From $5/month, and it doesn’t unlock anything: nothing is locked. Prefer a one-time contribution? See Donate, or sponsor us on GitHub.

Installation

See the getting started guide in the documentation.

Downloads

Classic distribution

Tauri distribution (experimental — native Wayland support on Linux)

Contributors

Thanks to everyone who contributed to this release:

@0xbrayo, @2e3s, @almirb, @amsam0, @BelKed, @deancureton, @erikbjare, @fanxing11, @Game4Move78, @hawai-i, @HomeArchbishop, @istudyatuni, @kenoma-hld, @luisgerhorst, @matt-seb-ho, @MBK-fr, @moodyhunter, @mrienstra, @musicinmybrain, @nerumo, @NickWick13, @Noorts, @petrroll, @powellnorma, @Q-Ze, @reddaisyy, @rrogerc, @RTnhN, @Senophyx, @TiberiusNemesis, @yuhldr

Changelog

Changes since v0.13.2:

📦 activitywatch

✨ Features (13)
🐛 Fixes (52)
Click to expand

🔨 Misc (16)
Click to expand

(excluded 76 less relevant commits)

📦 aw-server

✨ Features (3)
🐛 Fixes (5)
🔨 Misc (2)

(excluded 12 less relevant commits)

📦 aw-server-rust

✨ Features (41)
🐛 Fixes (69)
Click to expand

🔨 Misc (23)
Click to expand

(excluded 40 less relevant commits)

📦 aw-webui

✨ Features (38)
🐛 Fixes (97)
Click to expand

🔨 Misc (14)
Click to expand

(excluded 78 less relevant commits)

📦 aw-watcher-afk

✨ Features (1)
🐛 Fixes (12)
Click to expand

(excluded 5 less relevant commits)

📦 aw-watcher-window

✨ Features (4)
🐛 Fixes (12)
Click to expand

🔨 Misc (2)

(excluded 3 less relevant commits)

📦 aw-watcher-input

🐛 Fixes (1)

(excluded 4 less relevant commits)

📦 awatcher

🔨 Misc (163)
Click to expand

📦 aw-qt

✨ Features (4)
🐛 Fixes (10)
Click to expand

🔨 Misc (1)

(excluded 6 less relevant commits)

📦 aw-tauri

✨ Features (68)
🐛 Fixes (64)
Click to expand

🔨 Misc (94)
Click to expand

(excluded 76 less relevant commits)

📦 aw-core

✨ Features (5)
🐛 Fixes (24)
Click to expand

🔨 Misc (10)
Click to expand

(excluded 4 less relevant commits)

📦 aw-client

✨ Features (7)
🐛 Fixes (10)
Click to expand

🔨 Misc (3)

(excluded 3 less relevant commits)

📦 media

🔨 Misc (3)

Full Changelog: https://github.com/ActivityWatch/activitywatch/compare/v0.13.2…v0.14.0

v0.11.0

BREAKING CHANGE: This release switches all Python-based modules to toml configuration, past configs will no longer be respected! (you need to migrate them if you want to keep any modifications)

Summary

  • ✨ Categories can now have colors!

    • Note: If you’re updating, your categories will not have any colors set by default.

  • ✨ Barchart visualization now supports categories, as well as the weekly/monthly view.

  • ✨ New audible-as-active feature, which counts audible browser tabs as you being active (if you use the web watcher)

  • ✨ Sunburst visualization now has labels, so you can get an overview from a glance.

  • 🍎 Better macOS support

  • 🛡️ Fixed security vulnerability on macOS

  • 🐛 Many bug fixes

  • And a lot more…

activitywatch (bundle repo)

🐛 Fixes (5)

🔨 Misc (14)

aw-webui

✨ Features (26)

🐛 Fixes (37)

🔨 Misc (29)

aw-client

✨ Features (5)

🐛 Fixes (6)

🔨 Misc (12)

aw-core

✨ Features (2)

🐛 Fixes (3)

🔨 Misc (10)

aw-qt

✨ Features (1)

🐛 Fixes (2)

🔨 Misc (6)

aw-server

✨ Features (1)

🔨 Misc (9)

aw-server-rust

✨ Features (10)

🐛 Fixes (3)

🔨 Misc (15)

aw-watcher-afk

✨ Features (2)

🐛 Fixes (6)

🔨 Misc (2)

aw-watcher-window

✨ Features (1)

🐛 Fixes (3)

🔨 Misc (2)

v0.10.0

The changelog is written on a per-submodule basis. Look under the Feature subheaders for the most user-affecting changes.

Summary

activitywatch (bundle repo)

✨ Features (1)

🐛 Fixes (3)

🔨 Misc (12)

aw-webui

✨ Features (22)

🐛 Fixes (35)

🔨 Misc (76)

aw-qt

✨ Features (1)

🐛 Fixes (8)

🔨 Misc (32)

aw-server

🔨 Misc (1)

aw-server-rust

🐛 Fixes (13)

🔨 Misc (60)

aw-watcher-afk

🔨 Misc (2)

aw-watcher-window

🔨 Misc (14)

aw-client

✨ Features (2)

🐛 Fixes (1)

🔨 Misc (2)

aw-core

✨ Features (1)

🐛 Fixes (2)

🔨 Misc (10)

media

🔨 Misc (1)

v0.9.0

Released 2020-03-15

  • add Rust server as an option. It has better performance and will be the main supported server soon.

  • Almost all python components have been moved to poetry / pyproject.toml from old pip / setup.py building.

main activitywatch

  • Add aw-server-rust binary to pyinstaller bundles (a567003)

  • Automatic stale issue detection / closing (issues marked as stale after 180 days of inactivity, closed after 14 stale days)

  • Added aw-server-rust

  • Add .app and .dmg building

aw-client:

  • switched to using pyproject/poetry (d66f319)

  • Change default limit from 100 to return all by default (d35449a)

aw-core:

  • added strict-rfc3339 (c5e9d34)

  • upgraded jsonschema (a803443)

aw-qt

  • Use manager to stop all modules (ac40452)

  • Remove confirm dialog on exit (246ff05)

  • Remove startup notification (#45) (b1f66c3)

  • added aw-server-rust to possible modules (b4e9411)

  • Add dark mode detection to MacOS logo logic (502b77d)

aw-server

  • migrated from flask-restplus to flask-restx, updated submodule (36e970e)

  • Makefile improvements: use pip3 (47a208b), fixed make build DEV=true (817723b)

aw-server-rust:

  • Added in this release.

aw-watcher-window

  • readded script that disappeared in previous PR (1e424e4)

  • revise exclude_title logic (b1bd00d)

aw-webui:

  • added ability to edit start and end in EventEditor, added ability to edit events from Bucket view (10dc80f)

  • Add vuex support for editor activity (47fed8b)

  • added setting for ‘show last’ duration default value (20ca6fa)

  • buckets: Fix broken export bucket button (0a60cf7)

  • fixed long lines (c502787)

  • fixed bugs in event editor and stopwatch (d121fcb)

  • fixed editing events in bucket view (b6c1405)

  • stopwatch: Fixes broken “stop” and “edit” (06be96b)

  • Fix firefox developer edition browser data not showing up in activity view. (4a05131)

  • views/activity: Fix so subview is kept between date changes (c0ae191)

  • Improvements to Stopwatch and EventEditor (#166) (2040a92)

  • package.json: Update to fix vulnerabilities (a2f48a8)

  • Swich from timeline-plus to vis-timeline (98cd372)

  • queries: Removed trailing lines (d25cf09)

v0.8.4

Released 2019-12-10

  • Adds the ability to filter the activity view by category.

  • Fixes a bug where setting rule for a category to ‘None’ breaks the UI issue #313.

  • Fixes the broken favicon for aw-webui.

v0.8.3

Released 2019-11-13 (yes, the same day as v0.8.2)

  • Fixes the Windows builds

v0.8.2

Released 2019-11-13

Just minor fixes to the v0.8.1 that was released the day before.

  • Added a Windows installer

  • Fixes the Windows builds (it did not)

  • Fixes a bug in the web UI where weeks didn’t always start on Mondays and months didn’t always start on the first

v0.8.1

Released 2019-11-12

The v0.8 versions are finally leaving beta, and we celebrate this by giving you a truly awesome release!

It’s the culmination of a lot of behind-the-scenes work that has been going on for quite a while. Several of our most requested features have made it into this release (categorization, better weekly/monthly visualizations, preparations for syncing), making it our best release yet!

Web UI:

  • Categorization is finally here! Including visualizations and settings. The UX still leaves some things to be desired, but it’s a great start.

  • Daily and Summary views are now merged into one so that you get all the goodies of the Daily view but for arbitrary timeperiods like days/weeks/months!

  • Updated the start page, including links to resources like the user survey.

Server:

  • New unique device ID is now exposed through the info API endpoint, a pre-requisite for building the much requested sync feature.

  • Now contains the transforms needed for categorization.

Other:

  • There is now a Windows installer available, and it automatically sets up autostart!

v0.8.0b9

Released 2019-07-03

Note

Changelog incomplete

Web UI:

  • Now includes the Summary view for summarizing activity across weekly/monthly/yearly timeperiods!

v0.8.0b8

Released 2019-03-09

Note

Changelog incomplete

Server:

  • Import and export APIs are now usable

Web UI:

  • Added Stopwatch functionality

  • Added ability to import buckets from export

  • Bucket export button now does a full export that includes metadata

Other:

  • The lowest version of Python supported for building ActivityWatch is now 3.6.

  • Fixed PyInstaller-built releases on Windows

v0.8.0b7

Released 2018-11-03

Web UI:

  • Fix broken editor bucket visualization

Misc:

  • CI Improvements

v0.8.0b2 - v0.8.0b6

No changelog written.

v0.8.0b1

Released 2018-05-07

Server:

  • New query2 API for querying and transforming data

  • Added version field to /info endpoint

  • Set stricter allowed CORS origins in testing mode

  • Added --cors-origins CLI argument

Web UI:

  • Added datepicker to the activity view

  • Moved the today/clock visualization into the activity view

  • New visualization for most-visited domains

  • New visualization for previous days active time

  • New query explorer

  • Now displays version and hostname in bottom-right corner

  • Now uses aw-client-js for all API calls

Watchers:

  • Improved stability of client event queues (see this PR)

Other:

  • Windows: Console window and taskbar icon now hidden by default (issue #139)

  • All issues assigned to the v0.8 milestone can be found on GitHub

v0.7.1

Released 2017-11-06

  • Actually fixed the timezone issue in the web UI (issue #117).

  • All issues assigned to the v0.7 milestone can be found on GitHub.

v0.7.0b4

Released 2017-10-22

  • The ActivityWatch WebExtension is officially supported from this version forward, see the announcement on the forum.

  • (Not really, see v0.7.1) Fixed pesky timezone issue in web UI (issue #117).

  • Fixed bug on macOS where keyboard activity would not be used to detect AFK state.

  • Fixed packaging bugs (macOS, PyInstaller).

  • The web extension now has a better look and notifies if connection to server failed.

v0.7.0b3

Released 2017-08-25

  • Even more improvements to the web UI.

  • Major improvements to the documentation, notably instructions on how to install from builds and sources.

v0.7.0b2

Released 2017-08-09

  • Improvements to the web UI: a new visualization method (the “today” view) and information for users about the state of the project on the first page.

v0.7.0b1

Released 2017-06-14

There have been several major changes since v0.6. Much of it wont end up here but hopefully the major things will.

Note

If you are upgrading from a previous version, you might want to stop all loggers for the duration of your UTC offset to prevent issues which we’ve had difficulty debugging (or you can just start right away and expect your first hours to end up a bit weird).

  • Now works on Windows.

  • Working standalone packages. (edit: not reliable on all systems, but a lot easier to get running in many cases)

  • All timestamps are now in UTC.

  • Updated outdated parts of the documentation.

  • Makefiles are now used throughout the projects to manage building, testing, and CI.

  • A lot of bug fixes (and hopefully not too many new bugs).

  • Vastly improved code quality.

v0.6.0 and older

We haven’t been keeping track of changes very well for older versions. Please refer to the git history.