Files
claude-task-master/.changeset/two-bats-smoke.md
Eyal Toledano e607c5481c feat(paths): Implement robust project root detection and path utilities
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.
2025-04-08 15:53:47 -04:00

3.7 KiB

task-master-ai
task-master-ai
patch
  • Implement robust project root detection with a hierarchical precedence system:

    • Environment variable override (TASK_MASTER_PROJECT_ROOT)
    • Explicitly provided project root (--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
  • Add comprehensive PROJECT_MARKERS array for detecting common project files:

    • Task Master specific files (tasks.json, tasks/tasks.json)
    • Version control markers (.git, .svn)
    • Package files (package.json, pyproject.toml, etc.)
    • IDE/editor folders (.cursor, .vscode, .idea)
    • Dependency directories (node_modules, venv)
    • Configuration files (.env, tsconfig.json, etc.)
    • CI/CD files (.github/workflows, etc.)
  • Improved error messages with specific troubleshooting guidance

  • Enhanced logging to indicate the source of project root selection

  • DRY refactoring by centralizing path utilities in core/utils/path-utils.js

  • Add caching of lastFoundProjectRoot for improved performance

  • Split monolithic task-master-core.js into separate function files within direct-functions directory

  • Implement update-task MCP command for updating a single task by ID

  • Implement update-subtask MCP command for appending information to specific subtasks

  • Implement generate MCP command for creating individual task files from tasks.json

  • Implement set-status MCP command for updating task status

  • Implement show-task MCP command for displaying detailed task information

  • Implement next-task MCP command for finding the next task to work on

  • Implement expand-task MCP command for breaking down tasks into subtasks

  • Implement add-task MCP command for creating new tasks using AI assistance

  • Implement add-subtask MCP command for adding subtasks to existing tasks

  • Implement remove-subtask MCP command for removing subtasks from parent tasks

  • Implement expand-all MCP command for expanding all tasks into subtasks

  • Implement analyze-complexity MCP command for analyzing task complexity

  • Implement clear-subtasks MCP command for clearing subtasks from parent tasks

  • Implement remove-dependency MCP command for removing dependencies from tasks

  • Implement validate-dependencies MCP command for checking validity of task dependencies

  • Implement fix-dependencies MCP command for automatically fixing invalid dependencies

  • Implement complexity-report MCP command for displaying task complexity analysis reports

  • Implement add-dependency MCP command for creating dependency relationships between tasks

  • Document MCP server naming conventions in architecture.mdc and mcp.mdc files (file names use kebab-case, direct functions use camelCase with Direct suffix, tool registration functions use camelCase with Tool suffix, and MCP tool names use snake_case)

  • Enhance task show view with a color-coded progress bar for visualizing subtask completion percentage

  • Add "cancelled" status to UI module status configurations for marking tasks as cancelled without deletion

  • Improve MCP server resource documentation with comprehensive implementation examples and best practices

  • Enhance progress bars with status breakdown visualization showing proportional sections for different task statuses

  • Add improved status tracking for both tasks and subtasks with detailed counts by status

  • Optimize progress bar display with width constraints to prevent UI overflow on smaller terminals

  • Improve status counts display with clear text labels beside status icons for better readability

  • Treat deferred and cancelled tasks as effectively complete for progress calculation while maintaining visual distinction