Todoey
A lightweight VS Code extension for task management designed specifically for developers working on small projects. Provides frictionless task management through a TODO.md file with seamless semantic-release integration for changelog generation and versioning.
Features
- TODO.md-based task management - Human-readable, git-friendly task format
- Work-in-Progress (WIP) tracking - Focus on one task at a time
- Rich metadata support - Tags, mentions, estimates, due dates, and ticket IDs
- Semantic-release integration - Automated conventional commits and changelog generation
- VS Code native integration - Tree view, commands, and status bar
- CI/CD compatible
- Track unreleased tasks - Generate a list of completed but unreleased tasks directly from VS Code
CI/CD Setup
The project includes automated semantic-release integration for version management and changelog generation.
Required CI/CD Variables:
GitLab (Settings → CI/CD → Variables):
GITLAB_TOKEN
: Personal Access Token with write_repository
scope
CI_PUSH_TOKEN
: Same token (for automated version commits)
GitHub (Settings → Secrets and variables → Actions):
GITHUB_TOKEN
: Personal Access Token with repo
scope
GH_TOKEN
: Same token (for automated version commits)
Create Personal Access Token:
GitLab:
- Go to GitLab → Preferences → Access Tokens
- Create token with
write_repository
and read_repository
scopes
- Add to project CI/CD variables (make sure to check "Mask variable")
GitHub:
- Go to GitHub → Settings → Developer settings → Personal access tokens
- Create token with
repo
scope (full repository access)
- Add to repository secrets
VS Code Marketplace (for VSCE_TOKEN
):
Open VSX Registry (for OPEN_VSX_TOKEN
):
Automated Release Process:
- Push conventional commits to
main
branch
- CI automatically runs tests and build
- Semantic-release analyzes commits and:
- Updates
package.json
version
- Generates
CHANGELOG.md
entries
- Creates GitLab release with tags
- Commits version changes back to repository
Conventional Commit Types
feat:
→ Minor version bump (new features)
fix:
→ Patch version bump (bug fixes)
feat!:
or BREAKING CHANGE:
→ Major version bump
chore:
, docs:
, test:
→ No version bump
Development
Prerequisites
- Node.js 18+
- npm (recommended)
Setup
# Install dependencies
npm install
# Start development with watch mode
npm run dev
# Build extension
npm run build
# Run unit tests
npm test
# Run manual tests (for development/debugging)
npm run test:manual
# Package extension
npm run package
Testing
The project includes comprehensive testing at multiple levels:
Unit Tests
Automated tests using Vitest for core functionality:
# Run all unit tests
npm test
# Run tests in watch mode
npm run test:watch
# Run integration tests (VS Code API)
npm run test:integration
Test Coverage:
Parser Tests (tests/unit/parser/todoParser.test.ts
) - 29 tests covering:
- TODO.md parsing and serialization
- Task metadata extraction (tags, mentions, estimates, due dates)
- WIP task detection and management
- Nested task handling
- Round-trip parsing validation
- Edge cases and error handling
Core Tests (tests/unit/core/taskManager.test.ts
) - Task management logic
Git Tests (tests/unit/git/gitManager.test.ts
) - Git integration and conventional commits
Manual Tests
Interactive tests for development and validation located in tests/manual/
:
# Test parser with example TODO.md
npm run test:manual:parser
# Interactive parser testing
npm run test:manual:interactive
Manual Test Files:
test-parser.ts
- Comprehensive parser validation showing:
- Parsing results with detailed task breakdown
- Metadata extraction (tags, mentions, estimates, due dates)
- Serialization and round-trip testing
- Statistics and WIP task detection
interactive-test.ts
- Live analysis tool showing:
- Real-time TODO.md analysis
- Task counts by section and completion status
- Tag usage statistics
- Upcoming due dates
- Current WIP task
example-TODO.md
- Sample TODO.md file with rich metadata examples for testing
Test Structure
tests/
├── unit/ # Automated unit tests (included in npm test)
│ ├── parser/
│ ├── core/
│ └── git/
├── integration/ # VS Code API integration tests
└── manual/ # Manual testing tools (excluded from build)
├── test-parser.ts # Parser validation tool
├── interactive-test.ts # Live analysis tool
└── example-TODO.md # Sample TODO.md for testing
Note: Manual tests are excluded from TypeScript compilation and automated test runs but provide valuable development and debugging tools.
Project Structure
src/
├── extension.ts # Main extension entry point
├── parser/
│ └── todoParser.ts # TODO.md parsing and serialization
├── core/
│ └── taskManager.ts # Task state management and WIP logic
├── git/
│ └── gitManager.ts # Git operations and conventional commits
├── semantic/
│ └── semanticManager.ts # Semantic-release configuration
├── ui/
│ ├── treeProvider.ts # VS Code tree view provider
│ └── statusBar.ts # Status bar integration
└── types/
└── index.ts # Core interfaces and type definitions
License
MIT