Schematex

/ CHANGELOG

53 releases

What shipped, release by release.

Every release, the diagram engines and fixes it shipped — with the rendered output for each diagram it touched. Click any render, or open the gallery’s by-type view.

v1.0.0

2026-07-17
Addedopen-source interactive editor and AI-safe editing
  • ·Public React editor. InteractiveSchematexDiagram is a controlled Client Component with WYSIWYG label editing, semantic drag constraints, live connector previews, selection callbacks, and preview-safe diagnostics. Applications retain ownership of DSL state, persistence, undo, and collaboration.
  • ·Parser-native Canvas capability contract. Twenty engines expose deterministic authored text/field editing; 17 also support stable-ID drag or native geometry handles. The other 30 remain source-editable and renderable without guessed handles. A single typed registry drives SDK, website, and AI discovery.
  • ·AI and MCP editing. Vercel AI SDK, local stdio MCP, and hosted Streamable HTTP MCP share eight tool manifests, including revision-guarded inspectDiagram and atomic applyDiagramEdits.
  • ·Editable website workspaces. Full-size homepage, docs, example, and Playground render surfaces use the public editor. The Playground adds a searchable, grouped example rail covering published examples and a 53-specimen interactive test lab.
Changed
  • ·Package versions are now schematex@1.0.0 and @schematex/mcp@1.0.0.
  • ·The React bundle preserves its "use client" boundary for Next.js and other React Server Component consumers.
  • ·The interactive React styling prop is finalized as canvasClassName: it names the inner host <div> that directly contains the generated SVG.
  • ·Canvas writes now fail closed: core rejects stale source revisions and mismatched expected text, default renders contain no data-sx-* hooks, and non-native engines no longer use SVG/source text matching to infer edit ranges.

v0.9.19

2026-07-09
Fixedreadable, electrically correct household-lighting schematics
  • ·Household AC layout. A source, protection/control chain, and lighting load now read left to right on the live conductor, with neutral returning on a clear lower rail instead of wrapping around the top of the page.
  • ·Correct two-way switching. Two switch_spdt components sharing traveler nets render as facing changeover switches with separate parallel travelers. Either traveler declaration order is supported without creating an apparent crossing or short.
  • ·Clear labels. Labels stay above horizontal symbols and to the right of vertical symbols, so V_mains, values, and reverse-facing switch labels no longer overlap wires, symbols, or the SVG edge.
  • ·Canonical lamp type. lamp is now a first-class circuit component type; type=lamp, type=light, and type=bulb all select the lamp symbol. Household examples use L1 ... type=lamp rather than the misleading RL1 designator.

v0.9.18

2026-07-091 diagram
Single-pole household light Circuit schematic with 4 components Single-pole household light V_mains220VacF116AS1Lamp
Circuit schematic
Fixedcircuit silently dropped unknown-type lines + rejected ; comments (production failure)Circuit schematic
  • ·Positional mode silently dropped unrecognized component lines. A model that wrote SPICE-style connectivity *without* the netlist header — e.g. breaker CB1 (L L1) 16A, rcd RCD1 …, switch SW1 … — had each unknown-type line silently discarded, rendering a schematic with almost nothing on it. Crucially validateDsl and renderDsl still returned ok: true with zero warnings, so no downstream check (in-loop validateDsl, or a caller's post-generation gate) could catch it. An identifier-led line whose head is not a known component type now raises Unknown component type: "<x>" with a hint to add the netlist header — matching the id: type colon form and every other diagram's unknown-kind handling. Known types and the netlist path are unchanged.
  • ·; comments hard-failed in netlist mode. The grammar advertises "SPICE-style netlist", and ; is SPICE's in-line comment marker, so models routinely write ; note lines. These failed with Invalid component id: ";". ; is now stripped as a comment (full-line and trailing) in both netlist and positional circuit modes, alongside the existing *, #, and %% markers. ; stays circuit-local — it is not promoted to a universal marker, because other diagram types (e.g. network) use ; as a statement separator.
  • ·--

v0.9.16

2026-07-091 diagram
Genogram: Smith Family Genogram diagram with 3 individuals across 2 generations Smith Family John (1975) Mary (1977) Alice (2005) John (b. 1975) Mary (b. 1977) Alice (b. 2005) m. 2002 MARKERS Index person (focal subject)
Genogram
Fixedgenogram relationship + attribute gaps (top production failure)Genogram
  • ·~x~ divorced couple operator. The grammar's keyword list and examples advertise ~x~ for divorce, but the parser only recognized the ASCII alias -x- — so a ~x~ b failed with Unknown individual 'x~ b'. This was the single most common genogram failure (Spanish, Hebrew, Chinese, English prompts alike). ~x~ is now accepted; -x- remains a valid alias.
  • ·Non-ASCII condition labels. The conditions: name(fill) label was matched with an ASCII-only regex, so hipertensión(full) or 右側半癱(half-right) failed with Invalid condition format even though the fill was valid. Labels may now be any Unicode text.
  • ·Status synonyms. stillbirthstillborn, plus miscarried/aborted/died/dead → their canonical tokens.
  • ·Bare age vs year. A bare 1–3 digit number in [...] (e.g. [male, 28]) is now read as an age; a 4-digit number remains a birth year.

v0.9.15

2026-07-082 diagrams
Use Case Diagram — ATM Subject: ATM System. 2 actors, 4 use cases, 0 include, 0 extend. ATM ATM System Customer «actor» Bank Withdraw Cash Deposit Funds Check Balance Transfer Funds
UML use case diagram
Network diagram — Branch LAN - Star Layout 6 devices, 5 links, 0 boundaries. Topology: star. Links: 4 copper, 1 poe. Branch LAN - Star Layout 1G Access · VLAN 10 · 1G Access · VLAN 10 · 1G Access · VLAN 20 · 1G VLAN 30 · 1G · PoE Gateway Access Switch Admin PC Laptop Printer Wi-Fi AP
Network topology
Fixedthe header line is optional when the diagram type is already known
  • ·Header recovery. When the type is forced and the body does not detect() as that type, the canonical header is prepended and kept only if the result parses cleanly. A genuinely malformed body (a real syntax error, an unsupported node form) still fails with its true error — recovery never masks it.
  • ·Dialect-aware. erd recovers with erDiagram (the Mermaid crow's-foot dialect), not bare erd (which selects the native table/ref parser). Other engines use the bare type name.
  • ·Headerless-by-design grammars (mindmap's # Title) already detect() true, so they short-circuit untouched. Applies uniformly to parse, parseResult, render, and renderResult.
Fixedusecase non-ASCII actor names + network device-kind synonymsUML use case diagramNetwork topology
  • ·usecase — non-ASCII auto-generated ids. When an actor/use-case had no explicit as <id>, the synthetic id stripped every non-[A-Za-z0-9_] character to _. Korean actors (순원, 순장) all collapsed to __ and collided (identifier '__' already declared) — a recurring production failure for CJK use-case diagrams. Ids now preserve Unicode letters/digits, so non-ASCII names stay distinct.
  • ·network — device-kind synonyms. Added common everyday aliases so a valid topology doesn't fail on a vocabulary gap: webserver/mailserver/dns/dhcp/ntp/database/db/dbserver/vm/host/hypervisor/activedirectory/domaincontrollerserver, desktoppc, smartphone/tabletmobile, accesspoint/wapap, hub/bridge/l2switchswitch, ngfw/utmfirewall, mfpprinter.
  • ·--

v0.9.14

2026-07-081 diagram
University Schema Entity-Relationship Diagram with 4 entities and 3 relationships. University Schema majors in Major major_id int PK name varchar Course course_id int PK title varchar credits int Student student_id int PK name varchar email varchar UK major_id int FK Enrollment student_id int PK FK course_id int PK FK grade char
Entity-Relationship Diagram (ERD)
Fixedaccept forms the model reasonably writes (erd titles, floorplan furniture synonyms)Entity-Relationship Diagram (ERD)
  • ·erdtitle:/direction:/notation: under the Mermaid erDiagram header. The native erd header already accepted these attributes, but the Mermaid erDiagram paste-compat path hard-failed on them (Unrecognized erDiagram line: title: "…") — and it didn't even carry a title. A model that writes erDiagram + title: "…" (mixing the two dialects' most natural forms) lost the whole diagram. The erDiagram path now accepts the same header attributes and maps title: to the diagram title. Genuinely malformed lines (e.g. a trailing over-closing }) still throw.
  • ·floorplan — common furniture synonyms. Added aliases for everyday words that map cleanly onto an existing type: console-table/console/end-tableside-table, couchsofa, setteeloveseat, tv-console/media-console/entertainment-centertv-stand, refrigeratorfridge, cooktop/stovetopstove, armoirewardrobe, wc/water-closettoilet. A valid layout no longer fails on a vocabulary gap.
  • ·--

v0.9.13

2026-07-08
Fixedconsistent comment handling across all diagram types
  • ·Universal %% comments. Mermaid-style %% line and inline comments are now stripped once in the shared preprocess pass, so every diagram type accepts them regardless of its own lexer. %% never begins valid content in any schematex grammar, so this is collision-free; comment-only lines are blanked (not removed) so diagnostic line numbers stay stable.
  • ·circuit honors SPICE * comments. A line whose first non-blank character is * is now treated as a full-line comment, matching the SPICE-style syntax the grammar advertises. * can never begin a valid component id, so this is unambiguous. (# inline comments continue to work.)
  • ·stripLineComment(line, markers?) now takes an optional marker set (default %%////#, unchanged for existing callers); the shared pass narrows it to %% only, so #/// stay content where diagrams use them (e.g. # headings in mindmap).
  • ·--

v0.9.12

2026-06-301 diagram
Backyard Landscape Sketch Site plan with 7 polygons, 1 paths, 3 line features, and 4 markers. Backyard Landscape Sketch Lawn House Garage Patio Kitchen garden N Legend Parcel boundary structure landscape parking walkway fence tree 20 ft 0
Site plan
Addedsiteplan: parcel, road, driveway, and property-layout diagramsSite plan
  • ·siteplan engine. Added parser, layout, renderer, package export (schematex/siteplan), AI registry/profile entries, docs navigation, icon, tests, and reference standard ([52-SITEPLAN-STANDARD.md](docs/reference/52-SITEPLAN-STANDARD.md)).
  • ·DSL primitives. Supports irregular parcel polygons, structure footprints, parking/landscape/zone polygons, road/driveway/walkway/trail paths, planning overlays (frontage, setback, easement, fence, utility, boundary), markers (tree, car, pin, entry, hydrant, well), dim, callout, north, scale, and legend.
  • ·Professional plan-sheet styling. White sheet, heavy property lines, hatched building footprints, roofline hints, side-panel legend/north/scale, architectural dimension ticks, line-following labels, subdued roads, and plan-symbol trees.
  • ·Commercial parking/driveway language. Driveways render as paved aisles with edge lines; commercial-width drive aisles add lane markings and directional arrows. Parking polygons use stall-striping style instead of generic hatch fills.

v0.9.11

2026-06-294 diagrams
Blink LED — Arduino Uno hello-world Breadboard wiring diagram generated by Schematex Blink LED — Arduino Uno hello-world 5 10 15 20 25 30 5 10 15 20 25 30 a a f f b b g g c c h h d d i i e e j j D13D12D11D10D9D8D7D6D5D4D3D2TXRXRST3V35VGNDVINA0A1A2A3A4A5Arduino Uno R1 220Ω D1 (red)
Breadboard / Physical wiring
Commercial PV Interconnection Single-line diagram with 8 nodes and 7 connections Commercial PV Interconnection 480V 480V PV string conductors PV Array 250 kWdc Utility 480V DC Combiner 600 Vdc DC Disconnect 600 Vdc Grid-tie Inverter 200 kWac AC Disconnect 480V 400A Wh Production Meter 480V · Main Switchboard
Single-line diagram
Cinema Auditorium — 96 Seats 1 room, 192.0 m² total. 17 furniture items. Cinema Auditorium — 96 Seats Screen 16 m 12 m
Floor plan
Single-pole household light Circuit schematic with 4 components Single-pole household light V_mains220VacF116AS1Lamp
Circuit schematic
Addeduser-feedback electrical layout hardening (breadboard, sld, floorplan, circuit)Breadboard / Physical wiringSingle-line diagramFloor planCircuit schematic
  • ·breadboard — pin aliases + common maker modules. ESP32/Arduino endpoints now tolerate the names users actually type (D22/IO22/22 for GPIO22, 5V/VBUS for ESP32 VIN, A4/A5 for SDA/SCL, potentiometer A/WIPER/B). Added potentiometer, sensor vl53l0x, display tm1637, and module l298n, plus ESP32-C3/S3 subtype aliases to the existing ESP32 footprint.
  • ·sld — first-class IEC residential distribution primitives. rcd/rcbo/rccb now render as typed RCD devices instead of generic ground-fault symbols; consumer_unit/distribution_board/panel now render as consumer-unit symbols instead of industrial busbars. Breaker/RCD attrs (curve, icn, rcd_type, sensitivity) and structured cable attrs (cable_csa, cable_length_m, cable_insulation) are preserved and rendered.
  • ·floorplan — electrical fittings overlay. Added room-relative overlay fixtures: outlet, duplex-outlet, switch, light, ceiling-light, data-outlet, electrical-panel, and distribution-board. Parser aliases cover common prompt words (socket, receptacle, consumer-unit, section), and size N now means square N×N.
  • ·circuit — control-cabinet / panel-layout MVP. Positional mode now supports absolute at=x,y coordinates plus enclosure, din_rail, wire_duct, plc, pilot_light, selector_switch, and emergency_stop, so DIN-rail/control-panel front-layout prompts do not need to fall back to raw SVG.

v0.9.10

2026-06-263 diagrams
Cinema Auditorium — 96 Seats 1 room, 192.0 m² total. 17 furniture items. Cinema Auditorium — 96 Seats Screen 16 m 12 m
Floor plan
Matrix — This Week Matrix diagram (eisenhower template), quadrant mode, 0 point(s) This Week Do First • Ship hotfix • Customer demo prep Schedule • Write Q3 OKRs • Refactor auth layer Delegate • LinkedIn updates • Inbox zero Delete • Reorganize Slack channels
Matrix / quadrant
Synchronous Bus Read Digital timing diagram with 4 signals D0D1D2D3 CLK RST EN DATA Synchronous Bus Read
Timing / waveform diagram
FixedAI generation context surfaced shipped capabilities (floorplan, matrix, timing)Floor planMatrix / quadrantTiming / waveform diagram
  • ·floorplan — named seating charts. The seats "Alice" "Bob" … clause (write occupant names onto auto-seated chairs — the difference between a venue plan and a seating chart) shipped in 0.9.x but was absent from the generation-tier grammar card and from every featured example, so the model couldn't emit it. Added seats to the furniture clause + a prefer bullet (with plan de table / 席次表 phrasing), and promoted "Wedding seating chart — named guests" to a featured example.
  • ·matrix — QFD / SIPOC / Punnett body grammar. The three computational modes (matrix qfd House-of-Quality, matrix sipoc, matrix punnett) were named as headers but their body syntax was missing from the grammar card, and no QFD/SIPOC/Punnett example was featured — the model knew the modes existed but couldn't write a valid document. Added the what:/how:/rel/roof, suppliers:/inputs:/process:/outputs:/customers:, and cross:/trait grammar + inline forms + prefer guidance, and featured the House of Quality, monohybrid Punnett, and SIPOC examples.
  • ·timing — removed a phantom keyword. The grammar card advertised phase: FLOAT (0.0–1.0), which the timing engine never implemented — the model would emit it and the parse would fail. Removed.
  • ·--

v0.9.8

2026-06-152 diagrams
Plant cell vs Animal cell Double-bubble comparing "Plant cell" and "Animal cell": 3 shared, 3/3 unique. Plant cell vs Animal cell Plant cell Animal cell Has a nucleus Mitochondria Cell membrane Cell wall Chloroplasts Large centralvacuole Centrioles Lysosomes Many smallvacuoles
Comparison & Decision Matrix
Matrix — This Week Matrix diagram (eisenhower template), quadrant mode, 0 point(s) This Week Do First • Ship hotfix • Customer demo prep Schedule • Write Q3 OKRs • Refactor auth layer Delegate • LinkedIn updates • Inbox zero Delete • Reorganize Slack channels
Matrix / quadrant
AddedComparison & decision-matrix engine (comparison)Comparison & Decision MatrixMatrix / quadrant
  • ·decision / pugh — the computational centrepiece. Stuart Pugh's controlled-convergence method (ASQ / Six-Sigma concept selection): each criterion carries a weight:, each option a numeric score, and the engine computes every option's weighted total Σ(weight × score), ranks them, highlights the winner, and shows vs-datum deltas against an optional baseline:. You never type the totals — getting a score wrong changes the computed winner. Same "engine computes the answer" stance as pert and faulttree.
  • ·matrix — options × criteria comparison grid; cells take yes / no / partial marks (→ ✓ / ✗ / ~) or free text. A typo'd option name is flagged, not silently dropped.
  • ·tchart / ychart — 2–N compare/contrast columns, rendered as distinct rounded cards with per-column coloured headers.
  • ·pros-cons — green ✓ / red ✗ valence with pill headers and circular badges.

v0.9.7

2026-06-15
AddedRBD time-dependent reliability R(t) + criticality importance
  • ·mission: <t> + a per-block failure distribution: rate=λ or mtbf=N (exponential, R(t) = e^(−λt)) or weibull=β,η (R(t) = e^(−(t/η)^β)). The engine evaluates R(t) per block and rolls it up exactly as for static reliabilities; the headline becomes R(t=…) = …. Constant R=/p= blocks still work and mix freely. A distribution with no mission: warns and falls back to the constant R. Keep mission and rates in consistent time units.
  • ·Criticality importance I_C(i) = Iᴮ(i)·(1−Rᵢ)/(1−R_sys) for every block — derived cheaply from the existing Birnbaum computation.
  • ·New worked example (pump station 1-year mission, MTBF + Weibull) + an R(t) section in the RBD docs.
Fixedfault-tree top-event probability no longer collapses to 1
  • ·--

v0.9.6

2026-06-151 diagram
PERT network — Software project (AOA) 10 activities, project duration 70 days, critical path A → C → F → H → J. Software project (AOA) create schedule 10 buy hardware 5 programming 20 installation 5 conversion 15 test code 20 write manual 15 test system 10 training 5 user test 10 1 2 3 4 5 6 7 8 9 10 11 12 13 Project duration 70 days · 10 tasks · 10 dependencies · 5 critical Critical path: A → C → F → H → J
PERT / CPM network & Gantt chart
AddedGantt charts on the PERT engine (gantt / layout: gantt)PERT / CPM network & Gantt chart
  • ·gantt "Title" header (sugar for pert + layout: gantt), or layout: gantt on a pert document.
  • ·Calendar axis: start: YYYY-MM-DD turns the axis into dates (omit for a numeric day-offset axis); calendar: continuous (default, spans weekends) or calendar: 5day (excludes Sat/Sun). Pure integer date arithmetic (days-from-civil) — deterministic, zero-dependency.
  • ·One row per task, grouped into sections by lane:; off-critical-path bars drawn in the resting blue with their slack annotated, critical bars in red.
  • ·progress: 60% completion overlays, milestone diamonds, dependency connectors, and an optional today: YYYY-MM-DD marker line.

v0.9.5

2026-06-152 diagrams
Dual-channel trip (1oo2) Reliability block diagram: 6 blocks. System reliability R = 0.99707. Highest reliability-importance block: S1. No single point of failure — every block has redundancy in the success path. Dual-channel trip (1oo2) System reliability R = 0.99707 Sensor A R=0.97 Logic A R=0.995 Valve A R=0.98 Sensor B R=0.97 Logic B R=0.995 Valve B R=0.98
Reliability Block Diagram (RBD)
PID control loop Block diagram with 3 blocks, 1 summing junctions, 5 signals PID control loop r (setpoint) + y (output) + PID C(s) Plant G(s) in in
Control-systems block diagram
Addedrbd: reliability block diagram engine (50-RBD-STANDARD)Reliability Block Diagram (RBD)Control-systems block diagram
  • ·Brace-nested success logic: series { … }, parallel { … }, and kofn k/n { … } groups nest freely around block ID "Label" R=0.99 leaves. Reliability is given as R=0.99, failure probability p=0.01, or a percentage R=99%. A bare top-level block list is treated as a series chain. CJK quotes welcome.
  • ·Computation is the differentiator: system reliability by exact reduction (∏ for series, 1−∏(1−Rᵢ) for parallel, 2ⁿ state enumeration for k-of-n); Birnbaum reliability importance Iᴮ(i) = R_sys(Rᵢ=1) − R_sys(Rᵢ=0) for every block (the highest is the improvement target, accented); and single-point-of-failure detection (a block where R_sys(Rᵢ=0) = 0, drawn in red). High reliabilities keep their nines — the figure is never rounded up to "1".
  • ·Left-to-right layout: recursive bounding-box packing — series chains wired end-to-end, parallel/k-of-n groups stacked on rails fanning out of a split node and back into a join node, bracketed by input/output terminals. k-of-n groups are labelled k/n at the join.
  • ·Shared risk-reliability palette: neutral blocks, blue reliability numerals, red SPOF borders; monochrome falls back to border weight (regulator print), dark is the Catppuccin variant. Semantic SVG with data-id/data-r/data-spof/data-critical.

v0.9.4

2026-06-111 diagram
Backdoor Cut basketball play. 5 players, 0 opponents, 2 assignments. Backdoor Cut 1 2 3 4 5 Offense (1–5) Defense (X) Cut Pass Dribble Screen
Sports playbook
Addedplaybook: multi-sport tactics-board engine (49-SPORTS-PLAYBOOK-STANDARD)Sports playbook
  • ·One SportModule per sport, shared everything else: parser, layout resolver, and renderer are sport-agnostic; each sport (football.ts / basketball.ts / soccer.ts) owns its coordinate model, formation/set roster, named-route + landmark resolution, field markings, and legend. A fourth sport is purely additive.
  • ·Three real coordinate models: football in yards (offense attacking up, downfield = +y, ball at origin); basketball in feet (NBA half-court, baseline + hoop at top); soccer in metres (full IFAB 105 × 68 m pitch, attack toward +x, or view half).
  • ·Players by formation or by hand: football formation i-form|shotgun|spread|trips|empty|goal-line|wishbone|… (+ strength), basketball set horns|spread-pnr|5-out|1-4-low|box|…, soccer formation 4-3-3|4-4-2|4-2-3-1|3-5-2|…; or place individuals with player <id> <pos> at x,y label … for set-pieces.
  • ·Movement verbs drawn in each sport's own line style — and the pass-vs-run convention is *inverted* between sports, honoured rather than flattened: football route (route tree) / run / handoff / pull / block (solid routes, arrowheads, block T-bars) + dashed throws; basketball pass (dashed) / cut (solid) / dribble (wavy) / screen (T-bar) to named landmarks (rim, elbow, wing, corner); soccer pass (solid) / run (dashed) / dribble (wavy) / shot (double line). The rendered legend always matches the sport.

v0.9.3

2026-06-091 diagram
Cinema Auditorium — 96 Seats 1 room, 192.0 m² total. 17 furniture items. Cinema Auditorium — 96 Seats Screen 16 m 12 m
Floor plan
Addedfloorplan: floor plan / space layout engine (48-FLOORPLAN-STANDARD)Floor plan
  • ·Rooms → walls, computed: rectangular rooms with explicit dims chain via right-of/below (+ align/offset); adjacent rooms share an edge and their poché wall bands merge automatically. L/T/U-shaped rooms via extend <room> at x,y size WxH — a rect-union model that mirrors how professionals measure L-rooms (split into rectangles, sum), chosen over polygon vertices for LLM ergonomics; walls open along interior seams, the area reports as one number, the label centers on the largest part.
  • ·Openings hung on walls, not coordinates: door between A B at 50% resolves the shared wall segment (multi-part aware) and positions along the overlap; wall-side form (door hall west at 50%) positions along the concatenated exterior segments. Door types single/double/sliding/pocket/bifold; window types fixed/sliding/casement/bay (bay draws the splayed projection); opening archways; openings clamp to their segment with a warning.
  • ·Stairs per drafting convention: stairs / stairs-l / stairs-u / spiral-stairs — 0.28 m (11″) tread lines, direction arrow from the lowest tread with an UP label (item label overrides for DN), the 45° zigzag cut-plane break line with dashed treads beyond, blank landings; plus elevator and column.
  • ·93-symbol auto-seating furniture catalog across seven demand clusters (residential incl. sectional/fireplace/grand piano/ceiling fan; kitchen/bath incl. dashed wall-cabinet & range-hood above-cut-plane conventions, double vanity, urinal; classroom/office incl. desk-l, lockers, filing; event/banquet; retail/warehouse shelving/checkout/clothing-rack/fitting-room/pallet-rack/loading-dock/forklift; salon/gym salon-chair/shampoo-bowl/manicure-table/treadmill/weight-bench/power-rack/yoga-mat; site/outdoor tree/car) — round-table-8 *is* 8 countable chairs (60″ top), dining/banquet/conference tables seat both long edges at 0.65 m pitch, manicure-table seats client + technician, row-chairs places theater strips at 0.55 m. Arrays: grid/row with row-major count truncation (27 desks in a 5×6 grid drops the tail), arc for semicircle seating facing center.

v0.9.1

2026-06-094 diagrams
Loan Application Approval BPMN LR — 1 pool(s), 8 flow object(s). Bank Clerk Underwriter yes no approve reject Application received Check completeness Complete? Risk score Underwriter review Decision Approved Rejected
BPMN business process
Matrix — This Week Matrix diagram (eisenhower template), quadrant mode, 0 point(s) This Week Do First • Ship hotfix • Customer demo prep Schedule • Write Q3 OKRs • Refactor auth layer Delegate • LinkedIn updates • Inbox zero Delete • Reorganize Slack channels
Matrix / quadrant
Flowchart Flowchart with 14 nodes and 16 edges. commit → build build → unit unit → fail: No No unit → scan: Yes Yes scan → vuln vuln → fail: Yes Yes vuln → stage: No No stage → smoke smoke → fail: No No smoke → approve: Yes Yes approve → wait: No No approve → prod: Yes Yes prod → health health → done: Yes Yes health → rollback: No No rollback → done Push to main Push to main Build artifact Build artifact Unit tests pass? Unit tests pass? Security scan Security scan High-severity CVEs? High-severity CVEs? Deploy to staging Deploy to staging Smoke tests green? Smoke tests green? Fail build Fail build Manual approval? Manual approval? Await approver Await approver Deploy to production Deploy to production Post-deploy health check? Post-deploy health check? Automatic rollback Automatic rollback Release complete Release complete
Flowchart
Single-pole household light Circuit schematic with 4 components Single-pole household light V_mains220VacF116AS1Lamp
Circuit schematic
Fixedfive renderer bugs visible in any gallery (P0)
  • ·Sociogram group colors actually render now. The base .schematex-sociogram-node CSS rule set fill, which beats per-node fill="" presentation attributes by CSS specificity — every node painted accent-blue regardless of its group color, contradicting the legend (girls declared #EF5350 rendered blue). Nodes now carry the generated .schematex-sociogram-group-<id> class (emitted after the base rule, so it wins); role classes (star/isolate/…) keep priority over group color.
  • ·Timing title no longer collides with the first waveform. A TITLE_H band is reserved above the grid when title is set (and the title style moved from an inline style="" to the stylesheet, where it belongs).
  • ·Network labels are legible. Device labels/sublabels and the new icon badges get a paint-order: stroke halo so the tiered layout's diagonal links no longer strike through them; the PoE/GW/VPN/×N badges moved from near-invisible deviceAccent (pale blue on white) to a haloed subLabel class; link annotations are placed by a candidate-position pass that clears device boxes (estimated at full text width via the new core text-metrics) and previously placed labels, degrading gracefully when the corridor is crowded.
  • ·QFD roof sits on the matrix again. The HOW-label band was a fixed 130px, leaving a dead band between the correlation roof and short rotated labels; it is now sized from the actual painted extent of the longest label (estimateTextWidth × sin 60°), clamped 48–220px.
Addedsrc/core/text-metrics.ts (P1)
    Changedone title style across every family (P1)
    • ·*Centered on content, not canvas. Six families (epc, bowtie, eventtree, faulttree, idef0, causalloop) draw the title *inside* a translate(pad, pad) content group but were centering it at width / 2 (canvas center) — so the title landed one padding-width (~20px) right of the actual content. Fixed to layout.width / 2 (content-area center); threatmodel got the matching fix for its untranslated root. EPC layout also reserved the back-edge routing margin (BACK_MARGIN) unconditionally, leaving a one-sided whitespace band on acyclic charts that pushed both content and title off-center — now only reserved when loop-back edges exist.
    ChangedBPMN, state, matrix, blockdiagram join the theme system (P2)BPMN business processMatrix / quadrant
    • ·BpmnTokens — BPMN gets a *designed* default palette per the de-facto tool colour language (Camunda/Bizagio/Signavio): green start events, red end events, amber gateway diamonds with deep-amber glyphs, blue-tinted tasks, slate pools/flows — replacing the previous all-grey look. monochrome is the pure OMG-spec print stance; dark is Catppuccin.
    • ·StateTokens — unifies the renderer's two hardcoded body blacks (#1a1a1a vs #2a2a2a) onto slate, keeps the conventional sticky-note yellow as a token, adds monochrome + dark.
    • ·MatrixTokens — the entire quadrant/heatmap/correlation/SIPOC/QFD/Punnett stylesheet (≈90 hardcoded colors) is parameterised across ~26 semantic tokens; data palettes (category colors, heat ramp, quadrant tints) deliberately stay renderer-local since they encode data semantics that hold across themes.
    • ·BlockTokens — role fills move from Material-Design tints onto the house Tailwind-100 tints (controller blue, sensor purple, actuator green, filter yellow, disturbance orange), aligning blockdiagram with flowchart/bpmn; monochrome + dark added.
    Addedflowchart auto label wrappingFlowchart
    • ·wrapLabel() (src/diagrams/flowchart/layout.ts) — greedy line breaking that prefers spaces (consumed at the break), treats every full-width glyph as a valid break point (spaceless CJK prose wraps cleanly), and hard-breaks unbreakable over-wide tokens (URLs, ids) rather than letting them overflow. Applied once at layoutFlowchart entry, so sizing, the existing multi-line height growth, and the renderer's <tspan> output all see the same wrapped text.
    • ·Deliberately conservative: labels with explicit <br/>/\n breaks keep the author's line choices, and labels containing inline <b>/<i> markup pass through untouched (a styled span cannot be split across the per-line segment parser without breaking styling).
    • ·FC_CONST.maxLabelWidth (420) is retained as the final clamp, but now only bites on unbreakable single tokens that survive wrapping.
    Fixedcircuit ERC: conventional rail/port names no longer flagged as floatingCircuit schematic
    • ·isConventionalOpenNet() (src/diagrams/circuit/lint.ts) — single-pin nets matching power-rail conventions (vcc/vdd/vee/vss/vref/… , voltage literals +5V/3.3V/3V3), I/O-port names (in/out/vin/vout, numbered variants, _in/_out compound suffixes like pwm_in), or header-broken-out serial/control pins (sda1, tx, clk, rst, …) now skip the floating-net and typo checks entirely. Such circuits validate valid instead of partial.
    • ·Everything else keeps the full ERC: non-conventional dangling names (base1, gate) are still flagged, and the one-edit-away CIRCUIT_NET_TYPO detection is unchanged.
    • ·--

    v0.9.0

    2026-06-05
    AddedLLM-emittable grammar cards: all 45 families hardened + single-shot context (PR #35)
    • ·buildPromptContext(type, opts?) — new export. Assembles the canonical grammar card + featured worked examples into a single inject-ready string (one call instead of separate getSyntax + getExamples). Options: examples (default 2), detail, preferFeatured, maxComplexity.
    • ·All 45 grammar cards hardened to a uniform bar: concrete forms, ≥3 prefer/avoid hints naming real tokens, and a new compact keywords line enumerating each family's full vocabulary. Cards that taught syntax the parser rejects were corrected (e.g. SFC transition from:/to:, blockdiagram auto-created ids).
    • ·Error-matched repair hints — repairHint() now matches the actual validator diagnostic to the repair entry whose quoted error fragment fits, instead of always returning the first entry. When nothing matches, it no longer attaches a misleading hint — the raw error (already shown) plus a re-validate instruction stands on its own. Repair entries are authored as '<real error message>' -> <fix>.
    • ·Profile-completeness gate (tests/ai/profile-completeness.test.ts) — a scorecard that scores every family's card across forms/prefer/avoid/repair/examples + featured + core-construct coverage, and hard-fails if any shipped example does not validateDsl green. Keeps card quality from drifting as families are added.

    v0.8.3

    2026-06-03
    Addeddiagram aliases + keywords discoverability metadata (first installment)
    • ·Populated for the nine diagram types added since 0.7.0 — eventtree, fmea, causalloop, markov, gitgraph, epc, idef0, threatmodel, welding. The remaining types are tracked for the next installment.
    • ·listDiagrams() (src/ai/tools.ts) now returns aliases / keywords when present, so the LLM can map a request like "draw a STRIDE diagram" or "焊接符号" to the right type.
    Fixeddocs navigation drift: 9 diagram pages were unreachable
    • ·--

    v0.8.2

    2026-06-03
    Fixedentity cluster [members: [...]] no longer fails to parse
    • ·Root cause (src/diagrams/entity/parser.ts): the attribute-block regex captured the bracket body with [^\]]*, which stops at the *first* ]. Because members: [a, b] contains its own ], the match terminated early, the outer bracket never closed, and the whole line fell through to the parse error. The capture now tolerates one level of nested [...], so the members array no longer truncates the attribute block. The downstream parseProps / parseIdList helpers already handled nesting correctly — only the line-level extraction was broken.
    • ·Tests (tests/entity/parser.test.ts, new): the entity engine previously had no parser tests. Added regression coverage for empty / bracketed-members / members+color / color-only clusters, plus an end-to-end render assertion that members actually produce a grouping box.
    Changed
    • ·AI discoverability (src/ai/profiles.ts): the entity generation profile now lists the cluster form and states that members must be a bracketed list, so getSyntax("entity") surfaces grouping to the model instead of leaving it to guess Mermaid-style subgraph.
    • ·Docs (docs/reference/12-ENTITY-STRUCTURE-STANDARD.md): the §5.3 mixed-jurisdiction cluster example used the un-bracketed members: a, b form, which contradicts the EBNF grammar ("members:" "[" ID_LIST "]") and is not parseable. Corrected to the bracketed form.
    • ·--

    v0.8.1

    2026-06-032 diagrams
    Welding symbols — Bracket assembly Welding-symbol diagram (AWS) — 2 joint(s): gusset to column — arrow side: fillet weld size 8; other side: fillet weld; all-around; field weld; tail GMAW · splice plate (butt) — arrow side: V-groove weld; other side: backing weld; tail SMAW; E7018 Bracket assembly gusset to column — arrow side: fillet weld size 8; other side: fillet weld; all-around; field weld; tail GMAW 8 50-150 6 GMAW gusset to column splice plate (butt) — arrow side: V-groove weld; other side: backing weld; tail SMAW; E7018 (12) 60° root 3 G SMAW; E7018 splice plate (butt)
    Welding symbols
    Matrix — This Week Matrix diagram (eisenhower template), quadrant mode, 0 point(s) This Week Do First • Ship hotfix • Customer demo prep Schedule • Write Q3 OKRs • Refactor auth layer Delegate • LinkedIn updates • Inbox zero Delete • Reorganize Slack channels
    Matrix / quadrant
    Addedwelding diagram engine (AWS A2.4 / ISO 2553)Welding symbols
    • ·welding — full glyph catalog (16 types: fillet · square / V / bevel / U / J / flare-V / flare-bevel grooves · plug · slot · spot · seam · back · backing · surfacing · edge), drawn as original line-art. Dimension slots — size, throat (E), length, length-pitch, count×length, groove angle, root opening. Supplementary symbols — weld-all-around circle, field-weld flag, tail process/spec/NDE, contour (flush / convex / concave) + finish letter. AWS A2.4 single reference line, ISO 2553 System A (solid + dashed dual line, inverted side convention) and System B; arrow / other / both: sides; multi-joint vertical stacking. The structural differentiator: AI-readable validation of illegal type/side/dimension combinations (a fillet needs size, angle is groove-only, pitch needs length, surfacing is arrow-side only).
    Addedmatrix → punnett mode (Mendelian genetics)Matrix / quadrant
    • ·matrix → punnettcross: Bb x Bb with allele-case dominance and optional trait phenotype names. Computes the canonical ratios — monohybrid 3:1, dihybrid 9:3:3:1 — reduced to lowest terms, with each box tinted by phenotype class. Mono / di / trihybrid (2×2 / 4×4 / 8×8). Three gallery examples: monohybrid (3:1), test cross (1:1), and dihybrid (9:3:3:1).
    • ·--

    v0.8.0

    2026-06-03
    AddedBucket B: 8 new diagram engines
    • ·eventtree — Event Tree Analysis (IEC 62502 / NUREG). Header function columns, success-up/failure-down pruned tree; the engine computes each outcome's path frequency = initiating freq × Π branch probabilities.
    • ·fmea — Failure Mode and Effects Analysis (AIAG-VDA / IEC 60812 / SAE J1739). The engine computes RPN = S×O×D and the AIAG-VDA Action Priority, ranks the sheet, and colour-fills the RPN/AP cells by risk. Schematex's first table-shaped diagram.
    • ·causalloop — Causal Loop Diagram (Sterman system dynamics). Signed links; the engine detects feedback loops and classifies each reinforcing (R) / balancing (B) by negative-link parity.
    • ·markov — Discrete-time Markov chain. The engine computes the stationary distribution (power iteration) and classifies states recurrent/transient/absorbing; absorbing states render with a double ring.

    v0.7.0

    2026-06-02
    AddedBucket A: 4 engine-extension modes
    • ·phylo → dendrogram — merge-height (cophenetic) layout, rectangular elbows, height axis, and cut <value> flat-cluster slicing.
    • ·decisiontree → influence — Howard & Matheson influence diagram: compact DAG with decision (rectangle) / chance (oval) / value (octagon) nodes and destination-derived arc semantics.
    • ·matrix → sipoc + qfd — Six Sigma SIPOC table and the Akao House of Quality with a computed technical-importance row (Σ weight×strength) and a HOW×HOW diamond-cell correlation roof.
    • ·mindmap → futureswheel + driver — Jerome Glenn concentric-ring consequence map and the IHI aim→drivers→change-ideas tree.

    v0.6.10

    2026-06-021 diagram
    P&ID — Water Pump Flow Control ISA-5.1 / ISO 10628 P&ID rendered by Schematex Water Pump Flow Control Feed Tank Feed Pump V-101 Isolation FT 101 FIC 101
    P&ID (Piping & Instrumentation)
    FixedP&ID layout quality: the 5 long-pending renderer tests now passP&ID (Piping & Instrumentation)
    • ·Minor-process line class (src/diagrams/pid/renderer.ts): line types now map to explicit CSS classes — processlt-pid-process, process_minorlt-pid-process-min (was the unstyled lt-pid-process-minor).
    • ·No-fill guard class: every line <path> now carries a shared lt-pid-line-path class (with .lt-pid-line-path { fill: none; }), so no line can inherit a fill.
    • ·Z-order layering: render split into ordered groups — process pipes (lt-pid-process-lines) behind equipment (lt-pid-equipment), with signal lines (lt-pid-signal-lines) + instruments above.
    • ·Line-mounted instrument placement (src/diagrams/pid/layout.ts): an instrument that measures/controls a *pipe* (not equipment) now anchors to that pipe's midpoint x instead of a fixed offset.

    v0.6.9

    2026-06-011 diagram
    Single-pole household light Circuit schematic with 4 components Single-pole household light V_mains220VacF116AS1Lamp
    Circuit schematic
    AddedLLM input recovery: code-fence stripping + abbreviated-header normalization (src/core/api.ts)
    • ·Markdown code-fence stripping. Input wrapped in ``` mermaid … , schematex … , or a bare fence now has the fence lines removed before detection. Previously the opening fence line ( ``mermaid ) was read as the diagram header and the whole diagram failed to detect. A leading fence line and a trailing fence line are stripped independently, so a truncated artifact with only an opening fence is still recovered; unfenced input is untouched.
    • ·Abbreviated-header normalization. Once the target engine is known, a first-token header that is a prefix (≥3 chars) of the resolved diagram type is rewritten to the canonical keyword — flowflowchart, orgorgchart, gengenogram, pedpedigree, seqsequence, sociosociogram, ecoecomap. Headerless grammars (mindmap's # Title), already-canonical headers, and unrelated first tokens (e.g. flowchart's alternate graph keyword) are left untouched.
    • ·New test suite tests/core/input-recovery.test.ts (14 cases across fence stripping, abbreviation recovery, and the two combined).
    AddedCircuit ERC (electrical-rule check) expansion (src/diagrams/circuit/lint.ts)Circuit schematic
    • ·CIRCUIT_DUPLICATE_ID — a reference designator declared twice (silently overwrites a pinMap entry). Runs in both positional and netlist modes.
    • ·CIRCUIT_NO_GROUND — the circuit has a source (voltage_source / ac_source / battery / current_source) but no ground reference anywhere; node voltages are undefined.
    • ·CIRCUIT_FLOATING_NET — a net only one pin connects to (dangling node), excluding intentional single-terminal reference symbols (ground / vcc / port / label / test_point / no_connect / antenna) and auto no-connect padding.
    • ·CIRCUIT_NET_TYPO — a dangling net whose name is one edit (Levenshtein) from a properly wired net (e.g. vot vs vout) — surfaced as a likely misspelled connection with a rename suggestion, in place of the generic floating-net warning.

    v0.6.8

    2026-05-311 diagram
    FixedBlock diagram: dangling output signals now render with labelControl-systems block diagram
    • ·signal("label") with no consumer (only incoming edges, no outgoing) was silently dropped: the edge lost its label and the layout discarded it because the target had no anchor. Two fixes: the parser now applies the signal label to the surviving edge, and the layout synthesises a lightweight output-port anchor for any signal ID that is an edge target but not declared as a block/sum/port.
    • ·Compact height for pure-forward diagrams: an unconditional FWD_Y + 170 height floor overrode the natural canvas height even when there were no feedback rows, producing unnecessarily tall SVGs. The floor now applies only when at least one feedback row is present, reducing the canvas for simple diagrams.
    • ·Fixes the last non-P&ID pre-existing test failure (tests/blockdiagram/renderer.test.ts). The 5 remaining P&ID test failures describe unimplemented layout features (z-order, instrument fan-out, process_minor CSS class) tracked in docs/issues/06-pid-layout-quality.md.
    • ·--

    v0.6.7

    2026-05-313 diagrams
    Scaleup — Matrixed Product Lines Organizational chart with 14 people and 17 relationships Scaleup — Matrixed Product Lines Jamie Torres CEO Raj Patel CTO Priya Nair Eng Lead Alex Kim Senior Engineer Jordan Lee Engineer Omar Hassan Eng Lead Yuki Tanaka Staff Engineer Maya Patel Engineer Ellen Wu CPO Tyler Brooks PM Suki Ito PM Liu Wei CDO Ana Rossi Designer Kai Park Designer
    Organisation chart
    Single-pole household light Circuit schematic with 4 components Single-pole household light V_mains220VacF116AS1Lamp
    Circuit schematic
    Reduce 30-day readmissions map mindmap with 7 nodes Teach-back at bedside Med reconciliation Reliable discharge process Appointment within 7 days Post-discharge phone call Timely follow-up Reduce 30-day readmissions
    Mindmap
    FixedParser tolerance: degrade-not-reject for circuit / orgchart / mindmapOrganisation chartCircuit schematicMindmap
    • ·Circuit (src/diagrams/circuit/netlist.ts): a multi-terminal component given fewer nets than its pin count (e.g. a 4-pin transformer given only 2 nets) no longer throws. Missing pins are padded with floating no-connect nets and the component is rendered; a CIRCUIT_PIN_UNDERSPECIFIED lint warning names the shortfall and gives a minimal correct example. New lint() hook in circuit/index.ts.
    • ·Orgchart (src/diagrams/orgchart/parser.ts): unparseable lines are now skipped with an ORGCHART_UNPARSEABLE_LINE warning instead of aborting the whole chart. Edge-only (Mermaid-style) input (CEO -> CTO) synthesises implied nodes rather than throwing "unknown node" (ORGCHART_IMPLIED_NODE). Duplicate node ids keep the first declaration (ORGCHART_DUPLICATE_ID). New lint() hook in orgchart/index.ts.
    • ·Mindmap (src/diagrams/mindmap/parser.ts): a missing # Title central topic is recovered — the first plain text line is adopted as the centre (rootInferred:"line"), or a "Mindmap" placeholder is inserted over top-level bullets (rootInferred:"placeholder"). The orphan-node throw is gone. New lint() hook in mindmap/index.ts surfaces a MINDMAP_SYNTHESIZED_ROOT warning.
    FixedvalidateDsl now surfaces status and warnings
    • ·The return type of validateDsl is extended: ok:true results now carry status: "valid" | "partial" and warnings: SchematexValidationError[], so upstream LLMs can see exactly what was recovered and self-correct rather than only seeing a binary pass/fail.
    FixedCircuit: 24 declared component types no longer render as ?boxCircuit schematic
    • ·New test suites: tests/mindmap/degradation.test.ts, tests/orgchart/degradation.test.ts, tests/circuit/degradation.test.ts — 35 new passing tests covering degradation paths, lint warnings, and glyph coverage.
    • ·Updated tests/ai/tools.test.ts to assert the new degradation contract (partial render + warnings) instead of the old hard-error expectation.
    • ·--

    v0.6.6

    2026-05-301 diagram
    Working at height Bowtie: hazard "Working at height", top event "Person falls from height"; 2 threats, 2 consequences, 9 barriers, 1 escalation factor. Working at height Personfalls fromheight Working at height Guardrail removedfor access Permit-to-worksystem Temporary edgeprotection Edge protectionnot inspected Pre-useinspection regime Spotter /banksman Fragile roofsurface Crawling boards +signage Roof-access riskassessment Fatality Fall-arrestharness + lanyard Rescue plan +first aid Serious injury Safety nettingbelow On-site medic +evacuation Threat Barrier (prevent / mitigate) Top event Consequence Escalation factor
    Bowtie risk diagram
    AddedBowtie risk diagram engine (bowtie)Bowtie risk diagram
    • ·New bowtie engine (src/diagrams/bowtie/) for CCPS / Energy Institute 2018 barrier-based risk management (IEC 31010 §B.4.6, ICAO Doc 9859) — the sibling of faulttree in the Risk & Reliability cluster. A central top event (the knot) with threats fanning in from the left through chains of preventative barriers and consequences fanning out to the right through chains of mitigative barriers, shaped like a bow tie. Spec: 38-BOWTIE-STANDARD.md.
    • ·The differentiator is not computation (bowtie is qualitative — no probability rollup) but a rigid, correct-by-construction symmetric layout that no general-purpose box-and-arrow tool produces, plus structural validation of the CCPS/EI barrier rule set: every threat must reach the top event through ≥ 1 barrier, every consequence must hang off it through ≥ 1 barrier, every escalation factor must attach to a named barrier — violations are *rejected* with plain-English errors, not silently drawn.
    • ·Full element vocabulary: hazard header, topevent (green-disc knot), threat (orange), prevent/mitigate barriers (grey, chained, declaration-order = outer→inner), consequence (red), escalation factor (amber, drops below the barrier it degrades), escalation-factor barrier. Indentation-structured DSL mirroring the CCPS 7-step build; CJK quotes accepted.
    • ·Bespoke symmetric band model (not the flowchart DAG engine): wings centred independently about the knot, centre-anchored barrier columns, escalation factors dropping into the whitespace below without breaking line symmetry. Theme: BowtieTokens (BowTieXP/bowtiemaster colour scheme in default, shape/border-based monochrome for regulator print, Catppuccin dark).

    v0.6.5

    2026-05-301 diagram
    Both pumps fail Fault tree for "Both redundant pumps fail": 1 top, 2 basic. 1 minimal cut set: {PA, PB}. P(top) = 1.00e-4 (rare). Both pumps fail Both redundant pumpsfail PA Pump A fails p=0.01 PB Pump B fails p=0.01 P(top) = 1.00e-4 (rare)
    Fault Tree Analysis
    AddedFault Tree Analysis engine (faulttree)Fault Tree Analysis
    • ·New faulttree engine (src/diagrams/faulttree/) for NUREG-0492 / IEC 61025 fault tree analysis, opening a new Risk & Reliability cluster. Like pert and petri, the engine *computes the semantics*: it runs MOCUS (Fussell-Vesely 1972) to enumerate the minimal cut sets (with idempotence + absorption, so repeated/shared events are handled correctly) and the top-event probability (prob: rare | mcub | exact), then highlights the cut sets in red and single points of failure in the strongest red. Spec: 37-FAULT-TREE-STANDARD.md.
    • ·Events: top / gate (intermediate) rectangles, basic circles with p:, undeveloped diamonds, house events with state: 0|1, conditioning ellipses. Gates: AND (dome), OR/XOR (shield), VOTING(k/n; …), INHIBIT(x) if cond (hexagon), PAND(…) order: …. Flat declaration wired by id (DAG-friendly); keyword faulttree (alias fta).
    • ·Deterministic tidy top-down layout with content-sized event boxes; shared leaves duplicated (NUREG convention); cut-set boxes drawn behind nodes. Theme: ReliabilityTokens (coloured-house default, faithful black/white monochrome, Catppuccin dark).
    • ·Validation: exactly-one-top, undefined-reference (named), cycle detection, probability range, VOTING bounds, conditioning-gate placement — all readable errors.

    v0.6.4

    2026-05-301 diagram
    Shape hierarchy UML class diagram: 1 interface, 1 abstract, 2 class; 1 realization, 2 generalization; 1 merged inheritance tree. Shape hierarchy «interface» Shape + area(): double + perimeter(): double AbstractShape # name: String + area(): double + perimeter(): double + describe(): String Circle + radius: double + area(): double + perimeter(): double Square + side: double + area(): double + perimeter(): double
    UML Class Diagram
    AddedUML class diagram engine (umlclass)UML Class Diagram
    • ·New umlclass engine (src/diagrams/umlclass/) for UML 2.5.1 §9–§11 class diagrams — the largest unfilled gap below Mermaid's classDiagram. Standard-correct adornments (hollow triangle → parent, filled diamond at the composite end), a generalization-driven layered layout (Sugiyama with dummy-node edge routing, so connectors never cross a box), and tree-merged inheritance heads (N children of one parent share one trunk + one triangle). Five classifier kinds, all six relationship kinds, visibility glyphs, multiplicity, roles, stereotypes. Spec: 36-UMLCLASS-STANDARD.md.
    • ·Accepts the Mermaid classDiagram header and glyph aliases for one-line migration (<|--, *--, o--, -->, ..>, ..|>, --, ..).
    Addedumlclass packages/namespaces + Mermaid-compat member formsUML Class Diagram
    • ·Namespaces / packages: namespace Name { … } renders a labelled containment frame (union + padding, C4-style). Dot-notation namespace A.B.C auto-creates parent packages; blocks nest syntactically; explicit ["Label"] supported. A package-clustering pass keeps same-package classifiers contiguous so frames stay clean rectangles.
    • ·Mermaid member forms: tilde-generics List~int~List<int> (nested + on class names), single-line Class : +member / Class : <<interface>>, member classifiers * (abstract) / $ (static), and space-return-type getId() String. A lone leading ~ stays the package-visibility glyph.
    • ·Single-line class bodies (class Foo { +a +b }) now parse correctly (depth-aware member splitter).
    • ·Registered across DiagramType, src/core/api.ts, src/index.ts, src/ai/registry.ts, src/ai/profiles.ts, and SYNTAX_KEYS. Theme tokens (incl. package-frame tints) in src/core/theme.ts. Tests in tests/umlclass/. Docs: website/content/docs/umlclass.mdx; examples: umlclass-shape-hierarchy.mdx, umlclass-order-model.mdx, umlclass-payment-strategy.mdx, umlclass-namespaces.mdx, umlclass-generics-mermaid.mdx.

    v0.6.3

    2026-05-293 diagrams
    Commercial PV Interconnection Single-line diagram with 8 nodes and 7 connections Commercial PV Interconnection 480V 480V PV string conductors PV Array 250 kWdc Utility 480V DC Combiner 600 Vdc DC Disconnect 600 Vdc Grid-tie Inverter 200 kWac AC Disconnect 480V 400A Wh Production Meter 480V · Main Switchboard
    Single-line diagram
    P&ID — Water Pump Flow Control ISA-5.1 / ISO 10628 P&ID rendered by Schematex Water Pump Flow Control Feed Tank Feed Pump V-101 Isolation FT 101 FIC 101
    P&ID (Piping & Instrumentation)
    IEC Gate Gallery Logic gate diagram with 7 gates, 4 inputs, 7 outputs & ≥1 =1 & ≥1 1 1 EN A B C EN Y_and Y_or Y_xor Y_nand Y_nor Y_not Y_tri IEC Gate Gallery
    Logic gate netlist
    Changedgraceful degradation for the highest-failure industrial diagrams (SLD, P&ID, logic gate)Single-line diagramP&ID (Piping & Instrumentation)Logic gate netlist
    • ·L1 — the generation profiles now teach the full controlled vocabulary. src/ai/profiles.ts lists the complete equipment / node / gate-type enum for SLD, P&ID, and logic gate in each prefer block, so the LLM emits canonical names instead of inventing synonyms. Repair hints gained example mappings (e.g. exchanger → hx_shell_tube, vessel_horizontal → vessel_h). This is a vocabulary fix, not a hard-coded alias table.
    • ·L2 — an unknown type keyword no longer blanks the diagram. When a parser hits an unrecognised node/equipment/gate kind, it keeps the element with an "unknown" sentinel + the original rawType token instead of throwing. The renderer draws a visibly-flagged placeholder (dashed box + ? + the raw word, accent-coloured) so the output is never silently wrong, and the lint pass emits a non-fatal warning naming the bad token with a did-you-mean suggestion (SLD_UNKNOWN_DEVICE / PID_UNKNOWN_EQUIP / LOGIC_UNKNOWN_GATE). Genuine structural errors (duplicate ids, malformed syntax) stay fatal.
    • ·P&ID — modifier keywords degrade to a safe default rather than a placeholder: an unknown line type: falls back to process and an unknown instrument category to field_discrete. The instrument-tag grammar was relaxed to accept dash-less tags (e.g. inst PLC : cr_shared).
    • ·Added tests/{sld,pid,logic}/graceful-degradation.test.ts (17 cases): no-throw parsing, "unknown" sentinel + rawType preservation, flagged-placeholder markers in the SVG, the three lint warning codes, modifier-default fallback, dash-less P&ID tags, and regression guards that fully-known diagrams stay valid.

    v0.6.2

    2026-05-272 diagrams
    Sequence Diagram 2 participants, 3 messages, 0 combined fragments. Factory Worker «create» external trigger fire-and-forget
    UML sequence diagram
    University Schema Entity-Relationship Diagram with 4 entities and 3 relationships. University Schema majors in Major major_id int PK name varchar Course course_id int PK title varchar credits int Student student_id int PK name varchar email varchar UK major_id int FK Enrollment student_id int PK FK course_id int PK FK grade char
    Entity-Relationship Diagram (ERD)
    ChangedMermaid header compatibility for sequence and erdUML sequence diagramEntity-Relationship Diagram (ERD)
    • ·sequence — accepts the Mermaid sequenceDiagram header. Under that header the arrow tokens take Mermaid meaning (->> synchronous call, -->> reply/return, -) async, plus --)/--x); under the native sequence "Title" header the long-standing Schematex meaning is preserved (->> = async), so existing documents are unaffected. participant/actor, Note over A,B:, activation suffixes, and loop/alt/opt/par … end work in both. Canonical profile now recommends sequenceDiagram.
    • ·erd — accepts the Mermaid erDiagram header. Bare relationships (CUSTOMER ||--o{ ORDER : places, no ref keyword) auto-create their entities, and type-first entity blocks (ORDER { int id PK }, KEY ∈ PK/FK/UK) are parsed. The native erd header with table NAME { name type PK } + ref … is unchanged. Canonical profile now recommends erDiagram.
    Addedshowcase examples
    • ·timing-clock-rle-shorthand — synchronous bus read using the clock N and rle <state>*<count> shorthands (0.6.1 features).
    • ·circuit-pullup-orientation-hint — netlist pull-up circuit demonstrating the dir= orientation hint (0.6.1 feature).
    • ·Added tests/sequence/mermaid-compat.test.ts and tests/erd/mermaid-compat.test.ts (header detection, Mermaid arrow/cardinality semantics, native-mode regression guards).
    • ·--

    v0.6.1

    2026-05-27
    ChangedLLM-friendlier DSL for the highest-failure diagram types
    • ·circuit — netlist is now the recommended generation path. Canonical syntax (src/ai/profiles.ts) and docs lead with the SPICE-style netlist (circuit "…" netlist); the positional/cursor mode is reframed as hand-drawing only (it requires tracking a moving cursor across lines, the dominant LLM failure). Added an optional per-component orientation hint dir=right|left|up|down (Lcapy-style L2 control) that rotates a symbol without affecting connectivity.
    • ·circuit — netlist auto-layout compaction. Two-pin components with one pin on ground are now recognised as shunt legs and dropped vertically beneath the node they tap; series / multi-pin components stay on a top spine row and spacing is tightened. Footprint: RC low-pass −36%, voltage divider −40%, common-emitter amp −32%; output now follows the conventional schematic idiom instead of one wide row.
    • ·network — minimal core keeps the cheap structural hints. Canonical guidance is now: device + link skeleton plus layout: / tier: (recommended — they drive the hierarchy at near-zero cost). The verbose per-link annotations (vlan: / port: / speed / trunk) are demoted to "only when asked" — they don't affect layout and are the main source of generation errors.
    • ·state — Mermaid stateDiagram-v2 is now the recommended header/form. Aligns generation with the dominant training-data prior ([*] start/end, --> transitions). The native state "…" + initial/final form still works; the parser already accepted both.

    v0.6.0

    2026-05-253 diagrams
    PERT network — Software project (AOA) 10 activities, project duration 70 days, critical path A → C → F → H → J. Software project (AOA) create schedule 10 buy hardware 5 programming 20 installation 5 conversion 15 test code 20 write manual 15 test system 10 training 5 user test 10 1 2 3 4 5 6 7 8 9 10 11 12 13 Project duration 70 days · 10 tasks · 10 dependencies · 5 critical Critical path: A → C → F → H → J
    PERT / CPM network & Gantt chart
    Petri net — After fire: T1 3 places, 2 transitions, 4 arcs. Marking {P2:1}. Enabled: T2. Class: state machine, workflow net. After fire: T1 P1 P2 P3 T1 T2
    Petri net
    Network diagram — Branch LAN - Star Layout 6 devices, 5 links, 0 boundaries. Topology: star. Links: 4 copper, 1 poe. Branch LAN - Star Layout 1G Access · VLAN 10 · 1G Access · VLAN 10 · 1G Access · VLAN 20 · 1G VLAN 30 · 1G · PoE Gateway Access Switch Admin PC Laptop Printer Wi-Fi AP
    Network topology
    Changed
    • ·petri reclassified into a new concurrency cluster (was behavior-modeling), matching the type-system intent (Concurrency / discrete-event formalism) and the docs navigation. Petri nets model concurrent / distributed / asynchronous systems, so they now group on their own in the gallery's by-type view with a dedicated line-glyph.
    • ·Clearer registry taglines for usecase and sequence — both now lead with purpose (what the diagram is *for*) before the feature list, matching the house definition style.
    AddedPERT / CPM network engine (pert)PERT / CPM network & Gantt chart
    • ·New dedicated pert engine (src/diagrams/pert/) implementing the activity-on-node / Precedence Diagramming Method per PMI PMBOK 7 + Moder 1983. Unlike every other text-DSL diagram tool, the engine computes the schedule: a forward pass + backward pass return Early/Late Start & Finish, total slack, project duration, and the critical path — the render is downstream of the computation. Spec: 32-PERT-STANDARD.md.
    • ·Six-field activity box (ES | Duration | EF / Name + id / LS | Slack | LF), the canonical Kerzner / Primavera P6 representation. Every computed field is mirrored onto data-* attributes.
    • ·Full PDM dependencies — FS (default), SS, FF, SF — with integer/fractional lag (after: A+2d) and lead (after: A SS-1). Edge labels render the type + lag (SS+1d, FF); FS with zero lag stays unlabelled.
    • ·Three-point (PERT) estimation — duration: O/M/P computes te = (O+4M+P)/6 and variance σ² = ((P−O)/6)²; the project-level standard deviation over the critical path is reported in the footer.
    AddedPetri net engine (petri)Petri net
    • ·New dedicated petri engine (src/diagrams/petri/) for place/transition nets per Murata 1989 + ISO/IEC 15909-1. Like pert, the engine computes the dynamics: it validates the bipartite structure, applies a fire: sequence to the initial marking, and highlights which transitions are *enabled* in the resulting marking. Spec: 34-PETRINET-STANDARD.md.
    • ·Places, transitions, and four arc types — place <id> *<tokens> circles, transition <id> bars (immediate) or timed rate: <λ> boxes (GSPN), with standard ->, inhibitor -o, read --, and reset => arcs. Weighted arcs (weight: n / *n) and place capacity:.
    • ·Subclass detection — source/sink, workflow-net (van der Aalst), state-machine, and marked-graph structures are recognised and noted in the SVG <desc>.
    • ·House-style palette with green reserved for "enabled" and red for "inhibitor/dead"; faithful black-and-white Murata textbook look under monochrome. layout: lr|tb with cycle-removal back-edge routing.
    AddedNetwork topology engine (network)Network topology
    • ·New dedicated network engine (src/diagrams/network/) for IT / CCTV network topology with Cisco-convention device icons, typed links, subnets/VLANs, and topology-correct layout. Spec: 35-NETWORK-STANDARD.md.
    • ·31 device kinds (router, switch, l3switch, firewall, loadbalancer, ap, wlc, gateway, server, serverfarm, pc, laptop, mobile, ipphone, printer, storage, camera with type: fixed|bullet|dome|ptz|turret, nvr, dvr, poeswitch, encoder, monitor, internet/wan/cloud/pstn, lan, …) connected with -- (undirected), -> (directed), or == (LAG).
    • ·Rich link specs after : — link type (fiber/wireless/serial/poe/vpn/lag), trunk/access, vlan:, speed, and port: a>b; each rendered with a distinct line style.
    • ·Physical + logical boundaries — site/rack (solid) vs subnet/vlan/zone/dmz (dashed, tinted) nested blocks. Layouts tiered (default), tree, star, ring, bus, mesh, spine-leaf, manual. Validates VLAN range 1–4094 and device-IP-in-subnet-CIDR; never drops a device/port/link.

    v0.5.2

    2026-05-22
    Fixedparser preview resilience
    • ·Preview surfaces stay visible when strict parsing or rendering fails. New
    • ·React, browser, and AI integrations use the non-blank preview boundary.
    • ·Circuit netlist explicit type= now owns pin order. A component such as
    • ·Docs cover strict versus preview APIs. The README, reference overview,

    v0.5.0

    2026-05-192 diagrams
    Effect of exercise on chronic low-back pain — SR PRISMA 2020 flow diagram (2020-single, systematic-review) — 7 boxes, 6 arrows Effect of exercise on chronic low-back pain — SR Identification Screening Included Identification of studies via databases and registers Records identified from: PubMed (n = 600) Embase (n = 450) Cochrane (n = 184) Web of Science (n = 184) Total (n = 1,418) Records removed before screening Duplicate records removed (n = 318) Records screened n = 1,100 Records excluded n = 870 irrelevant title (n = 750) non-English (n = 120) Reports assessed for eligibility n = 230 Reports excluded, with reasons: n = 195 wrong population (n = 80) wrong intervention (n = 60) wrong outcome (n = 55) Studies included in review Studies included (n = 35) Reports of included studies (n = 38)
    PRISMA 2020 flow diagram
    Use Case Diagram — ATM Subject: ATM System. 2 actors, 4 use cases, 0 include, 0 extend. ATM ATM System Customer «actor» Bank Withdraw Cash Deposit Funds Check Balance Transfer Funds
    UML use case diagram
    AddedPRISMA 2020 flow diagram engine (prisma)PRISMA 2020 flow diagram
    • ·New dedicated prisma engine (src/diagrams/prisma/) implementing the PRISMA 2020 flow diagram (Page MJ et al., BMJ 2021;372:n71). Rigid four-row layout (Identification → Screening → Eligibility → Included) that is correct by construction — the author writes record counts and exclusion reasons; the layout, mandatory n = fields, and exclusion side-boxes are prescribed. Spec: 28-PRISMA-STANDARD.md.
    • ·Single + dual pipeline. mode: 2020-single (databases & registers only) and mode: 2020-dual (adds the "Identification via other methods" column, merged into Screening via a Y-junction). Auto-detects dual when an other: block is present.
    • ·Canonical column-group layout. "Records removed before screening" is its own box in the right column; the orange/slate section header is an independent capsule bar spanning the column group (matrix-style), and the left Identification/Screening/Included stage bands are independent capsules that bracket the cards.
    • ·Vocabulary overlays. kind: scoping-review (PRISMA-ScR — "sources of evidence"), kind: ipd (participants count), kind: systematic-review (default).
    ChangedUse Case diagram polish (usecase)UML use case diagram
    • ·Unified actor anchor. Every association line from an actor now fans out from a single anchor point (facing-side, torso height) instead of each line exiting the actor box at a different edge point — matching canonical UML rendering.
    • ·Aesthetic pass. Soft blue tinted use-case ellipses, bold names, rounded stick-figure strokes, a quiet rounded subject boundary, and crisper dashed include/extend lines.
    • ·Added website/content/docs/usecase.mdx (the syntax doc was registered in SYNTAX_KEYS but missing) and curated example MDX.
    • ·--

    v0.4.3

    2026-05-16
    Fixedproduction parser bugs from ChatDiagram 2026-05-15 report
    • ·Ladder RES reset coil now parses. Rockwell / Allen-Bradley counter-reset
    • ·Ladder element regex no longer breaks on parens inside quoted names.
    • ·Ladder rung N accepts a trailing colon or none. LLMs routinely omit it
    • ·SLD residential vocabulary. Added mcb, mccb, rcd, rcbo, rccb,
    AddedMermaid-compatibility scaffolding
    • ·YAML frontmatter title block. ---\ntitle: My diagram\n--- at the top
    • ·Universal %% comment marker. All parsers touched by this release
    • ·"Did you mean…?" suggestions. New src/core/dsl-suggest.ts returns
    • ·Engine-bug error telemetry. extractError() now tags runtime errors

    v0.4.1

    2026-05-061 diagram
    Matrix — This Week Matrix diagram (eisenhower template), quadrant mode, 0 point(s) This Week Do First • Ship hotfix • Customer demo prep Schedule • Write Q3 OKRs • Refactor auth layer Delegate • LinkedIn updates • Inbox zero Delete • Reorganize Slack channels
    Matrix / quadrant
    Addedmatrix style: table + new examplesMatrix / quadrant
    • ·style: table directive for matrix diagrams. Flips any 2×2 or 3×3 quadrant diagram from scatter/bubble mode into a text-in-cell table layout — the canonical form for Eisenhower, Johari, Impact-Effort, and 9-box. Setting style: table automatically disables axis arrows, axis labels, grid lines, and the quadrant-annotation overlay; quadrant titles are instead rendered as cell-header text inside each cell, and multiple items for the same cell stack as a bullet list. Renderer gains three new CSS classes (sx-matrix-cell-title, sx-matrix-cell-subtitle, sx-matrix-cell-item) for theming.
    • ·Q1Q4 shorthand for 2×2 table mode. Instead of cell (col, row) label: "…", authors can write Q2: "Ship hotfix" — one line per item, repeating the key to stack items. Q1 = top-right, Q2 = top-left, Q3 = bottom-left, Q4 = bottom-right. Designed to match what LLMs naturally emit for Eisenhower-style prompts.
    • ·3×3 style: table support. renderQuadrantBackground extended to cover 3×3 grids with a diagonal severity heatmap (green → amber → red, following the GE/McKinsey 9-box convention). renderCellLabels unified from a 3×3-only helper into a shared 2×2/3×3 path.
    • ·Four new example MDX files. matrix-eisenhower-week (updated to table form), matrix-impact-effort, matrix-johari-window, and matrix-9-box-talent — each a canonical AI-grounding few-shot for LLM DSL generation. All four also added to src/ai/_generated.ts.

    v0.4.0

    2026-05-055 diagrams
    University Schema Entity-Relationship Diagram with 4 entities and 3 relationships. University Schema majors in Major major_id int PK name varchar Course course_id int PK title varchar credits int Student student_id int PK name varchar email varchar UK major_id int FK Enrollment student_id int PK FK course_id int PK FK grade char
    Entity-Relationship Diagram (ERD)
    Blink LED — Arduino Uno hello-world Breadboard wiring diagram generated by Schematex Blink LED — Arduino Uno hello-world 5 10 15 20 25 30 5 10 15 20 25 30 a a f f b b g g c c h h d d i i e e j j D13D12D11D10D9D8D7D6D5D4D3D2TXRXRST3V35VGNDVINA0A1A2A3A4A5Arduino Uno R1 220Ω D1 (red)
    Breadboard / Physical wiring
    Loan Application Approval BPMN LR — 1 pool(s), 8 flow object(s). Bank Clerk Underwriter yes no approve reject Application received Check completeness Complete? Risk score Underwriter review Decision Approved Rejected
    BPMN business process
    FBD: Motor Control FBD with 2 network(s). Motor Control 0 — Start latch Start Latch Stop EmergencyStop Latch OR ≥1 IN1 IN2 OUT AND & IN1 IN2 IN3 OUT 1 — Drive output Latch MotorOut MOVE IN OUT
    Function Block Diagram (FBD)
    SFC: Bottle Filling SFC with 3 step(s), 2 transition(s). Bottle Filling T0 StartBtn T1 TankLevel >= 80.0 S0 Filling Done N FillValve_Closed N FillValve_Open N Confirm_Done DoneBtn → S0
    Sequential Function Chart (SFC)
    AddedERD (Entity Relationship Diagram) v0.1 — crow's-foot notationEntity-Relationship Diagram (ERD)
    • ·Full pipeline: parser → layered LR/TB layout → tabular SVG renderer with crow's-foot endpoint glyphs (bar, open circle, foot, foot+circle).
    • ·DBML-compatible DSL: Table Name { col type PK FK -> X.y } with Mermaid }o--|| ASCII glyph aliases as input shorthand.
    • ·Automatic crow's-foot rendering: endpoint cardinality symbols (|, o, <) read from relation glyphs and rendered per notation standard.
    • ·AI registry entry under new data-modeling cluster with explicit disambiguation from the entity type (corporate ownership vs. database schema).
    AddedBreadboard v0.1 — Fritzing-style component layoutBreadboard / Physical wiring
    • ·Section-based DSL: board: dimensions, parts with @col-row hole addressing, power-rail notation (@+t8), span placements, off-board MCU side placement.
    • ·Parts catalog: resistors (auto color-bands from value), LED, capacitors, diode, button, DIP ICs, headers, MCU breakouts (Arduino Uno/Nano, ESP32, Raspberry Pi Pico), HC-SR04, DHT11/22, SSD1306 OLED, LCD 1602 I²C, rotary encoder, servo.
    • ·Cubic Bézier wire routing with via @coord override; post-layout shift with copy-on-return fix for shared pin references.
    • ·Z-ordered renderer: substrate + rails + trough + parts + wires, semantic SVG with CSS class hooks.
    AddedBPMN v0.1 — OMG BPMN 2.0 business-process diagramsBPMN business process
    • ·Full pipeline: parser → longest-path layered layout with DFS cycle-break → orthogonal Manhattan routing → SVG renderer.
    • ·Pools & lanes: pool "Name" + lane "Name" for horizontal swimlane partitioning; black-box pools.
    • ·Events: start · intermediate · end, with none / message / timer trigger variants; correct IEC-style circle glyphs.
    • ·Tasks: plain tasks + 6 marker types (user / service / send / receive / manual / script) + collapsed subprocess.
    AddedFBD (Function Block Diagram) v0.1 — IEC 61131-3 §6.4Function Block Diagram (FBD)
    • ·Full pipeline: parser → layered-DAG layout → SVG renderer. fbd "Title" keyword auto-detects.
    • ·40+ standard blocks with correct IEC distinctive symbols: & (AND), ≥1 (OR), =1 (XOR), 1 (BUF/NOT), SR, RS, TON, TOF, CTU, CTD, ADD, SUB, MUL, DIV, MOD, LT, GT, LE, GE, EQ, NE, SEL, MUX, LIMIT, MOVE, BOOL_TO_INT, and more.
    • ·Output negation bubbles on NAND, NOR, XNOR, NOT (small circle on output port per IEC standard).
    • ·Wire data-type coloring: BOOL = black, INT = blue, REAL = orange, TIME = magenta — follows TIA Portal convention.
    AddedSFC (Sequential Function Chart) v0.1 — IEC 61131-3 §6.5Sequential Function Chart (SFC)
    • ·Full pipeline: parser → recursive-region layout → SVG renderer. sfc "Title" keyword auto-detects.
    • ·Steps: step S0 [initial], step S1 [label: "Filling"] — initial step renders with double border per IEC §6.5.1.2.
    • ·Transitions: transition from: S0 to: S1: StartBtn — condition text rendered next to the horizontal bar.
    • ·Action blocks: right-side action boxes with qualifier compartment (N/S/R/L/D/P/P0/P1/SD/DS/SL) + body text + optional time row (D Mixer_Run T#10s).
    Addedinfrastructure and docs
    • ·11 new example MDX files covering ERD, Breadboard, BPMN, FBD, and SFC — all with industry context, complexity ratings, and featured flags.
    • ·5 new reference docs: docs/reference/23-FBD-STANDARD.md, 24-SFC-STANDARD.md, 25-ERD-STANDARD.md, 26-BREADBOARD-STANDARD.md, 27-BPMN-STANDARD.md.
    • ·New Data modeling cluster added to docs/reference/00-OVERVIEW.md and AI registry.
    • ·AI registry: all 5 types in src/ai/registry.ts; syntax keys in scripts/build-ai-content.mjs; total AI-bundled syntax docs 27, examples 58.

    v0.3.5

    2026-05-04
    Fixedproduction-audit findings (3 items)
    • ·Logic parser: ref-before-decl now a warning, not a hard error. When a gate references a signal that was never declared with input, the parser previously threw Unknown signal "X" in gate Y. It now auto-declares the signal as an input and appends a string to ast.warnings. Active-low markers (~) are preserved on auto-declared signals. This matches real production patterns where LLMs emit gate-first DSL without explicit input lines. LogicGateInput gains autoDeclared?: boolean; LogicGateAST gains warnings?: string[].
    • ·Smart-quote support across all diagram header titles. Eleven parsers extracted diagram titles with the regex /"([^"]*)"/, which rejected Unicode curly quotes and other locale-specific pairs used by non-English speakers. A new shared helper (src/core/quotes.ts) recognises "…" '…' "…" '…' «…» 「…」 『…』 and \" / \' escape sequences. All header-title extraction in blockdiagram, circuit, entity, ladder, logic, orgchart, phylo, sld, sociogram, timing, and venn parsers now uses this helper.
    • ·Venn tokenizer: smart-quote support in title, set labels, region values, and comment stripping. parseTitleAndProps, parseConfigProps, splitTopLevelCommas, and parseValue all updated to be quote-pair-aware. The stripComment helper now correctly skips over non-ASCII quote pairs (e.g. «…») before looking for #. Fixes both the unterminated quoted title error and the \" escape robustness gap reported in Spanish-locale sessions.
    • ·--

    v0.3.4

    2026-05-02
    Changedbackground handling
    • ·Removed background: from inline <style> blocks across all 19
    • ·PNG export (svgToPngBlob) defaults to transparent. Previously
    • ·Dark theme requires a dark host wrapper. When using theme: "dark",
    • ·--

    v0.3.3

    2026-05-01
    Fixedproduction-audit findings (4 items)
    • ·flowchart linkStyle now actually renders. Parser already accepted linkStyle 1,5,6 stroke:#ff0000,stroke-width:4px but stored the result without applying it. Renderer now emits data-edge-index="N" per edge and emits matching CSS overrides. Multiple comma-separated indices supported per statement.
    • ·flowchart inline <b> / <i> in node labels. multilineText previously stripped these tags. Now per-line segments inside <b>...</b> render with font-weight=bold; <i>...</i> with font-style=italic. Mid-line bolding works (Foo <b>bar</b> baz). Combines with existing <br/> line-break support.
    • ·circuit Cannot infer type error message rewrite. Old: Cannot infer type from id "X" — use type= override. New message lists the valid SPICE prefixes (R/C/L/D/V/I/Q/M/J/S/F/B/K/U/X/W/T), gives an explicit type=… example using the user's id, and states the engine's scope (electrical schematics only — hydraulic/pneumatic prefixes like EV*, BOMBA*, TANK* are not supported).
    • ·genogram dual-union sibship regression test. New test in tests/genogram/layout.test.ts covers the case where one shared parent has children with two different partners (Case F from the 2026-05-01 audit). Confirms the existing layout already groups offspring per-union with cross-union gap > 1.25× within-sibship gap. No layout change required — added as regression guard.

    v0.3.2

    2026-04-30
    ChangedInternal cleanup of v0.3.1 fixes
    • ·circuit/netlist: consolidated 4 separate ground-check codepaths (GROUND_NETS set, isGroundNetName, GROUND_ID_PATTERN, inline error-hint regex) into one isGroundRef helper. Trimmed redundant error-message hint that duplicated the auto-resolve branch.
    • ·timeline/parser: removed unreachable if block (startsWith("") is always true) and its empty body. The block was also silently dropping the colon validation that previously existed for track "Name":.
    • ·react.tsx: restored a concise inline comment explaining why onError is excluded from useMemo deps. Previous 3-line comment was self-contradictory ("no disable comment is needed" — written as a 3-line replacement for a 1-line disable comment).
    • ·eslint.config / orgchart / svg / circuit symbols / pedigree / blockdiagram / flowchart / genogram: trimmed multi-line "story" comments down to single-line intent. Removed comments that re-narrated obvious code or self-referenced the audit PR.

    v0.3.1

    2026-04-305 diagrams
    Genogram: Smith Family Genogram diagram with 3 individuals across 2 generations Smith Family John (1975) Mary (1977) Alice (2005) John (b. 1975) Mary (b. 1977) Alice (b. 2005) m. 2002 MARKERS Index person (focal subject)
    Genogram
    CF family — autosomal recessive Pedigree chart with 8 individuals across 3 generations I II III I-1 (carrier) I-2 (carrier) II-4 (carrier) II-2 (carrier) II-1 (affected) P II-3 III-1 (affected) III-2 I-1 I-2 II-4 II-2 II-1 II-3 III-1 III-2 GENETIC STATUS Affected Carrier SYMBOLS P Proband (P) — first affected case identified
    Pedigree chart
    Single-pole household light Circuit schematic with 4 components Single-pole household light V_mains220VacF116AS1Lamp
    Circuit schematic
    Flowchart Flowchart with 14 nodes and 16 edges. commit → build build → unit unit → fail: No No unit → scan: Yes Yes scan → vuln vuln → fail: Yes Yes vuln → stage: No No stage → smoke smoke → fail: No No smoke → approve: Yes Yes approve → wait: No No approve → prod: Yes Yes prod → health health → done: Yes Yes health → rollback: No No rollback → done Push to main Push to main Build artifact Build artifact Unit tests pass? Unit tests pass? Security scan Security scan High-severity CVEs? High-severity CVEs? Deploy to staging Deploy to staging Smoke tests green? Smoke tests green? Fail build Fail build Manual approval? Manual approval? Await approver Await approver Deploy to production Deploy to production Post-deploy health check? Post-deploy health check? Automatic rollback Automatic rollback Release complete Release complete
    Flowchart
    Timeline — Acme — First Five Years Schematex timeline diagram Acme — First Five Years Founders meet at Y Combin…2020-06 Incorporation + pre-seed …2020-11 First engineer hired2021-04 Product beta — 50 design …2021-09 Seed round — $6M2022-03 Team reaches 20 people2022-11 Platform v1 GA2023-05 Series A — $22M2023-10 100th enterprise customer2024-06 Platform v2 launched2025-01 2021 2021 2022 2022 2023 2023 2024 2024 2025 2025
    Timeline
    FixedGenogram: cousins of different couples no longer interleave (Case A)Genogram
      FixedPedigree: SAB / TAB / Ectopic now render as NSGC triangles (Case B)Pedigree chart
        FixedBlockdiagram: inline [id] -> [id] no longer rejected (Case F)
          FixedCircuit: GND_REF/AGND/DGND/EARTH/PE no longer reject (Case D)Circuit schematic
            AddedCircuit: terminal_block primitive (Case C)Circuit schematic
              AddedGenogram: shape: override field (Case B)Genogram
                AddedFlowchart: multi-line node labels via <br/> (Case G)Flowchart
                  AddedFlowchart: Mermaid-style outer-quote stripping in node labelsFlowchart
                    AddedTimeline: section keyword (Case E, partial)Timeline
                    • ·--

                    v0.3.0

                    2026-04-295 diagrams
                    State Diagram — Traffic Light UML 2.5 / Harel statechart rendered by Schematex Traffic Light Red Green Yellow timer timer timer power_off
                    State diagram
                    P&ID — Water Pump Flow Control ISA-5.1 / ISO 10628 P&ID rendered by Schematex Water Pump Flow Control Feed Tank Feed Pump V-101 Isolation FT 101 FIC 101
                    P&ID (Piping & Instrumentation)
                    Ecomap Ecomap diagram with 6 external systems Marcus Mother Father (divorced) East High School Soccer Coach Soccer team Ms. Chen primary caregiver EOW weekends mentor weekly SYSTEMS Community Education Family Mental Health TIES Strong
                    Ecomap
                    Single-pole household light Circuit schematic with 4 components Single-pole household light V_mains220VacF116AS1Lamp
                    Circuit schematic
                    Flowchart Flowchart with 14 nodes and 16 edges. commit → build build → unit unit → fail: No No unit → scan: Yes Yes scan → vuln vuln → fail: Yes Yes vuln → stage: No No stage → smoke smoke → fail: No No smoke → approve: Yes Yes approve → wait: No No approve → prod: Yes Yes prod → health health → done: Yes Yes health → rollback: No No rollback → done Push to main Push to main Build artifact Build artifact Unit tests pass? Unit tests pass? Security scan Security scan High-severity CVEs? High-severity CVEs? Deploy to staging Deploy to staging Smoke tests green? Smoke tests green? Fail build Fail build Manual approval? Manual approval? Await approver Await approver Deploy to production Deploy to production Post-deploy health check? Post-deploy health check? Automatic rollback Automatic rollback Release complete Release complete
                    Flowchart
                    AddedState diagram (UML 2.5 / Harel statechart)State diagram
                      AddedP&ID (Piping & Instrumentation Diagram)P&ID (Piping & Instrumentation)
                        Addedstate and pid MCP / AI integrationState diagramP&ID (Piping & Instrumentation)
                          AddedEcomap: mesosystem edges (Bronfenbrenner 1979)Ecomap
                            AddedCircuit: W-prefixed wire IDsCircuit schematic
                              FixedFlowchart: BT / RL direction coordinate flipFlowchart
                              • ·--

                              v0.2.5

                              2026-04-271 diagram
                              Flowchart Flowchart with 14 nodes and 16 edges. commit → build build → unit unit → fail: No No unit → scan: Yes Yes scan → vuln vuln → fail: Yes Yes vuln → stage: No No stage → smoke smoke → fail: No No smoke → approve: Yes Yes approve → wait: No No approve → prod: Yes Yes prod → health health → done: Yes Yes health → rollback: No No rollback → done Push to main Push to main Build artifact Build artifact Unit tests pass? Unit tests pass? Security scan Security scan High-severity CVEs? High-severity CVEs? Deploy to staging Deploy to staging Smoke tests green? Smoke tests green? Fail build Fail build Manual approval? Manual approval? Await approver Await approver Deploy to production Deploy to production Post-deploy health check? Post-deploy health check? Automatic rollback Automatic rollback Release complete Release complete
                              Flowchart
                              FixedFlowchart: sequential subgraph right-driftFlowchart
                                FixedFlowchart: null-lane centering for parallel sibling clustersFlowchart
                                  FixedFlowchart: cluster bbox vertical overlapFlowchart
                                    FixedFlowchart: parallelogram/trapezoid text overflowFlowchart
                                      AddedFlowchart: CJK-aware label width measurementFlowchart
                                      • ·--

                                      v0.2.4

                                      2026-04-251 diagram
                                      Genogram: Smith Family Genogram diagram with 3 individuals across 2 generations Smith Family John (1975) Mary (1977) Alice (2005) John (b. 1975) Mary (b. 1977) Alice (b. 2005) m. 2002 MARKERS Index person (focal subject)
                                      Genogram
                                      FixedGenogram: disconnected sibship bar when a child is also a partner in another unionGenogram
                                      • ·*Fix: the sibship bar now extends to min(leftX, midX) … max(rightX, midX), guaranteeing the parent drop always lands on it regardless of where children are positioned.
                                      • ·--

                                      v0.2.3

                                      2026-04-25 (backfilled)
                                      AddedStructured parse errors (Pass A)
                                      • ·--

                                      v0.2.3

                                      2026-04-25
                                      AddedUnified legend system
                                      • ·bottom-inline (new default): sections flow left-to-right in rows; canvas minimum width 480 px
                                      • ·bottom-right: compact floating legend anchored to the lower-right corner; does not widen the chart canvas
                                      • ·none / legend: none: suppress legend entirely
                                      • ·LegendItem.fill — new field on the LegendItem type; separates shape-fill color from stroke/line color so swatches render WYSIWYG
                                      AddedAI tool layer (schematex/ai, schematex/ai/sdk, @schematex/mcp)
                                      • ·*schematex/ai — five tools with JSON schemas:
                                      • ·*schematex/ai/sdk — drop-in Vercel AI SDK adapter:
                                      • ·*@schematex/mcp — standalone stdio MCP server (separate package, same five tools):
                                      Changed
                                      • ·Genogram legend: auto-derivation excludes Male/Female shapes, Married, and Parent-Child — universal McGoldrick conventions omitted by default
                                      • ·No legend border/box: hairline box dropped; legend is borderless and minimal
                                      • ·Chart centering: when the legend widens the canvas beyond the chart's natural width, chart content is translated to remain horizontally centered
                                      Fixed
                                      • ·Mindmap left-align: node label text is now flush with the left edge of the underline; previously offset ~2 px due to an incorrect anchor calculation
                                      • ·Genogram condition fill: .schematex-genogram-condition-fill:not([fill]) — theme CSS no longer overrides per-individual inline fill attributes
                                      • ·Quad clip-path: switched to clipPathUnits="objectBoundingBox" with 0..1 fractional coordinates; quad-tl / quad-tr now clip to the correct quadrant
                                      • ·--

                                      v0.2.2

                                      2026-04-231 diagram
                                      AddedMindmap rich content (inline markdown)Mindmap
                                      • ·*bold text / *italic* / code
                                      • ·Multi-line text wrapping via %% maxLabelWidth: N directive (default 240 px)
                                      • ·New InlineToken discriminated union in src/core/types.ts: text | code | link | checkbox
                                      • ·New MindmapLabelLine type; MindmapLayoutNode gains fontSize and lines fields
                                      ChangedMindmap visual redesign (markmap-style)Mindmap
                                      • ·All nodes use a single underline-based visual: no root capsule border, no node box at any depth
                                      • ·Bezier edges terminate precisely at the underline stroke (fixed 2 px y-offset bug from previous release)
                                      • ·Same-depth nodes share identical labelWidth (global equalization), so bezier curves at the same depth span identical horizontal distances
                                      • ·Root node gets a 1.5× wrap budget (proportional to its 20 pt font) so short titles stay on one line

                                      v0.2.0

                                      2026-04-201 diagram
                                      Flowchart Flowchart with 14 nodes and 16 edges. commit → build build → unit unit → fail: No No unit → scan: Yes Yes scan → vuln vuln → fail: Yes Yes vuln → stage: No No stage → smoke smoke → fail: No No smoke → approve: Yes Yes approve → wait: No No approve → prod: Yes Yes prod → health health → done: Yes Yes health → rollback: No No rollback → done Push to main Push to main Build artifact Build artifact Unit tests pass? Unit tests pass? Security scan Security scan High-severity CVEs? High-severity CVEs? Deploy to staging Deploy to staging Smoke tests green? Smoke tests green? Fail build Fail build Manual approval? Manual approval? Await approver Await approver Deploy to production Deploy to production Post-deploy health check? Post-deploy health check? Automatic rollback Automatic rollback Release complete Release complete
                                      Flowchart
                                      Added
                                      • ·Timeline diagram type — three visual styles in one DSL:
                                      • ·style: swimlane — proportional/equidistant/log scale axis; auto-track packing via greedy interval scheduling; bidirectional label cascade with leader lines; era bands
                                      • ·style: gantt — milestone pin zone with label cascade; category lane grouping
                                      • ·style: lollipop — event-only axis with lollipop stems and cards
                                      ChangedBreaking
                                      • ·Package renamed from lineage to schematex — update all imports:
                                      • ·License changed to AGPL-3.0
                                      ChangedFlowchart layout (Sugiyama phases 1–3)Flowchart
                                      • ·Phase 1 — crossing minimization: Barth–Junger–Mutzel barycenter with forward/backward sweep and best-of-N selection
                                      • ·Phase 2 — x-coordinate assignment: Brandes–Kopf 4-alignment (new shared module src/core/layered/bk.ts) with type-1 conflict detection, block compaction, and balanced-median merge
                                      • ·Phase 3 — subgraph support: lane-based x-coord assignment so cluster bboxes never overlap foreign-lane nodes; subgraph Title … end / end block syntax; cluster and title labels have correct viewport padding
                                      • ·*8 new M2 node shapes (in addition to the 7 M1 shapes from 0.1.1):
                                      Changed
                                      • ·Unified DiagramPlugin interface: render(text, config?) and parse?(text, config?) are now the canonical entry points per plugin; all renderers migrated
                                      • ·--

                                      v0.1.1

                                      2026-04-18
                                      Added5 new diagram types
                                      • ·Flowchart — initial implementation:
                                      • ·Mermaid-compatible DSL (-->, --label-->, -.->, ==>)
                                      • ·7 M1 node shapes: rectangle […], rounded (…), stadium ([…]), circle ((…)), rhombus {…}, trapezoid [/…/], asymmetric >…]
                                      • ·Layered layout (basic, no crossing minimization — see 0.2.0 for full Sugiyama)
                                      Changed
                                      • ·Per-diagram subpath exports: every diagram type now has its own addressable entry point:
                                      • ·Unified semantic color tokens: all 6 engineering diagrams (circuit, logic, ladder, SLD, block, timing) now respect the shared default / monochrome / dark theme — previously these diagrams used hardcoded colors
                                      • ·Theme token cleanup: removed redundant/dead tokens from src/core/theme.ts; token surface area reduced without breaking existing theme customization
                                      Fixed
                                      • ·Venn label placement: label placement algorithm rewritten — set labels, intersection labels, and count chips no longer overlap on 3-circle and 4-circle diagrams
                                      • ·Fishbone: new DSL layout options — sides: both | left | right, density: compact | normal | wide, cause-side:, rib-slope: <degrees>, per-rib [side: …, order: …] overrides; alternating rib placement; improved spine and header sizing
                                      • ·--

                                      v0.1.0

                                      2026-03-15
                                      Added
                                      • ·Core pipeline: Text DSL → Parser → AST → Layout → SVG
                                      • ·Relationships: Genogram (McGoldrick standard), Ecomap (Hartman categories), Pedigree (genetic status / carrier / presymptomatic)
                                      • ·Biological: Phylogenetic tree (Newick/NHX format; clade coloring)
                                      • ·Social science: Sociogram (Moreno sociometry; force-directed layout; valence edges)