✅ Todo Checklist for VS Code
A simple and powerful Todo Checklist extension for VS Code, allowing you to manage tasks directly from the Activity Bar Sidebar.
✨ Features
- 📌 Add tasks quickly (
Ctrl + Shift + T)
- ✅ Toggle tasks via checkbox
- 🗑 Delete tasks from context menu
- 🔥 Priority support:
- High (red icon)
- Medium (yellow icon)
- Low (green icon)
- 🏷 Add tags like
@work, @home
- 💾 Auto-save tasks in global storage
- 🎨 Works in Dark & Light themes
- ⚡ Fast, lightweight, no runtime dependencies
- 🔍 Enhanced TODO Scanner:
- Lazy scan with incremental updates: Results appear in real-time as files are scanned
- Re-scan button: Manual refresh button (🔄) in TODO Scanner view to trigger full re-scan
- Shows partial results while scanning and safely discards canceled scans
- Smart pattern matching: Only scans keywords with
@ prefix, : suffix, or exact whole word "TODO"
- Detects:
@TODO, TODO:, TODO (whole word), @FIXME, FIXME:, @CHECK, CHECK:, and more
- Smart debouncing to prevent excessive scanning
- File, result, and file-size limits protect the extension host in large workspaces
- 📋 TODO Scope Configuration: Configure include/exclude patterns for TODO scanning
- Edit individual patterns directly from TODO Scope view
- Right-click on any pattern to edit or delete
🚀 Usage
- Open VS Code
- Open the Activity Bar, click on Todo Checklist icon
- Add a new task:
- Click ➕ Add Task on top bar
- Or use
Ctrl + Shift + T
- Toggle or delete tasks using the context menu
🔑 Commands
| Command |
Shortcut |
Description |
Todo Checklist: Add Task |
Ctrl + Shift + T |
Add a new task |
| Toggle Task |
— |
Toggle checkbox state |
| Delete Task |
— |
Remove a task |
🛠 Requirements
- VS Code v1.75.0 or later
- Works on Windows, macOS, Linux, and WSL
⚙ Settings
Task Management
Tasks are stored in global storage and persist across sessions.
TODO Scanner Configuration
Configure TODO scanning patterns in VS Code settings:
todoChecklist.todo.include: Glob patterns to include when scanning TODOs (default: ["**/*"])
todoChecklist.todo.exclude: Glob patterns to exclude from TODO scanning (default: ["**/{node_modules,.git,out,dist,build,.next,.yarn,.vscode}/**", "**/*.log", "**/*.md"])
todoChecklist.todo.maxFiles: Maximum files inspected per scan (default: 5000)
todoChecklist.todo.maxFileSizeKb: Maximum size of an inspected file in KiB (default: 1024)
todoChecklist.todo.maxResults: Maximum TODO items shown per scan (default: 1000)
All defaults are configurable. For example, remove **/*.md from todoChecklist.todo.exclude to scan Markdown files.
Example Configuration
{
"todoChecklist.todo.include": ["src/**/*.ts", "src/**/*.js", "**/*.md"],
"todoChecklist.todo.exclude": ["**/node_modules/**", "**/dist/**", "**/*.test.ts"]
}
Supported TODO Patterns
The scanner uses smart pattern matching to detect TODO comments. It only matches:
- Keywords with
@ prefix: @TODO, @FIXME, @CHECK, @NOTE, @HACK, @XXX, @BUG, @FIX, @TASK, @ISSUE, @TBD, @OPTIMIZE, @REFACTOR, @REVIEW
- Keywords with
: suffix: TODO:, FIXME:, CHECK:, NOTE:, HACK:, XXX:, BUG:, FIX:, TASK:, ISSUE:, TBD:, OPTIMIZE:, REFACTOR:, REVIEW: (with optional space before :)
- Exact whole word "TODO":
TODO as a complete word (match whole word like VS Code search)
Examples that will be detected:
// @TODO fix this
// TODO: important task
// TODO : with space
/* TODO fix bug */
# @FIXME: broken code
Examples that will NOT be detected:
function todoSomething() - "todo" is part of a word
const check = true - "check" is code, not a comment keyword
The scanner is text-based, not language-parser based. A standalone TODO in a string or code expression can still be reported; click the result to inspect its context.
📝 TODO Scanner
The extension includes a powerful TODO scanner that:
- Lazy scan: Displays results incrementally as files are scanned (no need to wait for complete scan)
- Re-scan button: Click the refresh button (🔄) in the TODO Scanner view title to manually trigger a full re-scan
- Scans matching workspace files for TODO text
- Displays all found TODOs in the sidebar with real-time updates
- Automatically refreshes when files change (with smart debouncing - 500ms delay)
- Allows you to configure which files to scan via include/exclude patterns
- Pattern editing: Right-click on any pattern in TODO Scope view to edit or delete
- Click on any TODO item to jump to its location in the code
- Performance optimized: bounded file/result sizes, 10-file concurrency, and 500ms refresh debounce
| |