The best free and open-source automated time tracker. Cross-platform, extensible, privacy-focused.

Overview

Records what you do so that you can know how you've spent your time.
All in a secure way where you control the data.


WebsiteForumDocumentationReleases
Contributor statsCI overview



Do you want to receive email updates on major announcements?
Signup for the newsletter!

Table of Contents

About

The goal of ActivityWatch is simple: Enable the collection of as much valuable lifedata as possible without compromising user privacy.

We've worked towards this goal by creating a application for safe storage of the data on the users local machine and as well as a set of watchers which record data such as:

  • Currently active application and the title of its window
  • Currently active browser tab and it's title and URL
  • Keyboard and mouse activity, to detect if you are AFK ("away from keyboard") or not

It is up to you as user to collect as much as you want, or as little as you want (and we hope some of you will help write watchers so we can collect more).

Screenshots

Installation & Usage

Downloads are available on our releases page.

For instructions on how to get started, please see our guide in the documentation.

Interested in building from source? There's a guide for that too.

Is this yet another time tracker?

Yes, but we found that most time trackers lack in one or more important features.

Common dealbreakers:

  • Not open source
  • The user does not own the data (common with non-open source options)
  • Lack of synchronization (and when available: it's centralized and the sync server knows everything)
  • Difficult to setup/use (most open source options tend to target programmers)
  • Low data resolution (low level of detail, does not store raw data, long intervals between entries)
  • Hard or impossible to extend (collecting more data is not as simple as it could be)

To sum it up:

  • Closed source solutions suffer from privacy issues and limited features.
  • Open source solutions aren't developed with end-users in mind and are usually not written to be easily extended (they lack a proper API). They also lack synchronization.

We have a plan to address all of these and we're well on our way. See the table below for our progress.

Feature comparison

Basics
User owns data GUI Sync Open Source
ActivityWatch WIP, decentralized
Selfspy
ulogme
RescueTime Centralized
WakaTime Centralized Clients
Platforms
Windows macOS Linux Android iOS
ActivityWatch
Selfspy
ulogme
RescueTime Limited functionality
Tracking
App & Window Title AFK Browser Extensions Editor Plugins Extensible
ActivityWatch
Selfspy
ulogme
RescueTime
WakaTime Only for text editors

For a complete list of the things ActivityWatch can track, see the page on watchers in the documentation.

About this repository

This repo is a bundle of the core components and official modules of ActivityWatch (managed with git submodule). It's primary use is as a meta-package providing all the components in one repo; enabling easier packaging and installation. It is also where releases of the full suite are published (see releases).

Server

aw-server is the official implementation of the core service which the other ActivityWatch services interact with. It provides a REST API to a datastore and query engine. It also serves the web interface developed in the aw-webui project (which provides the frontend part of the webapp).

The REST API includes:

  • Access to a datastore suitable for timeseries/timeperiod-data
  • A query engine and language for such data

The webapp includes:

  • Data visualization & browser
  • Query explorer
  • Export functionality

Watchers

ActivityWatch comes pre-installed with two watchers, aw-watcher-afk which logs the presence/absence of user activity from keyboard and mouse input and aw-watcher-window which logs the currently active application and it's window title.

There are lots of other watchers for ActivityWatch which can track more types of activity such as aw-watcher-web which tracks time spent on websites, multiple editor watchers which tracks spent time coding and many more! A full list of watchers can be found in our documentation here.

Libraries

  • aw-core - core library, provides no runnable modules
  • aw-client - client library, useful when writing watchers

Contributing

Want to help? Great! Check out the CONTRIBUTING.md file!

Questions and support

Have a question, suggestion, problem, or just want to say hi? Post on the forum!

Comments
  • Make build error in MacOs

    Make build error in MacOs

    I am following the instructions of installing from source in MacOs and when i run make build got this error:

    python -c "import aw_server; print(aw_server.__version__)"
    Traceback (most recent call last):
     File "<string>", line 1, in <module>
    ModuleNotFoundError: No module named 'aw_server'
    make: *** [build] Error 1
    
    platform: macos stale 
    opened by snwnst 45
  • macOS - Continual

    macOS - Continual "Control System Events" Message

    Describe the bug

    Just installed the new version (9) on Mojave for the first time. After the app opens ActivityWatch continues to spam me with messages to control "System Events" even after I have given the app permission under Security & Privacy > Automation as well as Security & Privacy > Accessibility`. This also causes a noticeable lag/slowness for the operating system as a whole.

    To Reproduce

    Steps to reproduce the behavior:

    1. Open the app on macOS

    Expected behavior

    I should only need to grant the app permission once and the app should not cause my computer to stutter.

    Documentation

    Screen Shot 2020-03-19 at 12 40 55 PM

    aw-qt_2020-03-19T12-56-05.log aw-watcher-window_2020-03-19T12-56-05.log aw-server_2020-03-19T12-56-05.log

    Environment

    • ActivityWatch version: v0.9.dev+c815323
    • OS: [macOS (Mojave)]
    type: bug platform: macos stale 
    opened by 8bitgentleman 41
  • Incorrect time usage collection

    Incorrect time usage collection

    My machine has been running for the past 14 hours (~13 hours counted on March 18 and the last hour counted on March 19.)

    But activitywatch only shows data for ~9 hours and that too on March 18:

    image

    and there's no data for March 19:

    image

    I looked into the logs folder and there's no log file for March 19 either.

    $ tree /home/dufferzafar/.cache/activitywatch/log/
    ├── aw-qt
    │   ├── aw-qt_2018-03-17T22-31-45.log
    │   ├── aw-qt_2018-03-18T00-36-02.log
    │   ├── aw-qt_2018-03-18T00-36-09.log
    │   ├── aw-qt_2018-03-18T00-36-47.log
    │   ├── aw-qt_2018-03-18T00-37-43.log
    │   ├── aw-qt_2018-03-18T10-29-05.log
    │   ├── aw-qt_2018-03-18T10-34-25.log
    │   ├── aw-qt_2018-03-18T11-00-27.log
    │   ├── aw-qt_2018-03-18T11-03-17.log
    │   └── aw-qt_2018-03-18T13-02-07.log
    ├── aw-server
    │   ├── aw-server_2018-03-17T22-31-46.log.json
    │   ├── aw-server_2018-03-18T10-34-25.log.json
    │   ├── aw-server_2018-03-18T11-03-17.log.json
    │   └── aw-server_2018-03-18T13-02-07.log.json
    ├── aw-watcher-afk
    │   ├── aw-watcher-afk_2018-03-17T22-31-46.log
    │   ├── aw-watcher-afk_2018-03-18T10-34-25.log
    │   ├── aw-watcher-afk_2018-03-18T11-03-17.log
    │   └── aw-watcher-afk_2018-03-18T13-02-07.log
    └── aw-watcher-window
        ├── aw-watcher-window_2018-03-17T22-31-46.log
        ├── aw-watcher-window_2018-03-18T10-34-25.log
        ├── aw-watcher-window_2018-03-18T11-03-17.log
        └── aw-watcher-window_2018-03-18T13-02-07.log
    

    How do I troubleshoot this?

    type: bug platform: linux stale 
    opened by dufferzafar 39
  • Custom watcher visualization not working as expected

    Custom watcher visualization not working as expected

    Hello, first of I want to congratulate you on your awesome project, which I have already installed on all my devices. I am currently working a a custom watcher for ActivityWatch that detects if I am standing or sitting (I have a height adjustable table). I will also publish it as soon as I am finished.

    The problem is that the results are not shown as expected. I have taken some screenshots and wrote the things that are wrong in my opinion. By the way I am not sure if these are programming mistakes from my side or bugs in ActivityWatch. So I am sorry if I have understood something wrong.

    Screenshot from 2020-07-09 19 40 55

    The problem is that there is no text directly in the time lines. Only if I hover them. I would also like that sitting and standing (two different values) are in different colors.

    Screenshot from 2020-07-09 19 37 13

    And in Activity > Window my watcher is just missing.

    I am using version 0.9.2 (latest) on Ubuntu.

    Thank you in advance!

    type: bug stale 
    opened by Alwinator 38
  • Can't start aw-qt/aw-server/etc on Linux (v0.9)

    Can't start aw-qt/aw-server/etc on Linux (v0.9)

    After updating to v0.9 I've been unable to start aw-qt, the server, or any of the watchers.

    [2255892] Error loading Python lib '/usr/bin/libpython3.6m.so.1.0': dlopen: /usr/bin/libpython3.6m.so.1.0: cannot open shared object file: No such file or directory
    

    image

    Sucks extra much because I just updated the AUR package to v0.9 before testing...

    type: bug priority: high platform: linux pyinstaller 
    opened by ErikBjare 30
  • Unable to stop the stop watch

    Unable to stop the stop watch

    • [x] I am on the latest ActivityWatch version.
    • [x] I have searched the issues of this repo and believe that this is not a duplicate.
    • OS name and version: Windows 7
    • ActivityWatch version: v0.11.0

    Describe the bug

    When I try to use the Stopwatch after updating it shows some TypeError after reloading the page the stopwatch seems to be running but again when trying to stop it ,it shows the same error so I have to delete that to stop it going on

    To Reproduce

    Steps to reproduce the behavior, for example: 1. Go to Stop Watch 2. Create a new stopwatch 3. TypeError: Cannot read property 'timestamp' of null. See dev console (F12) and/or server logs for more info,

    See this gif kh5Fk8

    Expected behavior

    It does start the stop watch but I cannot stop it without deleting.

    Documentation

    image This is what appears after pressing F12 Key

    type: bug module: webui 
    opened by pnicto 28
  • Create a MacOS .app for the whole ActivityWatch.

    Create a MacOS .app for the whole ActivityWatch.

    By going into the .app directory and trying to run ./aw-qt while not having my virtualenv active, I got the error FileNotFoundError: [Errno 2] No such file or directory: 'aw-server': 'aw-server'.

    I decide to try to pack the whole activitywatch into an .app to see if this would fix the problem. It did fix the problem, I now have .app files that run succesfully (at least on my system). However building the mega-bundle requires pyinstaller dev version (>=4.0).

    I'd appreciate linux testing that I didn't break anything, and testing the pyinstaller-mega-package on non-macos systems would probably also be a good idea before merging anything.


    Notes by maintainers:

    • [x] ~~Wait for PyInstaller 4.0 to get released~~ We're not going to wait.
    • [x] Add to CI process (fixed in #336)

    The bundle produced could/might be used exclusively for macOS, to prevent breakage on other platforms.

    opened by xylix 25
  • watcher afk / windows behind proxy (squid)

    watcher afk / windows behind proxy (squid)

    Describe the bug

    With my personal PC no problem, but at work with proxy for afk and windows watcher I have this error:

    2019-01-22 12:02:24 [INFO ]: aw-watcher-afk started  (aw_watcher_afk.afk:53)
    2019-01-22 12:02:25 [WARNING]: 503 Server Error: Service Unavailable for url: http://localhost:5600/api/0/buckets/  (aw_client.client:72)
    

    no problem with firefox plugin or other plugins

    To Reproduce

    Steps to reproduce the behavior:

    1. Setup squid proxy
    2. setup windows proxy to squid
    3. Start afk or windows proxy

    Expected behavior

    No bug

    Environment

    • ActivityWatch version: 0.8.0b7
    • OS: Windows 10
    opened by OlivierMary 25
  • Hidden version without tray icon

    Hidden version without tray icon

    Is it possible to run a hidden version without tray? Where the data being stored? Possible to to run on normal windows user and check stored data / track time only for administrator user?

    type: question 
    opened by gitty8 25
  • Creating a new watcher

    Creating a new watcher

    I would like to watch one integer variable from my window-manager (XY context : the virtual desktop I am in, as they are a good classification of the activities I do on the computer + makes it trivial to label current activity, by just moving to the corresponding space).

    What would be a bare-bones watcher ?

    Only has to run on linux. I can have the watched-thing run a shell command (messaging the watcher) every time its value changes, so it doesn't even have to continuously listen (though if it must listen, it can watch the /tmp/current-value file, easy).

    type: question 
    opened by nikanar 25
  • Dashboard filter failing to tag some web content

    Dashboard filter failing to tag some web content

    Describe the bug

    Problem with dashboard regex filters. For me youtube videos watched in firefox aren't being categorized correctly.

    To Reproduce

    Steps to reproduce the behavior:

    • Have a youtube tab open for long enough that it shows up in the dashboard
    • Set up a filter for YouTube content to get tagged somehow

    Expected behavior

    I expected youtube media to get grouped inside the "media" category when I set my filter but it's just showing up under uncategorized.

    Documentation

    Screenshot 2020-02-09 at 20 31 02 Screenshot 2020-02-09 at 20 31 10

    Logfiles can be found in different places depending on platform:

    • Windows: C:\Users\<USER>\AppData\Local\ActivityWatch\Logs
    • macOS: /Users//Library/Logs/activitywatch
    • Linux: /home//.cache/SuperApp/log

    Environment

    • ActivityWatch version: v0.8.4
    • OS: macOS Mojave

    Additional context

    stale 
    opened by xylix 24
  • Timeline shows unknown window

    Timeline shows unknown window

    • [x] I am on the latest ActivityWatch version.
    • [x] I have searched the issues of this repo and believe that this is not a duplicate.
    • OS name and version: Fedora 36 - Gnome+Wayland
    • ActivityWatch version: tried the release v0.12.1 and v0.12.1.dev+ec18b64

    Describe the bug

    The timeline just shows unknown.

    To Reproduce

    Expected behavior

    Have the name and time I spent in each app

    Documentation

    aw-qt.log

    2023-01-01 20:58:26 [INFO ]: Started aw-qt...  (aw_qt.main:53)
    2023-01-01 20:58:26 [WARNING]: Found matching file but was not executable: /home/alex/activitywatch/aw-qt/aw-qt.spec  (aw_qt.manager:64)
    2023-01-01 20:58:26 [INFO ]: Found 0 bundled modules  (aw_qt.manager:85)
    2023-01-01 20:58:26 [INFO ]: Found 3 system modules  (aw_qt.manager:119)
    2023-01-01 20:58:26 [INFO ]: Starting module aw-server  (aw_qt.manager:148)
    2023-01-01 20:58:26 [INFO ]: Starting module aw-watcher-window  (aw_qt.manager:148)
    2023-01-01 20:58:26 [INFO ]: Starting module aw-watcher-afk  (aw_qt.manager:148)
    2023-01-01 20:58:26 [INFO ]: Creating trayicon...  (aw_qt.trayicon:206)
    2023-01-01 20:58:26 [INFO ]: Initialized aw-qt and trayicon successfully  (aw_qt.trayicon:262)
    2023-01-01 21:07:15 [INFO ]: Stopped module aw-server  (aw_qt.manager:195)
    2023-01-01 21:07:15 [INFO ]: Stopped module aw-watcher-window  (aw_qt.manager:195)
    2023-01-01 21:07:15 [INFO ]: Stopped module aw-watcher-afk  (aw_qt.manager:195)
    

    aw-server_2023-01-01T18-32-39.log

    2023-01-01 18:32:39 [INFO ]: Using storage method: peewee  (aw_server.main:33)
    2023-01-01 18:32:39 [INFO ]: Starting up...  (aw_server.main:41)
    2023-01-01 18:32:39 [INFO ]: Using database file: /home/alex/.local/share/activitywatch/aw-server/peewee-sqlite.v2.db  (aw_datastore.storages.peewee:126)
    2023-01-01 18:32:39 [INFO ]:  * Running on http://localhost:5600 (Press CTRL+C to quit)  (werkzeug:224)
    2023-01-01 18:32:40 [INFO ]: Creating bucket 'aw-watcher-afk_legionalex'  (aw_datastore.datastore.Datastore:55)
    2023-01-01 18:32:40 [INFO ]: Creating bucket 'aw-watcher-window_legionalex'  (aw_datastore.datastore.Datastore:55)
    2023-01-01 18:32:51 [INFO ]: Received heartbeat, but bucket was previously empty, inserting as new event. (bucket: aw-watcher-window_legionalex)  (aw_server.api:291)
    2023-01-01 18:34:18 [INFO ]: Creating bucket 'aw-stopwatch'  (aw_datastore.datastore.Datastore:55)
    2023-01-01 18:35:41 [INFO ]: Received heartbeat, but bucket was previously empty, inserting as new event. (bucket: aw-watcher-afk_legionalex)  (aw_server.api:291)
    2023-01-01 18:35:51 [INFO ]: Received heartbeat after pulse window, inserting as new event. (bucket: aw-watcher-afk_legionalex)  (aw_server.api:279)
    

    aw-server_2023-01-01T18-37-08.log

    2023-01-01 18:37:08 [INFO ]: Using storage method: peewee  (aw_server.main:33)
    2023-01-01 18:37:08 [INFO ]: Starting up...  (aw_server.main:41)
    2023-01-01 18:37:08 [INFO ]: Using database file: /home/alex/.local/share/activitywatch/aw-server/peewee-sqlite.v2.db  (aw_datastore.storages.peewee:126)
    2023-01-01 18:37:08 [INFO ]:  * Running on http://localhost:5600 (Press CTRL+C to quit)  (werkzeug:224)
    2023-01-01 18:37:19 [INFO ]: Received heartbeat after pulse window, inserting as new event. (bucket: aw-watcher-window_legionalex)  (aw_server.api:279)
    2023-01-01 18:40:19 [INFO ]: Received heartbeat after pulse window, inserting as new event. (bucket: aw-watcher-afk_legionalex)  (aw_server.api:279)
    2023-01-01 20:13:25 [INFO ]: Received heartbeat after pulse window, inserting as new event. (bucket: aw-watcher-afk_legionalex)  (aw_server.api:279)
    2023-01-01 20:13:32 [INFO ]: Received heartbeat after pulse window, inserting as new event. (bucket: aw-watcher-window_legionalex)  (aw_server.api:279)
    2023-01-01 20:13:35 [INFO ]: Received heartbeat after pulse window, inserting as new event. (bucket: aw-watcher-afk_legionalex)  (aw_server.api:279)
    

    aw-server_2023-01-01T20-58-26.log

    2023-01-01 20:58:26 [INFO ]: Using storage method: peewee  (aw_server.main:33)
    2023-01-01 20:58:26 [INFO ]: Starting up...  (aw_server.main:41)
    2023-01-01 20:58:26 [INFO ]: Using database file: /home/alex/.local/share/activitywatch/aw-server/peewee-sqlite.v2.db  (aw_datastore.storages.peewee:126)
    2023-01-01 20:58:26 [INFO ]:  * Running on http://localhost:5600 (Press CTRL+C to quit)  (werkzeug:224)
    2023-01-01 20:58:37 [INFO ]: Received heartbeat after pulse window, inserting as new event. (bucket: aw-watcher-window_legionalex)  (aw_server.api:279)
    2023-01-01 21:01:38 [INFO ]: Received heartbeat after pulse window, inserting as new event. (bucket: aw-watcher-afk_legionalex)  (aw_server.api:279)
    

    aw-watcher-afk_2023-01-01T18-32-39.log

    2023-01-01 18:32:39 [INFO ]: aw-watcher-afk started  (aw_watcher_afk.afk:60)
    2023-01-01 18:32:40 [INFO ]: Connection to aw-server established by aw-watcher-afk  (aw_client.client:429)
    2023-01-01 18:35:41 [INFO ]: Became AFK  (aw_watcher_afk.afk:97)
    

    aw-watcher-afk_2023-01-01T18-37-08.log

    2023-01-01 18:37:08 [INFO ]: aw-watcher-afk started  (aw_watcher_afk.afk:60)
    2023-01-01 18:37:09 [INFO ]: Connection to aw-server established by aw-watcher-afk  (aw_client.client:429)
    2023-01-01 18:40:09 [INFO ]: Became AFK  (aw_watcher_afk.afk:97)
    2023-01-01 18:42:34 [INFO ]: No longer AFK  (aw_watcher_afk.afk:90)
    2023-01-01 20:13:25 [INFO ]: Became AFK  (aw_watcher_afk.afk:97)
    

    aw-watcher-afk_2023-01-01T20-58-26.log

    2023-01-01 20:58:26 [INFO ]: aw-watcher-afk started  (aw_watcher_afk.afk:60)
    2023-01-01 20:58:27 [INFO ]: Connection to aw-server established by aw-watcher-afk  (aw_client.client:436)
    2023-01-01 21:01:27 [INFO ]: Became AFK  (aw_watcher_afk.afk:97)
    2023-01-01 21:07:15 [INFO ]: aw-watcher-afk stopped by keyboard interrupt  (aw_watcher_afk.afk:116)
    

    aw-watcher-window_2023-01-01T18-32-39.log

    2023-01-01 18:32:39 [INFO ]: aw-watcher-window started  (aw_watcher_window.main:62)
    2023-01-01 18:32:40 [INFO ]: Connection to aw-server established by aw-watcher-window  (aw_client.client:429)
    

    aw-watcher-window_2023-01-01T18-37-08

    2023-01-01 18:37:08 [INFO ]: aw-watcher-window started  (aw_watcher_window.main:62)
    2023-01-01 18:37:09 [INFO ]: Connection to aw-server established by aw-watcher-window  (aw_client.client:429)
    

    aw-watcher-window_2023-01-01T20-58-26.log

    2023-01-01 20:58:26 [INFO ]: aw-watcher-window started  (aw_watcher_window.main:62)
    2023-01-01 20:58:27 [INFO ]: Connection to aw-server established by aw-watcher-window  (aw_client.client:436)
    2023-01-01 21:07:15 [ERROR]: Unhandled exception  (root:52)
    Traceback (most recent call last):
      File "/home/alex/activitywatch/venv/bin/aw-watcher-window", line 6, in <module>
        sys.exit(main())
      File "/home/alex/activitywatch/aw-watcher-window/aw_watcher_window/main.py", line 89, in main
        heartbeat_loop(
      File "/home/alex/activitywatch/aw-watcher-window/aw_watcher_window/main.py", line 144, in heartbeat_loop
        sleep(poll_time)
    KeyboardInterrupt
    

    Additional context

    I saw a bug report that has since been reported fixed in v0.12.1 regarding this exact problem on macOS.

    type: bug 
    opened by AlexDumi29 4
  • build(deps): bump setuptools from 65.4.0 to 65.5.1

    build(deps): bump setuptools from 65.4.0 to 65.5.1

    Bumps setuptools from 65.4.0 to 65.5.1.

    Changelog

    Sourced from setuptools's changelog.

    v65.5.1

    Misc ^^^^

    • #3638: Drop a test dependency on the mock package, always use :external+python:py:mod:unittest.mock -- by :user:hroncok
    • #3659: Fixed REDoS vector in package_index.

    v65.5.0

    Changes ^^^^^^^

    • #3624: Fixed editable install for multi-module/no-package src-layout projects.
    • #3626: Minor refactorings to support distutils using stdlib logging module.

    Documentation changes ^^^^^^^^^^^^^^^^^^^^^

    • #3419: Updated the example version numbers to be compliant with PEP-440 on the "Specifying Your Project’s Version" page of the user guide.

    Misc ^^^^

    • #3569: Improved information about conflicting entries in the current working directory and editable install (in documentation and as an informational warning).
    • #3576: Updated version of validate_pyproject.

    v65.4.1

    Misc ^^^^

    • #3613: Fixed encoding errors in expand.StaticModule when system default encoding doesn't match expectations for source files.
    • #3617: Merge with pypa/distutils@6852b20 including fix for pypa/distutils#181.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • In China, you cannot access the network normally, so you need to use VPN.

    In China, you cannot access the network normally, so you need to use VPN.

    • OS name and version: Windows 11
    • ActivityWatch version: 0.12.1

    Describe the bug

    In China, you cannot access the network normally, so you need to use VPN. I remember that the previous version can be accessed normally.

    Documentation

    aw-qt.zip

    type: bug 
    opened by Benjamin-Watson0 2
  • ActivityWatch triggers high WMI Provider Host CPU Usage

    ActivityWatch triggers high WMI Provider Host CPU Usage

    • [x] I am on the latest ActivityWatch version.
    • [x] I have searched the issues of this repo and believe that this is not a duplicate.
    • OS name and version: Edition Windows 11 Education Version 21H2 Installed on ‎11/‎24/‎2021 OS build 22000.1219 Experience Windows Feature Experience Pack 1000.22000.1219.0

    • ActivityWatch version: Host: briaryVersion: v0.12.1

    Describe the bug

    I have a debug log from aw-watcher-window that is 108mb that I cannot upload here. here is the Event Log from windows 11. The process ID is for window warcher. it triggers WMI provider Host to use up to 30% of the CPU and entirely chokes it at times. aw.zip

    type: bug 
    opened by brimwats 1
  • Linux: `[Errno 5] Input/output error (aw_server.server:122)` when starting-up `aw-qt`

    Linux: `[Errno 5] Input/output error (aw_server.server:122)` when starting-up `aw-qt`

    • [x] I am on the latest ActivityWatch version.
    • [x] I have searched the issues of this repo and believe that this is not a duplicate.
    • OS name and version: Manjaro (latest, rolling upgrading)
    • ActivityWatch version: 0.12.1

    Describe the bug

    I install activitywatch-bin (0.12.1-1) from AUR on Manjaro, and when execute aw-qt, it shows error immediately and interrupted, totally unusable:

    Screenshot_20221201_202610

    Totally donno how to get more imformative logs for debugging so copy-paste the error message in it:

    2022-12-01 20:23:26 [INFO ]: Using storage method: peewee  (aw_server.main:33)
    2022-12-01 20:23:26 [INFO ]: Starting up...  (aw_server.main:41)
    2022-12-01 20:23:26 [INFO ]: Using database file: /home/ky/.local/share/activitywatch/aw-server/peewee-sqlite.v2.db  (aw_datastore.storages.peewee:126)
    2022-12-01 20:23:26 [ERROR]: [Errno 5] Input/output error  (aw_server.server:122)
    Traceback (most recent call last):
      File "aw_server/server.py", line 113, in _start
      File "flask/app.py", line 909, in run
      File "flask/cli.py", line 649, in show_server_banner
      File "click/utils.py", line 300, in echo
    OSError: [Errno 5] Input/output error
    2022-12-01 20:23:26 [ERROR]: Unhandled exception  (root:51)
    Traceback (most recent call last):
      File "__main__.py", line 3, in <module>
      File "aw_server/main.py", line 42, in main
      File "aw_server/server.py", line 123, in _start
      File "aw_server/server.py", line 113, in _start
      File "flask/app.py", line 909, in run
      File "flask/cli.py", line 649, in show_server_banner
      File "click/utils.py", line 300, in echo
    OSError: [Errno 5] Input/output error
    2022-12-01 20:23:26 [ERROR]: Unhandled exception  (root:51)
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
    OSError: [Errno 5] Input/output error
    2022-12-01 20:23:26 [ERROR]: Unhandled exception  (root:51)
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
    OSError: [Errno 5] Input/output error
    

    To Reproduce

    1. Install activitywatch-bin on AUR provided by ActivityWatch officially.
    2. Run aw-qt

    Expected behavior

    No error.

    Documentation

    Above mentioned.

    Additional context

    • python 3.10.8
    type: bug 
    opened by kuanyui 3
  • UI seems barebones on first install and open

    UI seems barebones on first install and open

    Hello! just leaving my 2 cents here after trying out activity watcher. I feel like the app seems very barebones in the first few days of install. I have a few suggestions to fix this hopefully:

    • [ ] Create a landing page on first install that guides the user through a few pages of customization and introduction. for example, a few tips popping up initially and a question asking if user would like a dark or light theme. this would make it more friendly
    • [ ] Inform the user clearly that he/she would need to wait a while before the webpage is fully populated. i understand this seems obvious but to the average consumer, initial impressions matter.
    • [ ] Small notifications could be added that pop up every now and then when a user gets distracted and spends too much time doing other stuff than what they categorized as work
    • [ ] the whole UI could be made to look more friendly. right now, it looks just a bit rigid. maybe some animations can be introduced to make things flow together. For example, when moving cursor across the sunburst graph, the higlighting could move over smoothly instead of instantly.
    • [ ] A persistent notification asking the User to download their default browser's activity watched extension can also be placed in UI. with direct links to the store pages.
    • [ ] Add more colorful headings. Currently, everything is kind of monotonous. I really liked the look of rescuetime with their different colors and interactive elements. maybe something like that could be implemented here as well.

    this last one is not a UI tip but rather, i hope the SEO gets better for the website. nothing remotely close to this app comes up on google even though i searched it's exact name. surprising since it's so popular on github. Maybe the website could be updated with content distributed over multiple pages and headings with good keywords.

    These are just a few changes i feel would improve the app.

    opened by rsmyst 1
Releases(v0.12.1)
  • v0.12.1(Sep 26, 2022)

    v0.12.1

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

    This release mainly improves macOS support through a new default method of watching window titles (written in Swift) which should fix bugs with missing data and permissions issues. But it also fixes a few minor bugs and updates various dependencies to newer versions (Python 3.9, Qt6).

    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:

    @erikbjare, @maciekstosio, @modderme123, @omahs

    Honorable mentions

    • @modderme123 for contributing a new implementation of the macOS window-watching logic in Swift, fixing tons of bugs with permissions. It has now been made the default method: https://github.com/ActivityWatch/aw-watcher-window/pull/68

    Changelog

    Changes since v0.12.0

    📦 activitywatch

    🔨 Misc (3)

    • chore: release v0.12.1 (dc8fe19)
    • docs(README): fix typos (#789) (44e47f9)
    • scripts: added printing of twitter usernames for each contributor in build_changelog.py (c9081f5)

    📦 aw-webui

    ✨ Features (3)

    • feat(wip): include stopwatch activity in Activity view, hidden behind devmode toggle (#368) (1980a40)
    • feat: started working on force-directed graph for visualizing category-transitions (#365) (a4c932b)
    • feat: added ability to filter by category through URL query params, and through clicking in the category-summary vis (also rewrote summary.js to .ts) (2510f4a)

    🐛 Fixes (3)

    • fix: fixed minor bugs (ab3a62a)
    • fix: fixed tests (baa9a04)
    • fix: set pwa.iconPaths.faviconSVG to null, to prevent 404 request for missing svg-version icon (2e29815)

    🔨 Misc (2)

    • refactor: improved typing coverage for sunburst-clock.ts (f9481d0)
    • refactor: improved typing coverage (with type-coverage and typescript-coverage-report) (b0f1a93)

    📦 aw-watcher-window

    ✨ Features (1)

    • feat: started work on macOS swift-strategy (fc423c1)

    🐛 Fixes (6)

    Click to expand

    • fix: kill aw-watcher-window-macos when exiting on macOS (47b65c3)
    • fix: check that we're on macOS before using swift-strategy (de95b63)
    • fix: changed default strategy_macos to swift (5ba4781)
    • fix: fixed aw-watcher-window-macos binary path when bundled as .app (1287e96)
    • fix: made macOS swift-strategy respect config (ebd8787)
    • fix: finished MVP of macOS swift-strategy, fixing lots of issues (6d68ae3)

    🔨 Misc (1)

    • docs: added FIXME comment (6afa7aa)

    📦 aw-qt

    🐛 Fixes (2)

    • fix: fixed icon search path when bundled as .app (8ec5db9)
    • fix: update to pyqt6 (#90) (79be33b)

    Source code(tar.gz)
    Source code(zip)
    activitywatch-v0.12.1-linux-x86_64.zip(133.94 MB)
    activitywatch-v0.12.1-macos-x86_64.dmg(53.34 MB)
    activitywatch-v0.12.1-macos-x86_64.zip(76.32 MB)
    activitywatch-v0.12.1-windows-x86_64-setup.exe(66.66 MB)
    activitywatch-v0.12.1-windows-x86_64.zip(89.01 MB)
  • v0.12.0(Aug 31, 2022)

    Huzzah! v0.12.0 is finally here! :tada:

    With over a year since the last stable release v0.11.0, and three beta releases later, we've finally got a stable v0.12.0 release ready, and it comes with plenty of new features, bug fixes, and UX improvements. You can read about them all in the changelog below.

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

    Installation

    See the getting started guide in the documentation.

    Downloads

    Contributors

    Thanks to all everyone who contributed to this release:

    @aaayushsingh, @Alwinator, @BelKed, @dependabot[bot], @erikbjare, @Furffico, @GabLeRoux, @iloveitaly, @infokiller, @ishitatsuyuki, @johan-bjareholt, @jtojnar, @kewde, @liutiming, @michaeljelly, @NicoWeio, @oscar-king, @rakleed, @salahineo, @sunrosa, @Valentin-N, @vedantmgoyal2009, @victorwinberg, @xylix, @Y7n05h, @yumemio

    Honorable mentions

    • @kewde for dragging macOS codesigning across the finish line (#702)
    • @zozs for finding a DNS rebinding vulnerability (CVE coming soon)
    • @salahineo for implementing a dark theme!

    Changelog

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

    Changes are since v0.11.0

    Summary

    • ✨ So many new things... can't even summarize them all.
    • ✨ New developer settings, including: yearly time range, toggle for testing work-in-progress multi-device query
    • ✨ MVP of sync prototype now working!
    • 🎨 Now with a dark theme!
    • 🍎 macOS releases are now properly codesigned and notarized
    • 🛡️ Fixed a security vulnerability (DNS rebinding attack)
    • 🐛 Many bug fixes
    • And a lot more...

    📦 activitywatch

    ✨ Features (1)

    • feat(scripts): added contributor stats to build_changelog, now generating full release notes instead of just changelog (aa21904)

    🐛 Fixes (14)

    Click to expand

    • fix(script): minor fixes to build_changelog (e28ad11)
    • fix(scripts): improved build_changelog script (d45960d)
    • fix: cleanup of unused PKGBUILD, improved count_lines script (539e282)
    • fix(build): remove libfontconfig and libfreetype libraries from dist (5096717)
    • fix(dist): remove obsolete codesign.sh (68836eb)
    • fix(dist): do not deep sign the dmg (7da56c4)
    • fix(dist): get rid of ci in makefile, make distintion between personal_id and team_id (13f9b47)
    • fix(dist): fixes codesigning, properly sets codesigner identity (2e177e6)
    • fix(dist): remove libharfbuzz (fixes #660) (a43a1c6)
    • fix(dist): fixed typo, hardcoded Apple Developer teamid (ad4749b)
    • fix(dist): notarize app and dmg (fa8ddf3)
    • fix(dist): only specify codesign-identity in make file (046413f)
    • fix(dist): move entitlements & specify NSAppleEventsUsageDescription (ecc7577)
    • fix: misc improvements to build_changelog.py script (1e51f22)

    🔨 Misc (32)

    Click to expand

    • chore: bumped version to v0.12.0 (7259e24)
    • chore: added .python-version to gitignore (e8287a1)
    • Merge pull request #765 from ActivityWatch/dev/build-release-notes (67c2491)
    • chore: release v0.12.0b3 (9876bb7)
    • style: fix typos (#745) (2ad8ec1)
    • docs(README): fixed screenshot links, added diagram vis (64aa1f5)
    • docs(README): added link to screenshots page on website (97f2c42)
    • chore: update diagram [skip ci] (6bb5e2c)
    • docs: improved metadata in pyproject.toml (d8107e4)
    • docs(README): added Discord badge to README (04f4009)
    • chore: bumped version to 0.12.0 (e60d6b3)
    • Merge pull request #712 from sunrosa/patch-1 (df4e583)
    • Fix a typo (7a7c5f9)
    • Merge pull request #620 from ActivityWatch/dev/macos-sign-and-notarize (093f630)
    • docs(CONTRIBUTING): fix the link to bugs label (#662) (e4499e6)
    • Merge pull request #702 from kewde/kewde/fix-codesigning (e62f483)
    • style: consistent naming of secret/envvar (4b493b8)
    • Merge pull request #344 from xylix/dev/sign-macos-travis (b515f96)
    • Merge branch 'master' into dev/macos-sign-and-notarize (ee2e3eb)
    • Revert "ci: change use python to python3 (#696)" (a89e1c4)
    • docs: changed color of budget badge (02cdd4f)
    • docs: updated budget badge, marked Android support as not-WIP (aa63363)
    • Merge branch 'master' into dev/macos-sign-and-notarize (e67a663)
    • docs: fixed broken link (#643) (1dddd67)
    • docs: fix GitHub Discussions link (#657) (9a60513)
    • docs(README): removed Travis CI badge (51b10bc)
    • added SECURITY.md (2055473)
    • Merge branch 'master' into dev/sign-macos-travis (7018a72)
    • Give more permissiosn to let security access the cert after import (717144d)
    • Use anonymous (AKA default) cert by default on macos code sign (f6fa30c)
    • Fix calling dist/codesign in .travis file (e85d917)
    • Start working on macOS code signing on CI (d21bf90)

    📦 aw-webui

    ✨ Features (23)

    • feat: added CSV events export to Buckets view (067a43a)
    • feat: started working on timespiral visualization (16da90b)
    • feat: added request timeout setting (enables large queries) (f75ac9d)
    • feat: added JSON & CSV export buttons to the Report view, and minor fixes (#353) (db42877)
    • feat: added last7d and last30d period options to Activity view (#352) (9be34bc)
    • feat: added start-of-week setting, to set the day on which weeks start (a7e9724)
    • feat: added toggle for enabling multidevice queries (1dfc290)
    • feat: started working on multi-device queries (bce84a5)
    • feat: add update button to Timeline view (InputTimeInterval) (#344) (6ddec4c)
    • feat: started migrating from vuex to pinia (a9cca41)
    • feat: started working on alerts feature (b0d860f)
    • feat: started working on Reports view, and some misc cleanup (6236ea8)
    • feat: added "Ctrl+Enter" shortcut for querying (#334) (6cfa98f)
    • feat: added TS-implementation of classifyEvents (+improved tests) (#329) (9d6b4b1)
    • feat: added year support to timeline barchart (b27a951)
    • feat: custom visualization support (#325) (9659f7c)
    • feat: cancel pending requests when leaving Activity view, better event editing (7e16e03)
    • feat: added 'loading' text to Activity dropdown while buckets being loaded (13ca328)
    • feat: added yearly query range to Activity view (hidden in new dev settings section) (#321) (3afeb65)
    • feat: added ability to edit events from timeline view (b10166c)
    • feat: improve formatting of query range in Activity view (#284) (6fbe829)
    • feat: instant timeline tooltip on hover (#309) (e646c86)
    • feat: added dark theme (#307) (273658e)

    🐛 Fixes (68)

    Click to expand

    • fix: multiple fixes to event editing (5099a68)
    • fix: added aw-webui commit hash to settings page (for debugging CI) (f4a0741)
    • fix: fixed bug where category filter was not working (fixes[#766](https://github.com/ActivityWatch/activitywatch/issues/766)) (abc276c)
    • fix: set type for 'theme' to union of valid literals ('light' | 'dark') (6771434)
    • fix: set correct center color for categories sunburst, depending on theme (e96f6df)
    • fix: fixes and improvements to timespiral vis (6303cb5)
    • fix: added appnames for firefox dev edition (130f00d)
    • fix: fixed bug in sunburst-clock (from d3 v6) and converted it to typescript (b8f6837)
    • fix: turn timespiral into a proper view that can be navigated to in devmode (f3ac629)
    • fix: added ticks to timespiral, and other fixes (a34ab73)
    • fix: added hour-gaps to timespiral vis (cd6ec5c)
    • fix: minor fixes to timespiral (a7fc561)
    • fix: fixed browser/editor bucket fallback to host 'unknown' (9d4a638)
    • fix: fixed minor issues in Activity view (2e28cf9)
    • fix: fixed typing issues (e4f20a0)
    • fix: fixed bug affecting the multiquery setting (f8fcb02)
    • fix: fixed bug in multiquery (53343b3)
    • fix: simplified styling, display timeline lastUpdated as friendlytime (6c8ce96)
    • fix: fixed bug when adding subcategory (c82c934)
    • fix: set height on element to avoid jumping on load (b8d63d0)
    • fix: refactor/cleanup of queries & activity store (c8a968b)
    • fix: fixed multidevice behavior for fakedata (48d942e)
    • fix: more improvements to multiquery mvp (c2b80c3)
    • fix: added comment (295272d)
    • fix: fixed deleting buckets (d38c9ff)
    • fix: add Microsoft-Edge-Stable to appnames (https://github.com/ActivityWatch/activitywatch/issues/753) (534dfe8)
    • fix: fixed issue with category filtering (e2b98cd)
    • fix: fixed 'show less' button in Summary vis when all entries shown (9403c9d)
    • fix: added loading indicator to TimelineBarChart (6f5278a)
    • fix: enable dontQueryInteractive for faster loading (843666d)
    • fix: make scroll bar dark in dark theme (Chromium-based browsers) (#343) (0770b2f)
    • fix: fixed TimelineBarChart after chartjs upgrade (7b1ca6c)
    • fix: fixed regressions from pinya migration in Alert and Trends views (360a1dc)
    • fix: migrated views store to pinia (43eb183)
    • fix: migrated settings store to pinia (a85fe44)
    • fix(classes): Rename Riot to Element (#278) (1a2b21b)
    • fix: hide WIP features under devmode, improved form/input layouts (778f379)
    • fix: progress on Report view (24ef1d7)
    • fix: fix timeline in query explorer results (#336) (5e3b93a)
    • fix: updated config for tests and linting (6bbf536)
    • fix: moved NewReleaseNotification constants into store (a2f1108)
    • fix: removed vscode settings and added to gitignore (f7038e2)
    • fix(perf): don't query periods without known activity for timeline barchart (fc2677a)
    • fix: don't log errors for expected special case (427d694)
    • fix: fixed overly-broad .gitignore entry (b377ce7)
    • fix: check for missing ID in New View modal (#323) (cef6f2d)
    • fix: fixed bundling of vis-timeline (f65a035)
    • fix: fixed event editing (fetch full event from server before edit) (daa04b0)
    • fix: fixed date select when range is empty (a527d84)
    • fix: updated .gitignore (e5e2aa6)
    • fix: improved UserSatisfactionPoll contents (0cd36a3)
    • fix: keep shown currentView when date or periodLength changes (#314) (7a5abbe)
    • fix: fixed category modification (#310) (d70687f)
    • fix: fixed AlternativeTo link in UserSatisfactionPoll (2c40a40)
    • fix: fixed timeline tooltip cutoff (#305) (76b4523)
    • fix: fixed linting errors (4fb99d8)
    • fix: fixed type errors (cdc3f5d)
    • fix: fixed stopwatch timer buttons (event APIs no longer return events) (7feadde)
    • fix: use application/json content type for export (4e64b61)
    • fix: fixed 'target' is undefined when setting daystart or default timeline duration (similar to 41a5f579fe22fb2f3450604187a59d42a26d95bf) (8d348e2)
    • fix: removed old workaround (427f2d8)
    • fix: moved slow category_time_by_period query to be the last query, improving UX (65bc763)
    • fix: fixed export when no categories saved, and added pretty printing to exports (d40b948)
    • fix: fix error in case of missing 'Uncategorized' category (fixes[#612](https://github.com/ActivityWatch/activitywatch/issues/612)) (0eae7ae)
    • fix: misc fixes for barchart visualization (cdd99e7)
    • fix: added 127.0.0.1:5600 to default-src (30d52a4)
    • fix: split category_time_by_period query into one for each period to avoid timeout (50302c4)
    • fix: fixed 'target' is undefined error when setting default landing page (41a5f57)

    🔨 Misc (30)

    Click to expand

    • test: fixes to screenshot test (#362) (beefd71)
    • test: minor improvements to screenshot test (7ed699e)
    • test: increased timeouts for screenshot tests (hopefully fixing visualizations that haven't yet rendered) (3aaab25)
    • style: fixed lint issues (c1371eb)
    • test: fixed broken test (cf2476c)
    • Merge pull request #349 from ActivityWatch/dev/multidevice-query (cae5301)
    • test: fixed test (7aa4ae4)
    • Apply suggestions from code review (aa19f6e)
    • Merge pull request #342 from ishitatsuyuki/timeline-opt (4705e1e)
    • Merge pull request #341 from ishitatsuyuki/chartjs4 (faf68e1)
    • Color: Optimize URL domain extraction. (917c599)
    • Timeline: Freeze object for performance. (afd241f)
    • VisTimeline: optimize event sorting. (0cf0cec)
    • Migrate to vue-chartjs v3, chart.js v4 (11f2d2c)
    • eslint: Disable Vue rules that conflict with prettier (c0024b3)
    • Merge pull request #339 from ActivityWatch/dev/pinia (e20bd91)
    • refactor: migrated remaining vuex stores to pinia (f322294)
    • test: fix tests after pinia migration (901ada0)
    • refactor: moved category/pattern select & Search/Report query options into components (d63d1bf)
    • refactor: moved footer into seperate component, added server Vuex-store (getInfo), updated deps (06369db)
    • test: added first query-generation test using jest's snapshot functionality (3db99c7)
    • Merge pull request #327 from ActivityWatch/dev/settings-store (4f56b7f)
    • refactor: rewrote util/time.js into ts, fixed tests (f59a277)
    • refactor: refactored settings in preparation for server-side storage of settings (00e1995)
    • add syncsettings, add server api call on settings change (2b6279c)
    • style: cleanup not needed changes (686136b)
    • fix #600 timline cut off (e794176)
    • style: lint fix (ee7c86d)
    • Merge pull request #320 from ActivityWatch/dev/edit-timeline (5ace2bf)
    • style: lint fix (721b834)

    📦 aw-server

    ✨ Features (3)

    • feat: added --version option to CLI (2a9d3b6)
    • feat: add API to get a single event by ID (f12401c)
    • feat: custom visualization support (#83) (dd97ecf)

    🐛 Fixes (14)

    Click to expand

    • fix: added detect_version_poetry utility function (b1ff0f1)
    • fix: added coverage_html to gitignore (4c645c4)
    • fix: get rid of last use of pkg_resources (55ef448)
    • fix: fixed importing events exported from aw-server-rust (1c514a0)
    • fix: disable host header check if host is set to 0.0.0.0 (c9bbc48)
    • fix: fixed behavior when fetching single event that doesn't exist (47116e1)
    • fix: fixed fetching single event by ID (76259fa)
    • fix: fixed custom_static config (fda357a)
    • fix: remove unreachable code in server.py (#88) (d95465f)
    • fix: add host header check to prevent DNS rebinding attacks (3e8731f)
    • fix(test): fixed call to heartbeat expecting an event to be returned (1fd1ed6)
    • fix: fixed tests broken due to unstable microsecond precision (0ad9720)
    • fix: replaced use of deprecated send_events with insert_events (ea245b3)
    • fix: minor improvement to logging flask exceptions (#80) (dbd99fd)

    🔨 Misc (9)

    Click to expand

    • style: applied black (644d14c)
    • refactor: ran pyupgrade --py38-plus (f47ad75)
    • style: fix typos (#91) (2e0ee5c)
    • chore: bumped version (773af96)
    • style: applied black (8594b00)
    • style: formatted with black (5861d20)
    • tests: fixed broken tests due to host header check (ef60bee)
    • docs: adding note about fate of python server (#78) (b2179fd)
    • test: fixed tests to account for range-inclusive queries (e429c54)

    📦 aw-server-rust

    ✨ Features (7)

    • feat: added support for fancy regex (#292) (9f56edd)
    • feat: implement union_no_overlap transform (#290) (819ddc2)
    • feat: even more sync progress, including verified working testing scripts! (3398993)
    • feat: add cmdline arg --webpath and use fallbacks when XDG_DATA_DIRS empty or not set (#262) (014c9c0)
    • feat: added subcommands to aw-sync, support selectively syncing buckets (396bff8)
    • feat: more progress on sync, added wip cli options sync_dir, start_date, buckets (e741278)
    • feat: added API to fetch a single event by ID (#268) (98f0d68)

    🐛 Fixes (14)

    Click to expand

    • fix: minor fixes to sync, renamed sync-testing scripts, improved README (60badc3)
    • fix(sync): build --release aw-sync in test-sync script (639614b)
    • fix: improved sync error handling and fixed a bug (32752b6)
    • fix: set version number from Cargo.toml in --help text (5eb0ee0)
    • fix: improved sync output, added toggle for sync mode (push, pull, both) (aebed23)
    • fix: more progress on sync (f3e78aa)
    • fix: fixes some of the issues in previous commits (3228211)
    • fix: even more very much WIP, needs even more testing (adb08c3)
    • fix: very much WIP stuff, needs review (5f488b3)
    • fix: more work on syncing (d9fbe29)
    • fix: minor improvements to sync (a8287c5)
    • fix: improving flooding (#270) (a8b8a20)
    • fix: added host header check (to protect against DNS rebinding attacks) (#250) (ef52553)
    • fix: fixed OPTIONS catchers with rocket_cors (#245) (25b2032)

    🔨 Misc (23)

    Click to expand

    • docs: document Makefile build and venv usage (#291) (ba6f6c5)
    • style: applied cargo fmt (583fd63)
    • style: fix typos (#284) (87bc9ad)
    • chore: Bump rocket to 0.5-rc2 (b97e45f)
    • chore: Update dependencies (8903e27)
    • chore: Bump uuid to version 1.0 (146356e)
    • chore: Update dependencies (b434d80)
    • docs(sync): improved README for aw-sync with basic MVP usage instructions (096da6d)
    • Merge pull request #257 from ActivityWatch/dev/sync-stuff (e5ba9d2)
    • test: added test script for syncing (d2dc9d7)
    • test: fixed tests (5c8bc4e)
    • chore: improved gitignore (186dc40)
    • docs(sync): added TODO note about checking db version (fcf629e)
    • fix/refactor: minor cleanup of sync (057ee0f)
    • chore: bumped version to 0.12.0 (fd16092)
    • chore: Update dependencies (f501a7a)
    • chore: Set Rust edition to 2021 (41c24f9)
    • chore: Fix compilation warnings (75fdcc9)
    • chore: Fix missing feature "device" from clap dep (d81c461)
    • chore: Update Cargo.lock (d1ef45e)
    • aw-android: Fix compilation after rocket 0.5 upgrade (d42fa88)
    • Update rocket to 0.5.0-rc1 (57cae13)
    • chore: Update Cargo.lock and fix clap API changes (8fcceb9)

    📦 aw-watcher-afk

    ✨ Features (1)

    • feat: added --host and --port options, streamlined config handling like aw-watcher-window (af4b59b)

    🐛 Fixes (1)

    • fix: added 1ms spacing when two consecutive events share same timestamp (#51) (7ce0d6b)

    🔨 Misc (2)

    📦 aw-watcher-window

    ✨ Features (1)

    • feat: added --host and --port options (3e6ff83)

    🐛 Fixes (3)

    • fix: don't log "unknown" event if polling failed (#54) (34307c2)
    • fix(macos): get Firefox title when multiple instances are running (#61) (8f3c65d)
    • fix: fixed jxa strategy where script fails compilation due to shebang line (#59) (2df3e34)

    🔨 Misc (3)

    • refactor: ran pyupgrade --py38-plus (24fafe1)
    • Bumping pyobjc to 8.1 (fd219b8)
    • Adding note about required afk watcher (b6fdc04)

    📦 aw-qt

    ✨ Features (1)

    • feat: added --no-gui flag to aw-qt, and added --interactive flag for a minimal repl UI (#89) (744c8d2)

    🐛 Fixes (7)

    Click to expand

    • fix: improved arguments to endless sleep call (fa27df4)
    • fix: setpgrp fails for a session leader (#85) (6b079e5)
    • fix: don't crash if missing permissions for path in PATH (fixes[#739](https://github.com/ActivityWatch/activitywatch/issues/739)) (0286a48)
    • fix(debug): added syslog calls to make debugging easier (6c1d90e)
    • fix: refactored module path detection on macOS (f154883)
    • fix: fixed module paths on macOS (ba5b3d5)
    • fix: fixed typing (7c5c447)

    🔨 Misc (3)

    • refactor: moved setpgrp, turned .format() into f-strings (0040f9b)
    • style: fix typos (#86) (e370ca3)
    • style: applied black and removed unused imports (3a9c2fe)

    📦 aw-core

    ✨ Features (3)

    • feat: added aw-cli with some utils (#110) (22183fd)
    • feat: add datastore API for fetching a single event by ID (9ca348e)
    • feat: made all queries range inclusive (e06b6eb)

    🐛 Fixes (13)

    Click to expand

    • fix: added all to package (4cea325)
    • fix: minor improvements to typing (df0c91b)
    • fix: added coverage_html to gitignore, improved Makefile (268bea5)
    • fix: added union_no_overlap to query2 transforms (657aeec)
    • fix: don't log if pymongo is unavailable, instead crash if requested and unavailable (2e999f0)
    • fix: fixed behavior when trying to fetch a single missing event (f19a893)
    • fix: fixed lint-fix make target and applied (a0814b0)
    • fix: fixed typing (19a2a76)
    • fix: add ability to set the log level via environment variable (#103) (22d3ded)
    • fix: fixed upserting events using insert_many (#108) (d3e31f7)
    • fix: fixed incorrect trimming (#107) (4228fbf)
    • fix: added extra WHERE to speed up slow query (3a06484)
    • fix: minor fixes and added trimming for events that extend out of the query range (7a934a5)

    🔨 Misc (14)

    Click to expand

    • style: fix typos (#111) (c1bd040)
    • chore: bumped version to 0.5.10 (8405819)
    • chore: bumped version to 0.5.9 (d7cba36)
    • chore: bumped version to 0.5.8 (6784fec)
    • Merge pull request #109 from ActivityWatch/dev/get-single-event-by-id (64463bc)
    • style: lint fix (e33a438)
    • style: applied black (0629e84)
    • style: applied pyupgrade --py37-plus aw_core/**.py aw_datastore/**.py aw_query/**.py aw_transform/**.py (6fcace7)
    • style: applied black (ab7efc8)
    • chore: bumped version to 0.5.7 (1dce996)
    • chore: bumped version to 0.5.6, fixed docs URL in pyproject (5dbb610)
    • chore: bumped version to 0.5.5 (efd1325)
    • chore: bumped version to 0.5.4 (032f08f)
    • docs(README): added PyPI version badge (464c423)

    📦 aw-client

    ✨ Features (5)

    • feat(example): added suggest_categories_gpt script (#66) (740ca22)
    • feat: added APIs for get_event and delete_event (32c25fd)
    • feat(example): added WIP suggest_categories script (207216a)
    • feat(example): added email_report example (+ improvements to working_hours example) (2cb09e7)
    • feat: added report and canonical cli commands (7c8c443)

    🐛 Fixes (16)

    Click to expand

    • fix(examples): wrapped example in if __name__ == '__main__' (e353cc0)
    • fix: improved load_dataframe example (f7a8dbb)
    • fix: fixed broken categorization in working_hours example (759a2a1)
    • fix: removed duplicate method definition (df8776c)
    • fix(examples): fixed redact_sensitive.py (#61) (f6272c9)
    • fix: fixed behavior when fetching single event that doesn't exist (0209b8a)
    • fix: fixed typing issues (73d4ac4)
    • fix: harmonized queries to use canonicalEvents, improved QueryParams dataclasses with good defaults (808c8da)
    • fix(example): fixed incorrect timedelta duration (b9024b1)
    • fix: changed hostname to click argument (not option) (6a842d3)
    • fix: fixed typing issues (9454222)
    • fix: improved output for canonical and report commands (f45d423)
    • fix(examples): fixed working_hours.py example (1318406)
    • fix: added missing closing parens (621584f)
    • fix: removed long-deprecated methods (e0f04c6)
    • fix: removed return of Event from heartbeat endpoint (API no longer returns an event) (15bb696)

    🔨 Misc (17)

    Click to expand

    • style: fix typos (#65) (bbb228a)
    • docs(README): updated README with more examples (51d1e5a)
    • style: applied black (e19c684)
    • style: fix black formatting (#64) (e759345)
    • style: applied lint-fix (a5cc123)
    • clickable links to examples (#63) (90f3b69)
    • chore: bumped version to 0.5.9 (86e2cf4)
    • chore: bumped version to 0.5.8 (cfa7e03)
    • docs(README): minor fixes in README (ede9a68)
    • docs(README): improved links in README (22b7bfd)
    • style: applied black (b14c84a)
    • style: applied pyupgrade --py37-plus aw_client/*.py examples/*.py (2926edc)
    • docs: added output of aw-client --help to README (74b11c6)
    • chore: bumped version to 0.5.7 (bc64491)
    • chore: bumped version to 0.5.5 (0c0f4a0)
    • docs(README): added logging/debugging documentation (#57) (4b00b98)
    • docs(README): added PyPI version badge (13975dc)

    Source code(tar.gz)
    Source code(zip)
    activitywatch-v0.12.0-linux-x86_64.zip(147.64 MB)
    activitywatch-v0.12.0-macos-x86_64.dmg(55.39 MB)
    activitywatch-v0.12.0-macos-x86_64.zip(75.82 MB)
    activitywatch-v0.12.0-windows-x86_64-setup.exe(70.42 MB)
    activitywatch-v0.12.0-windows-x86_64.zip(94.62 MB)
  • v0.12.0b3(Jul 14, 2022)

    ~~Okay, I promise this is the last beta before the stable release. Stand by for a stable release.~~

    I lied, I found a bug (https://github.com/ActivityWatch/aw-webui/issues/357). The stable release might take a while since I'm on vacation this weekend.

    Source code(tar.gz)
    Source code(zip)
    activitywatch-v0.12.0b3-linux-x86_64.zip(147.44 MB)
    activitywatch-v0.12.0b3-macos-x86_64.dmg(55.23 MB)
    activitywatch-v0.12.0b3-macos-x86_64.zip(75.64 MB)
    activitywatch-v0.12.0b3-windows-x86_64-setup.exe(70.84 MB)
    activitywatch-v0.12.0b3-windows-x86_64.zip(95.22 MB)
  • v0.12.0b2(May 15, 2022)

    A beta release in preparation for releasing v0.12.0

    Change log will be included later for the stable release.

    Known issues

    You tell us!

    Screenshots

    We're currently having a screenshot competition! See https://github.com/ActivityWatch/activitywatch/discussions/741 for more info.

    Source code(tar.gz)
    Source code(zip)
    activitywatch-v0.12.0b2-linux-x86_64.zip(178.28 MB)
    activitywatch-v0.12.0b2-macos-x86_64.dmg(60.72 MB)
    activitywatch-v0.12.0b2-macos-x86_64.zip(81.70 MB)
    activitywatch-v0.12.0b2-windows-x86_64-setup.exe(70.88 MB)
    activitywatch-v0.12.0b2-windows-x86_64.zip(96.25 MB)
  • v0.12.0b1(Mar 3, 2022)

    A beta release in preparation for releasing v0.12.0

    Change log will be included later for the stable release.

    Known issues

    • https://github.com/ActivityWatch/activitywatch/issues/718: aw-qt crashes on Linux (there's a simple workaround)
    • Issues on macOS where window watcher stops working.
      • See: https://github.com/ActivityWatch/activitywatch/issues/722#issuecomment-1070358118
      • Probably related to: https://github.com/ActivityWatch/activitywatch/issues/334
    • Your browser might be holding on to a stale cache of the web UI files, force refresh to fix it.
    Source code(tar.gz)
    Source code(zip)
    activitywatch-v0.12.0b1-linux-x86_64.zip(176.70 MB)
    activitywatch-v0.12.0b1-macos-x86_64.dmg(60.54 MB)
    activitywatch-v0.12.0b1-macos-x86_64.zip(82.06 MB)
    activitywatch-v0.12.0b1-windows-x86_64-setup.exe(70.81 MB)
    activitywatch-v0.12.0b1-windows-x86_64.zip(96.01 MB)
  • v0.11.0(Jun 16, 2021)

    The long awaited v0.11 is finally here! :tada:

    After 7 long months, we've finally got the v0.11 release ready, and it comes with a lot of new features, bug fixes, and UX improvements. You can read about them all in the changelog below.

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

    Installation

    See the getting started guide in the documentation.

    Downloads

    Honorary mentions

    • Michael Bianco (@iloveitaly) for his work on refreshing the web UI design and improving macOS support!
    • Janne Uusitupa (@lambdanana) for finding a critical security vulnerability on macOS! (CVE coming soon)

    Changelog

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

    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)

    • fix: fixed pyinstaller spec to include printAppStatus.jxa for aw-watcher-window (af8f385)
    • fix: removed 'v' version prefix from Windows installer (5630ad4)
    • fix: improved changelog script (4cd3a79)
    • fix: removed unreachable code (#584) (d727d60)
    • fix(windows): Added icon to uninstaller (56992f5)

    🔨 Misc (14)

    • style: formatted with black (93dc456)
    • docs: switched to badges for travis-ci.com (141e003)
    • chore: improved the .gitignore (e6de0ba)
    • docs(README): updated URLs to docs (0257d96)
    • Merge pull request #578 from ActivityWatch/dev/innosetup-uninstall-icon (1fca356)
    • Make screenshots bigger so we can read them (#576) (81fe1c9)
    • docs(CONTRIBUTING): improved contributing guide (9277301)
    • docs: updated bug report template with clearer instructions (3343130)
    • docs: improved emojis in issue templates (cfb64c3)
    • docs: improved issue template chooser with links to Forum, Discord, etc (d32d9fe)
    • Add iOS to platform support table (6679b64)
    • docs: added ActivityWatch org to FUNDING.yml (1db0af6)
    • Merge pull request #544 from ActivityWatch/dev/python-experimental (0b19032)
    • docs(greeting): added link to issue templates in greeting (4aa58bc)

    aw-webui

    ✨ Features (26)

    • feat: added link in category settings to the 'category rules' section on the forum (d15d17d)
    • feat: added 'show less' button to the summary visualization (9b93879)
    • feat: open modal on category creation (#293) (b4aabfa)
    • feat: support weekly/monthly view in barchart visualization (#292) (889a911)
    • feat: more applications in the default category rules (#261) (d9782c3)
    • feat: switched 'top domains' on default view to 'timeline barchart' (9e3367e)
    • feat: set server URL via env vars, and improvements to README (#280) (165ec2f)
    • feat: added labels to sunburst, updated dependencies (9d13675)
    • feat: added setting for using color fallback (6b12059)
    • feat: improved style/layout of settings (cb93715)
    • feat: added color picker when choosing category color (a2b8446)
    • feat: Support import and export of categories (7a3d988)
    • feat: maybe done with audible-as-active (f9fa6d2)
    • feat: progress on audible-as-active (13a927f)
    • feat: added category time to the timeline barchart (86b8eab)
    • feat: continued working on category colors (ec2c385)
    • feat: started working on category colors (0ef8936)
    • feat: improved the category edit tree (now collapsible, fixed icons, only expand one level, show number of subcategories) (f3f24f8)
    • feat: pinned/fixed the top menu on Android (a32a672)
    • feat: added a different set of default views for Android devices (cfe8f9f)
    • feat: added configurable landing page, note for Android users on Home page, and NotFound page when no routes match (bce7235)
    • feat: added search to header menu, as well as an 'early feature' notice (b594850)
    • feat: added basic search feature (9060c9e)
    • feat: made visualizations draggable when editing view (710098d)
    • feat: readded the Sunburst Clock visualization (5d51f0d)
    • feat: improvements to category tree visualization (collapsible, show percent) (3b1cea4)
    🐛 Fixes (37)

    • fix: added colors to some category rule defaults (2b2596f)
    • fix: sort dropdown of parent category options (d401d1d)
    • fix: fixed useColorFallback setting (523bb28)
    • fix: moved Activity view options into a folded 'Filters' section closer to the top (5eff5f5)
    • fix: made loading texts more discrete, fixed element growth after loading (causing UI to "jump") (aee573f)
    • fix: better y-ticks for barplot (fe54dcc)
    • fix: sorted bars by label in stacked barchart (0b4edeb)
    • fix: minor style changes to the Summary visualization (smaller duration text) (6fbccc3)
    • fix: fixed heart icon in footer (d6b608c)
    • fix: fixed yaxis labels for barchart (b5a4f38)
    • fix: minor footer fixes (651762a)
    • fix: minor fixes (74419ec)
    • fix: misc style fixes for page footer and Activity view (03265f3)
    • fix: fixed string param which should be bool (fbf3515)
    • fix: style fixes in general, and for Activity view (8493bb7)
    • fix: reverted unscoped CSS for nav-link color (476dbba)
    • fix: better descriptions for options (35a1778)
    • fix: fixed comments left in review (c1be8b5)
    • fix: switched away from deprecated @babel/polyfill (4f2139b)
    • fix: add google-chrome-stable to appnames (#277) (fb33162)
    • fix: reload when changing host/filterAFK/includeAudible in Activity view (d477c16)
    • fix: search on pressing enter (c65429b)
    • fix: fixed bug when editing implicit parent categories, improved testing (7ececcb)
    • fix: fixed filter afk/audible checkboxes and sorted categories in category filter dropdown (76eca56)
    • fix: removed unused files (f03e399)
    • fix: fixed coloring for 'Top Categories' (d222009)
    • fix: expand category subtree when new category is added (23b2074)
    • fix: fixed dropdown location/direction for SelectableVisualization (00f4da9)
    • fix: fixed timeline default duration when none explicitly set (0d66712)
    • fix: removed container padding on small screens (b30b970)
    • fix: fixed broken link to docs (f6389ee)
    • fix: disabled editing in EventList outside of Bucket view (b3ac5a6)
    • fix: fix stopwatch off-by-one error (737b3d0)
    • fix: fixed uses of replace to correctly replace all occurrences (9041811)
    • fix: switched from node-sass to dart-sass (5fa757e)
    • fix: support Edge browser on macOS (closes[#61](https://github.com/ActivityWatch/aw-watcher-web/issues/61)) (6acb378)
    • fix: changed 'file an issue' URL to show the issue template chooser (0ba820d)

    🔨 Misc (29)

    • Merge pull request #291 from ActivityWatch/style-updates (4d8e5ee)
    • Merge branch 'master' into style-updates (4438e39)
    • Merge branch 'master' into style-updates (9932675)
    • Lint fixes (2384197)
    • Less techy wording on activity options (8c1e0e2)
    • using light border color in a couple other places (2766d95)
    • Consolidated styles (d18a655)
    • Rework tab design to be more modern (cd838c6)
    • Stop using !important override for top nav (27ceb5c)
    • Footer horizontal edges should match the main window (6804c16)
    • Simplify bottom container (2f1c6a7)
    • Removing host from the top of the page (e236c5e)
    • Removing unneeded stylsheets (0f328ae)
    • Increasing size of activity range dropdown (d1c34fd)
    • Adding sourcemaps to vue dev builds (97e45c4)
    • bugfix: Fix Category import only working on firefox (8482678)
    • test: added test for views store, rewrote views store to typescript (5798e8e)
    • docs(README): added note about need to hard refresh after replacing aw-webui files (f8de6dd)
    • docs: updated README (1bb7442)
    • docs: added link to categorization docs in settings (0414c7e)
    • Merge pull request #269 from ActivityWatch/dependabot/npm_and_yarn/elliptic-6.5.4 (bd6d38b)
    • Merge pull request #264 from ActivityWatch/dependabot/npm_and_yarn/pug-3.0.1 (0b60162)
    • Merge pull request #263 from ActivityWatch/dependabot/npm_and_yarn/pug-code-gen-2.0.3 (3316243)
    • test: added basic vuex tests for categories (b475107)
    • docs: added codecov badge to README (6a4072b)
    • Unify punctuation in satisfaction poll (b6cc444)
    • refactor: refactored event viewer (in Query/Search views) into component, changed use of (broken) aw-timeline to vis-timeline (613b51e)
    • Merge pull request #241 from ActivityWatch/dependabot/npm_and_yarn/dompurify-2.0.17 (f4c0181)
    • docs(README): fixed build status badge to use GitHub Actions (87f32ab)

    aw-client

    ✨ Features (5)

    • feat!: switched config format to toml (#58) (6c460cb)
    • feat: added example script for calculating working hours (6fbce36)
    • feat: added load_dataframe.py example (9de8095)
    • feat: rewrote CLI to use click (b2e7985)
    • feat: added redact_sensitive.py example (75efe3c)
    🐛 Fixes (6)

    • fix: fixed tests for union_no_overlap (4ad9920)
    • fix: fix deletion of buckets in production mode (bbcd1d6)
    • fix: Fix broken insert_event (e427a4d)
    • fix: improved typing (56e2f10)
    • fix: fixed incorrect use of Click context (e0eb2c0)
    • fix: fixed typechecking (74db79f)

    🔨 Misc (12)

    • docs(README): added PyPI version badge (13975dc)
    • chore: bumped version to v0.5.3, updated deps (db1010a)
    • chore: bumped version to v0.5.1 (6b08d43)
    • Merge pull request #55 from ActivityWatch/dev/insert-event-no-return (eba55f3)
    • api: Make insert_event not return anything anymore (669c574)
    • Merge pull request #54 from ActivityWatch/dev/minor-fixes (86c9d7f)
    • Make commit_interval diff use >= instead of > (fdeceb0)
    • Fix insert_event compatibility with aw-server-rust (6521df6)
    • test: fixed integration test (c6ee497)
    • docs: added new redact_sensitive.py example to README (ea6de3a)
    • style: formatted with black (fb54d36)
    • docs(example): added time_spent_today.py example (120b1f7)

    aw-core

    ✨ Features (2)

    • feat: added union_no_overlap from aw-research (d6f783d)
    • feat: added support for toml config (f4b1bb8)
    🐛 Fixes (3)

    • fix: removed resolved TODO (067bb69)
    • fix: fixed tests for union_no_overlap (9d8cb41)
    • fix: Add flush+fsync to write of config files (03c62e3)

    🔨 Misc (10)

    • docs(README): added PyPI version badge (464c423)
    • chore: bumped version to 0.5.3 (28d1caf)
    • Merge pull request #88 from ActivityWatch/dev/config-toml (811712c)
    • Merge branch 'master' into dev/config-toml (043cc3c)
    • chore: bumped version to 0.5.2 (4a6be45)
    • Merge pull request #101 from ActivityWatch/dev/config-fsync-fix (601ac7d)
    • docs: minor docstring fix (5864398)
    • chore: bumped version to v0.5.1 (5bd84b1)
    • chore: bumped version number (c7ba6d2)
    • docs: documented transforms chunk_events_by_key and merge_events_by_keys (#99) (81dcb64)

    aw-qt

    ✨ Features (1)

    • feat!: switched config format to toml (#75) (4d6f4e7)
    🐛 Fixes (2)

    • fix: Make trayicon less blurry when being fractionally scaled (cbdbca3)
    • fix: Make open dir work correctly with PyInstaller on Linux (04069cb)

    🔨 Misc (6)

    • Merge pull request #73 from Drarig29/open-dashboard-double-click (9f7299f)
    • Add return type (b8affbc)
    • Open Dashboard on double click (26580fe)
    • Merge pull request #72 from ActivityWatch/dev/less-blurry-trayicon (19f8719)
    • Merge pull request #71 from ActivityWatch/dev/open-log-dir-fix (493eb94)
    • Merge pull request #67 from ActivityWatch/dev/update-pyqt5 (1318740)

    aw-server

    ✨ Features (1)

    • feat!: switched config format to toml (92452af)
    🔨 Misc (9)

    • Merge pull request #76 from ActivityWatch/dev/insert-event-no-return (f0d6500)
    • chore: Fix linting issue (61b362a)
    • api: Make insert event never return anything (fe6b0b3)
    • chore: bumped version (fbb89fe)
    • tests: improvements to tests and code coverage (9c33204)
    • docs(README): added badges for GitHub Actions and Codecov (46b43e0)
    • test: added test coverage (f9b5d2e)
    • Merge pull request #73 from ActivityWatch/dev/github-ci (3e81e29)
    • style: formatted with black (2f44d8d)

    aw-server-rust

    ✨ Features (10)

    • feat: added exclude_keyvals transform (e8cc25a)
    • feat: added hostname filtering support to find_bucket (7ad9512)
    • feat: switched from getopts to clap for aw-server-rust CLI options (c2af4ce)
    • feat: more progress on sync, added basic README (a4588f7)
    • feat: add ability to override device_id by CLI parameter (67e565c)
    • feat: progress on sync (dbe96b1)
    • feat: added CLI param to aw-server for skipping legacy import (27a8eb1)
    • feat: added ability to override aw-server port and dbpath via CLI arguments (90aa6a5)
    • feat: added query parameters to aw-client-rust's get_events, fixed clippy complaints (9a82ea2)
    • feat: added period_union transform (294edaf)
    🐛 Fixes (3)

    • fix: minor progress on sync (190c442)
    • fix: added data clearing to period_union (e027018)
    • fix: attempt to fix building for Android (8599c77)

    🔨 Misc (15)

    • docs: improved aw-server and aw-sync READMEs (4a1943a)
    • test: fixed tests (26a7e04)
    • added start, end, limit parameters to aw-client-rust's get_events (c53fbf9)
    • aw-query: Fix broken period_union (1f49e83)
    • test: fixed test (6452957)
    • test: added tests for datastore query of events that cover the queried range (602ddb2)
    • test: added nop test for period_union (c3b178f)
    • Upgrade to GitHub-native Dependabot (f60809c)
    • chore: Fix linting (8721bf6)
    • aw-datastore: Fix broken legacy import on Windows (bb1f36d)
    • Cargo.lock: Update dependencies (f499679)
    • docs: reordered badges in README (3764fb5)
    • aw-server: Disable jemalloc on non-x86 CPUs (828db39)
    • Cargo.lock: Update dependencies (3b9f31d)
    • aw-client-rust: Update to reqwest 0.11 (ad32e7a)

    aw-watcher-afk

    ✨ Features (2)

    • feat!: switched config format to toml (#49) (ccf6b12)
    • feat: switched to pynput for MouseListener and KeyboardListener (297b58c)
    🐛 Fixes (6)

    • fix: fixed typing in EventFactory (f39dfa1)
    • fix: fixes for migration to pynput (9f1d24c)
    • fix: moved pynput imports inside methods to prevent failing on import when no Xorg available (d543bdd)
    • fix: attempted CI fix (61bf58e)
    • fix: remove debug logging of sensitive info from keyboard/mouse-listener (#45) (ccf8770)
    • fix: added support for Python 3.8 using pywinhook wheel (e48e977)

    🔨 Misc (2)

    • Merge pull request #48 from ActivityWatch/dev/pynput (d7931eb)
    • docs(README): fixed build status badge to use GitHub Actions (5584fb8)

    aw-watcher-window

    ✨ Features (1)

    • feat!: switched config format to toml (#57) (301449f)
    🐛 Fixes (3)

    • fix: improved applescript strategy (cleartext src, precompile, run in-process) (#56) (8682633)
    • fix: added printAppStatus.jxa to pyinstaller datas (57590c3)
    • fix: fixed import in main, moved macos permission prompt into seperate file (c683671)

    🔨 Misc (2)

    • format: formatted pyinstaller spec with black (71daa0f)
    • Use JXA for window status on macOS, include url in event data (#52) (aecf47f)

    Source code(tar.gz)
    Source code(zip)
    activitywatch-v0.11.0-linux-x86_64.zip(150.96 MB)
    activitywatch-v0.11.0-macos-x86_64.dmg(52.81 MB)
    activitywatch-v0.11.0-macos-x86_64.zip(73.43 MB)
    activitywatch-v0.11.0-windows-x86_64-setup.exe(64.85 MB)
    activitywatch-v0.11.0-windows-x86_64.zip(85.26 MB)
  • v0.11.0b1(Jun 15, 2021)

    Important note

    We've found several issues (described in issue #607) in this release we need to address. We therefore demoted the release to a beta release. Stay tuned for the real release!


    Installation

    See the getting started guide in the documentation.

    Downloads

    • Windows (.exe, installer)
    • macOS (.dmg)
    • ~~Linux~~
      • NOTE: The Linux build is currently broken, we're working on a fix!

    Changelog

    Please see the changelog for v0.11.0 instead (released soon).

    Source code(tar.gz)
    Source code(zip)
    activitywatch-v0.11.0b1-linux-x86_64.zip(147.02 MB)
    activitywatch-v0.11.0b1-macos-x86_64.dmg(51.85 MB)
    activitywatch-v0.11.0b1-macos-x86_64.zip(71.51 MB)
    activitywatch-v0.11.0b1-windows-x86_64-setup.exe(64.78 MB)
    activitywatch-v0.11.0b1-windows-x86_64.zip(85.20 MB)
  • v0.10.0(Jun 15, 2021)

    Maintainers note: The tag for this release was accidentally removed, but has been restored. The release created date is therefore invalid, but the commit date is correct.


    It's finally here! :tada:

    The long-awaited v0.10 release comes with a lot of improvements which you can read about in the changelog below. There will also be more about it the upcoming development update on the forum, so keep an eye out on our Twitter and join our Discord server.

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

    Installation

    See the getting started guide in the documentation.

    Downloads

    Honorary mentions

    • Johan Bjäreholt (@johan-bjareholt) for his tireless work on aw-server-rust.
    • Kerkko Peltari (@xylix) for his amazing work on improving macOS support (among many other things).
    • Bill Ang Li (@billangli) for his amazing work on adding an update check to the web UI, and a user engagement poll after a week of use.
    • FUUG.fi (Finnish Unix Users Group) for contributing with a €3,000 grant earlier this year.

    Changelog

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

    Summary

    • ✨ New editable views
    • ✨ Timeline (barchart) visualization
    • ✨ Update checks
    • 🍎 Better support for macOS
    • 🪟 Support for Microsoft Edge
    • 🐛 Many bug fixes
    • 🕸️ The "sunburst clock" vis was removed (temporarily, see https://github.com/ActivityWatch/activitywatch/issues/508#issuecomment-730396764)
    • And a lot more...

    activitywatch (bundle repo)

    ✨ Features (1)

    • feat: improved generation of changelog (7e6acf2)
    🐛 Fixes (3)

    • fix: fixed inclusion of aw-webui for use with aw-server-rust (fixes #441) (2c3fe73)
    • fix: fixed generation of changelog for subsubmodules (77b39b5)
    • fix: switched from biplist to plistlib (following dmgbuild's example) (5ddb5f6)

    🔨 Misc (12)

    • docs: updated screenshot in README (42bf20c)
    • docs: updated FUNDING.yml (c779d75)
    • Use git describe --tags --abbrev=0 to retrieve current activitywatch version in aw.spec (47cd07e)
    • docs: fixed stray end tag in README (b1a89d7)
    • README: Removed outdated statement that import is not supported (370b073)
    • docs: fixed emoji in bug report issue template title (89d8a4f)
    • docs: updated issue templates (#429) (5c139b9)
    • docs: added commit message guidelines to CONTRIBUTING.md (#415) (29ad429)
    • Merge pull request #401 from gwynevans/docTweak (b1e8934)
    • Add explanation of AFK acronym to README (5193cd1)
    • docs: added new script to build changelog (#381) (8ed9754)
    • docs: added GitHub actions badge to README (b33711a)

    aw-webui

    ✨ Features (22)

    • feat: made timeline view full-width (bba8b35)
    • feat: added stop time to timeline tooltip (fixes[#200](https://github.com/ActivityWatch/aw-webui/issues/200)#issuecomment-674582218) (f0e8b4c)
    • feat: refactored ActivityEditor into ActivityView, added better info when missing data (94f0959)
    • feat: added new view modal (a0ec9a5)
    • feat: added delete view and restore views to default (129fdd9)
    • feat: implemented save/cancel when editing view (ef52f1e)
    • feat: added buttons to edit/save view, made ActivityView delegate to ActivityEditor if view_id is 'editor' (1beade2)
    • feat: added ability to add new views and visualizations (6578e7f)
    • feat: continued work on customizable views, fixing a few bugs (783733b)
    • feat: started working on customizable views (382308f)
    • feat: poll user satisfaction and calls to action (#229) (f9e0bbf)
    • feat: added options to WIP Calendar visualization (4e7303a)
    • feat: check for new releases (ActivityWatch/activitywatch#114) (b9fe58b)
    • feat: added proper timeline labeling for stopwatch events (5e1afd8)
    • feat: Add custom hovertext for editor summary and project (437a882)
    • feat: Better user experience when importing buckets (d59cf32)
    • feat: Add delete button to EventEditor modal (a4cd0b0)
    • feat: started working on calendar visualization (2b6f6c3)
    • feat: Add first/last event to Bucket view (915a4cf)
    • feat: ported new Activity view to Android (13777cb)
    • feat: added support for Edge browser (d495f7f)
    • feat: added active history data to demomode, removed excessive logging (107ae4d)
    🐛 Fixes (35)

    • fix: added chromium.exe to browser appnames (fixes[#503](https://github.com/ActivityWatch/activitywatch/issues/503)) (541e99c)
    • fix: improved border-color of events in timeline visualization (935354a)
    • fix: added (commented out) sunburst_clock to SelectableVisualization.vue (d4f2b3c)
    • fix: fixed missing href, added Discord to links in Home.vue (6b5a67b)
    • fix: minor satisfaction poll fixes (392cf8c)
    • fix: fixed invalid type (105afdc)
    • fix: added linting for tests and fixed lint issues (fc5cbe9)
    • fix: changed sometimes missing unicode character to icon in CategoryTree (50b3258)
    • fix: change button to only show for range (#449 from activitywatch) (0c36bbe)
    • fix: fix timeline updating before new range is selected (#449 from activitywatch) (444980a)
    • fix: fix timeline updating before new range is selected (#449 from activitywatch) (d2ebb9c)
    • fix: Update aw-client-js (1448792)
    • fix: cleaned up queries, unifying more into canonicalQuery (03a1242)
    • fix: Fix incompatibility with aw-server-python (1d3bfd1)
    • fix: Fix VisTimeline errors (61d2461)
    • fix: Fix previously broken ts types (2902651)
    • fix: Fix previously broken ts types (e356b24)
    • fix: Fix linting issues (ccddac7)
    • fix: Fix broken getBucketWithEvents (554f3f7)
    • fix: Set headers on tables where they belong (f08a43b)
    • fix: Fix 'Updated' field in buckets view for aw-server-rust (490901d)
    • fix: reintroduced active events for barchart visualization (2acb3cb)
    • fix: fixed #206, incorrectly escaping backslashes in regex (554d05a)
    • fix: fixed bug where opening Activity view didn't correctly use today as default date (903ad77)
    • fix: added 'Firefox-esr' to browser appnames, fixes #204 (b6f91e3)
    • fix: Merge window and browser queries (f9bcaed)
    • fix: Subview is now kept when changing date in Activity view (f31c75c)
    • fix: fixed filter by category on Android (80479d2)
    • fix: fixed incorrect references to state (0ded48d)
    • fix: Fixed very minor misplacement of button (a65623f)
    • fix: fixed use of wrong bucket (83d14ca)
    • fix: readded active history caching (035d4cc)
    • fix: Add notice to download browser watcher if no buckets exist (f167565)
    • fix: See host if only editor buckets exist (59197ce)
    • fix: Make week start on Monday instead of Sunday (dd6abc4)

    🔨 Misc (76)

    • Merge pull request #233 from ActivityWatch/dev/customizable-views (8e886b4)
    • refactor: split 'settings' Vuex store into 'categories' and 'views' (2788c14)
    • test: fixed e2e screenshot test (50e2c0d)
    • Merge pull request #167 from Mte90/patch-1 (2c5a934)
    • fix linting (526cfdc)
    • remove trailing whitespaces (49f3e2e)
    • fix linting (894bf64)
    • Merge branch 'master' into patch-1 (2e52832)
    • docs: fixed comment in PeriodUsage.vue (#230) (7912a32)
    • Merge pull request #211 from ActivityWatch/dev/calendar (bfc24c9)
    • Merge branch 'master' into dev/calendar (376e44f)
    • Merge pull request #225 from billangli/dev/check-for-new-releases (707c45a)
    • clean up code (f8b876b)
    • add aliasing to jest config (a8b35d9)
    • ignore screenshot.test.js from npm test script (81a6985)
    • Merge pull request #219 from billangli/dev/timeline-input-button (02a37cc)
    • move initial request to be called from InputTimeInterval (050f700)
    • Change select from v-bind to v-model (435896a)
    • lint-fix (7a39a23)
    • Merge branch 'dev/timeline-input-button' of https://github.com/billangli/aw-webui into dev/timeline-input-button (6e1eedb)
    • style: fixed lints, applied prettier v2 style, removed old Log view (91878ee)
    • Merge pull request #218 from ActivityWatch/dev/settings-split (11245d7)
    • Merge pull request #217 from ActivityWatch/dev/summary-custom-hovertext (e0d26ec)
    • refactor: Split Settings into multiple views (ed37580)
    • Merge pull request #210 from ActivityWatch/dev/import-ux-enhancement (0038e50)
    • Merge pull request #214 from ActivityWatch/dev/move-delete-button (443528f)
    • refactor: Move modal into EventEditor (9319fca)
    • Merge pull request #209 from ActivityWatch/dev/lint-fix (63d23f9)
    • Merge pull request #208 from ActivityWatch/dev/vuex-fix (16e37ae)
    • Merge pull request #202 from ActivityWatch/dev/last_updated_buckets_fix (4b08fbd)
    • Merge pull request #203 from ActivityWatch/dev/merge-window-and-browser-queries (09df952)
    • Merge pull request #207 from ActivityWatch/dev/today-bug (7821419)
    • Merge pull request #2 from skuzzymiglet/patch-1 (4d81a09)
    • Merge pull request #201 from ActivityWatch/dev/period-link-subview-fix (df5a625)
    • Fix bug with browser activity not showing "Loading..." when loading (9247aed)
    • Merge pull request #197 from ActivityWatch/dev/small-tweaks (1a969b3)
    • improvement(design): more small design improvements (7a2693d)
    • improvement(design): further fixes to design on small screens, added links to watchers page in the docs whenmissing browser or editor buckets (3dc3615)
    • improvement(design): made improvements to the design of the Activity view, including smaller tabs and placing the periodLength select in between the 'previous' and 'next' buttons (06ccbbe)
    • Merge pull request #196 from ActivityWatch/dependabot/npm_and_yarn/jquery-3.5.0 (7c9a7d5)
    • Merge pull request #194 from ActivityWatch/dev/eslint-fix (4973c62)
    • Merge pull request #195 from ActivityWatch/dev/cleanups (7242bed)
    • refactor: Removed unnecessary prints (9c616e2)
    • style: fixed eslint warnings (187c7e5)
    • Merge pull request #183 from ActivityWatch/dev/android-update (c535835)
    • refactor: cleanup and minor restyling of SelectableVisualization (b215d50)
    • Merge pull request #193 from ActivityWatch/dev/period-length-fix (51bab94)
    • refactor: removed old Android activity view (afdf0fc)
    • refactor: changed buckets.(type)_buckets to simply buckets.(type), added androidBucketsByHost (f90c0af)
    • Merge pull request #192 from NicoWeio/better-errors (0f9eb0c)
    • remove dedupe "feature"; rewrite code for display message (3b1a22f)
    • bugfix: Inconsistency when changing period length (1704d71)
    • display error message from API requests if available (452ac82)
    • Merge pull request #190 from ActivityWatch/dev/selectable-activity-views (353634b)
    • refactor: Rename ActivityDaily to just Activity (bc4e950)
    • feature: Make views in summary selectable (c366500)
    • Merge pull request #189 from ActivityWatch/dev/daily-activity-vuex-refactor2 (a5a9e70)
    • refactor: Made activity_daily vuex more structured and easier to read (e30bad4)
    • Merge pull request #186 from ActivityWatch/dev/make-queries-less-dependent (6379134)
    • Merge pull request #185 from ActivityWatch/dev/monday-start-of-week (3451196)
    • Merge pull request #182 from ActivityWatch/dev/demomode-active-history (fbcb5ab)
    • Merge pull request #181 from ActivityWatch/dev/edge-browser (91bdb2c)
    • Merge pull request #179 from ActivityWatch/github-actions (ed6bed6)
    • Merge pull request #178 from ActivityWatch/dev/better-demomode (f3fcb20)
    • Merge branch 'dev/better-demomode' of github.com:ActivityWatch/aw-webui into dev/better-demomode (fdd8052)
    • docs: added more activities to demomode (cc5b437)
    • added computation of demo data from single list of events (f0a06dd)
    • added computation of demo data from single list of events (1362f2d)
    • Merge pull request #177 from ActivityWatch/dev/prettier (f9c0b40)
    • ran make lint-fix (a1428a4)
    • Merge pull request #176 from ActivityWatch/dev/demomode (553cceb)
    • added fully covered examples of data for demomode (5a47ebe)
    • added lint-fix to Makefile (eslint --fix), now also lints typescript files (3ea66bb)
    • started working on demo mode (8f9af1c)
    • Combine aw-webui PR #173 (0b9da98)
    • More software to categorize (755c6f0)

    aw-qt

    ✨ Features (1)

    • feat: switched to using click for the CLI, fixed bugs (682a73f)
    🐛 Fixes (8)

    • fix: fixed assumption about pathsep (b7da7c3)
    • fix: improved module detection, added comments (1924e3b)
    • fix: fixed module detection and naming (063a00c)
    • fix: fixed bugs in bundled/system modules (83cc4db)
    • fix: fixed typing checks (01378f1)
    • fix: minor cleanup (f6d26c7)
    • fix: made sip an explicit dependency (see[#433](https://github.com/ActivityWatch/activitywatch/issues/433)) (56cc28c)
    • fix: replace webbrowser.open with xdg-open with original LD_LIBRARY_PATH (bcd27a0)

    🔨 Misc (32)

    • manager: Fix issue with bundled modules not being detected (d887ca5)
    • manager: Make matching of executables more accurate (1d421ba)
    • Merge pull request #64 from ActivityWatch/dev/fix-module-name-and-filtering (9a569fa)
    • docs: updated README with badges and minimal build instructions (3db74cd)
    • Merge pull request #56 from xylix/dev/improved-module-detection (839c9fd)
    • style: removed unused imports (157a546)
    • Merge branch 'master' into dev/improved-module-detection (0a359bd)
    • Merge pull request #59 from ActivityWatch/dev/fix-buggy-webbrowser-open (707b75b)
    • Get PATH using python's os module instead of getting environment variable and manually splitting (68314f0)
    • Merge pull request #57 from xylix/dev/trayicon-color-fix (eadf39d)
    • Let trayicon owning program handle coloring it with filters (5385d8b)
    • Add some informative pydoc comments (2a6a8da)
    • Recursively find submodules in subdirectories (9a849ca)
    • Remove unnecessary possible_modules config option (9e4b15e)
    • Add pip cache for macOS, should make pyobjc etc. installation significantly faster (b14b1be)
    • Improve autostart() input typing (8808f7c)
    • Add pyqt type stubs to dev dependencies, nicer mypy output by default (a7c098c)
    • Fix lambda parameter amount to allow termination on sigint / sigkill (ea9d196)
    • Improve type safety and add some info logs / comments (d4e33cf)
    • Improve mypy typing (4403d19)
    • Merge remote-tracking branch 'xylix/dev/autodetect-modules' into dev/improved-module-detection (2a05ba1)
    • remove 1 unused import, don't treat aw-server as a special case in creating module menu (7a67423)
    • Add type hints to new code (94dc1df)
    • rename QTSettings to AwQtSettings and add aw-server-rust (9dfea4b)
    • Store available and autostart modules lists as configuration. See #47 (a974e2c)
    • actually check for module existence in manager (b7ed55a)
    • fixed typechecking and enabled on Travis (6db5435)
    • categorized module menu by location of module (70cca98)
    • fixed issue when location in PATH does not exist (4078647)
    • fixed crash when module couldn't be started (ba88995)
    • fixed bundled modules (fbe3519)
    • added basic module autodetection (53f7dd0)

    aw-server

    🔨 Misc (1)

    • docs(README): updated outdated build instructions (#72) (7bab7f0)

    aw-server-rust

    🐛 Fixes (13)

    • fix: corrected non-standard log dir on macOS (fixes #187) (623dfb4)
    • fix: correct lookup of asset_path for .app bundles on macOS (9be9962)
    • fix: Drop single events if corrupted instead of failing whole import (96cbc9d)
    • fix: Replace serde_derive with serdes derive feature for all crates (5c68853)
    • fix: Set allocator to jemalloc (eabf9a1)
    • fix: Allow floods to merge same event multiple times (f5bf3cc)
    • fix: Remove unnecessary clones (db720bf)
    • fix: Fix clippy issues in aw-transform (158cf60)
    • fix: dependency update needed for new Rust nightly (see https://github.com/ActivityWatch/aw-android/pull/40#issuecomment-651328018) (ca905a8)
    • fix: added limit parameter to the JNI wrapper for get_events (147a2d0)
    • fix: fixed issue in compile-android.sh script (c101a87)
    • fix: removed stale .cargo/config and added to .gitignore (d7bfc23)
    • fix: changed cfg(debug_assertions) to is_testing for runtime checks (96bbb0e)

    🔨 Misc (60)

    • chore: bumped version number to v0.10.0 (f1f5095)
    • aw-transform: Optimize filter_period_intersect by pre-calculating endtimes (ebb1fdd)
    • aw-transform: Add benchmark for filter_period_intersect (4f00b19)
    • aw-query: Refactor benchmark code (eabcf74)
    • Cargo.lock: Update dependencies (2fc85f3)
    • aw-server: Test key_value of different types (70968e4)
    • Make settings value possibly any json type (6ecb206)
    • aw-models: Add custom schema for tryparse (03fd9cd)
    • Cargo.lock: Update dependencies (7f2bf15)
    • aw-models: Add schemars support (e1131d6)
    • aw-datastore: Add bucket_id to errors (5bdd6f3)
    • aw-server: Add Into trait for DatastoreError to HttpErrorJson (7a19f34)
    • aw-server: Fix compilation on android (d985c51)
    • aw-server: Replace all errors with HttpErrorJson (b14a173)
    • aw-server: Improve HTTP error handling (3b126cc)
    • tests: Add more asserts of HTTP body (a5cbb0d)
    • aw-server: Make UUID part of ServerState (7f6f63d)
    • aw-transform: Add documentation to transforms (b04d38b)
    • Update aw-webui (cc437ea)
    • Update Cargo.lock (f3c2ede)
    • aw-transform: fix: If events merge during flood, choose the longest endtime (091362f)
    • tests: Added another heartbeat test (2102597)
    • query: Add VarEnv type alias (420d691)
    • Merge pull request #137 from ActivityWatch/dev/get_events-limit-jni (4c6dd98)
    • Merge pull request #135 from ActivityWatch/dev/android-vendored-openssl (9e796b4)
    • aw-webui: Update submodule (b3aa756)
    • aw-query: Add function filter_keyvals_regex (132370b)
    • aw-transform: Avoid cloning in filter_keyvals (5185b5d)
    • aw-transform: Add filter_keyvals_regex (fa842f6)
    • README: Fix broken build status badge (0dbd57f)
    • aw-server: Refactor dirs, add tests do dirs and logging (9b406fc)
    • aw-query: Fix unnecessary lifetime parameter and references (826b78a)
    • aw-query: Add simple benchmarks (edc9b3f)
    • aw-query: Removed cloning from assigns (39cccb3)
    • Cargo.lock: Update dependencies (9184a35)
    • aw-query: fix clippy error (882385f)
    • chore: updated aw-webui (7ede519)
    • aw-server: rustfmt fix (c6cd1d5)
    • aw-server: Remove unused catchers (0b75663)
    • aw-server: Set content type for more endpoints (00c001b)
    • codecov.yml: Set diff target to a low value (e15fe1c)
    • codecov.yml: Disable coverage requirement (7f98e25)
    • Fix database location when running with --testing (642a531)
    • cargo: Update dependencies (335417e)
    • cargo: Remove some features from multipart to get fewer dependencies (ccff0e4)
    • aw-server: Clippy fixes (4ceb9c2)
    • aw-client-rust: Clippy fixes (718ebfd)
    • aw-datastore: Clippy fix and refactoring of worker (6f5200d)
    • aw-datastore: Make reload test force commit (34d2dec)
    • aw-datastore: Guarantee DB commit every 15 seconds (17dff67)
    • aw-server: Increase default log levels further (afbb70c)
    • aw-server: Added option parsing and --testing option (c34b7f6)
    • aw-server: Pass AWConfig as a Rocket state (cd00f31)
    • aw-query: Fix clippy issues (6f69b8b)
    • cleaned up testing/production detection (5b52961)
    • moved log directory to make it aw-qt compatible (6024d7d)
    • reduced logging and simplified logging pipeline (d456981)
    • Merge pull request #105 from ActivityWatch/dev/github-actions (f2afa99)
    • docs: updated README (62be9f4)
    • Create rust.yml (d7e75dd)

    aw-watcher-afk

    🔨 Misc (2)

    • Merge pull request #40 from ActivityWatch/doc/readme-update (32d7647)
    • doc: Update install instructions in README.md (c06bcab)

    aw-watcher-window

    🔨 Misc (14)

    • Merge pull request #41 from xylix/dev/macos-ask-for-permission (48491bc)
    • Merge branch 'master' into dev/macos-ask-for-permission (724a3e2)
    • Merge pull request #44 from ActivityWatch/doc/readme-update (fbec7ed)
    • doc: Add install instructions to README.md (bc33438)
    • remove execution blocking from macos.py, move macos permission check in main.py after logging has bene initialized (b829e04)
    • Fix types in Process args, remove hardcoded development False (3ad2af6)
    • Update lockfile post merge (04d8269)
    • Merge branch 'master' into dev/macos-ask-for-permission (aa841c2)
    • Use multiprocessing for background perm check execution. (0943007)
    • Merge pull request #42 from ActivityWatch/dev/github-actions (620b52c)
    • Start running perm dialog in a background thread (f032ed1)
    • Add accessibility settings link button (890b6d6)
    • Platform restrict pyobjc deps (6c2c1e5)
    • Use AppKit to figure if we have accessbility perms and pyobjc to ask for them (82e90b2)

    aw-client

    ✨ Features (2)

    • feat: added better output when overlapping events found (52937c4)
    • feat: added merge_buckets.py example (5b9977f)
    🐛 Fixes (1)

    • fix: fixed minor things (docs, wrongly commented out code) in examples/merge_buckets.py (839e1ba)

    🔨 Misc (2)

    • Merge pull request #49 from ActivityWatch/doc/readme-update (bd8a953)
    • doc: Add install instructions to README.md (3a4367c)

    aw-core

    ✨ Features (1)

    • feat: log unhandled exceptions (6ba8f97)
    🐛 Fixes (2)

    • fix: fixed bug when passing unsorted lists into _intersecting_eventpairs and added test for it (216e9fc)
    • fix: fixed case where heartbeat with similar timestamp could shorten previous event (0444be3)

    🔨 Misc (10)

    • style: fixed code formatting (8775e04)
    • refactor: extracted TimePeriod class to timeslot repo (e4a2b53)
    • test: added test for intersecting eventpairs (5f75f65)
    • test: changed categorization test to include backslash-metacharacter (\w) (e83f3f8)
    • docs: fixed CI badge, added better summary of contained modules (c38b814)
    • style: formatted everything with Black (eda4ff6)
    • tests: Add test for heartbeats with same timestamp (296647e)
    • Merge pull request #90 from ActivityWatch/doc/readme-update (a6a9a9e)
    • doc: Add install instructions to README.md (e7e1b5b)
    • Merge pull request #89 from ActivityWatch/dev/github-actions (b2d9179)

    media

    🔨 Misc (1)

    • Remove unnecessary logo after automatic dark mode recoloration (cb597f7)

    Source code(tar.gz)
    Source code(zip)
    activitywatch-v0.10.0-linux-x86_64.zip(114.43 MB)
    activitywatch-v0.10.0-macos-x86_64.dmg(38.51 MB)
    activitywatch-v0.10.0-macos-x86_64.zip(62.25 MB)
    activitywatch-v0.10.0-windows-x86_64-setup.exe(50.48 MB)
    activitywatch-v0.10.0-windows-x86_64.zip(64.74 MB)
  • v0.9.2(Mar 23, 2020)

    Installation

    See the getting started guide in the documentation.

    Changelog

    This fixes Linux builds (again, for real this time!) by locking PyQt5 used by aw-qt to v5.10.1.

    activitywatch (bundle repo)

    • Added basic GitHub Actions config (#382) (02a76e5)
    • docs: fixed typo in README found by codespell (#385) (8a0ee3d)
    • Downgraded PyInstaller to v3.5 (8ac35bc)
    • Downgraded setuptools as workaround for PyInstaller issue

    aw-qt

    • downgraded PyQt5 to v5.10.1
    Source code(tar.gz)
    Source code(zip)
    activitywatch-v0.9.2-linux-x86_64.zip(99.85 MB)
    activitywatch-v0.9.2-macos-x86_64.dmg(33.89 MB)
    activitywatch-v0.9.2-macos-x86_64.zip(58.06 MB)
    activitywatch-v0.9.2-windows-x86_64-setup.exe(44.64 MB)
    activitywatch-v0.9.2-windows-x86_64.zip(59.26 MB)
  • v0.9.1(Mar 21, 2020)

    Installation

    See the getting started guide in the documentation.

    Changelog

    This fixes Linux builds and improves our build process by using version-locked Python dependencies (using poetry).

    activitywatch (bundle repo)

    • build: switched to using poetry for make build (#379) (f383b95)
    Source code(tar.gz)
    Source code(zip)
    activitywatch-v0.9.1-linux-x86_64.zip(105.95 MB)
    activitywatch-v0.9.1-macos-x86_64.dmg(38.80 MB)
    activitywatch-v0.9.1-macos-x86_64.zip(58.62 MB)
    activitywatch-v0.9.1-windows-x86_64-setup.exe(54.48 MB)
    activitywatch-v0.9.1-windows-x86_64.zip(73.58 MB)
  • v0.9.0(Mar 18, 2020)

    Installation

    See the getting started guide in the documentation.

    Changelog

    This release adds our 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.

    activitywatch (bundle repo)

    • 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)
    • Make aw-qt less annoying:
      • 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) Bug fixes:
    • 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) Misc improvements:
    • Improvements to Stopwatch and EventEditor (#166) (2040a92)
    • package.json: Update to fix vulnerabilities (a2f48a8)
    • Swtich from timeline-plus to vis-timeline (98cd372)
    • queries: Removed trailing lines (d25cf09)

    NOTE: Builds for Linux are broken, we're working to fix this asap. See https://github.com/ActivityWatch/activitywatch/issues/378 for more info.

    Source code(tar.gz)
    Source code(zip)
    activitywatch-v0.9.0-linux-x86_64.zip(98.59 MB)
    activitywatch-v0.9.0-macos-x86_64.dmg(38.75 MB)
    activitywatch-v0.9.0-macos-x86_64.zip(58.61 MB)
    activitywatch-v0.9.0-windows-x86_64-setup.exe(48.52 MB)
    activitywatch-v0.9.0-windows-x86_64.zip(65.45 MB)
  • v0.8.4(Dec 10, 2019)

    Installation

    See the getting started guide in the documentation.

    Changelog

    • Adds the ability to filter the activity view by category.
    • Fixes a bug where setting rule for a category to 'None' breaks the UI (#313)
    • Fixes the broken favicon for aw-webui.

    The full changelog is available in the documentation.

    Source code(tar.gz)
    Source code(zip)
    activitywatch-v0.8.4-linux-x86_64.zip(85.35 MB)
    activitywatch-v0.8.4-macos-x86_64.zip(47.26 MB)
    activitywatch-v0.8.4-windows-x86_64-setup.exe(36.52 MB)
    activitywatch-v0.8.4-windows-x86_64.zip(48.25 MB)
  • v0.8.2(Nov 13, 2019)

    Installation

    See the getting started guide in the documentation.

    Changelog

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

    • Added a Windows installer
    • ~~Fixes the Windows builds~~ (apparently they are still broken)
    • Fixes a bug in the web UI where weeks didn't always start on Mondays and months didn't always start on the first

    The full changelog is available in the documentation.

    NOTE: The Windows builds are broken, we're working on it.

    Source code(tar.gz)
    Source code(zip)
    activitywatch-v0.8.2-linux-x86_64.zip(56.40 MB)
    activitywatch-v0.8.2-macos-x86_64.zip(31.47 MB)
    activitywatch-v0.8.2-windows-x86_64-setup.exe(20.68 MB)
    activitywatch-v0.8.2-windows-x86_64.zip(31.39 MB)
  • v0.8.1(Nov 12, 2019)

    The long-awaited stable release of v0.8 is here!

    It contains lots of goodies like categorization, better weekly/monthly visualizations, and more! See the changelog for the details.

    Installation

    See the getting started guide in the documentation.

    Changelog

    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!

    The full changelog is available in the documentation.

    NOTE: The Windows builds are broken, we're working on it.

    Source code(tar.gz)
    Source code(zip)
    activitywatch-v0.8.1-linux-x86_64.zip(56.30 MB)
    activitywatch-v0.8.1-macos-x86_64.zip(31.40 MB)
    activitywatch-v0.8.1-windows-x86_64.zip(30.53 MB)
  • v0.8.0b7(Nov 3, 2018)

  • v0.8.0b6(Aug 27, 2018)

    Installation

    See the getting started guide in the documentation.

    Important note

    • Doesn't work on macOS, see https://github.com/ActivityWatch/activitywatch/issues/222 for a workaround
    • Editor activity summary is broken in this version, please update to beta 7 or above

    Changelog

    The full changelog is available in the documentation.

    • Fixed #212
    • Added timeline to web UI
    • And more...
    Source code(tar.gz)
    Source code(zip)
    activitywatch-v0.8.0b6-linux-x86_64.zip(56.83 MB)
    activitywatch-v0.8.0b6-macos-x86_64.zip(30.72 MB)
    activitywatch-v0.8.0b6-windows-x86_64.zip(30.75 MB)
  • v0.8.0b5(Jul 9, 2018)

    Installation

    See the getting started guide in the documentation.

    Important note

    • This version has not been tested and might not work on macOS, please let us know if it does.

    Changelog

    The full changelog is available in the documentation.

    • Fixed aw-qt on Linux
    • Fixed Windows build
    • And a lot more... (I'll fill this in later)
    Source code(tar.gz)
    Source code(zip)
    activitywatch-v0.8.0b5-linux-x86_64.zip(56.63 MB)
    activitywatch-v0.8.0b5-macos-x86_64.zip(30.23 MB)
    activitywatch-v0.8.0b5-windows-x86_64.zip(30.32 MB)
  • v0.8.0b4(Jul 3, 2018)

  • v0.8.0b3(May 30, 2018)

    Installation

    See the getting started guide in the documentation.

    Important note

    This version is broken on Windows, see this issue.

    Changelog

    The full changelog is available in the documentation.

    • Major performance improvements by pre-merging heartbeats on the server and client-side
    • Improved design of web UI
    • Basically everything (I'll fill this in later)
    Source code(tar.gz)
    Source code(zip)
    activitywatch-v0.8.0b3-linux-x86_64.zip(56.64 MB)
    activitywatch-v0.8.0b3-macos-x86_64.zip(30.85 MB)
    activitywatch-v0.8.0b3-windows-x86_64.zip(30.34 MB)
  • v0.8.0b2(May 28, 2018)

  • v0.7.1(Nov 6, 2017)

  • v0.7.0b4(Oct 22, 2017)

    Installation

    See the getting started guide in the documentation.

    Changelog

    The full changelog is available in the documentation.

    • The ActivityWatch WebExtension is now supported from this version forward, see the announcement on the forum.
    • 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.
    Source code(tar.gz)
    Source code(zip)
    activitywatch-v0.7.0b4-linux-x86_64.zip(53.26 MB)
    activitywatch-v0.7.0b4-macos-x86_64.zip(27.34 MB)
    activitywatch-v0.7.0b4-windows-x86_64.zip(27.52 MB)
  • v0.7.0b3(Aug 25, 2017)

  • v0.5.1(Aug 19, 2016)

Owner
ActivityWatch
Open source time-tracking application with a focus on extensibility and privacy.
ActivityWatch
I³ Tracker for Essential Open Innovation Datasets

I³ Tracker for Essential Open Innovation Datasets This repository is set up to track, version, and contribute updates to the I³ Essential Open Innovat

null 1 Feb 8, 2022
A free and open-source chess improvement app that combines the power of Lichess and Anki.

A free and open-source chess improvement app that combines the power of Lichess and Anki. Chessli Project Activity & Issue Tracking PyPI Build & Healt

null 93 Nov 23, 2022
Bionic is Python Framework for crafting beautiful, fast user experiences for web and is free and open source.

Bionic is Python Framework for crafting beautiful, fast user experiences for web and is free and open source. Getting Started This is an example of ho

null 14 Apr 10, 2022
Your self-hosted bookmark archive. Free and open source.

Your self-hosted bookmark archive. Free and open source. Contents About LinkAce Support Setup Contribution About LinkAce LinkAce is a self-hosted arch

Kevin Woblick 1.7k Jan 3, 2023
Fisherman is a free open source fishing bot written in python.

Fisherman is a free open source fishing bot written in python.

Pure | Cody 33 Jan 29, 2022
Dot Browser is a privacy-conscious web browser with smarts built-in for protection against trackers and advertisments online.

?? Take back your privacy with Dot Browser, the privacy-conscious web browser that protects you from being tracked and monitored online.

Dot HQ 1k Jan 7, 2023
UdemyPy is a bot that hourly looks for Udemy free courses and post them in my Telegram Channel: Free Courses.

UdemyPy UdemyPy is a bot that hourly looks for Udemy free courses and post them in my Telegram Channel: Free Courses. How does it work? For publishing

null 88 Dec 25, 2022
an opensourced roblox group finder writen in python 100% free and virus-free

Roblox-Group-Finder an opensourced roblox group finder writen in python 100% free and virus-free note : if you don't want install python or just use w

mollomm1 1 Nov 11, 2021
Cross-platform config and manager for click console utilities.

climan Help the project financially: Donate: https://smartlegion.github.io/donate/ Yandex Money: https://yoomoney.ru/to/4100115206129186 PayPal: https

null 3 Aug 31, 2021
Fully cross-platform toolkit (and library!) for MachO+Obj-C editing/analysis

fully cross-platform toolkit (and library!) for MachO+Obj-C editing/analysis. Includes a cli kit, a curses GUI, ObjC header dumping, and much more.

cynder 301 Dec 28, 2022
Gba-free-fonts - Free font resources for GBA game development

gba-free-fonts Free font resources for GBA game development This repo contains m

null 28 Dec 30, 2022
An ultra fast cross-platform multiple screenshots module in pure Python using ctypes.

Python MSS from mss import mss # The simplest use, save a screen shot of the 1st monitor with mss() as sct: sct.shot() An ultra fast cross-platfo

Mickaël Schoentgen 799 Dec 30, 2022
Cross-platform .NET Core pre-commit hooks

dotnet-core-pre-commit Cross-platform .NET Core pre-commit hooks How to use Add this to your .pre-commit-config.yaml - repo: https://github.com/juan

Juan Odicio 5 Jul 20, 2021
Cross-platform MachO/ObjC Static binary analysis tool & library. class-dump + otool + lipo + more

ktool Static Mach-O binary metadata analysis tool / information dumper pip3 install k2l Development is currently taking place on the @python3.10 branc

Kritanta 301 Dec 28, 2022
An Airdrop alternative for cross-platform users only for desktop with Python

PyDrop An Airdrop alternative for cross-platform users only for desktop with Python, -version 1.0 with less effort, just as a practice. ##############

Bernardo Olisan 6 Mar 25, 2022
Appointment Tracker that allows user to input client information and update if needed.

Appointment-Tracker Appointment Tracker allows an assigned admin to input client information regarding their appointment and their appointment time. T

IS Coding @ KSU 1 Nov 30, 2021
Expense Tracker is a very good tool to keep track of your expenseditures and the total money you saved.

Expense Tracker is a very good tool to keep track of your expenseditures and the total money you saved.

Shreejan Dolai 9 Dec 31, 2022
Path of Exile Vendor Recipe Tracker (Chaos/Regal orb)

Path of Exile Vendor Trade Tracker Are you tired of manually keeping track of collected and missing items for farming Chaos or Regal Orbs in PoE? Me t

null 1 Nov 9, 2021
Q-Tracker is originally a High School Project created by Admins of Cirus Lab.

Q-Tracker is originally a High School Project created by Admins of Cirus Lab. It's completly coded in python along with mysql.(Tkinter For GUI)

Adithya Krishnan 2 Nov 14, 2022