Provide an overview of your assigned issues on GitHub, GitLab, Gitea and Microsoft Planner
Project description
ToDo Merger
Get a unified overview of all issues and tasks assigned to you across multiple platforms — in one local web dashboard.
Features
- Multi-platform aggregation — pulls assigned issues, merge/pull requests, and tasks from GitHub, one or more GitLab instances, Gitea instances, and local Microsoft Planner exports, all into a single view
- Graceful degradation — if an instance is unreachable (e.g. a company GitLab behind a VPN), the app keeps running and shows cached data for that instance with a warning banner; other services are unaffected. Connectivity is retried automatically on the next cache refresh
- Personal prioritisation — pin, promote, or deprioritise any issue without touching the upstream tracker; rankings are stored locally
- Todo list — mark individual issues as personal todos and filter the view to show only those
- New issue highlighting — issues you haven't seen before are highlighted until you dismiss them
- Private task creation — create new issues directly in a configured private repository (GitHub, GitLab, or Gitea) from within the dashboard
- Configurable display — toggle which metadata columns are shown (labels, milestones, epics, assignees, due dates, refs, …)
- Daemon mode — run as a background process with
--daemon/stop - Fast cache — configurable cache timeout (default 10 minutes) avoids hammering the APIs on every page load; manual refresh available at any time
Installation
pipx (recommended)
pipx installs the app in an isolated environment and keeps it off your system Python.
pip3 install pipx # install pipx if not already present
pipx install todo-merger # install todo-merger
todo-merger will be available in ~/.local/bin (add to $PATH if needed).
To run without installing permanently:
pipx run todo-merger
To upgrade:
pipx upgrade todo-merger
Other methods
pip install todo-merger # plain pip
uv tool install todo-merger # uv
Usage
Please see todo-merger --help for the latest usage instructions. In general, the app is started with:
todo-merger [options] [command]
Open http://localhost:8636 in your browser after starting.
Important options:
| Flag | Description | Default |
|---|---|---|
-c, --config-file |
Path to the config file | ~/.config/todo-merger/config.toml |
-d, --daemon |
Run in the background, logging to a file | — |
-v |
INFO logging | — |
-vv |
DEBUG logging | — |
Important Commands:
| Command | Description |
|---|---|
stop |
Stop a running background instance |
Configuration
On first start, todo-merger creates an empty config file at ~/.config/todo-merger/config.toml. Edit it to add your service credentials.
See DEFAULT_APP_CONFIG in _config.py for all available options and their defaults.
Multiple instances of the same platform are supported — just add more [services.*] sections with unique names.
Unavailable instances
If a service is currently unavailable (e.g. because company VPN is disconnected), todo-merger handles it gracefully:
- App starts without connection — the unreachable instance is skipped and recorded as degraded; a warning banner is shown in the dashboard. Cached data from the last successful fetch is displayed.
- Connection reestablished later — the next cache refresh (or manual reload) automatically retries the login and fetch for the degraded instance. If it succeeds, the warning disappears.
- Connection drops mid-session — the failing instance falls back to its last cached data; all other services continue normally.
No configuration is needed for this behaviour — it is automatic.
License
The main license of this project is the GNU General Public License 3.0, no later version (GPL-3.0-only), Copyright Max Mehl.
Third-party components included under their respective licenses: Pico CSS (MIT), snippets from DB Systel (Apache-2.0).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file todo_merger-1.4.0.tar.gz.
File metadata
- Download URL: todo_merger-1.4.0.tar.gz
- Upload date:
- Size: 748.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fcacc119f81d0ea7292a498ec7d2afccf80e8322778348355e6982e897fa27a3
|
|
| MD5 |
edc8e09811647b2a15fdb826a85d8dec
|
|
| BLAKE2b-256 |
dd3a1465b9499f1667b560892090e782ad456b80f3c94aa5569e8f80603e88f3
|
Provenance
The following attestation bundles were made for todo_merger-1.4.0.tar.gz:
Publisher:
release.yaml on mxmehl/todo-merger
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
todo_merger-1.4.0.tar.gz -
Subject digest:
fcacc119f81d0ea7292a498ec7d2afccf80e8322778348355e6982e897fa27a3 - Sigstore transparency entry: 1356414181
- Sigstore integration time:
-
Permalink:
mxmehl/todo-merger@ac35ab40c0071ded4b7508cc26db352889256fe1 -
Branch / Tag:
refs/tags/v1.4.0 - Owner: https://github.com/mxmehl
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@ac35ab40c0071ded4b7508cc26db352889256fe1 -
Trigger Event:
release
-
Statement type:
File details
Details for the file todo_merger-1.4.0-py3-none-any.whl.
File metadata
- Download URL: todo_merger-1.4.0-py3-none-any.whl
- Upload date:
- Size: 756.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1abb69529aa177515f8af08443ce878e97216d67566922e63935b712b96d0b99
|
|
| MD5 |
49d0bf165dcfdb615590d435fe9d3f79
|
|
| BLAKE2b-256 |
44286606e6db9189fcde39ef1366ff8c9eee558ab3a432ba1a577d3695b82ab1
|
Provenance
The following attestation bundles were made for todo_merger-1.4.0-py3-none-any.whl:
Publisher:
release.yaml on mxmehl/todo-merger
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
todo_merger-1.4.0-py3-none-any.whl -
Subject digest:
1abb69529aa177515f8af08443ce878e97216d67566922e63935b712b96d0b99 - Sigstore transparency entry: 1356414230
- Sigstore integration time:
-
Permalink:
mxmehl/todo-merger@ac35ab40c0071ded4b7508cc26db352889256fe1 -
Branch / Tag:
refs/tags/v1.4.0 - Owner: https://github.com/mxmehl
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@ac35ab40c0071ded4b7508cc26db352889256fe1 -
Trigger Event:
release
-
Statement type: