A Chrome extension that automatically fixes minor UI annoyances in Todoist.
This is a small personal side-project that I'm sharing publicly simply because I see no reason to keep it private. It scratches my own itch with Todoist's UI.
AI-Generated Code: This project was largely produced by artificial intelligence (Claude). No warranty is provided regarding its functionality, security, or fitness for any particular purpose. Use at your own risk.
Unofficial Project: This project has no affiliation with Doist, Todoist, or any of their subsidiaries. It is an independent personal side-project. Todoist® is a registered trademark of Doist Inc.
Todoist's default priority labels (Priorité 1 … Priorité 4) order priorities from highest (1) to lowest (4), which collides with the mental model many people use: urgency × importance. TodoistFix rewrites the labels in place so that the dropdown reads as the Eisenhower matrix:
| Todoist label | Rewritten as | Compact button |
|---|---|---|
| Priorité 1 | Urgent & Important | U+I |
| Priorité 2 | Urgent | Urg |
| Priorité 3 | Important | Imp |
| Priorité 4 | Optionnel | Opt |
The rewrite is purely visual — Todoist's data and API are untouched.
Only the French UI is supported in v1. The compact form (P1 … P4) is rewritten only when it appears as a standalone label, so a task titled "P1 release notes" is not affected.
Since this extension is not published on the Chrome Web Store, you need to install it manually:
-
Clone or download this repository.
-
Open Chrome and navigate to
chrome://extensions/. -
Enable Developer mode (toggle in the top-right corner).
-
Click Load unpacked and select the
todoistfixfolder. -
Reload
app.todoist.com— the extension is now active.
Once installed, the extension works automatically. No configuration needed.
Open the browser console (F12 → Console) and look for [TodoistFix] logs to verify it's running.
The extension uses a MutationObserver on document.body to watch for DOM changes on app.todoist.com. When matching text nodes appear (e.g. Priorité 1), it rewrites their nodeValue in place. The compact form (P1, P2, P3, P4) is rewritten only when the text node's trimmed value matches exactly, to avoid clobbering user content.
<input>, <textarea> and [contenteditable] subtrees are skipped, so typing P1 in a search field or task title is never altered.
A small Playwright test exercises the content script against a local HTML fixture that mimics the Todoist priority dropdown. From the repo root:
pnpm install
pnpm testThe test loads the unpacked extension into a real Chromium instance and asserts that:
Priorité 1..4are rewritten to their Eisenhower equivalents.- Standalone
P1..P4are rewritten toU+I/Urg/Imp/Opt. - A task title
"P1 release notes"is not rewritten. - An input pre-filled with
"P1"is not rewritten.
MIT — see LICENSE.