DiagramPilot v0.2.2
DiagramPilot v0.2.2
Issue: Add DOT export
Issue Version: 0.2.2
Tag: v0.2.2
npm: https://www.npmjs.com/package/diagrampilot/v/0.2.2
Public Website: https://diagrampilot.com
Summary
Add DOT as an exported artifact through diagrampilot export <path> --format dot. DOT should follow the existing export contract: stdout by default,
explicit file writes only with --out, and repairable diagnostics for invalid
input.
The output should use digraph, encode undirected edges with dir=none, and
represent groups as Graphviz clusters where practical without adding
Graphviz-specific DiagramSpec semantics.
Implementation Notes
- Added
@diagrampilot/export-dotas a public workspace package with source,
built package output, package metadata, README, license, TypeScript project
references, lockfile metadata, and release/package readiness coverage. - Wired
diagrampilot export <path> --format dotthrough the existing command
planning seam, preserving stdout-by-default behavior and explicit file writes
only through--out. - Implemented DOT output with
digraph, DiagramSpecdirectionto Graphviz
rankdir, quoted DOT IDs, DOT-safe quoted labels, directed edges, and
undirected DiagramSpec edges as directed DOT edges withdir=none. - Rendered DiagramSpec groups as Graphviz
cluster_<stable_id>subgraphs using
the existing DiagramSpec topology seam, including nested groups and root
nodes. - Mapped existing metadata keys to DOT attributes where useful:
metadata.external_urlbecomesURL, andmetadata.sourcebecomes
tooltip, using the same escaping path as labels. - Updated public docs, maintainer docs, demo docs, release workflow matrices,
package readiness checks, package publish-state checks, and docs drift tests
to treat DOT as a shipped export target and@diagrampilot/export-dotas a
public package. - Created the
@diagrampilot/export-dotpackage on npm from an authenticated
passkey-backed CLI publish so npm trusted publishing can be configured for
the package. The package is visible at0.2.1; npm reported both
prealphaandlatestdist-tags pointing at0.2.1after the first
publish. - Confirmed npm trusted publishing was configured for
@diagrampilot/export-dot
with repositoryStiensWout/DiagramPilotand workflow
.github/workflows/release.yml, matching the other public packages. - Diagnosed the post-PR release dry-run failure as stale shared release
metadata: the workflow tried to publish already-published
diagrampilot@0.2.1onmain. Bumped the shared DiagramPilot release
metadata to0.2.2withscripts/bump-release-version.mjsand refreshed
checkout demo SVG provenance at the new version.
Validation Results
npm run buildpassed.node --test test/export-dot.test.mjs test/cli-command-planning.test.mjs test/cli-command-planning-seam.test.mjs test/cli-smoke.test.mjs test/documentation-contract.test.mjs test/docs-public-boundary.test.mjs test/package-readiness.test.mjs test/package-publish-state.test.mjs test/github-actions-release.test.mjs test/release-version-tooling.test.mjs
passed: 86 tests.npm testpassed: 173 tests.node packages/cli/dist/index.js export demo-projects/checkout/docs/architecture.dp.yaml --format dot
passed and printed DOT withdigraph, nested clusters, labels, and metadata
tooltips.npm whoamipassed asstienswout.npm publish --workspace @diagrampilot/export-dot --tag prealpha --access public --auth-type=web
passed after browser passkey authentication.npm view @diagrampilot/export-dot@0.2.1 version dist-tags --json --registry=https://registry.npmjs.org/
passed and returned version0.2.1withprealphaandlatestdist-tags.npm run check:release-version -- 0.2.2passed.npm publish --dry-run --workspace diagrampilot --tag latest --access public
passed fordiagrampilot@0.2.2, matching the release job command that had
failed at0.2.1.npm publish --dry-run --workspace <package> --tag latest --access public
passed for all public workspaces:diagrampilot,@diagrampilot/core,
@diagrampilot/icons,@diagrampilot/export-mermaid,
@diagrampilot/export-d2,@diagrampilot/export-dot, and
@diagrampilot/render-svg.node scripts/generate-release-notes.mjs --version 0.2.2 --tag v0.2.2
passed.git diff --checkpassed.