Skip to content

v1.10.0 — human circulation + foundation refactor

Choose a tag to compare

@ChanMeng666 ChanMeng666 released this 02 Jul 11:46

Human circulation (ADR 0008)

Circulation analysis grows from "is every room reachable?" to "how far, how wide, how direct is the walk?" — strictly facts + advisory + explicit transform (no generative layout; default SVG output byte-identical, pinned by tests):

  • Factsdescribe().circulation: per-room walk distance, bottleneck clear width, and detour ratio from the entrance, plus key routes (kitchen↔living/dining, bedroom↔bath), on a clearance-eroded navigation grid.
  • LintW_PATH_TOO_NARROW (default 700 mm; accessibility-advisory profile: 900 mm) and W_CIRCUITOUS_PATH (>3.0× straight-line).
  • Overlayarch compile --overlay circulation / compile(src, { overlays: ["circulation"] }) draws the walks, key routes, and bottleneck markers; the playground gains an off-by-default Paths toggle.
  • Repair guardarch repair declines any furniture move that would newly pinch a walk below the lint threshold and reports it in unresolved.

Foundation refactor (default output byte-identical)

  • Wall-union rewritten: opening-heavy toScene ~19.5 → ~2.6 ms (full compile ~42 → ~24 ms); validate/lint no longer render the SVG they discard.
  • lint() restructured to one module per rule over a shared context; shared rect geometry (geometry/rect.ts) and one deterministic number formatter (num-format.ts).
  • Drift tests pin the element-keyword↔registry, fixture-classifier, completion-kind, and export-format joints; new core exports COMPLETION_KINDS, EXPORT_FORMATS, optional Scene.chrome.
  • Tooling: Biome (CI-gated), noUncheckedIndexedAccess on, Node 18/20/22 CI matrix, honest per-stage benchmarks; the playground app is now TypeScript with its own tests.

Sites

Embeddable playground viewer (embed.html + Embed button), IDE-parity actions (Format / Repair panel / clickable diagnostics), live editable <ArchLive> docs examples.

Suite: 535 tests · typecheck/Biome/gen-drift clean · all default artifacts byte-identical to v1.9.0.