@diagrammo/dgmo 0.69.0 → 0.70.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/advanced.d.ts +8 -0
- package/dist/advanced.js +66 -66
- package/dist/block.js +30 -30
- package/dist/chart-meta.js +26 -26
- package/dist/{charts-d3-C6UIUGNF.js → charts-d3-HWKV46CS.js} +3 -3
- package/dist/{chunk-RXYYJRM5.js → chunk-2QLYLYLN.js} +25 -25
- package/dist/{chunk-XQBZFQE2.js → chunk-4CTCOHDS.js} +2 -2
- package/dist/{chunk-SICO5DVQ.js → chunk-4FEPSBUH.js} +2 -2
- package/dist/{chunk-DBWTM5IJ.js → chunk-56TCBKXP.js} +2 -2
- package/dist/{chunk-7N7QLRR5.js → chunk-5ECGBM5S.js} +5 -5
- package/dist/{chunk-LPMYDZSO.js → chunk-5FBSYKPQ.js} +19 -3
- package/dist/{chunk-QILJY2UY.js → chunk-65KNPZCC.js} +2 -2
- package/dist/{chunk-GK2ZDR6X.js → chunk-6KJMPC6H.js} +4 -4
- package/dist/{chunk-Y65TFTLX.js → chunk-6NEFSIL3.js} +2 -2
- package/dist/{chunk-NPOUCNXP.js → chunk-6WI76LHG.js} +2 -2
- package/dist/{chunk-5B4ZSR6O.js → chunk-7LIDBQDO.js} +4 -4
- package/dist/{chunk-DR43UCVQ.js → chunk-7LMDJ3U7.js} +2 -2
- package/dist/{chunk-ODSGYHFP.js → chunk-AA6LBVBN.js} +2 -2
- package/dist/{chunk-GZY5WEOQ.js → chunk-ASUFSCVV.js} +4 -4
- package/dist/{chunk-D6MVQTMK.js → chunk-B6MHT3A7.js} +2 -2
- package/dist/{chunk-C2YYMYNR.js → chunk-BNJC5KVG.js} +3 -3
- package/dist/{chunk-7LYXDGGT.js → chunk-BQVCENFX.js} +2 -2
- package/dist/{chunk-GB5RPD4S.js → chunk-CE2Z3OXR.js} +2 -2
- package/dist/{chunk-CJGSCQNP.js → chunk-CVMD5UWI.js} +2 -2
- package/dist/{chunk-U2OLG4PB.js → chunk-EC5USK74.js} +2 -2
- package/dist/{chunk-4RYDF2IG.js → chunk-EDFUVEO6.js} +4 -4
- package/dist/{chunk-EAGUQK5P.js → chunk-EHRME74D.js} +3 -3
- package/dist/{chunk-5ZADM7W2.js → chunk-FFI25S5O.js} +3 -3
- package/dist/{chunk-2QCQHMQO.js → chunk-FH3S7FDS.js} +4 -4
- package/dist/{chunk-F7SKUWWS.js → chunk-FQ7OYKOS.js} +5 -5
- package/dist/{chunk-2VMPJRPH.js → chunk-GAK5UOKL.js} +2 -2
- package/dist/{chunk-GJ42T24G.js → chunk-H4VRTBMS.js} +4 -4
- package/dist/{chunk-GOR4VFYB.js → chunk-IOVJT4PE.js} +2 -2
- package/dist/{chunk-WBFRYH52.js → chunk-J3XFVPEU.js} +2 -2
- package/dist/{chunk-XRDRIUUB.js → chunk-JCAINYVG.js} +4 -4
- package/dist/{chunk-LRGSJI5X.js → chunk-K3MUWASA.js} +2 -2
- package/dist/{chunk-TDKWKVN3.js → chunk-KSK6B35D.js} +2 -2
- package/dist/{chunk-V6TRRCXS.js → chunk-KVM4POFR.js} +2 -2
- package/dist/{chunk-J2IMCVKB.js → chunk-LK35AH5V.js} +5 -5
- package/dist/{chunk-YUTT3PV7.js → chunk-LQB3NKEA.js} +2 -2
- package/dist/{chunk-XCWYBBKH.js → chunk-MACY4WJ4.js} +4 -4
- package/dist/{chunk-KZZYRA5T.js → chunk-MMYRNZRQ.js} +2 -2
- package/dist/{chunk-VOYADVBN.js → chunk-MUXI4Y6U.js} +2 -2
- package/dist/{chunk-U4UKJPTE.js → chunk-NTXNVS47.js} +2 -2
- package/dist/{chunk-TXPB6TBM.js → chunk-NZ2Z4ZEN.js} +3 -3
- package/dist/{chunk-WKOQQDQO.js → chunk-PBXMUXBW.js} +12 -1
- package/dist/{chunk-SI766DED.js → chunk-PMDE3I53.js} +2 -2
- package/dist/{chunk-C3OPOLID.js → chunk-PP75ABA4.js} +5 -5
- package/dist/{chunk-RP53JR6M.js → chunk-PYL2K5CE.js} +2 -2
- package/dist/{chunk-ZEHF5OVE.js → chunk-QQFO63AA.js} +3 -3
- package/dist/{chunk-VCNJRCG2.js → chunk-QRLNO6C7.js} +63 -63
- package/dist/{chunk-WVJ2S4LU.js → chunk-R2VVBC52.js} +2 -2
- package/dist/{chunk-F5DNAUXY.js → chunk-SW36YNNE.js} +2 -2
- package/dist/{chunk-HC3I53WV.js → chunk-TJ5PDNGU.js} +2 -2
- package/dist/{chunk-CU56CB3V.js → chunk-TSY25V7W.js} +3 -3
- package/dist/{chunk-YN4VMZCL.js → chunk-UFKFABSP.js} +5 -5
- package/dist/{chunk-IPMHIKVA.js → chunk-UG3MRJL6.js} +2 -2
- package/dist/{chunk-N6P3F3FB.js → chunk-USOLDMYO.js} +4 -4
- package/dist/{chunk-KO6FGEEG.js → chunk-V5VCGTS4.js} +3 -3
- package/dist/{chunk-PUBBTLAA.js → chunk-VALNMR2Y.js} +2 -2
- package/dist/{chunk-QP773H5T.js → chunk-VSZRPDIZ.js} +2 -2
- package/dist/{chunk-BQH75ZPE.js → chunk-WBPWR2CX.js} +2 -2
- package/dist/{chunk-MJDV4DKP.js → chunk-WN6V4ILM.js} +3 -3
- package/dist/{chunk-Z44WBXIC.js → chunk-XAPHRRQ4.js} +3 -3
- package/dist/{chunk-DTC6RVQX.js → chunk-XDEVAAY4.js} +2 -2
- package/dist/{chunk-L44SMVRY.js → chunk-YA464EGR.js} +2 -2
- package/dist/{chunk-JWJEYIQF.js → chunk-YXW2ZYS3.js} +2 -2
- package/dist/{chunk-6766D4YT.js → chunk-Z4KRDDZC.js} +2 -2
- package/dist/{chunk-5TESTTMF.js → chunk-Z6G367CM.js} +2 -2
- package/dist/{chunk-42FSJTZB.js → chunk-ZCWEJ3VB.js} +2 -2
- package/dist/{chunk-5J42K7HM.js → chunk-ZLPNK7U2.js} +2 -2
- package/dist/completion-registry.js +3 -3
- package/dist/{dgmo-router-ND3PUDVF.js → dgmo-router-YFNEFJST.js} +26 -26
- package/dist/{dimensions-NB72XI2A.js → dimensions-RIZPH26J.js} +4 -4
- package/dist/highlight.d.ts +45 -1
- package/dist/highlight.js +24 -0
- package/dist/index.js +30 -30
- package/dist/{layout-OQUUQ7YW.js → layout-2DUQIJOI.js} +3 -3
- package/dist/{layout-A5AYRVOR.js → layout-36Z4NU4W.js} +3 -3
- package/dist/{layout-4ICO4K3X.js → layout-COGPMCW5.js} +3 -3
- package/dist/{layout-RNPKIRS6.js → layout-CYNBG5EP.js} +3 -3
- package/dist/{parser-V7HFGTVF.js → parser-2PN2WRYX.js} +3 -3
- package/dist/{parser-HIHYCA3P.js → parser-2QQJFTMD.js} +3 -3
- package/dist/{parser-VBYTR624.js → parser-4CEHZFZG.js} +3 -3
- package/dist/{parser-H2P45TGS.js → parser-4VIMOING.js} +3 -3
- package/dist/{parser-GGZTPX6F.js → parser-52SRJNP4.js} +3 -3
- package/dist/{parser-WGCE3G7P.js → parser-53ALMRAE.js} +3 -3
- package/dist/{parser-XLPLW3PI.js → parser-5ETIIQIM.js} +3 -3
- package/dist/{parser-43YM7XW3.js → parser-6OWUGHKY.js} +3 -3
- package/dist/{parser-LYCYRROE.js → parser-A3B5KVPK.js} +3 -3
- package/dist/{parser-XMWFEFEH.js → parser-CDA5DGXA.js} +3 -3
- package/dist/{parser-TPQUTZPP.js → parser-CLDLYMDI.js} +3 -3
- package/dist/{parser-FUBDH74F.js → parser-D5EZ6Y5I.js} +3 -3
- package/dist/{parser-DRZMT3IZ.js → parser-E33LTBYE.js} +3 -3
- package/dist/{parser-BL3KLB75.js → parser-FNOWLKC4.js} +3 -3
- package/dist/{parser-FYBJYHSN.js → parser-IL4T3HCM.js} +3 -3
- package/dist/{parser-NIDJMNWX.js → parser-LGDW543A.js} +3 -3
- package/dist/{parser-RTT3NOQC.js → parser-M7HBD7V2.js} +3 -3
- package/dist/{parser-QZJIGMZR.js → parser-SOOR27MC.js} +3 -3
- package/dist/{parser-GLFHIKQC.js → parser-SZXKUTVE.js} +3 -3
- package/dist/{parser-S7IV6DOA.js → parser-U3T76HY2.js} +3 -3
- package/dist/{parser-H2CUQVPH.js → parser-VDD3N5SC.js} +3 -3
- package/dist/{parser-ZNGAQ6NR.js → parser-VQKLDBS7.js} +3 -3
- package/dist/{renderer-5L6INN2B.js → renderer-3EN7ZSXI.js} +5 -5
- package/dist/{renderer-GN3HCUY6.js → renderer-3VPTEQBU.js} +4 -4
- package/dist/{renderer-TQJWTC62.js → renderer-4LLJHGIQ.js} +5 -5
- package/dist/{renderer-PD3Q7VKJ.js → renderer-52YQ3EYR.js} +4 -4
- package/dist/{renderer-TQCVWCW4.js → renderer-AF6DVUZH.js} +5 -5
- package/dist/{renderer-6YEVDIZJ.js → renderer-BQORZPWF.js} +28 -28
- package/dist/{renderer-2F3JUDTX.js → renderer-EVHFS3PP.js} +4 -4
- package/dist/{renderer-FJ6VAUNW.js → renderer-F75AZ6HF.js} +4 -4
- package/dist/{renderer-4LUPOZH2.js → renderer-KLRBL45Z.js} +4 -4
- package/dist/{renderer-KBZ223H6.js → renderer-MGYWZFFR.js} +4 -4
- package/dist/{renderer-72UWS5MQ.js → renderer-P2MICJH5.js} +5 -5
- package/dist/{renderer-JP6BTAST.js → renderer-PR3AGJ37.js} +6 -6
- package/dist/{renderer-7AG5MS32.js → renderer-PUYQ5CDE.js} +4 -4
- package/dist/{renderer-CEFMVEWU.js → renderer-Q24E7LBF.js} +4 -4
- package/dist/{renderer-33U3KRCL.js → renderer-QOI2SEEA.js} +5 -5
- package/dist/{renderer-NRHU4AZ6.js → renderer-REULT7UI.js} +5 -5
- package/dist/{renderer-ZOP3SXFR.js → renderer-RJLAM6G5.js} +5 -5
- package/dist/{renderer-UNHVCJ5Z.js → renderer-SDCMF5AF.js} +4 -4
- package/dist/{renderer-OXOAUAVI.js → renderer-SFYFVKVN.js} +5 -5
- package/dist/{renderer-HVEITTJC.js → renderer-UC2ZZISO.js} +4 -4
- package/dist/{renderer-MFZE5HBB.js → renderer-VK6KVXFB.js} +3 -3
- package/dist/{renderer-SZTUE5TE.js → renderer-VTP3QCCP.js} +5 -5
- package/dist/{renderer-FTGHCZOE.js → renderer-WA5K5VWA.js} +6 -6
- package/dist/{renderer-CH5U3R2K.js → renderer-WPGW6FTW.js} +4 -4
- package/dist/{renderer-LPA6UC62.js → renderer-XOPHJWNZ.js} +4 -4
- package/dist/{renderer-CP56XH3X.js → renderer-YZMFPZGC.js} +6 -6
- package/dist/{renderer-radial-AZLCCE4C.js → renderer-radial-AVHNPO2N.js} +5 -5
- package/dist/{state-parser-W6OCOJ2S.js → state-parser-GSU2ZDVR.js} +3 -3
- package/dist/{state-renderer-26JXGKT6.js → state-renderer-Q6XQDK3W.js} +5 -5
- package/docs/ai-integration.md +1 -1
- package/docs/language-reference.md +27 -30
- package/gallery/fixtures/event-line-now-color.dgmo +23 -0
- package/package.json +1 -1
package/docs/ai-integration.md
CHANGED
|
@@ -70,7 +70,7 @@ LLMs default to Mermaid / PlantUML habits; DGMO differs. These rules prevent the
|
|
|
70
70
|
- **No colons in declarations, directives, tags, or data rows.** `bar Revenue` (not `bar: Revenue`); `series Cloud blue, Legacy red` (not `series: ...`); `North 850` (not `North: 850`); `tag Team as t` (not `tag: Team`). A colon binds a value only in metadata (`key: value`), class/function type separators, and a few scoped spots — see §26.
|
|
71
71
|
- **No Mermaid arrow-labels.** Put the label _between_ the dashes: `A -Login-> B`, never `A -> B: Login`. Sequence: `->` sync, `~>` async; left-to-right only — no `<-` / `<~`.
|
|
72
72
|
- **No indented edges on a map.** Every map connection is ONE full line — `JFK ~daily~> LAX`; for a hub repeat the origin per spoke (`JFK ~daily~> LHR`, …). A bare source with indented `-> dest` legs errors as `Malformed edge`; indented legs are valid ONLY inside a `route` block (an ordered stop→stop voyage). Edge endpoints auto-create their POIs — don't add separate `poi` lines for places already in an edge.
|
|
73
|
-
- **No `|` metadata delimiter** (removed 0.18.0
|
|
73
|
+
- **No `|` metadata delimiter** (removed 0.18.0; since 0.43.0 a stray `|` raises no dedicated error — it falls through as a literal). Use same-line `Name key: value, k2: v2` or indented `key: value`. (`|` survives only in wireframe `{A | B}` dropdowns, in-arrow label text, and quoted names.)
|
|
74
74
|
- **No removed participant keywords.** Do not write `X is a service` / `external` / `frontend` / `networking` / `gateway` — these were removed and error. A bare name renders the default shape; for a typed glyph use `is a person` / `is a database` / `is a queue`.
|
|
75
75
|
<!-- COLORS start -->
|
|
76
76
|
- **Colors are a closed set of EXACTLY these 11 — nothing else is a color.** Valid colors, the complete list: `red`, `orange`, `yellow`, `green`, `blue`, `purple`, `teal`, `cyan`, `gray`, `black`, `white`. That is the entire universe of DGMO colors — there are no others. Do NOT use hex (`#1f77b4`), `rgb(...)`, `hsl(...)`, or ANY CSS color name: `crimson`, `royalblue`, `navy`, `pink`, `lime`, `magenta`, `indigo`, `gold`, `salmon`, `turquoise`, `violet`, etc. are ALL invalid — they are rejected and the element falls back to an auto-assigned color. When you want a color outside the 11, map it to the nearest one: crimson/scarlet→`red`, royalblue/navy/cobalt→`blue`, pink/magenta/violet/indigo→`purple`, lime/olive→`green`, gold/amber→`yellow`, turquoise→`teal`. Apply a color as a trailing token (`Done green`) or after a category/group bracket (`[North America] red`). Named colors are mandatory because they re-resolve per active palette + light/dark theme; a hardcoded value never would.
|
|
@@ -54,7 +54,7 @@ LLMs default to Mermaid / PlantUML habits; DGMO differs. These rules prevent the
|
|
|
54
54
|
- **No colons in declarations, directives, tags, or data rows.** `bar Revenue` (not `bar: Revenue`); `series Cloud blue, Legacy red` (not `series: ...`); `North 850` (not `North: 850`); `tag Team as t` (not `tag: Team`). A colon binds a value only in metadata (`key: value`), class/function type separators, and a few scoped spots — see §26.
|
|
55
55
|
- **No Mermaid arrow-labels.** Put the label _between_ the dashes: `A -Login-> B`, never `A -> B: Login`. Sequence: `->` sync, `~>` async; left-to-right only — no `<-` / `<~`.
|
|
56
56
|
- **No indented edges on a map.** Every map connection is ONE full line — `JFK ~daily~> LAX`; for a hub repeat the origin per spoke (`JFK ~daily~> LHR`, …). A bare source with indented `-> dest` legs errors as `Malformed edge`; indented legs are valid ONLY inside a `route` block (an ordered stop→stop voyage). Edge endpoints auto-create their POIs — don't add separate `poi` lines for places already in an edge.
|
|
57
|
-
- **No `|` metadata delimiter** (removed 0.18.0
|
|
57
|
+
- **No `|` metadata delimiter** (removed 0.18.0; since 0.43.0 a stray `|` raises no dedicated error — it falls through as a literal). Use same-line `Name key: value, k2: v2` or indented `key: value`. (`|` survives only in wireframe `{A | B}` dropdowns, in-arrow label text, and quoted names.)
|
|
58
58
|
- **No removed participant keywords.** Do not write `X is a service` / `external` / `frontend` / `networking` / `gateway` — these were removed and error. A bare name renders the default shape; for a typed glyph use `is a person` / `is a database` / `is a queue`.
|
|
59
59
|
<!-- COLORS start -->
|
|
60
60
|
- **Colors are a closed set of EXACTLY these 11 — nothing else is a color.** Valid colors, the complete list: `red`, `orange`, `yellow`, `green`, `blue`, `purple`, `teal`, `cyan`, `gray`, `black`, `white`. That is the entire universe of DGMO colors — there are no others. Do NOT use hex (`#1f77b4`), `rgb(...)`, `hsl(...)`, or ANY CSS color name: `crimson`, `royalblue`, `navy`, `pink`, `lime`, `magenta`, `indigo`, `gold`, `salmon`, `turquoise`, `violet`, etc. are ALL invalid — they are rejected and the element falls back to an auto-assigned color. When you want a color outside the 11, map it to the nearest one: crimson/scarlet→`red`, royalblue/navy/cobalt→`blue`, pink/magenta/violet/indigo→`purple`, lime/olive→`green`, gold/amber→`yellow`, turquoise→`teal`. Apply a color as a trailing token (`Done green`) or after a category/group bracket (`[North America] red`). Named colors are mandatory because they re-resolve per active palette + light/dark theme; a hardcoded value never would.
|
|
@@ -212,7 +212,7 @@ tag GroupName as <alias>
|
|
|
212
212
|
- First entry is the default value — reorder to change
|
|
213
213
|
- The first declared group is active by default (colors nodes immediately); `active-tag <GroupName>` only matters with ≥2 groups to pick a non-first group, and `active-tag none` suppresses all coloring
|
|
214
214
|
- Must appear before diagram content
|
|
215
|
-
-
|
|
215
|
+
- Bare shorthand is not an alias (TD-18): `tag Priority p` declares a group *named* "Priority p" — no alias registers, so `p:` assignments silently miss. The parser warns on this shape (spaced name, no alias, alias-shaped trailing word), suggesting `tag Priority as p` or a quoted name
|
|
216
216
|
|
|
217
217
|
**Diagram types that support tags**: the tag model is near-universal across the structural types — sequence, infra, org, c4, er, kanban, gantt, sitemap, timeline, boxes-and-lines, state (§5.7), pert, swimlane, mindmap, journey-map, event-line, treemap, map, block, sketch, bracket, family, and wireframe all accept `tag <Group> as <alias>` blocks. Check the per-type Options section for the exact directive set; if a type draws a tag legend, it takes tags.
|
|
218
218
|
|
|
@@ -427,7 +427,8 @@ quote.
|
|
|
427
427
|
Sequence's `Name is a type aka Alias` modifier is removed. Use the
|
|
428
428
|
universal `as` postfix (§2A) for short-codes; UNH normalization
|
|
429
429
|
handles casing/spacing variants automatically. Encountering `aka`
|
|
430
|
-
in a participant declaration
|
|
430
|
+
in a participant declaration falls to the generic unexpected-line
|
|
431
|
+
warning (no dedicated code since 0.43.0).
|
|
431
432
|
|
|
432
433
|
### 2.5 Carve-Outs
|
|
433
434
|
|
|
@@ -440,9 +441,7 @@ These are intentionally outside the universal rule:
|
|
|
440
441
|
### 2.6 Error Codes
|
|
441
442
|
|
|
442
443
|
- `I_NAME_MERGED` (warning) — two source-distinct names normalize to the same key with different displayed forms
|
|
443
|
-
- `
|
|
444
|
-
- `E_AKA_REMOVED` (error) — removed `aka` keyword used in sequence participant declaration
|
|
445
|
-
- `E_PARTICIPANT_TYPE_REMOVED` (error) — sequence `is a X` declaration used a removed type keyword (`service`, `frontend`, `networking`, `gateway`, `external`)
|
|
444
|
+
- A bare name with a reserved char, a sequence `aka`, and a removed sequence type keyword (`service`, `frontend`, `networking`, `gateway`, `external`) no longer carry dedicated codes (deleted 0.43.0): the reserved char and removed type keyword parse **silently**, `aka` falls to the generic unexpected-line warning
|
|
446
445
|
|
|
447
446
|
---
|
|
448
447
|
|
|
@@ -506,18 +505,16 @@ rarely benefit. Aliases should aid comprehension, not obscure it.
|
|
|
506
505
|
|
|
507
506
|
### 2A.6 Error Codes
|
|
508
507
|
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
-
|
|
518
|
-
|
|
519
|
-
- `W_ALIAS_CASE_NEAR_MATCH` — case-near-match suggestion
|
|
520
|
-
- `W_ALIAS_UNDERUSED` — alias declared but referenced ≤1 time
|
|
508
|
+
The coded alias diagnostics (`E_ALIAS_*`, `W_ALIAS_*`, the tag/venn
|
|
509
|
+
shorthand errors) were deleted in 0.43.0 and the TD-18 alias integrity
|
|
510
|
+
rules are currently **unenforced** — a collision, an out-of-order
|
|
511
|
+
reference, an alias-of-alias, and an over-length alias all parse without
|
|
512
|
+
complaint, and a malformed alias silently fails the `as` peel (the whole
|
|
513
|
+
`Name as xyz…` string becomes the entity name). The §2A.2–2A.4 rules
|
|
514
|
+
remain the language definition: don't emit source that violates them.
|
|
515
|
+
One related warning DOES fire: a `tag` line with a spaced name, no
|
|
516
|
+
alias, and an alias-shaped trailing word (`tag Status s`) warns and
|
|
517
|
+
suggests `tag Status as s`.
|
|
521
518
|
|
|
522
519
|
---
|
|
523
520
|
|
|
@@ -583,7 +580,7 @@ Name key: value
|
|
|
583
580
|
|
|
584
581
|
Types: `actor`, `database`, `cache`, `queue` (plus default — the plain rectangle, used when `is a` is omitted).
|
|
585
582
|
|
|
586
|
-
Type names in `is a X` are **case-insensitive** (`is a Actor`, `is an ACTOR`, `is an actor` all parse the same). The keywords `service`, `frontend`, `networking`, `gateway`, and `external` were removed in 0.16.0
|
|
583
|
+
Type names in `is a X` are **case-insensitive** (`is a Actor`, `is an ACTOR`, `is an actor` all parse the same). The keywords `service`, `frontend`, `networking`, `gateway`, and `external` were removed in 0.16.0; using one now parses **silently** and the participant renders as the default rectangle — drop the override.
|
|
587
584
|
|
|
588
585
|
A participant _named_ with a removed-type keyword (e.g. `service -hi-> User` declares a participant named "service") remains valid. The trim affects only the `is a X` declaration syntax, not name resolution.
|
|
589
586
|
|
|
@@ -1633,7 +1630,7 @@ want; anything left un-chained starts together at the parent's start.
|
|
|
1633
1630
|
Wireframes duration: 10bd
|
|
1634
1631
|
```
|
|
1635
1632
|
|
|
1636
|
-
> The `parallel` keyword was removed at 1.0 (error
|
|
1633
|
+
> The `parallel` keyword was removed at 1.0 (now silently ignored — no dedicated error since 0.43.0).
|
|
1637
1634
|
|
|
1638
1635
|
---
|
|
1639
1636
|
|
|
@@ -2210,13 +2207,13 @@ swimlanes # back-compat spelling of lane-by
|
|
|
2210
2207
|
|
|
2211
2208
|
Every section under §15 follows the same two rules.
|
|
2212
2209
|
|
|
2213
|
-
**Rule A — data rows are space-separated; commas are
|
|
2210
|
+
**Rule A — data rows are space-separated; commas are tolerated.** Spaces are the canonical separator. A comma in a value position is **accepted** since 0.43.0 (#28 reversed the short-lived hard error): a separator comma (`Q1 400, 700`) and a thousands grouping (`Revenue 1,000` → 1000) both parse. Still, write the canonical form — whole numbers without thousands commas (`1000`, or `1_000` if you want digit grouping), values separated by spaces.
|
|
2214
2211
|
|
|
2215
2212
|
```
|
|
2216
2213
|
Q1 400 700 300 500 ✅ canonical
|
|
2217
|
-
Q1 400, 700, 300, 500
|
|
2214
|
+
Q1 400, 700, 300, 500 ⚠️ tolerated — spaces are canonical
|
|
2218
2215
|
Revenue 1000 ✅ canonical
|
|
2219
|
-
Revenue 1,000
|
|
2216
|
+
Revenue 1,000 ⚠️ tolerated — parses as 1000; prefer 1000 or 1_000
|
|
2220
2217
|
```
|
|
2221
2218
|
|
|
2222
2219
|
**Rule B — list-of-labelled-items directives (e.g. `series`, `columns`) prefer the indented one-per-line form.** Short one-line forms are tolerated for ≤3 items with no colour annotations or spaces.
|
|
@@ -2506,7 +2503,7 @@ Roberts 12 52
|
|
|
2506
2503
|
Before COVID
|
|
2507
2504
|
After COVID
|
|
2508
2505
|
```
|
|
2509
|
-
- Data rows: `Label value1 value2` — follows §15 Rule A (space-separated;
|
|
2506
|
+
- Data rows: `Label value1 value2` — follows §15 Rule A (space-separated canonical; commas tolerated)
|
|
2510
2507
|
- Thousands commas are removed — write `1000`, not `1,000` (underscore grouping `1_000` is accepted)
|
|
2511
2508
|
- Color annotations: `Label color value1 value2` (trailing color word before numeric values)
|
|
2512
2509
|
- Minimum 2 periods required
|
|
@@ -2618,7 +2615,7 @@ Group a run of events into a labeled section with a `[Name]` bracket, then **ind
|
|
|
2618
2615
|
- `side above` / `side below` — place all cards on one side instead of alternating (`side alternate` is the default).
|
|
2619
2616
|
- `no-box` — card-less style for slides: a tag-colored label, a rule, and the description below (no box / fill / border).
|
|
2620
2617
|
- `no-legend` — hide the tag legend.
|
|
2621
|
-
- `now` / `now <date>` — plant a **"now" pin** on the spine: a red diamond at today with a short stem to a labeled tab that auto-slots into a card-free lane. Bare `now` is **computed** (resolved to today each render); `now <date>` **pins** it to an explicit ISO date. **The tab is captioned with that date** — `Aug 11, 2026`, formatted exactly as the event cards format theirs — so a reader can tell a diagram that redraws from a picture of one that stopped; a trailing token replaces the caption (`now 2026-01-01 Launch`). The tab honors the fill family (`fill-solid`/`fill-outline`/tint). To-scale only — ignored under `no-scale`. Positioned over real dated events (`TBD` positions never anchor it); a `now` past the last date rides onto the open horizon when a trailing `TBD` is present, else clamps to the last dot.
|
|
2618
|
+
- `now` / `now <date>` — plant a **"now" pin** on the spine: a red diamond at today with a short stem to a labeled tab that auto-slots into a card-free lane. Bare `now` is **computed** (resolved to today each render); `now <date>` **pins** it to an explicit ISO date. **The tab is captioned with that date** — `Aug 11, 2026`, formatted exactly as the event cards format theirs — so a reader can tell a diagram that redraws from a picture of one that stopped; a trailing token replaces the caption (`now 2026-01-01 Launch`). A trailing **named color** recolors the pin off its default red (`now blue`, `now 2026-01-01 Launch purple`) — reach for it when the timeline's own tags already use red, so the pin stops standing apart from them. The tab honors the fill family (`fill-solid`/`fill-outline`/tint). To-scale only — ignored under `no-scale`. Positioned over real dated events (`TBD` positions never anchor it); a `now` past the last date rides onto the open horizon when a trailing `TBD` is present, else clamps to the last dot.
|
|
2622
2619
|
|
|
2623
2620
|
### 16.4C Body Diagrams
|
|
2624
2621
|
|
|
@@ -2745,7 +2742,7 @@ sw + nav + lead Legendary Pirates
|
|
|
2745
2742
|
|
|
2746
2743
|
- Set declaration: `Name [color] as <alias>` — color is an optional trailing token BEFORE `as` (universal alias syntax, §2A)
|
|
2747
2744
|
- Intersections: `Set1 + Set2 Label` — label follows the last set reference (no colon)
|
|
2748
|
-
- Legacy `Name(color) alias X`
|
|
2745
|
+
- Legacy `Name(color) alias X` is silently absorbed into the set name (no dedicated error since 0.43.0) — use `as X`
|
|
2749
2746
|
|
|
2750
2747
|
### 16.5 Quadrant Diagrams
|
|
2751
2748
|
|
|
@@ -2771,7 +2768,7 @@ Navigator 0.85 0.8
|
|
|
2771
2768
|
|
|
2772
2769
|
- Axis labels: `x-label Low, High` — comma-separated (low/high pair, not a data row; comma is the delimiter here by design)
|
|
2773
2770
|
- Position labels: `top-right Label` — space-separated
|
|
2774
|
-
- Data points: `Label x y` — follows §15 Rule A (space-separated;
|
|
2771
|
+
- Data points: `Label x y` — follows §15 Rule A (space-separated canonical; a comma between x and y is tolerated, and axis labels above keep their comma)
|
|
2775
2772
|
|
|
2776
2773
|
---
|
|
2777
2774
|
|
|
@@ -3315,7 +3312,7 @@ Browsed casually // no score = no curve poi
|
|
|
3315
3312
|
|
|
3316
3313
|
- `score` outside 1–5, floats, or negatives → parse error.
|
|
3317
3314
|
- Multi-word emotion labels (e.g. `emotion: Very Happy`) → parse error.
|
|
3318
|
-
- The legacy bare-score form (`Step | 4 Delighted`) is removed and
|
|
3315
|
+
- The legacy bare-score form (`Step | 4 Delighted`) is removed — the pipe tail is absorbed into the step name and only the "has no score" warning surfaces. Use `score: <N>, emotion: <Word>`.
|
|
3319
3316
|
|
|
3320
3317
|
### Reserved Metadata Keys
|
|
3321
3318
|
|
|
@@ -4416,7 +4413,7 @@ A colon binds a value, and it appears in exactly **four syntactic positions**
|
|
|
4416
4413
|
|
|
4417
4414
|
- Directives and options — space-separated (`start-date 2026-03-15`, `x-label Low, High`, `region`)
|
|
4418
4415
|
- Tag declarations and chart type declarations
|
|
4419
|
-
- Series declarations and data rows for simple/data charts (incl. sankey/arc links `Source -> Target value` and quadrant data; space-delimited
|
|
4416
|
+
- Series declarations and data rows for simple/data charts (incl. sankey/arc links `Source -> Target value` and quadrant data; space-delimited canonical, commas tolerated)
|
|
4420
4417
|
- Structural syntax (groups, sections, arrows, comments)
|
|
4421
4418
|
- Wireframe flag lists; flowchart/state node labels (colons are literal label text — these charts have no metadata)
|
|
4422
4419
|
|
|
@@ -4488,7 +4485,7 @@ Do NOT emit these — they're documented historically but no parser supports the
|
|
|
4488
4485
|
- Inline forward-declaration of PERT edge targets (`-> name 1 2 4`) — declare first, reference second
|
|
4489
4486
|
- `"Quoted Name" as alias` (any chart type) — drop quotes or drop alias
|
|
4490
4487
|
- Standalone sequence participant `Name as a` (with metadata) without `is a TYPE` — use the typed form
|
|
4491
|
-
- The `|` operator as metadata delimiter —
|
|
4488
|
+
- The `|` operator as metadata delimiter — removed 0.18.0; a stray `|` now falls through as a literal (no dedicated error since 0.43.0). Use same-line or indented metadata per §1.4.
|
|
4492
4489
|
|
|
4493
4490
|
### 26.7 Diagnostic-Free Checklist
|
|
4494
4491
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
event-line Service Reliability, 2024
|
|
2
|
+
now 2024-09-15 Today teal
|
|
3
|
+
|
|
4
|
+
tag Event as e
|
|
5
|
+
Outage red
|
|
6
|
+
Recovery green
|
|
7
|
+
Change blue
|
|
8
|
+
|
|
9
|
+
2024-01-18 Database failover e: Outage
|
|
10
|
+
A primary node lost its lease during a routine patch. **41 minutes** of
|
|
11
|
+
write errors before the standby took over.
|
|
12
|
+
|
|
13
|
+
2024-02-02 Automatic failover shipped e: Change
|
|
14
|
+
The standby now promotes itself; no human in the path.
|
|
15
|
+
|
|
16
|
+
2024-04-11 Cache stampede e: Outage
|
|
17
|
+
An expired key let every request through to the database at once.
|
|
18
|
+
|
|
19
|
+
2024-05-30 Request coalescing e: Change
|
|
20
|
+
One fetch per key, the rest wait on it.
|
|
21
|
+
|
|
22
|
+
2024-08-22 Four months clean e: Recovery
|
|
23
|
+
The longest run without a customer-visible incident.
|