
- Modified handleUpdatePullRequest to include existing reviewers when reviewers parameter is omitted - Preserves approval status for existing reviewers when updating reviewer list - Updated tool documentation to clarify reviewer preservation behavior - Enhanced README with detailed explanation of reviewer handling - Bumped version to 0.9.1 This prevents accidentally removing reviewers when only updating PR title or description.
219 lines
10 KiB
Markdown
219 lines
10 KiB
Markdown
# Changelog
|
|
|
|
All notable changes to this project will be documented in this file.
|
|
|
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
|
## [0.9.1] - 2025-01-27
|
|
|
|
### Fixed
|
|
- **Fixed `update_pull_request` reviewer preservation**:
|
|
- When updating a PR without specifying reviewers, existing reviewers are now preserved
|
|
- Previously, omitting the `reviewers` parameter would clear all reviewers
|
|
- Now properly includes existing reviewers in the API request when not explicitly updating them
|
|
- When updating reviewers, approval status is preserved for existing reviewers
|
|
- This prevents accidentally removing reviewers when only updating PR title or description
|
|
|
|
### Changed
|
|
- Updated tool documentation to clarify reviewer behavior in `update_pull_request`
|
|
- Enhanced README with detailed explanation of reviewer handling
|
|
|
|
## [0.9.0] - 2025-01-26
|
|
|
|
### Added
|
|
- **Code snippet support in `add_comment` tool**:
|
|
- Added `code_snippet` parameter to find line numbers automatically using code text
|
|
- Added `search_context` parameter with `before` and `after` arrays to disambiguate multiple matches
|
|
- Added `match_strategy` parameter with options:
|
|
- `"strict"` (default): Fails with detailed error when multiple matches found
|
|
- `"best"`: Auto-selects the highest confidence match
|
|
- Returns detailed error with all occurrences when multiple matches found in strict mode
|
|
- Particularly useful for AI-powered code review tools that analyze diffs
|
|
- Created comprehensive line matching algorithm that:
|
|
- Parses diffs to find exact code snippets
|
|
- Calculates confidence scores based on context matching
|
|
- Handles added, removed, and context lines appropriately
|
|
|
|
### Changed
|
|
- Enhanced `add_comment` tool to resolve line numbers from code snippets when `line_number` is not provided
|
|
- Improved error messages to include preview and suggestions for resolving ambiguous matches
|
|
|
|
## [0.8.0] - 2025-01-26
|
|
|
|
### Added
|
|
- **Code suggestions support in `add_comment` tool**:
|
|
- Added `suggestion` parameter to add code suggestions in comments
|
|
- Added `suggestion_end_line` parameter for multi-line suggestions
|
|
- Suggestions are formatted using GitHub-style markdown ````suggestion` blocks
|
|
- Works with both single-line and multi-line code replacements
|
|
- Requires `file_path` and `line_number` to be specified when using suggestions
|
|
- Compatible with both Bitbucket Cloud and Server
|
|
- Created `suggestion-formatter.ts` utility for formatting suggestion comments
|
|
|
|
### Changed
|
|
- Enhanced `add_comment` tool to validate suggestion requirements
|
|
- Updated tool response to indicate when a comment contains a suggestion
|
|
|
|
## [0.7.0] - 2025-01-26
|
|
|
|
### Added
|
|
- **Enhanced `get_pull_request_diff` with filtering capabilities**:
|
|
- Added `include_patterns` parameter to filter diff by file patterns (whitelist)
|
|
- Added `exclude_patterns` parameter to exclude files from diff (blacklist)
|
|
- Added `file_path` parameter to get diff for a specific file only
|
|
- Patterns support standard glob syntax (e.g., `*.js`, `src/**/*.res`, `node_modules/**`)
|
|
- Response includes filtering metadata showing total files, included/excluded counts, and excluded file list
|
|
- Added `minimatch` dependency for glob pattern matching
|
|
- Created `DiffParser` utility class for parsing and filtering unified diff format
|
|
|
|
### Changed
|
|
- Modified `get_pull_request_diff` tool to support optional filtering without breaking existing usage
|
|
- Updated tool definition and type guards to include new optional parameters
|
|
- Enhanced documentation with comprehensive examples of filtering usage
|
|
|
|
## [0.6.1] - 2025-01-26
|
|
|
|
### Added
|
|
- Support for nested comment replies in Bitbucket Server
|
|
- Added `replies` field to `FormattedComment` interface to support nested comment threads
|
|
- Comments now include nested replies that are still relevant (not orphaned or resolved)
|
|
- Total and active comment counts now include nested replies
|
|
|
|
### Changed
|
|
- Updated comment fetching logic to handle Bitbucket Server's nested comment structure
|
|
- Server uses `comments` array inside each comment object for replies
|
|
- Cloud continues to use `parent` field for reply relationships
|
|
- Improved comment filtering to exclude orphaned inline comments when code has changed
|
|
|
|
### Fixed
|
|
- Fixed missing comment replies in PR details - replies are now properly included in the response
|
|
|
|
## [0.6.0] - 2025-01-26
|
|
|
|
### Added
|
|
- **Enhanced `get_pull_request` with active comments and file changes**:
|
|
- Fetches and displays active (unresolved) comments that need attention
|
|
- Shows up to 20 most recent active comments with:
|
|
- Comment text, author, and creation date
|
|
- Inline comment details (file path and line number)
|
|
- Comment state (OPEN/RESOLVED for Server)
|
|
- Provides comment counts:
|
|
- `active_comment_count`: Total unresolved comments
|
|
- `total_comment_count`: Total comments including resolved
|
|
- Includes file change statistics:
|
|
- List of all modified files with lines added/removed
|
|
- File status (added, modified, removed, renamed)
|
|
- Summary statistics (total files, lines added/removed)
|
|
- Added new TypeScript interfaces for comments and file changes
|
|
- Added `FormattedComment` and `FormattedFileChange` types for consistent response format
|
|
|
|
### Changed
|
|
- Modified `handleGetPullRequest` to make parallel API calls for better performance
|
|
- Enhanced error handling to gracefully continue if comment/file fetching fails
|
|
|
|
## [0.5.0] - 2025-01-21
|
|
|
|
### Added
|
|
- **New file and directory handling tools**:
|
|
- `list_directory_content` - List files and directories in any repository path
|
|
- Shows file/directory type, size, and full paths
|
|
- Supports browsing specific branches
|
|
- Works with both Bitbucket Server and Cloud APIs
|
|
- `get_file_content` - Retrieve file content with smart truncation for large files
|
|
- Automatic smart defaults by file type (config: 200 lines, docs: 300 lines, code: 500 lines)
|
|
- Pagination support with `start_line` and `line_count` parameters
|
|
- Tail functionality using negative `start_line` values (e.g., -50 for last 50 lines)
|
|
- Automatic truncation for files >50KB to prevent token overload
|
|
- Files >1MB require explicit `full_content: true` parameter
|
|
- Returns metadata including file size, encoding, and last modified info
|
|
- Added `FileHandlers` class following existing modular architecture patterns
|
|
- Added TypeScript interfaces for file/directory entries and metadata
|
|
- Added type guards `isListDirectoryContentArgs` and `isGetFileContentArgs`
|
|
|
|
### Changed
|
|
- Enhanced documentation with comprehensive examples for file handling tools
|
|
|
|
## [0.4.0] - 2025-01-21
|
|
|
|
### Added
|
|
- **New `get_branch` tool for comprehensive branch information**:
|
|
- Returns detailed branch information including name, ID, and latest commit details
|
|
- Lists all open pull requests originating from the branch with approval status
|
|
- Optionally includes merged pull requests when `include_merged_prs` is true
|
|
- Provides useful statistics like PR counts and days since last commit
|
|
- Supports both Bitbucket Server and Cloud APIs
|
|
- Particularly useful for checking if a branch has open PRs before deletion
|
|
- Added TypeScript interfaces for `BitbucketServerBranch` and `BitbucketCloudBranch`
|
|
- Added type guard `isGetBranchArgs` for input validation
|
|
|
|
### Changed
|
|
- Updated documentation to include the new `get_branch` tool with comprehensive examples
|
|
|
|
## [0.3.0] - 2025-01-06
|
|
|
|
### Added
|
|
- **Enhanced merge commit details in `get_pull_request`**:
|
|
- Added `merge_commit_hash` field for both Cloud and Server
|
|
- Added `merged_by` field showing who performed the merge
|
|
- Added `merged_at` timestamp for when the merge occurred
|
|
- Added `merge_commit_message` with the merge commit message
|
|
- For Bitbucket Server: Fetches merge details from activities API when PR is merged
|
|
- For Bitbucket Cloud: Extracts merge information from existing response fields
|
|
|
|
### Changed
|
|
- **Major code refactoring for better maintainability**:
|
|
- Split monolithic `index.ts` into modular architecture
|
|
- Created separate handler classes for different tool categories:
|
|
- `PullRequestHandlers` for PR lifecycle operations
|
|
- `BranchHandlers` for branch management
|
|
- `ReviewHandlers` for code review tools
|
|
- Extracted types into dedicated files (`types/bitbucket.ts`, `types/guards.ts`)
|
|
- Created utility modules (`utils/api-client.ts`, `utils/formatters.ts`)
|
|
- Centralized tool definitions in `tools/definitions.ts`
|
|
- Improved error handling and API client abstraction
|
|
- Better separation of concerns between Cloud and Server implementations
|
|
|
|
### Fixed
|
|
- Improved handling of merge commit information retrieval failures
|
|
- Fixed API parameter passing for GET requests across all handlers (was passing config as third parameter instead of fourth)
|
|
- Updated Bitbucket Server branch listing to use `/rest/api/latest/` endpoint with proper parameters
|
|
- Branch filtering now works correctly with the `filterText` parameter for Bitbucket Server
|
|
|
|
## [0.2.0] - 2025-06-04
|
|
|
|
### Added
|
|
- Complete implementation of all Bitbucket MCP tools
|
|
- Support for both Bitbucket Cloud and Server
|
|
- Core PR lifecycle tools:
|
|
- `create_pull_request` - Create new pull requests
|
|
- `update_pull_request` - Update PR details
|
|
- `merge_pull_request` - Merge pull requests
|
|
- `list_branches` - List repository branches
|
|
- `delete_branch` - Delete branches
|
|
- Enhanced `add_comment` with inline comment support
|
|
- Code review tools:
|
|
- `get_pull_request_diff` - Get PR diff/changes
|
|
- `approve_pull_request` - Approve PRs
|
|
- `unapprove_pull_request` - Remove approval
|
|
- `request_changes` - Request changes on PRs
|
|
- `remove_requested_changes` - Remove change requests
|
|
- npm package configuration for easy installation via npx
|
|
|
|
### Fixed
|
|
- Author filter for Bitbucket Server (uses `role.1=AUTHOR` and `username.1=email`)
|
|
- Branch deletion handling for 204 No Content responses
|
|
|
|
### Changed
|
|
- Package name to `@nexus2520/bitbucket-mcp-server` for npm publishing
|
|
|
|
## [0.1.0] - 2025-06-03
|
|
|
|
### Added
|
|
- Initial implementation with basic tools:
|
|
- `get_pull_request` - Get PR details
|
|
- `list_pull_requests` - List PRs with filters
|
|
- Support for Bitbucket Cloud with app passwords
|
|
- Support for Bitbucket Server with HTTP access tokens
|
|
- Authentication setup script
|
|
- Comprehensive documentation
|