* fix(expand-task): Use tag-specific complexity reports - Add getTagAwareFilePath utility function to resolve tag-specific file paths - Update expandTask to use tag-aware complexity report paths - Fix issue where expand-task always used default complexity report - Add comprehensive tests for getTagAwareFilePath utility - Ensure proper handling of file extensions and directory structures Fixes #850: Expanding tasks not using tag-specific complexity reports The expandTask function now correctly uses complexity reports specific to the current tag context (e.g., task-complexity-report_feature-branch.json) instead of always using the default task-complexity-report.json file. This enables proper task expansion behavior when working with multiple tag contexts, ensuring complexity analysis is tag-specific and accurate. * chore: Add changeset for tag-specific complexity reports fix * test(expand-task): Add tests for tag-specific complexity report integration - Introduced a new test suite for verifying the integration of tag-specific complexity reports in the expandTask function. - Added a test case to ensure the correct complexity report is used when available for a specific tag. - Mocked file system interactions to simulate the presence of tag-specific complexity reports. This enhances the test coverage for task expansion behavior, ensuring it accurately reflects the complexity analysis based on the current tag context. * refactor(task-manager): unify and simplify tag-aware file path logic and tests - Reformatted imports and cleaned up comments in test files for readability - Centralized mocks: moved getTagAwareFilePath & slugifyTagForFilePath mocks to setup.js for consistency and maintainability - Simplified utils/getTagAwareFilePath: replaced manual parsing with path.parse() & path.format(); improved extension handling - Enhanced test mocks for path.parse, path.format & reset path.join in beforeEach to avoid interference - All tests now pass consistently; no change in functionality
Changesets
This folder has been automatically generated by @changesets/cli, a build tool that works with multi-package repos or single-package repos to help version and publish code. Full documentation is available in the Changesets repository.
What are Changesets?
Changesets are a way to track changes to packages in your repository. Each changeset:
- Describes the changes you've made
- Specifies the type of version bump needed (patch, minor, or major)
- Connects these changes with release notes
- Automates the versioning and publishing process
How to Use Changesets in Task Master
2. Making Changes
- Create a new branch for your changes
- Make your code changes
- Write tests and ensure all tests pass
3. Creating a Changeset
After making changes, create a changeset by running:
npx changeset
This will:
- Walk you through a CLI to describe your changes
- Ask you to select impact level (patch, minor, major)
- Create a markdown file in the
.changesetdirectory
4. Impact Level Guidelines
When choosing the impact level for your changes:
- Patch: Bug fixes and minor changes that don't affect how users interact with the system
- Example: Fixing a typo in output text, optimizing code without changing behavior
- Minor: New features or enhancements that don't break existing functionality
- Example: Adding a new flag to an existing command, adding new task metadata fields
- Major: Breaking changes that require users to update their usage
- Example: Renaming a command, changing the format of the tasks.json file
5. Writing Good Changeset Descriptions
Your changeset description should:
- Be written for end-users, not developers
- Clearly explain what changed and why
- Include any migration steps or backward compatibility notes
- Reference related issues or pull requests with
#issue-number
Examples:
# Good
Added new `--research` flag to the `expand` command that uses Perplexity AI
to provide research-backed task expansions. Requires PERPLEXITY_API_KEY
environment variable.
# Not Good
Fixed stuff and added new flag
6. Committing Your Changes
Commit both your code changes and the generated changeset file:
git add .
git commit -m "Add feature X with changeset"
git push
7. Pull Request Process
- Open a pull request
- Ensure CI passes
- Await code review
- Once approved and merged, your changeset will be used during the next release
Release Process (for Maintainers)
When it's time to make a release:
- Ensure all desired changesets are merged
- Run
npx changeset versionto update package versions and changelog - Review and commit the changes
- Run
npm publishto publish to npm
This can be automated through Github Actions
Common Issues and Solutions
- Merge Conflicts in Changeset Files: Resolve just like any other merge conflict
- Multiple Changes in One PR: Create multiple changesets if changes affect different areas
- Accidentally Committed Without Changeset: Create the changeset after the fact and commit it separately