Refactored `config-manager.js` to handle different execution contexts (CLI vs. MCP) and fixed related Jest tests.
- Modified `readConfig` and `writeConfig` to accept an optional `explicitRoot` parameter, allowing explicit path specification (e.g., from MCP) while retaining automatic project root finding for CLI usage.
- Updated getter/setter functions (`getMainProvider`, `setMainModel`, etc.) to accept and propagate the `explicitRoot`.
- Resolved Jest testing issues for dynamic imports by using `jest.unstable_mockModule` for `fs` and `chalk` dependencies *before* the dynamic `import()`.
- Corrected console error assertions in tests to match exact logged messages.
- Updated `.cursor/rules/tests.mdc` with guidelines for `jest.unstable_mockModule` and precise console assertions.
Change threshold parameter in analyze_project_complexity from union type to coerce.number with min/max validation. Fix Invalid type error that occurred with certain input formats. Add test implementation to avoid real API calls and proper tests for parameter validation.
Change threshold parameter in analyze_project_complexity from union type to coerce.number with min/max validation. Fix Invalid type error that occurred with certain input formats. Add test implementation to avoid real API calls and proper tests for parameter validation.
Added detailed next_step guidance to the initialize-project MCP tool response,
providing clear instructions about creating a PRD file and using parse-prd
after initialization. This helps users understand the workflow better after
project initialization.
Also added comprehensive unit tests for the initialize-project MCP tool that:
- Verify tool registration with correct parameters
- Test command construction with proper argument formatting
- Check special character escaping in command arguments
- Validate success response formatting including the new next_step field
- Test error handling and fallback mechanisms
- Verify logging behavior
The tests follow the same pattern as other MCP tool tests in the codebase.
Added detailed next_step guidance to the initialize-project MCP tool response,
providing clear instructions about creating a PRD file and using parse-prd
after initialization. This helps users understand the workflow better after
project initialization.
Also added comprehensive unit tests for the initialize-project MCP tool that:
- Verify tool registration with correct parameters
- Test command construction with proper argument formatting
- Check special character escaping in command arguments
- Validate success response formatting including the new next_step field
- Test error handling and fallback mechanisms
- Verify logging behavior
The tests follow the same pattern as other MCP tool tests in the codebase.
- Add support for --title/-t and --description/-d flags in add-task command
- Fix validation for manual creation mode (title + description)
- Implement proper testing for both prompt and manual creation modes
- Update testing documentation with Commander.js testing best practices
- Add guidance on handling variable hoisting and module initialization issues
Changeset: brave-doors-open.md
- Add support for --title/-t and --description/-d flags in add-task command
- Fix validation for manual creation mode (title + description)
- Implement proper testing for both prompt and manual creation modes
- Update testing documentation with Commander.js testing best practices
- Add guidance on handling variable hoisting and module initialization issues
Changeset: brave-doors-open.md
Overhauls the project root detection system with a hierarchical precedence mechanism that intelligently locates tasks.json and identifies project roots. This improves user experience by reducing the need for explicit path parameters and enhances cross-platform compatibility.
Key Improvements:
- Implement hierarchical precedence for project root detection:
* Environment variable override (TASK_MASTER_PROJECT_ROOT)
* Explicitly provided --project-root parameter
* Cached project root from previous successful operations
* Current directory with project markers
* Parent directory traversal to find tasks.json
* Package directory as fallback
- Create comprehensive PROJECT_MARKERS detection system with 20+ common indicators:
* Task Master specific files (tasks.json, tasks/tasks.json)
* Version control directories (.git, .svn)
* Package manifests (package.json, pyproject.toml, Gemfile, go.mod, Cargo.toml)
* IDE/editor configurations (.cursor, .vscode, .idea)
* Dependency directories (node_modules, venv, .venv)
* Configuration files (.env, tsconfig.json, webpack.config.js)
* CI/CD files (.github/workflows, .gitlab-ci.yml, .circleci/config.yml)
- DRY refactoring of path utilities:
* Centralize path-related functions in core/utils/path-utils.js
* Export PROJECT_MARKERS as a single source of truth
* Add caching via lastFoundProjectRoot for performance optimization
- Enhanced user experience:
* Improve error messages with specific troubleshooting guidance
* Add detailed logging to indicate project root detection source
* Update tool parameter descriptions for better clarity
* Add recursive parent directory searching for tasks.json
Testing:
- Verified in local dev environment
- Added unit tests for the progress bar visualization
- Updated "automatically detected" description in MCP tools
This commit addresses Task #38: Implement robust project root handling for file paths.
Overhauls the project root detection system with a hierarchical precedence mechanism that intelligently locates tasks.json and identifies project roots. This improves user experience by reducing the need for explicit path parameters and enhances cross-platform compatibility.
Key Improvements:
- Implement hierarchical precedence for project root detection:
* Environment variable override (TASK_MASTER_PROJECT_ROOT)
* Explicitly provided --project-root parameter
* Cached project root from previous successful operations
* Current directory with project markers
* Parent directory traversal to find tasks.json
* Package directory as fallback
- Create comprehensive PROJECT_MARKERS detection system with 20+ common indicators:
* Task Master specific files (tasks.json, tasks/tasks.json)
* Version control directories (.git, .svn)
* Package manifests (package.json, pyproject.toml, Gemfile, go.mod, Cargo.toml)
* IDE/editor configurations (.cursor, .vscode, .idea)
* Dependency directories (node_modules, venv, .venv)
* Configuration files (.env, tsconfig.json, webpack.config.js)
* CI/CD files (.github/workflows, .gitlab-ci.yml, .circleci/config.yml)
- DRY refactoring of path utilities:
* Centralize path-related functions in core/utils/path-utils.js
* Export PROJECT_MARKERS as a single source of truth
* Add caching via lastFoundProjectRoot for performance optimization
- Enhanced user experience:
* Improve error messages with specific troubleshooting guidance
* Add detailed logging to indicate project root detection source
* Update tool parameter descriptions for better clarity
* Add recursive parent directory searching for tasks.json
Testing:
- Verified in local dev environment
- Added unit tests for the progress bar visualization
- Updated "automatically detected" description in MCP tools
This commit addresses Task #38: Implement robust project root handling for file paths.
Adds unit tests to tests/unit/task-manager.test.js for the parse-prd command confirmation prompt when overwriting an existing tasks.json file. Also fixes the existing directory creation test. Refs #67, Fixes#65
Adds unit tests to tests/unit/task-manager.test.js for the parse-prd command confirmation prompt when overwriting an existing tasks.json file. Also fixes the existing directory creation test. Refs #67, Fixes#65
Ensures that the 'details' field, which can be updated via 'update-subtask', is correctly rendered when viewing a specific subtask.
fix(test): Remove empty describe block causing Jest error
Removes a redundant block in that contained a hook but no tests.
chore: Add npm script
Ensures that the 'details' field, which can be updated via 'update-subtask', is correctly rendered when viewing a specific subtask.
fix(test): Remove empty describe block causing Jest error
Removes a redundant block in that contained a hook but no tests.
chore: Add npm script
This commit fixes an issue with the dependency management system where
dependencies between subtasks of the same parent task were not being
handled correctly. Previously, when trying to add a dependency between
subtasks (e.g., making 23.8 depend on 23.13), the system incorrectly
interpreted it as a circular dependency of the parent task depending
on itself.
Changes:
- Modified add-dependency and remove-dependency commands to preserve
string format for subtask IDs containing dots instead of converting
them to integers
- Updated dependency detection logic to properly handle string-based
subtask IDs
- Added specific tests verifying both successful dependency chains
and circular dependency detection between subtasks of the same parent
The fix ensures proper task ordering for development workflows where
related subtasks must be completed in sequence (like establishing tests
before implementing a feature). It maintains backward compatibility with
existing task structures while correctly enforcing dependency chains
within subtask groups.
Tests:
- Added tests for valid dependency chains between subtasks of the same parent
- Added tests for circular dependency detection in subtask relationships
- Added specific test for the 23.8->23.13->23.10 subtask dependency chain
Resolves the issue where the suggested task development workflow couldn't
be properly enforced through the dependency management system.
This commit fixes an issue with the dependency management system where
dependencies between subtasks of the same parent task were not being
handled correctly. Previously, when trying to add a dependency between
subtasks (e.g., making 23.8 depend on 23.13), the system incorrectly
interpreted it as a circular dependency of the parent task depending
on itself.
Changes:
- Modified add-dependency and remove-dependency commands to preserve
string format for subtask IDs containing dots instead of converting
them to integers
- Updated dependency detection logic to properly handle string-based
subtask IDs
- Added specific tests verifying both successful dependency chains
and circular dependency detection between subtasks of the same parent
The fix ensures proper task ordering for development workflows where
related subtasks must be completed in sequence (like establishing tests
before implementing a feature). It maintains backward compatibility with
existing task structures while correctly enforcing dependency chains
within subtask groups.
Tests:
- Added tests for valid dependency chains between subtasks of the same parent
- Added tests for circular dependency detection in subtask relationships
- Added specific test for the 23.8->23.13->23.10 subtask dependency chain
Resolves the issue where the suggested task development workflow couldn't
be properly enforced through the dependency management system.
- Add support for comma-separated subtask IDs in remove-subtask command
- Implement MCP configuration in project initialization
- Add package update notification system with version comparison
- Improve command documentation with boolean flag conventions
- Add comprehensive error handling for unknown options
- Update help text with better examples and formatting
- Implement proper validation for command inputs
- Add global error handling patterns with helpful user messages
- Add support for comma-separated subtask IDs in remove-subtask command
- Implement MCP configuration in project initialization
- Add package update notification system with version comparison
- Improve command documentation with boolean flag conventions
- Add comprehensive error handling for unknown options
- Update help text with better examples and formatting
- Implement proper validation for command inputs
- Add global error handling patterns with helpful user messages
Fix issue with kebab-case validator incorrectly flagging single-word flags like --prompt. Refactor detectCamelCaseFlags to properly handle all single-word flags. Update tests to verify correct behavior with single-word and camelCase flags. Add support for alternative flag formats in init command (e.g., -my_name). This fixes a bug where users couldn't use the --prompt flag directly and had to use -p instead.
Fix issue with kebab-case validator incorrectly flagging single-word flags like --prompt. Refactor detectCamelCaseFlags to properly handle all single-word flags. Update tests to verify correct behavior with single-word and camelCase flags. Add support for alternative flag formats in init command (e.g., -my_name). This fixes a bug where users couldn't use the --prompt flag directly and had to use -p instead.
- Fix tests using ES Module best practices instead of complex mocking
- Replace Commander.js mocking with direct action handler testing
- Resolve ES Module import/mock issues and function redeclaration errors
- Fix circular reference issues with console.log spies
- Properly setup mock functions with jest.fn() for method access
- Improve parse-prd command functionality
- Add default PRD path support (scripts/prd.txt) so you can just run `task-master parse-prd` and it will use the default PRD if it exists.
- Improve error handling and user feedback
- Enhance help text with more detailed information
- Fix detectCamelCaseFlags implementation in utils.js yet again with more tests this time
- Improve regex pattern to correctly detect camelCase flags
- Skip flags already in kebab-case format
- Enhance tests with proper test-specific implementations
- Document testing best practices
- Add comprehensive "Common Testing Pitfalls and Solutions" section to tests.mdc
- Provide clear examples of correct testing patterns for ES modules
- Document techniques for test isolation and mock organization
- Fix tests using ES Module best practices instead of complex mocking
- Replace Commander.js mocking with direct action handler testing
- Resolve ES Module import/mock issues and function redeclaration errors
- Fix circular reference issues with console.log spies
- Properly setup mock functions with jest.fn() for method access
- Improve parse-prd command functionality
- Add default PRD path support (scripts/prd.txt) so you can just run `task-master parse-prd` and it will use the default PRD if it exists.
- Improve error handling and user feedback
- Enhance help text with more detailed information
- Fix detectCamelCaseFlags implementation in utils.js yet again with more tests this time
- Improve regex pattern to correctly detect camelCase flags
- Skip flags already in kebab-case format
- Enhance tests with proper test-specific implementations
- Document testing best practices
- Add comprehensive "Common Testing Pitfalls and Solutions" section to tests.mdc
- Provide clear examples of correct testing patterns for ES modules
- Document techniques for test isolation and mock organization
This commit introduces several significant improvements:
- **Enhanced Unit Testing:** Vastly improved unit tests for the module, covering core functions, edge cases, and error handling. Simplified test functions and comprehensive mocking were implemented for better isolation and reliability. Added new section to tests.mdc detailing reliable testing techniques.
- **CLI Kebab-Case Flag Enforcement:** The CLI now enforces kebab-case for flags, providing helpful error messages when camelCase is used. This improves consistency and user experience.
- **AI Enhancements:**
- Enabled 128k token output for Claude 3.7 Sonnet by adding the header.
- Added a new task to to document this change and its testing strategy.
- Added unit tests to verify the Anthropic client configuration.
- Added and utility functions.
- **Improved Test Coverage:** Added tests for the new CLI flag validation logic.
This commit introduces several significant improvements:
- **Enhanced Unit Testing:** Vastly improved unit tests for the module, covering core functions, edge cases, and error handling. Simplified test functions and comprehensive mocking were implemented for better isolation and reliability. Added new section to tests.mdc detailing reliable testing techniques.
- **CLI Kebab-Case Flag Enforcement:** The CLI now enforces kebab-case for flags, providing helpful error messages when camelCase is used. This improves consistency and user experience.
- **AI Enhancements:**
- Enabled 128k token output for Claude 3.7 Sonnet by adding the header.
- Added a new task to to document this change and its testing strategy.
- Added unit tests to verify the Anthropic client configuration.
- Added and utility functions.
- **Improved Test Coverage:** Added tests for the new CLI flag validation logic.