snapshot of https://github.com/ActivityWatch/activitywatch.git (master, 2026-09-15; blobs > 131072B omitted)
Some checks failed
Research feed publisher tests / test (push) Failing after 3s
Release / Pre-flight checks (push) Failing after 0s
Release / Research Edition — patch and packaging smoke tests (push) Has been skipped
Release / Build Qt artifacts (false, 22, ubuntu-22.04, 3.9, ${{ github.event_name == 'pull_request' || (github.event_name == 'push' && !startsWith(github.ref, 'refs/tags/')) }}, false, false) (push) Has been skipped
Release / Build Qt artifacts (false, 22, ubuntu-22.04, 3.9, false, false, false) (push) Has been skipped
Release / Build Qt artifacts (manylinux_2_28 — glibc 2.28 ABI floor) (22, 3.9) (push) Has been skipped
Release / Generate release notes (push) Has been skipped
Release / Create dev release tag (push) Has been skipped
CodeQL / Analyze (javascript) (push) Failing after 1s
CodeQL / Analyze (python) (push) Failing after 1s
Release / Build Qt artifacts (false, 22, windows-latest, 3.9, false, false, false) (push) Has been cancelled
Release / Build Tauri artifacts (false, 22, macos-15-intel, 3.9, false, false, false) (push) Has been cancelled
Release / Build Tauri artifacts (false, 22, macos-latest, 3.9, false, false, false) (push) Has been cancelled
Release / Build Tauri artifacts (false, 22, ubuntu-24.04, 3.9, ${{ github.event_name == 'pull_request' || (github.event_name == 'push' && !startsWith(github.ref, 'refs/tags/')) }}, false, false) (push) Has been cancelled
Release / Build Tauri artifacts (false, 22, ubuntu-24.04, 3.9, false, false, false) (push) Has been cancelled
Release / Build Tauri artifacts (false, 22, ubuntu-24.04-arm, 3.9, false, false, false) (push) Has been cancelled
Release / Build Tauri artifacts (false, 22, windows-latest, 3.9, false, false, false) (push) Has been cancelled
Release / Build Qt artifacts (false, 22, macos-15-intel, 3.9, false, false, false) (push) Has been cancelled
Release / Build Qt artifacts (false, 22, macos-latest, 3.9, false, false, false) (push) Has been cancelled
Release / Publish draft release (push) Has been cancelled

This commit is contained in:
upstream-mirror
2026-09-15 22:29:06 +05:00
commit c5c5af8cde
85 changed files with 12052 additions and 0 deletions

43
.github/workflows/codeql.yml vendored Normal file
View File

@@ -0,0 +1,43 @@
name: "CodeQL"
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
schedule:
- cron: "57 14 * * 4"
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ python, javascript ]
steps:
- name: Checkout
uses: actions/checkout@v7
with:
submodules: recursive
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
queries: +security-and-quality
- name: Autobuild
uses: github/codeql-action/autobuild@v4
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
with:
category: "/language:${{ matrix.language }}"

View File

@@ -0,0 +1,27 @@
name: Dependabot Auto-merge
# NOTE: This workflow relies on a Personal Access Token from the @ActivityWatchBot user
# See this issue for details: https://github.com/ridedott/merge-me-action/issues/1581
on:
workflow_run:
types:
- completed
workflows:
# List all required workflow names here.
- Build
permissions:
contents: write
pull-requests: read
jobs:
auto_merge:
name: Auto-merge
runs-on: ubuntu-latest
if: github.event.workflow_run.conclusion == 'success' && github.actor == 'dependabot[bot]'
steps:
- uses: ridedott/merge-me-action@e45e8ab1dd3d3dc1d27b8c0a3f465e40e8c9fb8e # v2
with:
GITHUB_TOKEN: ${{ secrets.AWBOT_GH_TOKEN }}

28
.github/workflows/diagram.yml vendored Normal file
View File

@@ -0,0 +1,28 @@
name: Diagram
on:
workflow_dispatch: {}
push:
branches:
- diagram
#- master # protected branch, can't push updated diagram to
jobs:
update-diagram:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v7
with:
submodules: recursive
- name: Also checkout docs & website
run: |
git clone https://github.com/ActivityWatch/docs
git clone https://github.com/ActivityWatch/activitywatch.github.io
- name: Update diagram
uses: githubocto/repo-visualizer@a999615bdab757559bf94bda1fe6eef232765f85 # main
with:
commit_message: 'chore: update diagram [skip ci]'
file_colors: '{"rs": "#b7410e", "py": "#229922", "rst": "pink", "txt": "pink", "md": "pink", "css": "purple", "scss": "purple"}'
excluded_globs: "**/.github;**/.git;**/*.builds;**/*.bat;**/*.iss;**/*.ps1;**/*.pyi;**/*.plist;**/*.cmd"
#excluded_paths: '.github'

25
.github/workflows/greetings.yml vendored Normal file
View File

@@ -0,0 +1,25 @@
name: Greetings
on: [issues, pull_request]
jobs:
greeting:
runs-on: ubuntu-latest
if: github.repository_owner == 'ActivityWatch' # don't run on forks
steps:
- uses: actions/first-interaction@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
issue-message: >
Hi there!
As you're new to this repo, please make sure you've used an appropriate [issue template](https://github.com/ActivityWatch/activitywatch/issues/new/choose) and searched for duplicates (it helps us focus on actual development!).
We'd also like to suggest that you read our [contribution guidelines](https://github.com/ActivityWatch/activitywatch/blob/master/CONTRIBUTING.md) and our [code of conduct](https://github.com/ActivityWatch/activitywatch/blob/master/CODE_OF_CONDUCT.md).
Thanks a bunch for opening your first issue! 🙏
pr-message: >
Congratulations on opening your first pull request to this repo!
We'll get back to you as soon as possible. In the meantime, please make sure you've read our [contribution guidelines](https://github.com/ActivityWatch/activitywatch/blob/master/CONTRIBUTING.md).
Thanks for contributing!

1471
.github/workflows/release.yml vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,25 @@
name: Research feed publisher tests
on:
pull_request:
paths:
- 'scripts/package/publish_research_feed.py'
- 'scripts/tests/test_publish_research_feed.py'
- '.github/workflows/research-feed-publisher-tests.yml'
push:
branches: [master]
paths:
- 'scripts/package/publish_research_feed.py'
- 'scripts/tests/test_publish_research_feed.py'
- '.github/workflows/research-feed-publisher-tests.yml'
permissions:
contents: read
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
with:
python-version: '3.9'
- run: pip install pytest 'semver>=3,<4'
- run: python3 -m pytest scripts/tests/test_publish_research_feed.py -q

175
.github/workflows/test.yml vendored Normal file
View File

@@ -0,0 +1,175 @@
name: Test
on:
#push:
# branches: [ master ]
#pull_request:
# branches: [ master ]
workflow_dispatch:
jobs:
# an integration test designed to catch bugs triggered by updating (database migrations and such)
upgrades:
name: upgrade from ${{ matrix.aw_server_old }} ${{ matrix.aw_server_old_args }} to ${{ matrix.aw_server_new }} ${{ matrix.aw_server_new_args }}
# needs: [build]
#if: startsWith(github.ref, 'refs/tags/v') # only run on tag
runs-on: ubuntu-latest
env:
old_version: 'v0.12.2'
new_version: 'v0.13.1'
strategy:
fail-fast: false
matrix:
aw_server_old: ['aw-server', 'aw-server-rust']
aw_server_new: ['aw-server', 'aw-server-rust']
aw_server_old_args: ['']
aw_server_new_args: ['']
include:
# python, peewee (default)
- aw_server_old: 'aw-server'
aw_server_new: 'aw-server'
# python, sqlite
# FIXME: sqlite broken since aw-server enabled flask multithreading (new default)
- aw_server_old: "aw-server"
aw_server_new: "aw-server"
aw_server_old_args: "--storage sqlite"
aw_server_new_args: "--storage sqlite"
old_version: 'v0.12.2'
new_version: 'v0.13.1'
# python, peewee to sqlite
# FIXME: broken, same thing with sqlite as above
- aw_server_old: "aw-server"
aw_server_new: "aw-server"
aw_server_old_args: "--storage peewee"
aw_server_new_args: "--storage sqlite"
old_version: 'v0.12.2'
new_version: 'v0.13.1'
exclude:
# rust to python, not supported
- aw_server_old: 'aw-server-rust'
aw_server_new: 'aw-server'
steps:
# Will download all artifacts to path
- name: Download build artifacts
if: ${{ env.new_version == 'this' }}
uses: actions/download-artifact@v8
with:
name: builds-Linux-py3.9
path: dist
# Only used during testing, so we don't have to wait for the main build job
- name: Download new ActivityWatch
if: ${{ env.new_version != 'this' }}
run: |
mkdir dist
pushd dist
wget -q https://github.com/ActivityWatch/activitywatch/releases/download/${{ env.new_version }}/activitywatch-${{ env.new_version }}-linux-x86_64.zip
- name: Install new & old ActivityWatch
run: |
pushd dist
# New version
unzip activitywatch-*-linux-x86_64.zip
mv activitywatch/ aw-new
# Old version
wget -q -O aw-old.zip https://github.com/ActivityWatch/activitywatch/releases/download/${{ env.old_version }}/activitywatch-${{ env.old_version }}-linux-x86_64.zip
unzip aw-old.zip
mv activitywatch/ aw-old
- name: Display structure of downloaded files
run: ls -R
working-directory: dist
- name: Run and test old server
run: |
bin=dist/aw-old/${{ matrix.aw_server_old }}/${{ matrix.aw_server_old }}
url="http://localhost:5600"
# Check version
$bin --version || true # due to bug in old aw-server
# Run server and log output
$bin ${{ matrix.aw_server_old_args }} >> log-old.txt 2>&1 &
sleep 5 # wait for startup
# Set server URL
# Get server info
curl "$url/api/0/info" --fail-with-body
# Create bucket
curl -X 'POST' --fail-with-body \
"$url/api/0/buckets/aw-test" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"client": "test",
"type": "test",
"hostname": "test"
}'
# Get buckets
curl "$url/api/0/buckets/" -H 'accept: application/json'
# Send a heartbeat
timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
curl -X 'POST' \
"$url/api/0/buckets/aw-test/heartbeat?pulsetime=0" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"timestamp": "'$timestamp'",
"duration": 0,
"data": {"key": "test value"}
}'
# Give a sec, then kill server process
sleep 1
kill $!
- name: Run and test new server
run: |
bin=dist/aw-new/${{ matrix.aw_server_new }}/${{ matrix.aw_server_new }}
url="http://localhost:5600"
# Check version
$bin --version
# Run server and log output
$bin ${{ matrix.aw_server_new_args }} >> log-new.txt 2>&1 &
sleep 5 # wait for startup
# Get server info
curl "$url/api/0/info"
# Get buckets
curl "$url/api/0/buckets/" -H 'accept: application/json'
# Send a heartbeat
timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
curl -X 'POST' --fail-with-body \
"$url/api/0/buckets/aw-test/heartbeat?pulsetime=60" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"timestamp": "'$timestamp'",
"duration": 0,
"data": {"key": "test value"}
}'
# Give a sec, then kill server process
sleep 1
kill $!
- name: Output logs
if: always()
run: |
cat log-old.txt || true
echo "\n---\n"
cat log-new.txt || true

13
.github/workflows/winget.yml vendored Normal file
View File

@@ -0,0 +1,13 @@
name: Publish to WinGet
on:
release:
types: [released]
jobs:
publish:
runs-on: windows-latest # action can only be run on windows
steps:
- uses: vedantmgoyal2009/winget-releaser@4ffc7888bffd451b357355dc214d43bb9f23917e # v2
with:
identifier: ActivityWatch.ActivityWatch
token: ${{ secrets.GH_TOKEN_WINGET_AUTOUPDATE }}
fork-user: ActivityWatchBot