TODOS##
The best way to save, view, and manage your tasks without leaving your code.
TODOS## scans your workspace for Conventional Commits-style task tags and organizes them into a grouped Tree View in the VS Code Activity Bar. It supports standard text files as well as Jupyter Notebooks (.ipynb), automatically cleaning up JSON artifacts so your tasks look clean.
✨ Features
- Activity Bar Integration: View all tasks in a dedicated explorer panel.
- Smart Grouping: Tasks are automatically grouped into categorized folders (e.g., Features, Bug Fixes, Refactors) for easier navigation.
- Conventional Types: Distinguish between tasks using standard keywords like
feat, fix, docs, refactor, and more.
- Scope Support: Add optional context to your tasks using parentheses (e.g.,
feat(ui)::).
- Clean Syntax: Uses a double-colon
:: delimiter to ensure tasks are explicitly marked and never confused with standard text, comments, or actual git commits.
- Urgency Levels: Append
! to any tag (e.g., fix!::) to mark it as Important. This highlights the item in red with an error color.
- Editor Completion: Type
:: in a comment to choose a todo type, scope, or important variant.
- Due Dates: Add
due:YYYY-MM-DD to track deadlines and identify overdue items.
- Todo Statistics: The TODO panel badge shows the total count; its tooltip includes type, important, and overdue counts.
- Sorting: Sort todos alphabetically or by due date.
- Flexible Grouping: Group todos by type or display them in one flat list.
- Direct Deletion: Delete todos from the panel context menu.
- Ignore Support: Exclude specific files or folders using a
.todoignore file.
- Auto-Refresh: The list updates automatically when you save a file or type a new tag.
- Status Statistics: The status bar shows the total number of todos, counts by type, important items, and overdue items.
🚀 Usage
Simply add comments to your code using the specific Conventional Commits syntax followed by a double colon ::.
Format: keyword(scope)!:: Your description
Optional due dates use the due:YYYY-MM-DD marker:
// feat!:: Replace the login flow due:2026-12-31
Editor Completion
Type :: in a comment and select a suggested variant:
feat::
feat(scope)::
feat!::
feat(scope)!::
Scoped suggestions include an editable scope placeholder.
Supported Keywords
| Keyword |
Icon |
Description |
| feat |
✨ |
A new feature or addition. |
| fix |
🐛 |
Bug fixes or broken code. |
| docs |
📚 |
Changes to the documentation. |
| style |
🎨 |
Formatting, missing semi-colons, etc; no production code change. |
| refactor |
🛠️ |
Refactoring production code (e.g., renaming a variable). |
| test |
🧪 |
Adding missing tests, refactoring tests; no production code change. |
| chore |
⚙️ |
Changes that do not relate to a fix/feature and don't modify src/test files. |
| perf |
⚡ |
Performance improvements. |
| ci |
🖥️ |
Continuous integration related changes. |
| build |
📦 |
Changes that affect the build system or external dependencies. |
Mark as Important
Add an exclamation mark ! immediately after the keyword (or scope) to mark it as urgent. These items will appear Red in the tree view.
Examples
// feat(auth):: Implement Google OAuth login
// fix!:: Critical memory leak in the main loop causing crash
// refactor(api):: Extract fetch logic to a separate service
// style:: Format document according to Prettier rules
// remove:: Deprecated legacy code (Use chore or refactor for this now)
In Python / Jupyter:
# perf(db):: Optimize query execution time
# test:: Add unit tests for the user model
⚙️ Configuration (.todoignore)
By default, the extension ignores node_modules. To ignore other files or directories, create a .todoignore file in the root of your workspace.
The syntax is similar to .gitignore.
Example .todoignore:
# Ignore build directories
dist/*
build/*
# Ignore specific files
legacy_script.js
temp_notes.txt
⌨️ Commands
myTodoView.refresh: Manually triggers a scan of the workspace for TODOs.
Todos##: Show Todo Completions: Manually opens todo completions.
Todos##: Insert Todo: Opens a picker for inserting a todo.
Delete Todo: Deletes the selected todo from the source file.
Sort Todos Alphabetically: Sorts todos by description.
Sort Todos by Due Date: Sorts dated todos first, then undated todos.
Toggle Todo Grouping: Switches between type groups and a flat list.
Sorting and grouping controls are available from the TODO view title menu. The grouping preference is remembered per workspace.
Enjoying the extension? Feel free to contribute or report issues on GitHub!