{"id":44481621,"url":"https://github.com/maxlorenz/todoist-pomodoro-extension","last_synced_at":"2026-02-12T23:35:01.693Z","repository":{"id":308999603,"uuid":"1034842411","full_name":"maxlorenz/todoist-pomodoro-extension","owner":"maxlorenz","description":"Simple Chrome extension which adds a pomodoro timer to the Todoist website","archived":false,"fork":false,"pushed_at":"2025-08-10T02:33:08.000Z","size":9302,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-01-28T18:59:39.729Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maxlorenz.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-09T05:03:32.000Z","updated_at":"2025-08-10T02:33:09.000Z","dependencies_parsed_at":"2025-08-09T07:12:00.827Z","dependency_job_id":"1db2f820-8b70-4928-b7ba-5a4db04e4d19","html_url":"https://github.com/maxlorenz/todoist-pomodoro-extension","commit_stats":null,"previous_names":["maxlorenz/todoist-pomodoro-extension"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/maxlorenz/todoist-pomodoro-extension","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxlorenz%2Ftodoist-pomodoro-extension","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxlorenz%2Ftodoist-pomodoro-extension/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxlorenz%2Ftodoist-pomodoro-extension/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxlorenz%2Ftodoist-pomodoro-extension/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maxlorenz","download_url":"https://codeload.github.com/maxlorenz/todoist-pomodoro-extension/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxlorenz%2Ftodoist-pomodoro-extension/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29386224,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-12T22:07:52.078Z","status":"ssl_error","status_checked_at":"2026-02-12T22:07:49.026Z","response_time":55,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-12T23:35:01.210Z","updated_at":"2026-02-12T23:35:01.688Z","avatar_url":"https://github.com/maxlorenz.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Todoist Pomodoro Timer Extension\n\nA Chrome extension that seamlessly integrates a Pomodoro timer directly into Todoist's interface, helping you stay focused and productive while managing your tasks.\n\n![Extension Demo](assets/icon128.png)\n\n\u003cimg width=\"458\" height=\"203\" alt=\"image\" src=\"https://github.com/user-attachments/assets/e4a4db9b-ff37-4bf0-a24a-23be8aedcf8f\" /\u003e\n\u003cimg width=\"207\" height=\"338\" alt=\"image\" src=\"https://github.com/user-attachments/assets/041ba140-b7c3-46af-b0fe-ac14b749423f\" /\u003e\n\n## 🍅 What is the Pomodoro Technique?\n\nThe 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.\n\n### How it works:\n1. **Choose a task** from your Todoist list\n2. **Work for 25 minutes** (one \"Pomodoro\") with complete focus\n3. **Take a 5-minute break** to rest and recharge\n4. **Repeat the cycle** - after 4 Pomodoros, take a longer 15-minute break\n\n## ✨ Features\n\n- **Seamless Integration**: Timer widget integrates directly into Todoist's sidebar\n- **Click-to-Start**: Simply click any task to start a focused work session\n- **Visual Feedback**: Selected tasks are highlighted with progress indicators\n- **Smart Notifications**: Desktop notifications for timer completion with break suggestions\n- **Persistent State**: Timer continues running across browser sessions\n- **Customizable Settings**: Adjust work duration, break lengths, and session intervals\n- **Task Statistics**: Track daily and total Pomodoro completions per task\n- **Dark Mode Support**: Automatically adapts to your system theme\n\n## 🚀 Quick Start (2 minutes)\n\n### Installation\n\n1. **Open Chrome Extensions**\n   - Go to `chrome://extensions/`\n   - Toggle on \"Developer mode\" (top right)\n\n2. **Load Extension**\n   - Click \"Load unpacked\"\n   - Select this `todoist-pomo` folder\n   - Extension should appear in your list\n\n3. **Test Installation**\n   - Go to [app.todoist.com](https://app.todoist.com)\n   - Timer widget appears in top-right corner immediately! 🎉\n   - Select a task from dropdown and click \"Start\"\n\n### How to Use\n\n#### Method 1: Use Task Dropdown (Recommended)\n- **Timer widget appears** automatically in top-right corner\n- **Select task** from dropdown (first task selected by default)\n- **Click \"Start\"** to begin 25-minute work session\n- **Single clicks work normally** in Todoist (task details, navigation)\n\n#### Method 2: Click Tasks Directly\n- **Click any task** in Todoist → Timer starts with that task name\n- **Works as before** for quick timer starting\n\n#### Method 3: Use Extension Popup\n- **Click extension icon** in toolbar\n- **Click \"25 min Work\"** to start a generic work session\n- **Click \"5 min Break\"** or \"15 min Break\" for breaks\n\n### Work/Break Cycles\n- **Work session completes** → Hear beep sound 🔊 + modal\n- **Choose break** → \"Take short break (5 min)\" or \"Take long break (15 min)\"\n- **Break completes** → Notification + returns to idle with task ready\n- **Continue working** → Starts fresh 25-minute work session\n\n## 🎯 Smart Task Integration\n\n### Intelligent Task Detection\n- **Extracts real task names** from Todoist (e.g., \"write email\", \"review proposal\")\n- **Prevents accidental activation** on buttons, checkboxes, and interactive elements\n- **Works across all Todoist views** - Today, Upcoming, Projects, Labels, Filters\n\n### Per-Task Pomodoro Tracking\n- **Individual task statistics** - Each task remembers its own Pomodoro count\n- **Daily and total counters** - See both today's progress and all-time totals\n- **Task history** - Extension remembers every task you've worked on\n- **Project integration** - Shows which project each task belongs to\n\n### Smart Click Behavior\n\n**✅ WILL Start Timer:**\n- Clicking on task name/content\n- Clicking empty space around task text\n- Clicking task background area\n\n**❌ WON'T Start Timer:**\n- Task completion checkboxes\n- Edit/more menu buttons (⋯)\n- Priority indicators (🔴🟡⚪)\n- Due date elements\n- Project/label tags\n- Any interactive buttons\n\n## 🎨 User Interface\n\n### Timer Widget (Embedded in Todoist):\n```\n┌─────────────────────────┐\n│     Write Email         │\n│                         │\n│    ⭕ 15:30             │\n│                         │\n│  [Pause]    [Stop]     │\n│                         │\n│ work  Today: 2  Total: 8│\n└─────────────────────────┘\n```\n\n### Extension Popup:\n```\n┌─────────────────────────┐\n│    🍅 Pomodoro          │\n├─────────────────────────┤\n│ Write Email             │\n│ work • 2 today, 8 total │\n│                         │\n│    ⭕ 15:30             │\n│                         │\n│  [Pause]    [Stop]     │\n├─────────────────────────┤\n│ Recent Tasks            │\n│ • Write Email    2│8    │\n│ • Review Docs    1│5    │\n│ • Team Meeting   0│3    │\n├─────────────────────────┤\n│ │ Quick Start             │\n│ [25min Work] [5min Break]│\n│     [15min Break]       │\n└─────────────────────────┘\n```\n\n## 🔧 Customize Settings\n\nClick the extension icon (🍅) in your toolbar:\n- **Work Duration**: Default 25 minutes\n- **Short Break**: Default 5 minutes  \n- **Long Break**: Default 15 minutes\n- **Sessions until long break**: Default 4\n- **Click \"Save\"** to apply changes\n\n## 🐛 Troubleshooting\n\n### Extension Not Working\n\n**Problem**: Timer doesn't appear when clicking tasks\n**Solutions**:\n1. Refresh the Todoist page (`Ctrl+R` or `Cmd+R`)\n2. Make sure you're on `app.todoist.com` (not `todoist.com`)\n3. Check that the extension is enabled in `chrome://extensions/`\n4. Try disabling and re-enabling the extension\n\n**Problem**: Extension popup shows \"Open Todoist\"\n**Solutions**:\n1. Navigate to `app.todoist.com` in the current tab\n2. Make sure you're logged into Todoist\n3. Refresh the page if needed\n\n### Timer Issues\n\n**Problem**: Timer seems inaccurate or jumps\n**Solutions**:\n1. This can happen if your computer goes to sleep\n2. The timer will auto-correct when you return\n3. For best accuracy, keep your computer awake during sessions\n\n**Problem**: No notifications when timer completes\n**Solutions**:\n1. Check Chrome notification permissions:\n   - Go to `chrome://settings/content/notifications`\n   - Make sure notifications are allowed\n   - Check that the extension has notification permission\n2. Check your system notification settings\n3. Try clicking the extension icon to see if timer completed\n\n## 🏗️ Development\n\n### Prerequisites\n- Node.js 16+ \n- Chrome browser (for testing)\n- Git\n\n### Setup\n```bash\ngit clone \u003crepository-url\u003e\ncd todoist-pomo\nnpm install\n```\n\n### Running Tests\n```bash\n# Run all tests\nnpm test\n\n# Run tests in watch mode\nnpm run test:watch\n\n# Generate coverage report\nnpm run test:coverage\n```\n\n### Code Quality\n```bash\n# Run linter\nnpm run lint\n\n# Fix linting issues automatically\nnpm run lint:fix\n\n# Validate everything (lint + test)\nnpm run validate\n```\n\n### Testing the Extension\n1. Make your changes\n2. Reload the extension in `chrome://extensions/`\n3. Navigate to [Todoist](https://todoist.com)\n4. Test your changes in the browser\n\n## 📊 Project Structure\n\n```\ntodoist-pomo/\n├── manifest.json           # Extension configuration\n├── src/\n│   ├── content/           # Scripts injected into Todoist\n│   │   ├── content.js     # Main content script\n│   │   └── content.css    # Injected styles\n│   ├── popup/             # Extension popup UI\n│   │   ├── popup.html     # Popup interface\n│   │   ├── popup.js       # Popup logic\n│   │   └── popup.css      # Popup styles\n│   └── background/        # Service worker\n│       └── background.js  # Background script\n├── assets/                # Icons and images\n├── tests/                 # Unit tests\n└── docs/                  # Documentation\n```\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes with appropriate tests\n4. Ensure all tests pass (`npm run validate`)\n5. Submit a pull request\n\n### Commit Message Guidelines\n\nUse conventional commit format:\n```\nfeat(timer): add pause/resume functionality\nfix(ui): resolve timer display issue in dark mode\ndocs(readme): update installation instructions\ntest(timer): add tests for timer completion\n```\n\n## 🌐 Browser Compatibility\n\n### Fully Supported\n- Google Chrome 88+\n- Microsoft Edge 88+\n- Brave Browser (latest)\n- Opera (latest)\n\n### Limited Support\n- Firefox: Not supported (uses different extension system)\n- Safari: Not supported (uses different extension system)\n\n## 🔒 Privacy \u0026 Security\n\nThis extension:\n- Only runs on app.todoist.com\n- Stores timer data locally in your browser\n- Does not collect or transmit personal data\n- Does not access your Todoist account data\n- No external API calls or tracking\n\n### What Data is Stored\n- Timer settings (durations, preferences)\n- Current timer state (task name, remaining time)\n- Session completion counts\n\n### Where Data is Stored\n- Locally in your browser only\n- Settings sync across Chrome browsers if you're signed in\n- No data is sent to external servers\n\n## 📄 License\n\nMIT License - see LICENSE file for details\n\n## 🆘 Getting Help\n\n### Common Issues\n- Check this troubleshooting section first\n- Try refreshing the Todoist page\n- Disable and re-enable the extension\n\n### Reporting Bugs\nIf you encounter issues:\n1. Note your Chrome version (`chrome://version/`)\n2. Note the exact steps that caused the problem\n3. Check the browser console for errors (`F12` → Console tab)\n4. Report the issue with these details\n\n---\n\n**Simple, focused, and effective! 🎯**","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxlorenz%2Ftodoist-pomodoro-extension","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaxlorenz%2Ftodoist-pomodoro-extension","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxlorenz%2Ftodoist-pomodoro-extension/lists"}