A Chrome extension that seamlessly integrates a Pomodoro timer directly into Todoist's interface, helping you stay focused and productive while managing your tasks.
The Pomodoro Technique is a time management method developed by Francesco Cirillo in the late 1980s. It uses a timer to break work into intervals, traditionally 25 minutes in length, separated by short breaks. The technique helps improve focus, reduce mental fatigue, and maintain consistent productivity throughout the day.
- Choose a task from your Todoist list
- Work for 25 minutes (one "Pomodoro") with complete focus
- Take a 5-minute break to rest and recharge
- Repeat the cycle - after 4 Pomodoros, take a longer 15-minute break
- Seamless Integration: Timer widget integrates directly into Todoist's sidebar
- Click-to-Start: Simply click any task to start a focused work session
- Visual Feedback: Selected tasks are highlighted with progress indicators
- Smart Notifications: Desktop notifications for timer completion with break suggestions
- Persistent State: Timer continues running across browser sessions
- Customizable Settings: Adjust work duration, break lengths, and session intervals
- Task Statistics: Track daily and total Pomodoro completions per task
- Dark Mode Support: Automatically adapts to your system theme
-
Open Chrome Extensions
- Go to
chrome://extensions/ - Toggle on "Developer mode" (top right)
- Go to
-
Load Extension
- Click "Load unpacked"
- Select this
todoist-pomofolder - Extension should appear in your list
-
Test Installation
- Go to app.todoist.com
- Timer widget appears in top-right corner immediately! π
- Select a task from dropdown and click "Start"
- Timer widget appears automatically in top-right corner
- Select task from dropdown (first task selected by default)
- Click "Start" to begin 25-minute work session
- Single clicks work normally in Todoist (task details, navigation)
- Click any task in Todoist β Timer starts with that task name
- Works as before for quick timer starting
- Click extension icon in toolbar
- Click "25 min Work" to start a generic work session
- Click "5 min Break" or "15 min Break" for breaks
- Work session completes β Hear beep sound π + modal
- Choose break β "Take short break (5 min)" or "Take long break (15 min)"
- Break completes β Notification + returns to idle with task ready
- Continue working β Starts fresh 25-minute work session
- Extracts real task names from Todoist (e.g., "write email", "review proposal")
- Prevents accidental activation on buttons, checkboxes, and interactive elements
- Works across all Todoist views - Today, Upcoming, Projects, Labels, Filters
- Individual task statistics - Each task remembers its own Pomodoro count
- Daily and total counters - See both today's progress and all-time totals
- Task history - Extension remembers every task you've worked on
- Project integration - Shows which project each task belongs to
β WILL Start Timer:
- Clicking on task name/content
- Clicking empty space around task text
- Clicking task background area
β WON'T Start Timer:
- Task completion checkboxes
- Edit/more menu buttons (β―)
- Priority indicators (π΄π‘βͺ)
- Due date elements
- Project/label tags
- Any interactive buttons
βββββββββββββββββββββββββββ
β Write Email β
β β
β β 15:30 β
β β
β [Pause] [Stop] β
β β
β work Today: 2 Total: 8β
βββββββββββββββββββββββββββ
βββββββββββββββββββββββββββ
β π
Pomodoro β
βββββββββββββββββββββββββββ€
β Write Email β
β work β’ 2 today, 8 total β
β β
β β 15:30 β
β β
β [Pause] [Stop] β
βββββββββββββββββββββββββββ€
β Recent Tasks β
β β’ Write Email 2β8 β
β β’ Review Docs 1β5 β
β β’ Team Meeting 0β3 β
βββββββββββββββββββββββββββ€
β β Quick Start β
β [25min Work] [5min Break]β
β [15min Break] β
βββββββββββββββββββββββββββ
Click the extension icon (π ) in your toolbar:
- Work Duration: Default 25 minutes
- Short Break: Default 5 minutes
- Long Break: Default 15 minutes
- Sessions until long break: Default 4
- Click "Save" to apply changes
Problem: Timer doesn't appear when clicking tasks Solutions:
- Refresh the Todoist page (
Ctrl+RorCmd+R) - Make sure you're on
app.todoist.com(nottodoist.com) - Check that the extension is enabled in
chrome://extensions/ - Try disabling and re-enabling the extension
Problem: Extension popup shows "Open Todoist" Solutions:
- Navigate to
app.todoist.comin the current tab - Make sure you're logged into Todoist
- Refresh the page if needed
Problem: Timer seems inaccurate or jumps Solutions:
- This can happen if your computer goes to sleep
- The timer will auto-correct when you return
- For best accuracy, keep your computer awake during sessions
Problem: No notifications when timer completes Solutions:
- Check Chrome notification permissions:
- Go to
chrome://settings/content/notifications - Make sure notifications are allowed
- Check that the extension has notification permission
- Go to
- Check your system notification settings
- Try clicking the extension icon to see if timer completed
- Node.js 16+
- Chrome browser (for testing)
- Git
git clone <repository-url>
cd todoist-pomo
npm install# Run all tests
npm test
# Run tests in watch mode
npm run test:watch
# Generate coverage report
npm run test:coverage# Run linter
npm run lint
# Fix linting issues automatically
npm run lint:fix
# Validate everything (lint + test)
npm run validate- Make your changes
- Reload the extension in
chrome://extensions/ - Navigate to Todoist
- Test your changes in the browser
todoist-pomo/
βββ manifest.json # Extension configuration
βββ src/
β βββ content/ # Scripts injected into Todoist
β β βββ content.js # Main content script
β β βββ content.css # Injected styles
β βββ popup/ # Extension popup UI
β β βββ popup.html # Popup interface
β β βββ popup.js # Popup logic
β β βββ popup.css # Popup styles
β βββ background/ # Service worker
β βββ background.js # Background script
βββ assets/ # Icons and images
βββ tests/ # Unit tests
βββ docs/ # Documentation
- Fork the repository
- Create a feature branch
- Make your changes with appropriate tests
- Ensure all tests pass (
npm run validate) - Submit a pull request
Use conventional commit format:
feat(timer): add pause/resume functionality
fix(ui): resolve timer display issue in dark mode
docs(readme): update installation instructions
test(timer): add tests for timer completion
- Google Chrome 88+
- Microsoft Edge 88+
- Brave Browser (latest)
- Opera (latest)
- Firefox: Not supported (uses different extension system)
- Safari: Not supported (uses different extension system)
This extension:
- Only runs on app.todoist.com
- Stores timer data locally in your browser
- Does not collect or transmit personal data
- Does not access your Todoist account data
- No external API calls or tracking
- Timer settings (durations, preferences)
- Current timer state (task name, remaining time)
- Session completion counts
- Locally in your browser only
- Settings sync across Chrome browsers if you're signed in
- No data is sent to external servers
MIT License - see LICENSE file for details
- Check this troubleshooting section first
- Try refreshing the Todoist page
- Disable and re-enable the extension
If you encounter issues:
- Note your Chrome version (
chrome://version/) - Note the exact steps that caused the problem
- Check the browser console for errors (
F12β Console tab) - Report the issue with these details
Simple, focused, and effective! π―