feat: WP-0006 — packaging & distribution infrastructure

CI matrix (Python 3.11/3.12) with pip cache and coverage job. PyPI publish
workflow (OIDC trusted publishing, triggered on v*.*.* tags). Docker image
for REST service with non-root user + ghcr.io push workflow. markidocx
--version flag. Diagram optional extras (diagram-mermaid/graphviz/plantuml)
and readme/urls in pyproject.toml. CHANGELOG.md (Keep a Changelog format)
with retrospective v0.1.0 entry. docs/release-process.md with executable
checklist. All 272 tests pass; ruff and mypy clean; twine check PASSED.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-17 14:30:08 +00:00
parent 5564747060
commit 6cf973b017
11 changed files with 290 additions and 6 deletions

61
CHANGELOG.md Normal file
View File

@@ -0,0 +1,61 @@
# Changelog
All notable changes to markidocx are documented in this file.
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
---
## [Unreleased]
---
## [0.1.0] — 2026-03-17
### Added
**Core pipeline (WP-0001)**
- `manifest.py` — project manifest parsing and validation (FR-100)
- `builder.py` — Markdown → DOCX conversion, LEVEL1 feature set: headings, lists, tables,
footnotes, images, hyperlinks (FR-200)
- `importer.py` — DOCX → Markdown round-trip import (FR-300, FR-400)
- `differ.py` — structural drift detection between original Markdown and re-imported result (FR-700)
- `templates.py` — document family management: `article`, `book`, `website` (FR-600)
- `evidence.py` — evidence and report assembly (FR-1400)
**Service interfaces (WP-0002)**
- `cli.py` — Typer CLI: `build`, `import`, `compare`, `validate`, `serve`, `workflow`,
`mcp`, `template` commands
- `rest.py` — FastAPI REST service with structured `WarningRecord` / `FailureRecord` output
(FR-900, FR-1208)
- `mcp_server.py` — FastMCP server exposing same functional surface as CLI/REST (FR-1000)
- `errors.py``WarningRecord`, `FailureRecord`, `OutputState` error framework (FR-12011210)
**LEVEL3 advanced features (WP-0003)**
- `level3.py` — LEVEL3 support detection and capability disclosure (FR-537539)
- `xref.py` — cross-reference round-trip helpers (FR-531, FR-540)
- `figures.py` — numbered figure round-trip helpers (FR-532, FR-541)
- `diagrams.py` — auto-diagram source-only preservation (FR-533, FR-534)
- `bibliography.py` — citation and references section round-trip (FR-535, FR-536, FR-542)
- `workflows.py` — composite workflow orchestration: `single-file-roundtrip`,
`multi-file-roundtrip`, `release-regression`, `family-switch-build` (FR-1300)
**Diagram renderer integration (WP-0005)**
- Pluggable `DiagramRenderer` protocol and `RendererResult` type
- `MermaidRenderer` — shells out to `mmdc` when available (FR-533)
- `GraphvizRenderer` — shells out to `dot` when available (FR-533)
- `PlantUMLRenderer` — shells out to `plantuml` when available (FR-533)
- Graceful source-only fallback with `WarningRecord(reason="renderer-unavailable")` when
tool is absent (FR-538)
- Alt-text source markers enable diagram round-trip after rendering (FR-534)
- Optional extras: `diagram-mermaid`, `diagram-graphviz`, `diagram-plantuml`
**Packaging & distribution (WP-0006)**
- GitHub Actions CI: matrix test on Python 3.11 + 3.12, ruff, mypy, coverage
- PyPI publish workflow triggered on `v*.*.*` tags via OIDC trusted publishing
- Docker image for REST service (`ghcr.io`)
- `markidocx --version` command
[Unreleased]: https://github.com/tegwick/marki-docx/compare/v0.1.0...HEAD
[0.1.0]: https://github.com/tegwick/marki-docx/releases/tag/v0.1.0