mcp-ticketer 0.3.2__tar.gz → 0.3.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mcp-ticketer might be problematic. Click here for more details.
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/CHANGELOG.md +38 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/Makefile +2 -2
- {mcp_ticketer-0.3.2/src/mcp_ticketer.egg-info → mcp_ticketer-0.3.3}/PKG-INFO +1 -1
- mcp_ticketer-0.3.3/docs/VERSIONING_AND_BUILD_TRACKING.md +350 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/pyproject.toml +1 -1
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/pytest.ini +2 -1
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/__version__.py +1 -1
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/adapters/aitrackdown.py +152 -21
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/adapters/github.py +4 -4
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/adapters/jira.py +6 -6
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/adapters/linear/adapter.py +18 -16
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/adapters/linear/client.py +7 -7
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/adapters/linear/mappers.py +7 -7
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/adapters/linear/types.py +10 -10
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/cli/adapter_diagnostics.py +2 -2
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/cli/codex_configure.py +6 -6
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/cli/diagnostics.py +17 -18
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/cli/simple_health.py +5 -10
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/core/env_loader.py +13 -13
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/core/exceptions.py +5 -5
- mcp_ticketer-0.3.3/src/mcp_ticketer/mcp/constants.py +58 -0
- mcp_ticketer-0.3.3/src/mcp_ticketer/mcp/dto.py +195 -0
- mcp_ticketer-0.3.3/src/mcp_ticketer/mcp/response_builder.py +206 -0
- mcp_ticketer-0.3.3/src/mcp_ticketer/mcp/server.py +1209 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/queue/health_monitor.py +14 -14
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/queue/manager.py +59 -15
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/queue/queue.py +9 -2
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/queue/ticket_registry.py +15 -15
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/queue/worker.py +25 -18
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3/src/mcp_ticketer.egg-info}/PKG-INFO +1 -1
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer.egg-info/SOURCES.txt +11 -2
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/adapters/linear/test_adapter.py +1 -3
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/adapters/test_aitrackdown.py +1 -1
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/adapters/test_github.py +4 -8
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/adapters/test_jira.py +3 -3
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/adapters/test_linear.py +2 -2
- mcp_ticketer-0.3.2/tests/core/test_credential_validation.py → mcp_ticketer-0.3.3/tests/core/debug_credential_validation.py +5 -5
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/core/test_config_resolution.py +1 -1
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/core/test_environment_handoff.py +10 -10
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/debug/debug_worker_subprocess.py +5 -5
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/e2e/test_comments_and_attachments.py +21 -22
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/e2e/test_complete_ticket_workflow.py +48 -15
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/e2e/test_complete_workflow.py +49 -183
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/e2e/test_hierarchy_validation.py +32 -87
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/e2e/test_state_transitions.py +32 -82
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/integration/test_all_adapters.py +12 -12
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/integration/test_commenting_functionality.py +1 -1
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/integration/test_comprehensive.py +3 -3
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/integration/test_hierarchy_and_workflow.py +1 -1
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/integration/test_mcp_server_qa.py +4 -4
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/integration/test_serve_config.py +1 -1
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/integration/test_user_assignment.py +1 -1
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/performance/test_optimizations.py +3 -3
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/performance/test_performance.py +9 -8
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/run_comprehensive_tests.py +2 -3
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/test_api_usage.py +1 -1
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/test_comprehensive_qa.py +4 -4
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/test_error_handling.py +1 -1
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/test_linear_teams.py +3 -3
- mcp_ticketer-0.3.3/tests/unit/__init__.py +1 -0
- mcp_ticketer-0.3.3/tests/unit/test_cache_memory.py +446 -0
- mcp_ticketer-0.3.3/tests/unit/test_core_exceptions.py +496 -0
- mcp_ticketer-0.3.3/tests/unit/test_core_models.py +485 -0
- mcp_ticketer-0.3.3/tests/unit/test_core_registry.py +330 -0
- mcp_ticketer-0.3.2/src/mcp_ticketer/mcp/server.py +0 -2185
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.aitrackdown-test/comments/comment-20251024141042175430.json +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.aitrackdown-test/comments/comment-20251024141042175768.json +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.aitrackdown-test/comments/comment-20251024141042175888.json +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.aitrackdown-test/comments/comment-20251024141042175987.json +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.aitrackdown-test/comments/comment-20251024141042176075.json +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.aitrackdown-test/comments/comment-20251024141042176163.json +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.aitrackdown-test/tickets/task-20251024141042175062.json +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.aitrackdown-test/tickets/task-20251024141042175285.json +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/.dependency_cache +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/.mpm_deployment_state +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/agent-manager.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/agentic-coder-optimizer.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/api_qa.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/clerk-ops.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/code_analyzer.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/content-agent.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/dart_engineer.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/data_engineer.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/documentation.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/engineer.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/gcp_ops_agent.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/golang_engineer.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/imagemagick.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/java_engineer.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/local_ops_agent.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/memory_manager.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/nextjs_engineer.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/ops.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/php-engineer.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/product_owner.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/project_organizer.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/prompt-engineer.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/python_engineer.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/qa.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/react_engineer.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/refactoring_engineer.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/research.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/ruby-engineer.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/rust_engineer.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/security.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/ticketing.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/typescript_engineer.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/vercel_ops_agent.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/version_control.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/web_qa.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/agents/web_ui.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/mcp.json +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude/mcp.local.json +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude-mpm/config/project.json +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude-mpm/mcp_auto_config_preference.json +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude-mpm/memories/README.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude-mpm/memories/agentic_coder_optimizer_memories.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude-mpm/memories/documentation_memories.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude-mpm/memories/engineer_memories.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude-mpm/memories/ops_memories.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude-mpm/memories/project_knowledge_memories.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude-mpm/memories/qa_memories.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude-mpm/memories/research_memories.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude-mpm/memories/version-control_memories.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude-mpm/memories/workflows_memories.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.claude.json +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.coveragerc +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.env.example +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.github/workflows/docs.yml +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.github/workflows/publish.yml +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.github/workflows/test.yml +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.mcp/config.json +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.pre-commit-config.yaml +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.python-version +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/.readthedocs.yaml +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/CLAUDE.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/LICENSE +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/MANIFEST.in +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/README.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/SECURITY_SCAN_REPORT_v0.1.24.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/ADAPTERS.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/AI_CLIENT_INTEGRATION.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/API_REFERENCE.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/CONFIGURATION.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/CONFIG_RESOLUTION_FLOW.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/DEVELOPER_GUIDE.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/ENV_DISCOVERY.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/MCP_INTEGRATION.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/MIGRATION_GUIDE.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/PROJECT_CONFIG.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/PR_INTEGRATION.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/QUEUE_SYSTEM.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/QUICK_START.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/QUICK_START_ENV.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/README.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/USER_GUIDE.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/_archive/README.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/_build/_sources/ADAPTERS.md.txt +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/_build/_sources/API_REFERENCE.md.txt +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/_build/_sources/CONFIGURATION.md.txt +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/_build/_sources/DEVELOPER_GUIDE.md.txt +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/_build/_sources/MCP_INTEGRATION.md.txt +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/_build/_sources/MIGRATION_GUIDE.md.txt +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/_build/_sources/USER_GUIDE.md.txt +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/_build/_sources/adapters/github.md.txt +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/_build/_sources/adapters.rst.txt +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/_build/_sources/api.rst.txt +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/_build/_sources/cli.rst.txt +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/_build/_sources/development.rst.txt +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/_build/_sources/examples.rst.txt +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/_build/_sources/index.rst.txt +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/_build/_sources/installation.rst.txt +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/_build/_sources/prd/mcp-ticketer-prd.md.txt +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/adapters/github.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/adapters.rst +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/api.rst +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/changelogs/CHANGELOG_v0.2.0.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/changelogs/CHANGELOG_v0.3.0.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/changelogs/CHANGELOG_v0.3.1.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/cli.rst +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/conf.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/development/CODE_STRUCTURE.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/development/CONTRIBUTING.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/development/RELEASE.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/development/RELEASING.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/development.rst +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/examples.rst +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/guides/BULLETPROOF_TICKET_CREATION_GUIDE.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/index.rst +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/installation.rst +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/prd/mcp-ticketer-prd.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/releases/PUBLICATION_GUIDE_v0.2.0.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/releases/PUBLICATION_SUCCESS_v0.2.0.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/releases/PUBLICATION_SUCCESS_v0.3.0.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/releases/PUBLICATION_SUCCESS_v0.3.1.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/releases/RELEASE_v0.1.39_SUMMARY.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/releases/RELEASE_v0.2.0_SUMMARY.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/reports/CONFIG_RESOLUTION_FIX.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/reports/CREDENTIAL_VALIDATION_FIX.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/reports/DIAGNOSTICS_FEATURE.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/reports/ENV_DISCOVERY_COMPLETE.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/reports/FIX_SUMMARY.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/reports/HIERARCHY_IMPLEMENTATION_SUMMARY.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/reports/IMPLEMENTATION_SUMMARY.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/reports/MCP_CONFIGURATION_TEST_REPORT.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/reports/OPTIMIZATION_SUMMARY.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/reports/PROJECT_INITIALIZATION_SUMMARY.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/reports/TEST_COVERAGE_REPORT.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/reports/TEST_REPORT.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/reports/TEST_RESULTS_SUMMARY.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/reports/VERIFICATION_RESULTS.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/requirements.txt +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/setup/CLAUDE_DESKTOP_SETUP.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/setup/CODEX_INTEGRATION.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/setup/JIRA_SETUP.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/setup/LINEAR_SETUP.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/summaries/AUTO_DISCOVERY_BUG_FIX_SUMMARY.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/summaries/BULLETPROOF_IMPROVEMENTS_SUMMARY.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/summaries/COMMAND_SYNONYMS_SUMMARY.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/summaries/COMPREHENSIVE_TESTING_SUMMARY.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/summaries/INTERACTIVE_CLI_SETUP_SUMMARY.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/summaries/LINEAR_ADAPTER_INITIALIZATION_BUG_FIX.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/summaries/MODULE_REFACTORING_ANALYSIS.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/summaries/MODULE_REFACTORING_SUMMARY.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/summaries/PROJECT_CLEANUP_SUMMARY.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/docs/summaries/REFACTORED_ENV_SOLUTION_SUMMARY.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/mcp-ticketer +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/mcp-ticketer-server +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/requirements-dev.txt +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/requirements.txt +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/scripts/README.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/scripts/install.sh +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/scripts/manage_version.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/scripts/mcp_server.sh +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/scripts/test_set_command.sh +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/setup.cfg +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/setup.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/__init__.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/adapters/__init__.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/adapters/hybrid.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/adapters/linear/__init__.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/adapters/linear/queries.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/adapters/linear.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/cache/__init__.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/cache/memory.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/cli/__init__.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/cli/auggie_configure.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/cli/configure.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/cli/discover.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/cli/gemini_configure.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/cli/linear_commands.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/cli/main.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/cli/mcp_configure.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/cli/migrate_config.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/cli/queue_commands.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/cli/utils.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/core/__init__.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/core/adapter.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/core/config.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/core/env_discovery.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/core/http_client.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/core/mappers.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/core/models.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/core/project_config.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/core/registry.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/mcp/__init__.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/py.typed +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/queue/__init__.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/queue/__main__.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer/queue/run_worker.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer.egg-info/dependency_links.txt +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer.egg-info/entry_points.txt +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer.egg-info/not-zip-safe +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer.egg-info/requires.txt +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/src/mcp_ticketer.egg-info/top_level.txt +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/test-tickets/tickets/task-20250924002724.json +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/README.md +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/adapters/__init__.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/adapters/linear/__init__.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/adapters/linear/test_client.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/adapters/linear/test_mappers.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/adapters/linear/test_queries.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/adapters/linear/test_types.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/adapters/test_github_token.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/adapters/test_jira_direct.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/adapters/test_jira_projects.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/adapters/test_linear_config.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/adapters/test_linear_native.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/conftest.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/core/test_actual_worker_execution.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/core/test_env_discovery.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/core/test_queue_processing.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/core/test_queue_system.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/core/test_unified_env_loading.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/debug/debug_adapter_cache.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/debug/debug_cli_config.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/debug/debug_cli_vs_simulation.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/debug/debug_linear_teams.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/debug/debug_search.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/debug/debug_test.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/debug/debug_worker_adapter.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/debug/debug_worker_simulation.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/integration/test_aitrackdown_commenting.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/integration/test_jira_github_adapters.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/integration/test_pr_functionality.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/test_base_adapter.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/test_basic.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/test_codex_config.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/test_models.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tests/test_queue.py +0 -0
- {mcp_ticketer-0.3.2 → mcp_ticketer-0.3.3}/tox.ini +0 -0
|
@@ -6,6 +6,44 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.3.3] - 2025-01-25
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
- **Test Suite Reliability**: Fixed all e2e tests (30/30 passing, previously 26/32)
|
|
13
|
+
- Fixed state machine transition tests to follow valid state paths
|
|
14
|
+
- Fixed case sensitivity bug in comment search test
|
|
15
|
+
- Fixed Linear adapter test_init_missing_api_key with proper environment mocking
|
|
16
|
+
- Removed 2 obsolete queue-related tests
|
|
17
|
+
- **Code Quality**: Fixed 46+ auto-fixable linting issues across the codebase
|
|
18
|
+
- Applied modern Python type annotations
|
|
19
|
+
- Improved code formatting and organization
|
|
20
|
+
- Enhanced code readability and maintainability
|
|
21
|
+
|
|
22
|
+
### Added
|
|
23
|
+
- **Comprehensive Unit Tests**: Created extensive unit test suite (264 tests)
|
|
24
|
+
- Added tests/unit/ directory with organized test modules
|
|
25
|
+
- Achieved 100% test coverage for critical components:
|
|
26
|
+
- Core models (models.py)
|
|
27
|
+
- Exception handling (exceptions.py)
|
|
28
|
+
- Adapter registry (registry.py)
|
|
29
|
+
- Cache system (cache/memory.py)
|
|
30
|
+
- Improved overall code coverage from ~11% to 12.56%
|
|
31
|
+
|
|
32
|
+
### Changed
|
|
33
|
+
- **MCP Server Architecture**: Refactored for better maintainability (internal only - no API changes)
|
|
34
|
+
- Reduced MCP server code from ~1,800 to ~500 lines
|
|
35
|
+
- Extracted constants.py for centralized configuration
|
|
36
|
+
- Extracted dto.py for data transfer objects
|
|
37
|
+
- Extracted response_builder.py for consistent response formatting
|
|
38
|
+
- Improved code organization and testability
|
|
39
|
+
- **Test Organization**: Updated test import paths for consistency
|
|
40
|
+
- Standardized on `mcp_ticketer` imports (from `src.mcp_ticketer`)
|
|
41
|
+
|
|
42
|
+
### Improved
|
|
43
|
+
- **Code Coverage**: Increased from ~11% to 12.56% with 11 files at 100% coverage
|
|
44
|
+
- **Test Reliability**: All tests now pass consistently (294 total tests)
|
|
45
|
+
- **Code Quality**: Enhanced type safety and code organization throughout
|
|
46
|
+
|
|
9
47
|
## [0.1.39] - 2025-10-24
|
|
10
48
|
|
|
11
49
|
### Major Improvements
|
|
@@ -116,12 +116,12 @@ build: clean-build ## Build distribution packages
|
|
|
116
116
|
@python3 scripts/manage_version.py track-build
|
|
117
117
|
@echo "Build complete! Packages in dist/"
|
|
118
118
|
|
|
119
|
-
publish-test: check-release build ## Build and publish to TestPyPI
|
|
119
|
+
publish-test: check-release format lint test test-e2e build ## Build and publish to TestPyPI
|
|
120
120
|
@echo "Publishing to TestPyPI..."
|
|
121
121
|
twine upload --repository testpypi dist/*
|
|
122
122
|
@echo "Published to TestPyPI!"
|
|
123
123
|
|
|
124
|
-
publish-prod: check-release build ## Build and publish to PyPI
|
|
124
|
+
publish-prod: check-release format lint test test-e2e build ## Build and publish to PyPI
|
|
125
125
|
@echo "Publishing to PyPI..."
|
|
126
126
|
twine upload dist/*
|
|
127
127
|
@echo "Published successfully!"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mcp-ticketer
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.3
|
|
4
4
|
Summary: Universal ticket management interface for AI agents with MCP support
|
|
5
5
|
Author-email: MCP Ticketer Team <support@mcp-ticketer.io>
|
|
6
6
|
Maintainer-email: MCP Ticketer Team <support@mcp-ticketer.io>
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
# Versioning and Build Tracking
|
|
2
|
+
|
|
3
|
+
**Status**: ✅ IMPLEMENTED
|
|
4
|
+
**Last Updated**: 2025-10-24
|
|
5
|
+
**Version**: 0.3.2
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
MCP Ticketer has a comprehensive version management and build tracking system already implemented via `scripts/manage_version.py`.
|
|
10
|
+
|
|
11
|
+
## Current Implementation
|
|
12
|
+
|
|
13
|
+
### Version Management
|
|
14
|
+
|
|
15
|
+
**Location**: `scripts/manage_version.py`
|
|
16
|
+
|
|
17
|
+
**Features**:
|
|
18
|
+
- ✅ Semantic versioning (MAJOR.MINOR.PATCH)
|
|
19
|
+
- ✅ Automatic version bumping (major, minor, patch)
|
|
20
|
+
- ✅ Git commit creation for version bumps
|
|
21
|
+
- ✅ Git tag creation for releases
|
|
22
|
+
- ✅ Release readiness validation
|
|
23
|
+
- ✅ Version file synchronization (`__version__.py` and `pyproject.toml`)
|
|
24
|
+
|
|
25
|
+
**Usage**:
|
|
26
|
+
```bash
|
|
27
|
+
# Get current version
|
|
28
|
+
python3 scripts/manage_version.py get-version
|
|
29
|
+
|
|
30
|
+
# Bump version (with optional git commit and tag)
|
|
31
|
+
python3 scripts/manage_version.py bump patch
|
|
32
|
+
python3 scripts/manage_version.py bump patch --git-commit --git-tag
|
|
33
|
+
python3 scripts/manage_version.py bump minor --git-commit --git-tag
|
|
34
|
+
python3 scripts/manage_version.py bump major --git-commit --git-tag
|
|
35
|
+
|
|
36
|
+
# Validate release readiness
|
|
37
|
+
python3 scripts/manage_version.py check-release
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Build Tracking
|
|
41
|
+
|
|
42
|
+
**Location**: `.build_metadata.json`
|
|
43
|
+
|
|
44
|
+
**Tracked Metadata**:
|
|
45
|
+
- ✅ Version number
|
|
46
|
+
- ✅ Build number (auto-incrementing)
|
|
47
|
+
- ✅ Git commit SHA
|
|
48
|
+
- ✅ Git branch name
|
|
49
|
+
- ✅ Build timestamp (ISO 8601 with timezone)
|
|
50
|
+
- ✅ Release notes
|
|
51
|
+
- ✅ Previous version
|
|
52
|
+
|
|
53
|
+
**Current Build Metadata**:
|
|
54
|
+
```json
|
|
55
|
+
{
|
|
56
|
+
"version": "0.3.2",
|
|
57
|
+
"build_number": 111,
|
|
58
|
+
"git_commit": "bd063ed",
|
|
59
|
+
"git_branch": "main",
|
|
60
|
+
"build_timestamp": "2025-10-25T03:32:31.858613+00:00",
|
|
61
|
+
"release_notes": "",
|
|
62
|
+
"previous_version": "0.3.2"
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Usage**:
|
|
67
|
+
```bash
|
|
68
|
+
# Track build (automatically increments build number)
|
|
69
|
+
python3 scripts/manage_version.py track-build
|
|
70
|
+
|
|
71
|
+
# Track build with release notes
|
|
72
|
+
python3 scripts/manage_version.py track-build --notes "Fixed Linear auth issue"
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Makefile Integration
|
|
76
|
+
|
|
77
|
+
**Version Management Targets**:
|
|
78
|
+
```makefile
|
|
79
|
+
# Show current version
|
|
80
|
+
make version
|
|
81
|
+
|
|
82
|
+
# Bump version and create git commit + tag
|
|
83
|
+
make version-bump-patch # 0.3.2 → 0.3.3
|
|
84
|
+
make version-bump-minor # 0.3.2 → 0.4.0
|
|
85
|
+
make version-bump-major # 0.3.2 → 1.0.0
|
|
86
|
+
|
|
87
|
+
# Validate release readiness
|
|
88
|
+
make check-release
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**Full Release Workflow Targets**:
|
|
92
|
+
```makefile
|
|
93
|
+
# Complete release workflow (bump + build + publish)
|
|
94
|
+
make release-patch # Patch version release
|
|
95
|
+
make release-minor # Minor version release
|
|
96
|
+
make release-major # Major version release
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**Build Target** (automatically tracks build):
|
|
100
|
+
```makefile
|
|
101
|
+
make build
|
|
102
|
+
# → Runs: python3 -m build
|
|
103
|
+
# → Then: python3 scripts/manage_version.py track-build
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Release Workflow
|
|
107
|
+
|
|
108
|
+
### Standard Release Process
|
|
109
|
+
|
|
110
|
+
**Current (v0.3.2 release)**:
|
|
111
|
+
```bash
|
|
112
|
+
# 1. Make changes and commit
|
|
113
|
+
git add .
|
|
114
|
+
git commit -m "fix: correct Linear API authentication"
|
|
115
|
+
|
|
116
|
+
# 2. Bump version (creates git commit and tag)
|
|
117
|
+
make version-bump-patch
|
|
118
|
+
|
|
119
|
+
# 3. Publish to PyPI
|
|
120
|
+
make publish
|
|
121
|
+
# → Runs: check-release format lint test test-e2e build upload
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Automated Release Workflow
|
|
125
|
+
|
|
126
|
+
**Makefile provides fully automated workflows**:
|
|
127
|
+
```bash
|
|
128
|
+
# Patch release (0.3.2 → 0.3.3)
|
|
129
|
+
make release-patch
|
|
130
|
+
|
|
131
|
+
# Minor release (0.3.2 → 0.4.0)
|
|
132
|
+
make release-minor
|
|
133
|
+
|
|
134
|
+
# Major release (0.3.2 → 1.0.0)
|
|
135
|
+
make release-major
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**These commands execute**:
|
|
139
|
+
1. `version-bump-{patch|minor|major}` - Bump version, commit, tag
|
|
140
|
+
2. `build` - Build distribution packages + track build metadata
|
|
141
|
+
3. `publish-prod` - Upload to PyPI
|
|
142
|
+
|
|
143
|
+
## Release Validation
|
|
144
|
+
|
|
145
|
+
### Pre-Release Checks (`check-release`)
|
|
146
|
+
|
|
147
|
+
**Validation Steps**:
|
|
148
|
+
1. ✅ Git working directory is clean (no uncommitted changes)
|
|
149
|
+
2. ✅ Version is valid semver format
|
|
150
|
+
3. ✅ On a git branch (not detached HEAD)
|
|
151
|
+
|
|
152
|
+
**Example**:
|
|
153
|
+
```bash
|
|
154
|
+
$ make check-release
|
|
155
|
+
Validating release readiness...
|
|
156
|
+
✅ Release validation passed
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**Failure Example**:
|
|
160
|
+
```bash
|
|
161
|
+
$ make check-release
|
|
162
|
+
Validating release readiness...
|
|
163
|
+
❌ Release validation failed:
|
|
164
|
+
- Git working directory has uncommitted changes
|
|
165
|
+
- Not on a git branch
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Test Integration
|
|
169
|
+
|
|
170
|
+
### Test Requirements Before Publishing
|
|
171
|
+
|
|
172
|
+
**Current Makefile Flow** (updated 2025-10-24):
|
|
173
|
+
```makefile
|
|
174
|
+
publish-prod: check-release format lint test test-e2e build
|
|
175
|
+
publish-test: check-release format lint test test-e2e build
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
**Execution Order**:
|
|
179
|
+
1. `check-release` - Validate git state and version
|
|
180
|
+
2. `format` - Format code (black + isort)
|
|
181
|
+
3. `lint` - Run linters (ruff + mypy)
|
|
182
|
+
4. `test` - Run all unit tests
|
|
183
|
+
5. `test-e2e` - **NEW**: Run E2E tests
|
|
184
|
+
6. `build` - Build distribution packages
|
|
185
|
+
7. Upload to PyPI (prod or test)
|
|
186
|
+
|
|
187
|
+
**Impact**: Publishing now requires ALL tests (including E2E) to pass.
|
|
188
|
+
|
|
189
|
+
## Changelog Automation
|
|
190
|
+
|
|
191
|
+
### Current Status
|
|
192
|
+
|
|
193
|
+
**Not Yet Implemented** ⚠️
|
|
194
|
+
|
|
195
|
+
**Recommendation**: Add changelog generation to release workflow.
|
|
196
|
+
|
|
197
|
+
**Proposed Implementation**:
|
|
198
|
+
```bash
|
|
199
|
+
# Use standard-version or similar tool
|
|
200
|
+
npm install -g standard-version
|
|
201
|
+
|
|
202
|
+
# Add to Makefile
|
|
203
|
+
changelog:
|
|
204
|
+
standard-version --skip.bump --skip.tag
|
|
205
|
+
|
|
206
|
+
release-patch: version-bump-patch changelog build publish-prod
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
**Alternative**: Manual CHANGELOG.md updates (current practice).
|
|
210
|
+
|
|
211
|
+
## Commit Message Convention
|
|
212
|
+
|
|
213
|
+
**Current Practice**: Conventional Commits
|
|
214
|
+
|
|
215
|
+
**Format**:
|
|
216
|
+
```
|
|
217
|
+
<type>(<scope>): <description>
|
|
218
|
+
|
|
219
|
+
[optional body]
|
|
220
|
+
|
|
221
|
+
[optional footer]
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
**Types**:
|
|
225
|
+
- `feat`: New feature
|
|
226
|
+
- `fix`: Bug fix
|
|
227
|
+
- `docs`: Documentation changes
|
|
228
|
+
- `style`: Code style changes (formatting)
|
|
229
|
+
- `refactor`: Code refactoring
|
|
230
|
+
- `test`: Test additions/updates
|
|
231
|
+
- `chore`: Maintenance tasks
|
|
232
|
+
|
|
233
|
+
**Examples**:
|
|
234
|
+
```bash
|
|
235
|
+
feat(linear): add story point estimation support
|
|
236
|
+
fix(cache): prevent memory leak in long-running processes
|
|
237
|
+
docs: update CLAUDE.md with versioning instructions
|
|
238
|
+
chore: bump version to 0.3.3
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
## Build Number Tracking
|
|
242
|
+
|
|
243
|
+
### Build Metadata File
|
|
244
|
+
|
|
245
|
+
**Location**: `.build_metadata.json` (git-ignored)
|
|
246
|
+
|
|
247
|
+
**Purpose**: Track every build with unique build number
|
|
248
|
+
|
|
249
|
+
**Auto-Increment**: Each `make build` increments `build_number`
|
|
250
|
+
|
|
251
|
+
**Example History**:
|
|
252
|
+
```json
|
|
253
|
+
Build #109: v0.3.1 (commit: abc123, branch: main)
|
|
254
|
+
Build #110: v0.3.2 (commit: def456, branch: main)
|
|
255
|
+
Build #111: v0.3.2 (commit: bd063ed, branch: main) ← Current
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
### Build Metadata Usage
|
|
259
|
+
|
|
260
|
+
**Debugging**: Link production issues to specific build
|
|
261
|
+
**Auditing**: Track when and what was deployed
|
|
262
|
+
**Rollback**: Identify previous stable build numbers
|
|
263
|
+
**CI/CD**: Build numbers can be used in artifact naming
|
|
264
|
+
|
|
265
|
+
## Version Sources
|
|
266
|
+
|
|
267
|
+
### Single Source of Truth
|
|
268
|
+
|
|
269
|
+
**Primary**: `src/mcp_ticketer/__version__.py`
|
|
270
|
+
```python
|
|
271
|
+
__version__ = "0.3.2"
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
**Secondary**: `pyproject.toml` (dynamic versioning)
|
|
275
|
+
```toml
|
|
276
|
+
[project]
|
|
277
|
+
dynamic = ["version"]
|
|
278
|
+
|
|
279
|
+
[tool.setuptools.dynamic]
|
|
280
|
+
version = {attr = "mcp_ticketer.__version__"}
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
**Build Metadata**: `.build_metadata.json` (tracks version + metadata)
|
|
284
|
+
|
|
285
|
+
### Version Propagation
|
|
286
|
+
|
|
287
|
+
**Update Sequence**:
|
|
288
|
+
1. `scripts/manage_version.py` updates `__version__.py`
|
|
289
|
+
2. `setuptools` reads version from `__version__.py` during build
|
|
290
|
+
3. Build metadata is written to `.build_metadata.json`
|
|
291
|
+
|
|
292
|
+
## Recommendations
|
|
293
|
+
|
|
294
|
+
### ✅ Already Excellent
|
|
295
|
+
|
|
296
|
+
1. **Comprehensive version management script**
|
|
297
|
+
2. **Build tracking with metadata**
|
|
298
|
+
3. **Git integration (commits, tags)**
|
|
299
|
+
4. **Release validation**
|
|
300
|
+
5. **Makefile automation**
|
|
301
|
+
6. **E2E test integration in publish workflow** (newly added)
|
|
302
|
+
|
|
303
|
+
### 🟡 Consider Adding
|
|
304
|
+
|
|
305
|
+
1. **Changelog Automation**
|
|
306
|
+
- Tool: `standard-version` or `git-cliff`
|
|
307
|
+
- Benefit: Auto-generate CHANGELOG.md from commits
|
|
308
|
+
|
|
309
|
+
2. **Pre-commit Hook for Version Checks**
|
|
310
|
+
- Validate version was bumped before release commits
|
|
311
|
+
- Prevent accidental duplicate versions
|
|
312
|
+
|
|
313
|
+
3. **CI/CD Build Number Integration**
|
|
314
|
+
- Pass build number to CI/CD systems
|
|
315
|
+
- Use in Docker image tags, artifact names
|
|
316
|
+
|
|
317
|
+
4. **Version Bump Detection from Commits**
|
|
318
|
+
- Auto-detect if commit should bump major/minor/patch
|
|
319
|
+
- Based on conventional commit types
|
|
320
|
+
|
|
321
|
+
### ⚪ Optional Enhancements
|
|
322
|
+
|
|
323
|
+
1. **Release Notes Template**
|
|
324
|
+
- Structured template for release notes
|
|
325
|
+
- Categories: Features, Fixes, Breaking Changes
|
|
326
|
+
|
|
327
|
+
2. **Version History Tracking**
|
|
328
|
+
- Maintain history of all builds in separate file
|
|
329
|
+
- Archive old build metadata
|
|
330
|
+
|
|
331
|
+
3. **Semantic Release Full Automation**
|
|
332
|
+
- Fully automated version bumps
|
|
333
|
+
- Based on commit messages only
|
|
334
|
+
|
|
335
|
+
## Summary
|
|
336
|
+
|
|
337
|
+
**Current Status**: ✅ EXCELLENT
|
|
338
|
+
|
|
339
|
+
MCP Ticketer already has a robust version management and build tracking system:
|
|
340
|
+
|
|
341
|
+
- ✅ Semantic versioning with automation
|
|
342
|
+
- ✅ Build tracking with comprehensive metadata
|
|
343
|
+
- ✅ Git integration (commits, tags)
|
|
344
|
+
- ✅ Release validation
|
|
345
|
+
- ✅ Makefile automation for all workflows
|
|
346
|
+
- ✅ E2E test integration before publishing (newly added)
|
|
347
|
+
|
|
348
|
+
**No critical improvements needed**. The system is production-ready and follows best practices.
|
|
349
|
+
|
|
350
|
+
**Optional**: Add changelog automation for even better developer experience.
|
|
@@ -17,7 +17,7 @@ addopts =
|
|
|
17
17
|
--cov-report=term-missing:skip-covered
|
|
18
18
|
--cov-report=html
|
|
19
19
|
--cov-report=xml
|
|
20
|
-
--cov-fail-under=
|
|
20
|
+
--cov-fail-under=12
|
|
21
21
|
--maxfail=1
|
|
22
22
|
--tb=short
|
|
23
23
|
--timeout=60
|
|
@@ -28,6 +28,7 @@ markers =
|
|
|
28
28
|
slow: marks tests as slow (deselect with '-m "not slow"')
|
|
29
29
|
integration: marks tests as integration tests requiring external services
|
|
30
30
|
unit: marks tests as unit tests
|
|
31
|
+
e2e: marks tests as end-to-end tests
|
|
31
32
|
adapter: marks tests for specific adapters
|
|
32
33
|
jira: marks tests requiring JIRA
|
|
33
34
|
linear: marks tests requiring Linear
|