Skip to content

v1.2.0

Latest

Choose a tag to compare

@basher83 basher83 released this 30 Sep 15:08
· 63 commits to main since this release
4769698

🚀 Features

  • Add tag listing and retrieval tools (#174)
  • (time-accounting) Add time_unit support to update_ticket and add_article (#211)
  • (deps) Migrate from bundled FastMCP 1 to standalone FastMCP 3
  • (triage) Add repo triage skills
  • (audit) Add opt-in JSON Lines audit logging for security events
  • (export) Add bulk ticket export to JSONL
  • (kb) Add read-only Knowledge Base support
  • (search) Add creation date range filters to ticket search
  • Add pending_time to update_ticket for pending states
  • (models) Accept case-insensitive constant inputs
  • (tickets) Add zammad_bulk_update_tickets tool
  • (tickets) Support custom Zammad object attributes on read and update
  • (webhooks) Receive Zammad webhook events and expose zammad_list_events
  • (models) Add ticket merge request and result models
  • (client) Wrap the legacy Zammad ticket_merge endpoint
  • (server) Add zammad_merge_tickets destructive tool
  • (client) Add rate limiting, retries, and circuit breaker for Zammad requests

🐛 Bug Fixes

  • Address CodeRabbit review feedback
  • Resolve Codacy D-series docstring violations in changed files
  • (tests) Add local fake Zammad server to HTTP integration fixture
  • (tests) Rename format param to fmt to avoid shadowing builtin (Ruff A002)
  • (tests) Fully teardown mock Zammad server in fixture
  • (triage) Address review feedback
  • (triage) Tighten review follow-ups
  • (triage) Remove unused workflow context fetches
  • (deps) Override protobuf to >=5.29.6 to resolve GHSA-8r5m-rr7v-pfvq
  • (deps) Isolate semgrep from uv dev graph
  • (codex) Address plugin review blockers
  • (codacy) Ignore plugin bundle in static analysis
  • (deps) Remediate dependency alerts
  • (deps) Clear dependency audit commit blocker
  • (audit) Load .env before building audit logger
  • (kb) Address Codacy pydocstyle and ruff findings
  • (kb) Address CodeRabbit review findings
  • (kb) Address remaining Codacy pydocstyle minor findings
  • Align docstring formatting with Codacy D203/D212/D213 rules
  • (kb) Address PR review — use init bootstrap, typed shape errors, mypy clean
  • (kb) Fall back to any legacy translation body when ids are stale
  • (export) Annotate zammad_export_tickets as a write tool
  • Address review findings on export paging, syslog, host checks, redaction
  • (deps) Remediate audit failures and remove vulnerable Safety tooling
  • Expose flat MCP tool arguments
  • Resolve audited dependency vulnerabilities
  • Preserve dependency requirements during audit updates
  • Align module docstrings with Codacy
  • Satisfy Codacy docstring rules
  • (prompts) Accept string arguments for ticket_id
  • Don't HTML-escape quotes/apostrophes in plain-text article/ticket content
  • Preserve quotes when updating ticket titles
  • (stats) Categorize by state_type_id (seeded and stable), not state name
  • (client) Request expand=true when fetching a single ticket
  • (client) Build get_ticket URL from zammad_py's normalised base
  • (stats) Flag group-filtered counts truncated at the search cap
  • [breaking] Remove zammad_delete_attachment, Zammad has no such endpoint
  • Add customer field to zammad_update_ticket
  • Address CodeRabbit review on zammad_update_ticket
  • (search) Show date bounds in search results header
  • Surface article attachments when reading tickets
  • Sanitize attachment metadata in ticket markdown
  • Sanitize article_id in attachments header too
  • (models) Keep quotes in update-ticket titles and bound the expanded GET
  • (tickets) Bound bulk tag names like the single-tag tools
  • (events) Return oldest page first so next_since cursor never skips events
  • (client) Percent-encode the merge target number path segment
  • (server) Give accurate guidance for 5xx exhaustion and throttled writes
  • (tools) Expose flat arguments for merge, bulk update, and list events
  • Address review findings on resilience, webhooks, events and CI aggregate
  • (deps) Cap fastmcp <4 and mcp <2 in project dependencies
  • (renovate) Match the mise Python cap by dependency name
  • (package) Report the distribution version from __version__

💼 Other

  • Address PR review feedback (#213)
  • Constrain mcp and fastmcp below their next majors
  • Declare requests as a direct dependency with type stubs
  • Relock for the requests and types-requests declarations

🚜 Refactor

  • (export) Split zammad_export_tickets into focused helpers
  • (client) Build ticket search clauses declaratively
  • (client) Pick the legacy translation body from one candidate list
  • Drop orphaned _destructive_write_annotations and harden guard test
  • Split attachment formatting to cut cyclomatic complexity
  • (client) Build search clauses and update payloads declaratively
  • (webhooks) Address Codacy static analysis findings

📚 Documentation

  • (skills) Add Zammad documentation guidance
  • Add maintainer pre-triage PR and issue ledger
  • Verify complete triage coverage and add canonical ledger
  • (maintainer) Add execution attack plan for the open PR board
  • (audit) Add Google-style docstrings and split middleware module
  • (export) Document zammad_export_tickets and ZAMMAD_EXPORT_DIR
  • (changelog) Record removal of codex digest automation
  • Document flat_params helpers and drop the stale SAFETY_API_KEY step
  • (tests) Use single-line docstrings for state-name regression tests
  • Order list_ticket_states example numerically by id
  • (stats) Document counts_truncated in the tool contract
  • (server) Advertise lowercase values for response_format and article_type
  • (server) Correct article_type default and example casing in add_article
  • (webhooks) Document the payload extraction helpers
  • Record rate limiting feature in unreleased changelog
  • (changelog) Regenerate unreleased notes for the merged integration batches
  • (changelog) Include this branch's own changelog commit in the unreleased notes
  • (changelog) Address review findings on the generator and the plan

🎨 Styling

  • (tests) Annotate shared state fixture as ClassVar (RUF012)
  • (models) Collapse _missing_ docstring to one line
  • (server) Sort merge model imports

🧪 Testing

  • (export) Include zammad_export_tickets in tool inventory
  • Exercise registered create-ticket tool
  • Use tuple form for parametrize argument names
  • Cover double quotes in plain-text sanitization
  • Cover customer forwarding through zammad_update_ticket tool
  • Cover attachments in ticket resource and document pending_time
  • (models) Cover non-string enum rejection and ArticleType schema
  • (merge) Drive merge_tickets doubles through the resilient session transport

⚙️ Miscellaneous Tasks

  • Update tooling and add documentation
  • Ignore hookify local config files
  • Untrack hookify local configs
  • Remove pre-commit from mise config
  • (dependabot) Tune Python dependency updates
  • Declare Python 3.13 and 3.14 support
  • (python) Pin runtime below 3.14
  • Skip Codacy upload for fork PRs
  • (triage) Add issue and PR automation workflows
  • (hooks) Silence pre-commit config warning
  • (codacy) Exclude repo-local codex skills
  • (coderabbit) Disable automatic PR labeling
  • (codacy) Strip non-Python tools, sync versions from codacy-cli init
  • (codex) Add repo-local Codex plugin and drop stale repomix xml
  • Replace CLAUDE instructions with AGENTS link
  • Update changelog generation
  • Align automation with uv and coverage rules
  • (ci) Delete .github/workflows/sync-labels.yml, stop fighting the factory labels
  • Remove obsolete workspace tooling
  • Remove legacy Claude commit skill
  • (ci) Remove CodeRabbit label instructions
  • Update mise tool configuration
  • Add technical documentation skill
  • Enable Entire integrations and record project idea
  • Drop accidentally-committed vendor/llm-anon-core gitlink
  • Ignore vendor/ and drop accidentally committed gitlink
  • Flip docstring layout to satisfy Codacy rule set
  • Satisfy Codacy docstring rules (D211/D212/D213/D203)
  • Adjust docstring formatting for Codacy
  • Satisfy Codacy docstring rules
  • Align docstrings with Codacy checks
  • Flip docstrings for Codacy
  • Report an aggregate test-and-coverage check for the ruleset
  • (triage) Remove repo-local codex digest automation
  • (plugins) Complete repo-local plugin retirement
  • (mise) Pin uv 0.12.20 to match the workflow setup-uv version
  • (codacy) Exclude tests from the active .codacy.yaml
  • Add lint and type-check job to mirror local gates
  • Add canonical non-mutating validation script shared by local and CI
  • Make validate.sh abort on the first failing gate
  • Keep one canonical validation job and flatten new tool docstrings
  • (changelog) Treat only vN.N.N tags as releases
  • (mise) Keep released changelog sections intact in changelog-bump
  • (changelog) Wrap dunder names in backticks

🛡️ Security