Repository navigation
v2.3.0 — Readable estate layouts
ProcFlow v2.3.0 — Readable estate layouts
Released as the v2.3.0 layout-quality milestone. The ERD page now arranges a
whole estate so relationships are traceable, not just placed.
Highlights
- Auto arrange on first parse. A freshly parsed schema starts in the
deterministic layered layout. Reset to declaration order is one click
away, and any drag, restore, or import keeps manual positions. - Port-anchored orthogonal routing. Edges leave the referenced card at the
row of the foreign-key column and enter the referencing card at its column
row. Paths are orthogonal, travel through the card-free gutters between
layout columns, and use band corridors plus an outer vertical channel for
edges that span multiple bands. Gutters are clamped under compact spacing so
a path never enters a neighbor column. - Card-safe by construction. Structured routing is used whenever the layout
came from Auto arrange or the declaration-order default; manual layouts fall
back to the best-effort orthogonal router. Verified zero path/card
intrusions on the DB2 sample, a 300-table chain, and a sampled 800-table
chain. - Stronger crossing reduction. Median sweeps alternate with a monotonic
adjacent-transpose pass that only accepts swaps which reduce crossings;
crossing counts use inversion counting and are reported in the Layout status
line (for exampleAuto-arranged 12 entities · 0 crossings · LR). - Direction and spacing. Layout → Direction supports Auto / Left→right /
Top→bottom; Auto keeps whichever direction fits a 16:9 viewport better.
Layout → Spacing adds Compact / Normal / Roomy presets that scale all
gaps deterministically (DB2 sample: 1780×656 compact vs 2114×824 roomy). - Pinning. A diamond in each card header pins its position; Auto arrange
keeps pinned cards exactly and shifts unpinned cards deterministically to
avoid overlaps. Unpin all clears them; Reset clears pins with the
layout. - Downstream banding. Isolated tables and views without declared sources
move to their own downstream band instead of crowding the root column.
Accuracy and limits
- Auto arrange remains a deterministic near-optimal layout, not a
minimum-crossing guarantee; arbitrary schema graphs can still cross. - Structured (card-safe) routing applies to left-to-right layouts; top-to-bottom
layouts use the best-effort orthogonal router. - Hub fan-outs use staggered gutters that read as a bundle; a single shared
trunk with branch stubs is still future work. - Layouts are UI state and do not affect the SQL analysis, Mermaid export, or
the workspace snapshot.
Verification
The final local verification recorded for this release includes:
npm run typecheck,npm run build,npm run test:file, and
npm run metricspassing;- golden browser assertions on
tests/index.htmlpassing (220/220), including
the v2.3.0 fixtures for orientation, crossings, pinning, spacing presets,
banding, and a 300-table overlap check (35/35 schema suite); - 31/31 UI interaction checks and the hostile-input security suite passing;
- ERD smoke checks: DB2 sample 5/5 orthogonal routes with 0 intrusions; a
300-table chain 300/300 routes with 0 intrusions; a sampled 800-table chain
200 paths with 0 intrusions; pin held across an LR→TB re-arrange; first-parse
auto-arrange with 0 crossings reported; - runtime archive structure and local-file startup smoke passing
(procflow-v2.3.0.zip).
Upgrade and distribution
The runtime is self-contained. Use npm run package:runtime to produce the
versioned ZIP and verify .release/SHA256SUMS.txt before distributing it.
Layouts, workspaces, and layout files saved by earlier releases remain
readable.