# Changelog

All notable changes to this project will be documented in this file.

## [0.7.1] - 2026-05-23

### Features
- Add `issue_move` MCP tool to move an issue to a different queue ([#25](https://github.com/aikts/yandex-tracker-mcp/pull/25))
  - Supports `notify`, `notify_author`, `move_all_fields`, and `initial_status` flags
  - Returns the issue with its new key in the target queue
  - When the client supports elicitation, prompts the user to confirm these flags before performing the (irreversible) move; declining or cancelling aborts the move. Clients without elicitation support fall back to the passed-in values
- Add `issue_add_link` and `issue_delete_link` MCP tools to manage links between issues ([fixes #26](https://github.com/aikts/yandex-tracker-mcp/issues/26))
  - `issue_add_link` accepts a `relationship` (e.g. `relates`, `depends on`, `duplicates`) and the target issue key
  - `issue_delete_link` removes a link by its ID
- Add `queue_create_version` MCP tool to create a new version in a queue ([#29](https://github.com/aikts/yandex-tracker-mcp/pull/29))
  - Supports `name`, `description`, `start_date`, and `due_date`
- Support passthrough Bearer OAuth token authentication for reverse proxy / gateway deployments ([#23](https://github.com/aikts/yandex-tracker-mcp/pull/23), [#27](https://github.com/aikts/yandex-tracker-mcp/pull/27))
  - Reads the Yandex OAuth token from the incoming `Authorization: Bearer <token>` header when MCP OAuth middleware does not provide a token

### Bug Fixes
- Ignore unrelated environment variables when loading `Settings` (`extra="ignore"`) ([fixes #22](https://github.com/aikts/yandex-tracker-mcp/issues/22))

## [0.6.3] - 2026-02-08

### Features
- Add `issue_add_comment` MCP tool to add comments to issues with support for summonees, mailing lists, and YFM markup
- Add `issue_update_comment` MCP tool to update existing comments in issues
- Add `issue_delete_comment` MCP tool to delete comments from issues

### Internal
- Update dependencies

## [0.6.2] - 2026-01-30

### Features
- Add `issue_add_worklog` MCP tool to add worklog entries (log spent time) to issues
- Add `issue_update_worklog` MCP tool to update existing worklog entries
- Add `issue_delete_worklog` MCP tool to delete worklog entries from issues

### Internal
- Remove verbose option from pytest configuration

## [0.6.1] - 2026-01-17

### Internal
- Refactor `__main__.py` to extract entry point into a proper `main()` function for better modularity

## [0.6.0] - 2026-01-17

### Breaking Changes
- Redis OAuth store now requires encryption configuration via `OAUTH_ENCRYPTION_KEYS` environment variable
- Existing OAuth tokens stored in Redis without encryption will need to be re-authenticated

### Security
- Add token encryption for Redis OAuth store using Fernet (AES-128)
- Redis keys now use SHA-256 hashes instead of raw tokens to prevent token exposure if Redis is compromised
- Support key rotation with multiple encryption keys (first key encrypts, all keys can decrypt)

### Internal
- Update CI workflow badges in README files to reflect new release workflow
- Consolidate Docker and package workflows into unified release.yml
- Remove Python 3.13t from test matrix

## [0.5.2] - 2026-01-17

### Internal
- Refactor MCP tools into modular structure with separate files by category:
  - `queue.py`: Queue-related tools (read-only)
  - `field.py`: Global field and metadata tools (read-only)
  - `issue_read.py`: Issue read-only tools
  - `issue_write.py`: Issue write tools (conditional on read-only mode)
  - `user.py`: User-related tools (read-only)
- Add comprehensive test suite for TrackerClient and MCP tools
- Delete Smithery support
- Update CLAUDE.md with new project structure documentation

## [0.5.1] - 2026-01-13

### Improvements
- Add MCP server name label to Docker image for better registry discoverability
- Update MCP registry schema to version 2025-12-11
- Add OCI package entry to server.json for Docker image distribution

### Internal
- Fix `ty` command in Taskfile to use `uv run`

## [0.5.0] - 2026-01-12

### Breaking changes

- Tool `queue_get_local_fields` is dropped and replaced with `queue_get_fields` — now this tool combines both regular
  and local queue fields.
- Drop Python 3.10 support, require Python 3.11+

### Features
- Add `issue_update` MCP tool to edit existing issues
  - Supports updating summary, description, parent, sprint, type, priority, followers, project, tags, and custom fields
  - Supports optimistic locking via `version` parameter
- Add `issue_create` MCP tool to create new issues in a queue
  - Supports setting summary, description, type, assignee, priority, and custom fields
- Add `issue_close` MCP tool to close issues with a resolution
  - Automatically finds a transition to 'done' status
- Add `issue_execute_transition` MCP tool to execute status transitions
  - Supports adding comments and setting fields during transition
- Add `issue_get_transitions` MCP tool to get possible status transitions for an issue
- Add `get_resolutions` MCP tool to retrieve all available issue resolutions
- Add `queue_get_metadata` MCP tool to get detailed queue metadata with optional field expansion
  - Supports expanding: `all`, `projects`, `components`, `versions`, `types`, `team`, `workflows`, `fields`, `issueTypesConfig`
- Add `queue_get_fields` MCP tool to retrieve both global and queue-specific local fields
  - Returns combined list of fields with `schema.required` indicating mandatory fields
- Add tool annotations with human-readable titles and `readOnlyHint` flags for MCP tool metadata

### Internal
- Migrate from Makefile to Taskfile for development workflow
- Add Python 3.13t to CI test matrix
- Migrate desktop extension packaging from dxt to mcpb

## [0.4.10] - 2025-12-06

### Bug Fixes
- Make `Status.type` field optional to support custom statuses in Yandex Tracker (fixed by [#10](https://github.com/aikts/yandex-tracker-mcp/pull/10))
  - Custom statuses created by organizations don't have the `type` field assigned
  - The `type` field is only present for standard statuses (new, inProgress, paused, done, cancelled)
  - Fixes validation errors when calling `get_statuses` on organizations with custom statuses

## [0.4.9] - 2025-02-11

### Internal
- Temporarily disable MCP Registry publishing in GitHub Actions workflow
  - Comment out publish step to prevent automatic registry updates
  - Maintain registry login and installation steps for future use

## [0.4.8] - 2025-02-11

### Internal
- Update MCP server schema to version 2025-10-17 in server.json

## [0.4.7] - 2025-02-11

### Features
- Add `fields` parameter to `queues_get_all` tool for selective field inclusion
  - Allows optimizing context window usage by selecting only needed fields (e.g., ["key", "name"])
  - Returns all fields if not specified
- Add pagination support to `queues_get_all` tool
  - New `page` parameter to retrieve specific pages
  - New `per_page` parameter (default: 100)
  - Automatically retrieves all pages if page parameter not specified

### Internal
- Update MCP dependency to version 1.21
- Update Pydantic to version 2.12.4

## [0.4.6] - 2025-10-02

### Improvements
- Add `estimation` and `spent` fields to Issue model for time tracking support
  - `estimation`: Estimated time for the issue (string format)
  - `spent`: Time already spent on the issue (string format)

## [0.4.5] - 2025-09-29

### Features
- Add MCP Registry publishing support in GitHub Actions workflow
  - Automatic publishing to MCP Registry on release
  - GitHub OIDC authentication for registry access
- Add `server.json` for official MCP Registry integration
- Add `mcp-name` identifier to documentation (README.md and README_ru.md)

### Internal
- Update release command documentation to include server.json version checks
- Add MCP Registry token files to .gitignore

## [0.4.4] - 2025-01-14

### Bug Fixes
- Fix Claude Desktop OAuth integration for federative authentication scenarios
  - Make OAuth scopes optional in YandexOAuthAuthorizationServerProvider
  - Add `use_scopes` parameter to control whether OAuth scopes are validated
  - Fix scopes handling to properly support cases where `OAUTH_USE_SCOPES=false`
  - Improve compatibility with Yandex Cloud federative OAuth flows

## [0.4.3] - 2025-09-14

### Features
- Add `users_search` MCP tool for searching users by login, email or real name
  - Uses fuzzy matching with 80% similarity threshold for name searches
  - Prioritizes exact matches for login and email over fuzzy name matches
  - Returns single user, multiple users, or empty list based on search results

### Improvements
- Enhanced Yandex Tracker Query Language documentation with better user field guidance
  - Added instruction to use usernames instead of display names for user fields (Assignee, Author, etc.)
  - Added `me()` function documentation for current user queries
  - Added more examples for user-related queries

### Internal
- Update MCP dependency from version 1.12.3 to 1.14.0 for improved compatibility
- Add thefuzz dependency for fuzzy string matching capabilities

## [0.4.2] - 2025-09-13

### Features
- Add support for Yandex Cloud federative OAuth authentication via OIDC applications
- Enhanced OAuth configuration with new environment variables:
  - `OAUTH_TOKEN_TYPE`: Configure token type (Bearer/OAuth) for federative authentication
  - `OAUTH_USE_SCOPES`: Control whether to use OAuth scopes (required `false` for federation)
- Support for federated accounts authentication through organization identity providers

## [0.4.1] - 2025-01-02

### Features
- Enhanced `issues_find` tool with new `fields` parameter for selective field inclusion to optimize context window usage
- Improved pagination with proper `per_page` parameter and validation

### Improvements
- Code reorganization: moved MCP tools to separate `mcp_tracker/mcp/tools.py` file for better maintainability
- Added MCP resources support with `mcp_tracker/mcp/resources.py` for configuration retrieval
- Enhanced parameter validation with `PageParam` and `PerPageParam` type annotations
- Added `IssueFieldsEnum` for field selection in issue queries
- Updated user configuration keys to snake_case format for consistency

### Internal
- Improved code structure and separation of concerns
- Enhanced type safety with better parameter annotations

## [0.4.0] - 2025-08-01

### Features
- Add multiple authentication methods support:
  - Static IAM token authentication via `TRACKER_IAM_TOKEN` environment variable
  - Dynamic IAM token generation using service account credentials (`TRACKER_SA_KEY_ID`, `TRACKER_SA_SERVICE_ACCOUNT_ID`, `TRACKER_SA_PRIVATE_KEY`)
  - Clear authentication priority order: Dynamic OAuth > Static OAuth > Static IAM > Dynamic IAM
- Update manifest.json and smithery.yaml to support IAM token configuration

### Improvements
- Add custom `IssueNotFound` exception for better error handling
- Change issue-related methods to throw exceptions instead of returning None for 404 responses

### Internal
- Add test infrastructure with pytest configuration and initial test files
- Add test commands to Makefile (`test`, `test-unit`, `test-integration`, `test-cov`)
- Refactor authentication system with multi-tier support in `TrackerClient`

## [0.3.6] - 2025-08-01

### Fixes
- Fix Python library packaging

## [0.3.5] - 2025-07-01

### Features
- Add `get_priorities` MCP tool to retrieve all available issue priorities from Yandex Tracker

### Internal
- Update MCP dependency to version 1.10.0

## [0.3.4] - 2025-07-01

### Features
- Add `issue_get_checklist` MCP tool to retrieve checklist items from Yandex Tracker issues
  - Returns list of checklist items including text, status, assignee, and deadline information
  - Supports all checklist item properties including HTML text rendering and deadline status

### Internal
- Add ChecklistItem and ChecklistItemDeadline Pydantic models for type safety
- Extend IssueProtocol with issue_get_checklist method
- Add caching support for checklist operations

## [0.3.3] - 2025-07-01

### Documentation
- Add Russian README (README_ru.md) with complete translation of all features and setup instructions
- Add Claude Code command files for improved development workflow
- Update README with OAuth read-only configuration (`TRACKER_READ_ONLY` environment variable)
- Minor formatting improvements in documentation

## [0.3.2] - 2025-06-30

### Features
- Add `include_description` parameter to issue tools for better context management
  - `issue_get` tool now accepts optional `include_description` parameter (default: true)
  - `issues_find` tool now accepts optional `include_description` parameter (default: false)
  - Helps optimize token usage by excluding large description fields when not needed

### Internal
- Change BaseTrackerEntity to use `extra="ignore"` by default for better data validation
- Override `extra="allow"` for Issue model specifically to preserve existing API compatibility

## [0.3.1] - 2025-06-30

### Features
- Refactor Yandex OAuth implementation to support dynamic scopes and improve callback handling
- Add usage instructions for Yandex Tracker tools

## [0.3.0] - 2025-06-30

### Features
- Add complete OAuth 2.0 implementation with Yandex integration and protocol refactoring
  - OAuth provider mode for authorization code flow with PKCE support
  - Token management with refresh token support
  - YandexAuth dataclass for authentication encapsulation
  - Optional auth parameter across all protocol methods
- Add user_get_current MCP tool to retrieve current authenticated user information

### Internal
- Update Docker workflow to support manual triggers and branch/tag pushes
- Update CI publish workflow dependencies

## [0.2.20] - 2025-06-29

### Internal
- Version bump only (intermediate release)

## [0.2.19] - 2025-06-27

### Internal
- Enable packagin dxt for all platforms

## [0.2.18] - 2025-06-27

### Internal
- Fix packaging dxt

## [0.2.17] - 2025-06-27

### Internal
- Fix packaging dxt

## [0.2.16] - 2025-06-27

### Internal
- Add dxt logo

## [0.2.15] - 2025-06-27

### Internal
- Add dxt packaging support with GitHub Actions workflow

### Documentation
- Update README.md with Claude Desktop installation instructions

## [0.2.13] - 2025-06-26

### Features
- Add Smithery integration support with dedicated configuration file
- Add configurable `TRACKER_BASE_URL` environment variable for custom API endpoints

### Internal
- Add Dockerfile for Smithery deployment
- Update port configuration to default 8000 across all configs

## [0.2.12] - 2025-06-26

### Features
- Add MCP tool for counting Yandex Tracker issues (`issues_count`)

## [0.2.11] - 2025-06-26

### Internal
- CI changes

## [0.2.10] - 2025-06-26

### Internal
- Remove branch restriction from Docker workflow configuration

## [0.2.9] - 2025-01-26

### Features
- Add MCP tool for retrieving queue versions (`queue_get_versions`)

## [0.2.8] - 2025-01-26

### Features
- Add MCP tool for retrieving single user information (`user_get`)

## [0.2.7] - 2025-01-26

### Features
- Add MCP tool for retrieving user information (`users_get_all`)

### Architecture
- Add `UsersProtocol` interface for user-related operations

### Documentation
- Update CLAUDE.md with BaseTrackerEntity requirement guidelines

## [0.2.6] - 2025-01-26

### Documentation
- Add CHANGELOG.md with complete version history
- Update README.md to document all available MCP tools including `queue_get_tags` and `issue_get_attachments`

## [0.2.5] - 2025-01-24

### Features
- Add MCP tool for retrieving queue tags (`queue_get_tags`)
- Add MCP tool for retrieving issue attachments (`issue_get_attachments`)

## [0.2.4] - 2025-01-24

### Documentation
- Update README with comprehensive MCP client configuration examples
- Add documentation for status and type management functionality

## [0.2.3] - 2025-01-24

### Internal
- Remove yandex-tracker-client dependency from project

## [0.2.2] - 2025-01-23

### Features
- Add MCP tool for retrieving Yandex Tracker issue types (`get_issue_types`)

## [0.2.1] - 2025-01-23

### Features
- Add MCP tool for retrieving statuses (`get_statuses`)
- Add MCP tool for getting global fields from Yandex Tracker (`get_global_fields`)
- Add MCP tool for retrieving queue-specific local fields (`queue_get_local_fields`)
- Enhance issues_find tool with Yandex Tracker Query Language support
- Add support for 'streamable-http' transport option

### Internal
- Rename FieldsProtocol to GlobalDataProtocol
- Add Makefile with development tools and quality checks
- Code cleanup: remove unused imports and reorder import statements

### Documentation
- Add CLAUDE.md for project guidance and development instructions

## [0.1.4] - 2025-01-22

### Internal
- Add mypy configuration for type checking
- Update server.py logic improvements

## [0.1.3] - 2025-01-22

### Documentation
- Add version badge to README

## [0.1.2] - 2025-01-22

### Internal
- Minor version update

## [0.1.1] - 2025-01-22

### Features
- Add executable script entry point for uvx command support

## [0.1.0] - 2025-01-22

### Features
- Initial release
- Core functionality for Yandex Tracker MCP Server
- Support for queues, issues, comments, links, and worklogs
- Redis caching implementation
- Docker support with multi-platform builds (including ARM64)
- Python 3.10+ compatibility

### Internal
- GitHub Actions workflows for testing and PyPI publishing
- Development dependencies for testing and linting

### Documentation
- Comprehensive README documentation
