Skip to content

[#328] PlantUML via async plugin pipeline - #343

Open
gregoreesmaa wants to merge 4 commits into
mainfrom
issue/328-plantuml
Open

gregoreesmaa wants to merge 4 commits into
mainfrom
issue/328-plantuml

Conversation

@gregoreesmaa

@gregoreesmaa gregoreesmaa commented Sep 12, 2026

Copy link
Copy Markdown
Owner

Based on main (unstacked 2026-09-12; was stacked on #342); closes #328.

PlantUML renderer row on the async plugin pipeline (spec docs/plugins-async-spec.md §3 tool table: plantuml -tpng -o OUTDIR SRC):

  • src/core/plugin_cache.zig: Renderer.plantuml (appended; earlier ordinals unchanged), plantuml→plantuml + puml→plantuml mappings, cache-path arm, unit test (both tokens + /read/plugins/plantuml/<hex>.png shape).
  • scripts/read-plugin-render.sh: plantuml probe + render stanza (renders into OUTDIR, promotes the input-stem PNG to OUT.tmp, then the existing atomic rename).
  • Fixture test_cases/plugin_plantuml.md (```plantuml fence) + suite case 4k (skeleton: code-card state, no seeding).
  • docs/spec.md Blocks line gains PlantUML.

Gates: zig build test -Doptimize=ReleaseFast --summary all 430/430 pass; screenshot suite adds only screenshots/plugin_plantuml.png; size_gate.sh PASS (binary=196232 — zero growth); check_test_cases.sh PASS.

Renderer binary requirement: no plantuml CLI in this env — coverage is skeleton + probe-false determinism, proven live: probe plantuml → exit 1, render plantuml SRC OUT → exit 1 (→ naive code fallback per spec §5). The OUTDIR/stem promotion path is unproven live and needs a machine with PlantUML installed.


Unstack + review response (2026-09-12, commit 8768fd2)

  • Branch replayed onto main (was stacked on [#329] Graphviz via async plugin pipeline #342); this PR now contains only the PlantUML renderer work.
  • Reviewer screenshot comment addressed: plugin_plantuml.png now shows the rendered sequence diagram — suite case 4k pre-seeds synthetic test_cases/assets/plantuml-seed.png (regenerable via scripts/gen-plugin-seeds.py) at the fence's content-addressed cache path and captures with --settle-images through the shipped stat-exists path (mermaid-4e precedent). Seed pixels are synthetic.
  • Gates on the replayed branch: 424/424 tests, suite exit 0 (only plugin_plantuml.png new), size_gate.sh 196232B, check_test_cases.sh + ship_separation.sh PASS.

Comment thread screenshots/plugin_plantuml.png
@gregoreesmaa
gregoreesmaa changed the base branch from issue/329-graphviz to main September 12, 2026 10:39
Comment thread screenshots/plugin_plantuml.png
Comment thread test_cases/assets/plantuml-seed.png
gregoreesmaa added a commit that referenced this pull request Sep 12, 2026
14-message four-participant sequence tall fixture with message-mirror
seed (476x2080, two scrolled frames) and eight-participant wide fixture
with seed (2000x600, clamped fold), folded into case 4k; generator
script stays byte-identical across the plugin branches.
gregoreesmaa added a commit that referenced this pull request Sep 12, 2026
14-message four-participant sequence tall fixture with message-mirror
seed (476x2080, two scrolled frames) and eight-participant wide fixture
with seed (2000x600, clamped fold), folded into case 4k; generator
script stays byte-identical across the plugin branches.
gregoreesmaa added a commit that referenced this pull request Sep 12, 2026
14-message four-participant sequence tall fixture with message-mirror
seed (476x2080, two scrolled frames) and eight-participant wide fixture
with seed (2000x600, clamped fold), folded into case 4k; generator
script stays byte-identical across the plugin branches.
14-message four-participant sequence tall fixture with message-mirror
seed (476x2080, two scrolled frames) and eight-participant wide fixture
with seed (2000x600, clamped fold), folded into case 4k; generator
script stays byte-identical across the plugin branches.
Owner: the Pillow-mimicked seeds faked PlantUML support. All three
seeds are now genuine PlantUML 1.2026.8 output for the exact fixture
fence sources (plantuml -tpng, the shipped helper's flags), verified
reproducible: scripts/gen-plugin-seeds.py shells out to the real
plantuml binary (fails loudly without it) and regenerates
pixel-identical assets for all three. The fixtures compiled cleanly as
written; only the pixels change.

PlantUML lays sequence diagrams out compactly (tall is 393x511, not a
2080px sheet), so the whole render fits the initial fold: the 700/1400
scrolled frames are removed (700 showed only the bottom footer sliver
plus empty viewport). Complexity coverage stays in the diagrams
themselves: 14 messages across four participants, eight participants
wide.

Suite 436/436 green. No src/ changes: ship binary untouched by this PR.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feat] Add support for PlantUML

1 participant