Changelog¶
Release notes will be published with tagged releases.
[Unreleased]¶
Fixed¶
ZenPrinciple.source_url: seven per-principle documentation deep links inlanguages/javascript/rules.pywere silently discarded by Pydantic becauseZenPrinciplenever declared the field, whileLanguageZenPrinciplesdid. All seven now survive model construction, and every language gains the ability to cite per-principle guidanceserver.pynow passesIconandToolAnnotationstheir declared field names (mime_type,read_only_hint, …) instead of the camelCase wire aliases;model_dump(by_alias=True)output is unchangedGreyCommitCommentDetectorlet atokenize.TokenErrorescape and abort the analysis.generate_tokensis a lazy generator, so the guard now wraps the loop rather than the call and the scan degrades best-effort like_mask_commentsUnusedArgumentUtilizationDetectorreported the 0-basedast.arg.col_offsetas the 1-basedLocation.column, under-reporting every unused-argument column by one — the only AST-derived column in the codebase omitting the+ 1
Changed¶
- ruff findings from the 0.16 stabilised rules resolved:
ISC004(45 sites parenthesised),PLR0917(13# noqa: PLR0913directives extended),CPY001(see below) [tool.ruff.lint.flake8-copyright]configured withmin-file-size = 16384, requiring a copyright header on the 43 most substantial modules rather than all 446 filestyupgraded0.0.51→0.0.78
Added¶
- Regression tests for two defensive
except Exceptionrecovery paths inadapters/rules_adapter.pyandanalyzers/base.py, both asserted via their log output rather than by coverage line numbers - Regression tests closing the ten unreached branches of the
python-021andpython-022detectors, taking the patch coverage of the code they added from 95.02% to 100%
[0.9.2] - 2026-09-03¶
Completes the 0.9.1 release. 0.9.1 reached PyPI and cut a GitHub Release, but never registered with the MCP registry, and the run reported that failure only in its last job — after the wheel had already published irreversibly.
Fixed¶
- The Docker image was never tagged with the full version.
metadata-actionwas configured with{{major}}.{{minor}}only, so a release pushed:0.9and:latestbut never:0.9.1, whileserver.jsonpins the OCI package to the full version. The registry answered400 "OCI image ... does not exist". Latent in every prior release — ghcr held0.1 … 0.9and no patch tag at all — and it surfaced only on the first release where{{major}}.{{minor}}diverged from the real version. (#212) server.json's version strings were untracked by the release config, so a bump updatedpyproject.tomland__init__.pyand leftserver.jsonbehind while the release check still reported all-green. All three occurrences — the top-level field,packages[0], and the:X.Y.Zsuffix of the OCI identifier — are now pin targets, so they move with every bump.
Fixed¶
- The Docker publish never produced a full-version tag, so the MCP registry publish failed with
400 "OCI image ...:0.9.1 does not exist in the registry"while the Docker job itself reported success.docker/metadata-actionwas configured with{{major}}.{{minor}}andlatestonly, producing:0.9and:latest, butserver.jsonpins the OCI package to the full version. Addedtype=semver,pattern={{version}}. Latent in every prior release — ghcr holds0.1through0.9and no patch-level tag — and only surfaced on the first release where the two differ.
Fixed¶
- fastmcp 4 server startup:
task=-enabled tools now require an explicitly registered tasks extension, which fastmcp 3 wired implicitly.mcp.add_extension(TasksExtension())is registered on the server, fixing thedocker-image-checkfailureTask-enabled tools (...) require the tasks extension, but no extension with identifier 'io.modelcontextprotocol/tasks' is registered
Added¶
tests/server/test_server_lifespan_startup.pyboots the real server lifespan. Nothing in the suite previously started the server, so two consecutive fastmcp 4 breakages (theTaskConfigimport move and the tasks-extension registration) reachedmainwith a greentestjob, leavingdocker-image-checkas the only detector
[0.9.1] - 2026-08-30¶
Fixed¶
- MCP Registry publish 403:
server.jsonname, the READMEmcp-namemarker, and the Dockerfileio.modelcontextprotocol.server.namelabel used the wrong namespace casing (io.github.anselmoo); corrected to the registry-requiredio.github.Anselmooto match the GitHub OIDC repository-owner claim exactly
[0.9.0] - 2026-08-30¶
Added¶
server.jsonmanifest for the official MCP Registry, with PyPI and OCI/GHCR package entriesmcp-nameREADME marker andio.modelcontextprotocol.server.nameDockerfile label for MCP Registry ownership verification
CI/CD¶
publish-mcp-registryjob publishesserver.jsonto the official MCP Registry viamcp-publisher/github-oidcon release tagslintjob now validatesserver.jsonwithmcp-publisher validateon every PRmcp-publisherdownload now usescurl -fsSL(fails fast on a bad download instead of piping an error body intotar),chmod +xs the extracted binary, and pins a specific release instead oflatest
[0.8.1] - 2026-06-22¶
Changed¶
- CI/CD: switch
build-mcpbjob toAnselmoo/mcp2mcpbcomposite action with--from-distto build bundles from locally-built wheel (pinned to SHAb040bab— pre-release v0.5)
[0.8.0] - 2026-06-04¶
Added¶
- feat: implement
check_architectural_patternsMCP tool — replaceNotImplementedErrorstub with 16 language-agnostic pattern detectors (singleton, factory, observer, repository, builder, command, mvc, middleware, prototype, decorator, facade, proxy, strategy, composite, chain-of-responsibility, iterator) covering GoF and architectural patterns across Python, Go, Rust, JavaScript, Java, and TypeScript via compiled regex without requiring a parse tree - ci: add
rrt-checksjob usingrepo-release-tools@v1.8.1for branch name, commit subject, changelog, and release-health policy validation - ci: add
build-mcpbjob that produces a DXT v0.4.mcpbbundle and attaches it to every GitHub Release alongside wheel, sdist, and SBOM - release: add
scripts/build_mcpb.pyandpoe build_mcpbtask to build the.mcpbbundle locally (dist/is gitignored) - docs: document
.mcpbone-click install for Claude Desktop in installation and MCP-integration pages - dev: add
CLAUDE.mdwith project conventions for Claude Code sessions
Fixed¶
- release:
.mcpbmanifest schema corrected to DXT spec v0.4 (manifest_version,repositoryas object,server.entry_pointadded) - release: replace
pyproject.tomlentry-point with a stdlib-onlyserver/main.pyshim — bundlingpyproject.tomltriggereduv_build.build_editable, which failed without the full source tree - release: use
uv tool runinstead ofuvxinmcp_configso the command is valid regardless of how Claude Desktop resolves the binary path - fix: update
CHANGELOG.mdwith recent edits and ensure formatting consistency
Changed¶
- ci: bump pre-commit
repo-release-toolshook fromv0.1.1tov1.8.1
[0.7.1] - 2026-04-01¶
Added¶
- ci: upload test coverage XML and artifact for codecov/upload (#156)
- enhance MCP integration with Codex and Copilot support, update documentation and CLI commands (#149)
[0.7.0] – 2026-03-20¶
Fixed¶
- update documentation links and structure (#141)
[0.6.0] – 2026-03-18¶
Added¶
- Add SQLAlchemy framework support and enhance documentation (#138)
Fixed¶
- docs: repair Mermaid contrast, text overflow, and expand diagram coverage (#137)
[0.5.2] – 2026-03-09¶
Changed¶
- enhance CLI with brand-aligned styles and improved documentation (#115)
[0.5.1] – 2026-03-07¶
Added¶
- Batch mode — LLM-safe chunked analysis with cursor pagination (#110)
- Fix
overall_scorescale (0–100 → 0–10) to match documented contract inmodels.py(#110) - Implement proper weighted health score in
analyze_batch_summary: severity² penalty (70%), violation density (20%), maintainability index (10%) (#19, #110) - Add
analyze_batch_autoMCP tool: auto-routes to full result or paginated batch based on token budget (#20, #110)
[0.5.0] – 2026-03-03¶
Added¶
- enhance branch creation with normalization and description joining functions; add tests for dry-run behavior (#107)
- Add support for Ansible, Terraform, and SVG analysis (#105)
- complete zen rules for all 5 languages (#75–#79) (#95)
Fixed¶
- Update README to use PNG for dogma illustration and fix URL (#108)
- Refactor docstrings and import statements for consistency (#93)
Documentation¶
- extend abbreviations list with 17 new entries (#104)
- Refactor documentation and add Dogma mapping generation script (#92)
[0.4.0] – 2026-02-26¶
Added¶
- Add philosophy document and update links in README; adjust argument names in analyzers (#90)
- enhance language analyzers with AST parsing capabilities (#71)
Fixed¶
- Improve branch creation checks and add tests for uncommitted changes (#87)
Documentation¶
- MCP-first reorientation of README.md and installation docs (#70)
[0.3.0] – 2026-02-22¶
Added¶
- ci: enable verbose output for TestPyPI package publishing
- gitlab_ci: Add GitLab CI support with multiple detectors and principles (#67)
- enhance language validation and documentation generation (#65)
Fixed¶
- css: resolve back-to-top flip, contrast failures, and add cherry-red palette (#46)
- linting issues ruff (#45)
Documentation¶
- add content quality checks and guide to documentation (#34)