Skip to content

v2.3.0 — Readable estate layouts

Choose a tag to compare

@ikelaiah ikelaiah released this 18 Sep 10:04
· 1 commit to release/v2.3.0 since this release

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 example Auto-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 metrics passing;
  • golden browser assertions on tests/index.html passing (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.