hav Task List is a VS Code extension that scans workspace files for TODO-style task tags and shows them in a dedicated tree view.
Scan workspace files for task tags, view matches by folder, tag, or flat list, and jump straight to the source line.
- Features
- Screenshots
- Default Tags
- Commands
- VS Code Settings
- Rule Format
- Ignore Comments
- Build From Source
- Contributing
- License
- Scans workspace files for
TODO,FIXME,HACK,BUG,NOTE, and custom regex tags - Shows tasks in a dedicated hav Task List Activity Bar view
- Shows tasks by folder/file hierarchy, by tag, or as a flat list
- Sorts task entries by file position, severity, tag, or task text
- Filters the task tree without changing diagnostics or scan results
- Supports ignore comments for intentional local exceptions
- Tests configured or custom rules against the active editor
- Provides tree actions for refresh, task navigation, grouping, sorting, filtering, expand, and collapse
- Opens tasks directly at the matching source range
- Shows optional diagnostics in the Problems view
- Highlights task tags in visible editors using rule colors
- Shows task counts in the Status Bar
- Automatically rescans when files or settings change
- Supports English and German UI strings
Task list workflow with tree, editor highlights, Problems entries, and Go to Task.
Editor highlights with matching Problems entries.
| Rule | Severity | Color | Purpose |
|---|---|---|---|
todo |
info | charts.blue |
General follow-up work |
fixme |
warning | charts.yellow |
Known code or content to fix |
hack |
warning | charts.orange |
Temporary or suspicious code |
bug |
error | charts.red |
Known defect marker |
note |
info | charts.green |
Useful implementation note |
The default rules scan common code, config, script, and Markdown-like files. Their default file filter matches files ending in .js, .jsx, .ts, .tsx, .vue, .svelte, .c, .cc, .cpp, .cxx, .h, .hpp, .hh, .hxx, .cs, .csx, .py, .rb, .php, .go, .rs, .java, .kt, .kts, .swift, .m, .mm, .scala, .sh, .bash, .zsh, .fish, .ps1, .psm1, .sql, .html, .css, .scss, .less, .md, .mdx, .json, .jsonc, .yaml, .yml, .toml, .ini, .cmake, .gradle, or .dockerfile.
Default rules are meant for real task entries in code comments, scripts, and Markdown lists. Plain references to tag names are ignored.
Files larger than havTaskList.maxFileSizeKb, files containing null bytes, and common generated folders are skipped by default.
hav Task List: Refresh Taskshav Task List: Go to Taskhav Task List: Group by Filehav Task List: Group by Taghav Task List: Show Flat Viewhav Task List: Sort Treehav Task List: Filter Treehav Task List: Clear Tree Filterhav Task List: Expand Treehav Task List: Collapse Treehav Task List: Test Rule
The Activity Bar view also includes compact title bar buttons for refresh, task navigation, grouping, sorting, filtering, expand, and collapse.
{
"havTaskList.autoScan": true,
"havTaskList.debounceMs": 250,
"havTaskList.groupBy": "file",
"havTaskList.sortBy": "filePosition",
"havTaskList.ignoreFileDirectiveTopLines": 50,
"havTaskList.maxFileSizeKb": 512,
"havTaskList.showDiagnostics": true,
"havTaskList.showEditorHighlights": true,
"havTaskList.includeGlobs": ["**/*"],
"havTaskList.excludeGlobs": [
"**/.git/**",
"**/.hg/**",
"**/.svn/**",
"**/node_modules/**",
"**/bower_components/**",
"**/dist/**",
"**/out/**",
"**/build/**",
"**/coverage/**",
"**/.next/**",
"**/.nuxt/**",
"**/.turbo/**"
],
"havTaskList.rules": [
{
"id": "todo",
"label": "TODO",
"pattern": "(?:^|\\s)(?://|#|<!--|/\\*|\\*|--|;|-)\\s*\\bTODO\\b(?::\\s*|\\s+)(.*)",
"severity": "info",
"color": "charts.blue",
"filePattern": "\\.(ts|tsx|js|jsx|md)$"
}
]
}interface havTaskListRule {
id: string;
label?: string;
pattern: string;
severity: "off" | "info" | "warning" | "error";
color?: string;
filePattern?: string;
}havTaskList.groupBy supports file, tag, and flat.
havTaskList.sortBy supports filePosition, severity, tag, and text.
pattern and filePattern are JavaScript regular expressions matched case-insensitively. filePattern is tested against the workspace-relative file path. The first capture group in pattern is used as the task text when present. severity: "off" disables a rule. color is a VS Code theme color ID used for tree icons and editor tag highlights, such as charts.blue, charts.orange, or charts.red.
Use ignore comments when a task tag is intentional text and should not appear in the tree, Problems view, editor highlights, Status Bar count, or Go to Task list.
Ignore one task on the same line:
// TODO: This is example text only. // hav-task-list-ignore-lineIgnore the next line:
// hav-task-list-ignore-next-line
// TODO: This documented example should not be reported.Ignore the whole file:
// hav-task-list-ignore-file
// TODO: All task tags in this file are ignored.Ignore directives must be inside comment-like lines, such as //, #, <!--, /*, *, --, or ;. hav-task-list-ignore-file is only honored in the first havTaskList.ignoreFileDirectiveTopLines lines. Set that value to 0 to disable file-level ignore directives.
git clone https://github.com/Havoc7891/hav-task-list.git
cd hav-task-list
npm install
npm run compile
npm run packageNOTE: The VSIX package is written to the repository root.
npm testnpm test compiles the extension and runs the unit tests for scanner ignore comments and task sorting.
Thank you for your interest! Suggestions for features and bug reports are always welcome via issues.
To maintain a consistent design and quality for this extension, changes are implemented by the maintainer rather than via direct pull requests.
This extension is licensed under the MIT License.

