@diagrammo/dgmo 0.77.0 → 0.79.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/README.md +17 -13
- package/dist/advanced.d.ts +197 -23
- package/dist/advanced.js +161 -142
- package/dist/block.css +1 -1
- package/dist/block.d.ts +2 -2
- package/dist/block.js +62 -58
- package/dist/{calculator-CVQ54JNE.js → calculator-OHTCZSBW.js} +3 -3
- package/dist/{chart-meta-Cf_jkApJ.d.ts → chart-meta-B7lSmrzg.d.ts} +2 -2
- package/dist/chart-meta.d.ts +3 -3
- package/dist/chart-meta.js +45 -44
- package/dist/charts-d3-EST3Z5VG.js +31 -0
- package/dist/{chunk-U4DS2ODO.js → chunk-253E5ISJ.js} +9 -9
- package/dist/{chunk-7IATMZSA.js → chunk-26EVL454.js} +1 -25
- package/dist/{chunk-MG3DE3VO.js → chunk-2F7AG7LA.js} +4 -4
- package/dist/{chunk-OWVDD5EC.js → chunk-2R2M2C6V.js} +2 -2
- package/dist/{chunk-LYJ53DBK.js → chunk-2RAH6GVR.js} +56 -41
- package/dist/{chunk-Q74GP3GK.js → chunk-37NDM5NW.js} +3 -3
- package/dist/{chunk-N6MZSBOL.js → chunk-3BN3WCUD.js} +5 -2
- package/dist/chunk-3DPOIW3W.js +10 -0
- package/dist/{chunk-HDLRRY3N.js → chunk-3KFGPXHD.js} +195 -135
- package/dist/{chunk-NWNSXHA5.js → chunk-3KNA7OIO.js} +3 -3
- package/dist/{chunk-M5OOAP65.js → chunk-4CA7TJ44.js} +2 -1
- package/dist/{chunk-M5JT2AU7.js → chunk-4L43NPSQ.js} +10 -6
- package/dist/{chunk-4YER7UCV.js → chunk-4T6V7JJA.js} +3 -3
- package/dist/{chunk-3E4YB6TY.js → chunk-4YSWUQKZ.js} +12 -7
- package/dist/{chunk-6BVAW7KI.js → chunk-54JYWS7D.js} +50 -43
- package/dist/{chunk-7NSNE52V.js → chunk-55DMCFGM.js} +3 -3
- package/dist/{chunk-XPBJVSRY.js → chunk-5BV5MXLY.js} +38 -32
- package/dist/{chunk-5VMUVJO4.js → chunk-5DWF3N3V.js} +3 -3
- package/dist/{chunk-SSEAULA5.js → chunk-6775W3UW.js} +19 -15
- package/dist/{chunk-2QRIMMIH.js → chunk-6EMJRAEY.js} +3 -3
- package/dist/{chunk-OZOHREFQ.js → chunk-6FUIPWTS.js} +14 -15
- package/dist/{chunk-F4V67JXG.js → chunk-6JIMYPXR.js} +4 -4
- package/dist/{chunk-CHOK7NCJ.js → chunk-7AEMAUDF.js} +29 -25
- package/dist/{chunk-NVOU7N6C.js → chunk-7DCM3CB5.js} +2 -2
- package/dist/{chunk-UBDVAHGK.js → chunk-7EUTTKNU.js} +36 -31
- package/dist/{chunk-76NHL5UG.js → chunk-7I6NWTPE.js} +2 -2
- package/dist/{chunk-OKXWPKUC.js → chunk-7SHL2WME.js} +2 -2
- package/dist/{chunk-SWEKCK34.js → chunk-AFOHIR2O.js} +3 -3
- package/dist/{chunk-RWFMOVHG.js → chunk-AI7TZQ2R.js} +3 -3
- package/dist/{chunk-BWJLLNUX.js → chunk-ALVK3TBO.js} +3 -3
- package/dist/{chunk-GLREDNBA.js → chunk-AMQFJ7P7.js} +21 -2
- package/dist/{chunk-RGW26UAR.js → chunk-CCETDPLV.js} +11 -11
- package/dist/{chunk-5ZD4DDG7.js → chunk-CE654SL2.js} +17 -14
- package/dist/{chunk-TPN7RJOM.js → chunk-CFYTCBRH.js} +4 -4
- package/dist/{chunk-YT5ICQ4R.js → chunk-CKDYRVOC.js} +3 -3
- package/dist/{chunk-WQXD3IIN.js → chunk-CRBW2WS7.js} +11 -9
- package/dist/{chunk-J76YDS4V.js → chunk-CREALBZL.js} +3 -3
- package/dist/{chunk-MZEGUDTA.js → chunk-CSTYDCKB.js} +16 -16
- package/dist/{chunk-QBM5BURJ.js → chunk-DG5IQW74.js} +10 -10
- package/dist/{chunk-Y2CYNRL7.js → chunk-DN6K6QCF.js} +2 -2
- package/dist/{chunk-43AJKH2U.js → chunk-DQOCYWB6.js} +12 -10
- package/dist/{chunk-FTTB64OJ.js → chunk-EBEFYSVZ.js} +40 -40
- package/dist/{chunk-L65WI4HO.js → chunk-EDU2OCIQ.js} +2 -2
- package/dist/{chunk-SWUQJ5VR.js → chunk-EOG4QKKV.js} +108 -65
- package/dist/chunk-EPDBWATV.js +38 -0
- package/dist/{chunk-5GM6BZO7.js → chunk-F66R7CPY.js} +6 -3
- package/dist/{chunk-7BMX2M3F.js → chunk-FFDHZVEL.js} +2 -2
- package/dist/{chunk-WGC42WJU.js → chunk-FWNJDD4U.js} +6 -2
- package/dist/{chunk-SI3PYDL4.js → chunk-GWA6UGNX.js} +22 -22
- package/dist/{chunk-QMFIZQTB.js → chunk-HIOJSYDA.js} +7 -5
- package/dist/{chunk-NHQ7HUAS.js → chunk-HJ5DKZPO.js} +12 -10
- package/dist/{chunk-FPRMP6YA.js → chunk-HJZ4OET2.js} +32 -17
- package/dist/{chunk-N5NQIZ56.js → chunk-HLTVEXML.js} +25 -25
- package/dist/{chunk-6IN4F4RH.js → chunk-I6DFQQER.js} +42 -44
- package/dist/chunk-ICLB27PZ.js +11 -0
- package/dist/{chunk-R3XI2VC7.js → chunk-IDJGV6VM.js} +2 -1
- package/dist/{chunk-ZM27UI5O.js → chunk-IEK2FUWO.js} +19 -6
- package/dist/{chunk-FJ57274M.js → chunk-IIEI7VK5.js} +15 -1
- package/dist/{chunk-DY7KDZUF.js → chunk-IZK2H4KU.js} +3 -3
- package/dist/{chunk-CRLVJZWX.js → chunk-JOG6W3VS.js} +2 -2
- package/dist/{chunk-XFXJXLK7.js → chunk-JTLLQT34.js} +19 -19
- package/dist/{chunk-MS5574I7.js → chunk-K3K7JHZI.js} +2 -2
- package/dist/{chunk-GOW5VO6M.js → chunk-KHRZCKKG.js} +2 -2
- package/dist/{chunk-D3B6YEZK.js → chunk-KIF4UFD2.js} +20 -16
- package/dist/{chunk-EUVUOPRC.js → chunk-KYK6PMB5.js} +55 -34
- package/dist/{chunk-RU2HHHYA.js → chunk-LD2JSKU3.js} +12 -2
- package/dist/{chunk-CYMYZYLI.js → chunk-LJ7X6ZNV.js} +25 -28
- package/dist/{chunk-ICVIJLBA.js → chunk-LLYHYPYG.js} +4 -4
- package/dist/{chunk-VRPV6QXR.js → chunk-LLZVRWVS.js} +2 -2
- package/dist/{chunk-Z7KVOVE4.js → chunk-LXTMP3VT.js} +7 -4
- package/dist/{chunk-7CXW6EGX.js → chunk-MDUCF376.js} +28 -26
- package/dist/{chunk-KWSBNLSC.js → chunk-MQAD75AY.js} +2 -2
- package/dist/{chunk-XCFIAGT7.js → chunk-MUTZSF2A.js} +17 -16
- package/dist/{chunk-CF3I5SOG.js → chunk-NVI5G57O.js} +29 -27
- package/dist/{chunk-76LHNLGX.js → chunk-O2HU4AQN.js} +34 -5
- package/dist/{chunk-46KVXDUJ.js → chunk-O5QG5IFV.js} +12 -3
- package/dist/{chunk-V4NHFY22.js → chunk-OLRVGPJ3.js} +33 -20
- package/dist/{chunk-WHWUVDYK.js → chunk-OM6XZAKM.js} +7 -7
- package/dist/{chunk-DSXWJAOA.js → chunk-OMN4F42L.js} +17 -15
- package/dist/{chunk-LM3HY3VG.js → chunk-P4U5GST7.js} +3 -3
- package/dist/{chunk-BH3BQICT.js → chunk-PKW4TLJC.js} +88 -44
- package/dist/{chunk-GRN44Z6A.js → chunk-PQR7E3LY.js} +2 -2
- package/dist/{chunk-SH4PPRU7.js → chunk-Q5KGGW7Z.js} +2 -2
- package/dist/{chunk-RV5A3EGI.js → chunk-QDHOIBHZ.js} +21 -20
- package/dist/{chunk-UH5YTZN7.js → chunk-QDTFFVLT.js} +113 -23
- package/dist/chunk-QFIXL3OK.js +68 -0
- package/dist/{chunk-QXMHBIQG.js → chunk-QGXH64FT.js} +52 -49
- package/dist/{chunk-VS2M72PF.js → chunk-RLJKH4ZO.js} +4 -2
- package/dist/{chunk-6ZZKEYBS.js → chunk-RN3DOUOU.js} +17 -15
- package/dist/{chunk-VBJCGGNF.js → chunk-RPP3NHKV.js} +2 -2
- package/dist/{chunk-RTTZIX34.js → chunk-RVWWCQAB.js} +3 -3
- package/dist/{chunk-FR5EVD2X.js → chunk-RWF7TCGT.js} +68 -38
- package/dist/{chunk-LKS56RDT.js → chunk-S6GPBJWG.js} +2 -2
- package/dist/{chunk-UJBP57UJ.js → chunk-S7ZJEQPW.js} +4 -4
- package/dist/{chunk-3H4PDNP4.js → chunk-SEOM2BGQ.js} +3 -3
- package/dist/{chunk-5PFNUDXR.js → chunk-T3EW35M2.js} +3 -3
- package/dist/{chunk-3SP6G4LN.js → chunk-TPQ6Q7JP.js} +3 -3
- package/dist/{chunk-B52RL5VV.js → chunk-ULUZBEFO.js} +11 -11
- package/dist/{chunk-F4X5NVKY.js → chunk-UNYOWKEC.js} +13 -4
- package/dist/{chunk-DEW62ON3.js → chunk-VSPNH7LC.js} +2 -2
- package/dist/{chunk-C2WH3BMS.js → chunk-VTWUHX4H.js} +10 -7
- package/dist/{chunk-DJL5PO27.js → chunk-W4MC3KP6.js} +2 -2
- package/dist/{chunk-MU3CJPJF.js → chunk-W6DBWWPC.js} +3 -3
- package/dist/{chunk-JLODGGN2.js → chunk-WC72PTV4.js} +3 -3
- package/dist/{chunk-NCT22MOD.js → chunk-WMIKC5XO.js} +2 -2
- package/dist/{chunk-H7BYMIVK.js → chunk-WY4L675I.js} +70 -44
- package/dist/chunk-XBJJP2HN.js +37 -0
- package/dist/{chunk-KRTLS3G6.js → chunk-XDEEYDPQ.js} +4 -4
- package/dist/{chunk-S5P5Z5Y5.js → chunk-XNAMWOPJ.js} +3 -3
- package/dist/{chunk-2MTM4E6M.js → chunk-XND5JIJA.js} +68 -65
- package/dist/{chunk-S6OXNZBM.js → chunk-XWC4RQ7T.js} +4 -4
- package/dist/{chunk-UCZBRGJN.js → chunk-XXLAZQ5E.js} +2 -2
- package/dist/{chunk-LXXVHLTH.js → chunk-Y22BJKMK.js} +3 -3
- package/dist/{chunk-OO2L2LWV.js → chunk-Y2KFQX5K.js} +89 -66
- package/dist/{chunk-TI4YUUW6.js → chunk-Y3OLUMJH.js} +31 -30
- package/dist/{chunk-CIWFL2LM.js → chunk-Y3RYIGHZ.js} +17 -15
- package/dist/{chunk-MTGGOCND.js → chunk-YC6GVLTI.js} +61 -10
- package/dist/{chunk-TKIPK5P6.js → chunk-YD2HPT7W.js} +5 -7
- package/dist/{chunk-3O7ZYVJV.js → chunk-YPVP6I62.js} +19 -15
- package/dist/{chunk-FF7LRT5L.js → chunk-YQIZIKCK.js} +35 -27
- package/dist/{chunk-M526IKKH.js → chunk-Z4COUG7H.js} +2 -2
- package/dist/{chunk-LTTZX6RD.js → chunk-Z5ZCTCX4.js} +3 -3
- package/dist/{chunk-QOVM5VRC.js → chunk-ZASX45SU.js} +3 -3
- package/dist/{chunk-W7UBPARG.js → chunk-ZH3BWGTE.js} +3 -3
- package/dist/{chunk-TN754B3R.js → chunk-ZZZJVDIL.js} +2 -2
- package/dist/clock.js +11 -5
- package/dist/completion-registry.js +3 -3
- package/dist/countdown.js +26 -20
- package/dist/{d3-BiaJtaSw.d.ts → d3-Bje6Mla1.d.ts} +1 -1
- package/dist/dgmo-router-OXFV43XX.js +90 -0
- package/dist/{dgmo-router-BwXHZ_P3.d.ts → dgmo-router-zWf4Uxxg.d.ts} +1 -1
- package/dist/dimensions-AN34SPVX.js +22 -0
- package/dist/{flowchart-parser-NVBP3C5D.js → flowchart-parser-MRNAVG35.js} +4 -4
- package/dist/flowchart-renderer-IGSKJFMF.js +37 -0
- package/dist/index.d.ts +7 -7
- package/dist/index.js +75 -60
- package/dist/{layout-Y2V3LYV7.js → layout-5AYAYUJH.js} +2 -2
- package/dist/{layout-ZAGUFT2G.js → layout-6APS2RRG.js} +8 -7
- package/dist/{layout-B5GQVXXY.js → layout-6VUNAH6F.js} +8 -7
- package/dist/{layout-RV2T2YTT.js → layout-74HDWQYG.js} +6 -5
- package/dist/{layout-6SKHNQYO.js → layout-FCIYZV63.js} +4 -4
- package/dist/{layout-4LNMXLVK.js → layout-J2Z2SYH5.js} +3 -3
- package/dist/layout-LELNMRM5.js +16 -0
- package/dist/{layout-EM4DLMAX.js → layout-OPF6KTOH.js} +5 -5
- package/dist/layout-SUND6B7D.js +9 -0
- package/dist/layout-WASEHV3S.js +19 -0
- package/dist/{layout-SGYR6HBX.js → layout-XAJLQPI6.js} +3 -3
- package/dist/layout-XY45TFJ4.js +16 -0
- package/dist/layout-YPRXVCW5.js +19 -0
- package/dist/{layout-2OJ25STS.js → layout-ZJOWB27N.js} +9 -8
- package/dist/{layout-search-UOKEMER5.js → layout-search-3JKNSUTJ.js} +8 -7
- package/dist/{legend-constants-PLN2YHGM.js → legend-constants-RSWFR3L6.js} +4 -4
- package/dist/{palettes-54YSI3IX.js → palettes-IAF6WVL4.js} +5 -3
- package/dist/{parser-QOIZGW7I.js → parser-2Y7LWKNO.js} +4 -4
- package/dist/{parser-EQ4I3TSH.js → parser-4GUQUDAC.js} +5 -5
- package/dist/{parser-TA5TYZNL.js → parser-4OXANARZ.js} +5 -5
- package/dist/{parser-L7T7FY3H.js → parser-56UEMRXS.js} +4 -4
- package/dist/{parser-2GMHFSTS.js → parser-66QZQYGE.js} +4 -4
- package/dist/{parser-3AOMUX5D.js → parser-6SS7DKVW.js} +4 -4
- package/dist/{parser-QYAIFXLP.js → parser-AYURCBDZ.js} +4 -4
- package/dist/{parser-5XFGK5C5.js → parser-COPCQEHV.js} +6 -6
- package/dist/{parser-F4ZKDGUZ.js → parser-DEWJM5PX.js} +3 -3
- package/dist/{parser-ZXQZZK6W.js → parser-DQKZDA2J.js} +4 -3
- package/dist/{parser-WCFG3DZA.js → parser-EMPM3V35.js} +3 -3
- package/dist/{parser-6FUESG4N.js → parser-EP2JQJNV.js} +4 -4
- package/dist/{parser-ZYAFHXKQ.js → parser-FDDHTBRV.js} +4 -4
- package/dist/{parser-3KQONLXZ.js → parser-FDESUQ32.js} +3 -3
- package/dist/{parser-LV7PQBUG.js → parser-GK6CMK4P.js} +4 -4
- package/dist/{parser-WVE6SKB7.js → parser-H33OKBUB.js} +4 -4
- package/dist/{parser-ML3LVNDV.js → parser-HJBSWTDY.js} +4 -4
- package/dist/{parser-PR3OR3LO.js → parser-HRIKI5O3.js} +5 -5
- package/dist/{parser-H4ZUNLX4.js → parser-I77632XB.js} +3 -3
- package/dist/{parser-YWQCC33R.js → parser-JGMQE7FS.js} +4 -4
- package/dist/{parser-WMJEPZDC.js → parser-JIPG576H.js} +4 -4
- package/dist/{parser-E3OHNNTH.js → parser-JNJ2IFSO.js} +4 -4
- package/dist/{parser-CJNP7RKR.js → parser-LCUQTABE.js} +4 -4
- package/dist/{parser-4DLU4SNG.js → parser-LXU3MGG6.js} +3 -3
- package/dist/{parser-WWRRG2DV.js → parser-N4YB5EIZ.js} +4 -4
- package/dist/{parser-XVSDFO56.js → parser-NC36PRBR.js} +3 -3
- package/dist/{parser-RDBXEVI4.js → parser-O6WYAXTS.js} +4 -4
- package/dist/{parser-4KFJKLP2.js → parser-UHABNZBC.js} +3 -3
- package/dist/{parser-GCVSRQPY.js → parser-V6HULGXW.js} +4 -4
- package/dist/{parser-UTR5WE4O.js → parser-VVWZIMYS.js} +4 -4
- package/dist/{parser-B2XQNHZM.js → parser-YJGTPT7A.js} +3 -3
- package/dist/{parser-WQNT7T2P.js → parser-YQ5F7ATB.js} +3 -3
- package/dist/{parser-ZT3PU2HT.js → parser-ZUH2G7J2.js} +4 -4
- package/dist/renderer-2ZGZSSCV.js +39 -0
- package/dist/renderer-33AB7UAZ.js +35 -0
- package/dist/renderer-43KEDLTQ.js +23 -0
- package/dist/renderer-4E6NNPNU.js +29 -0
- package/dist/renderer-4HFT4HJG.js +39 -0
- package/dist/renderer-63MHARNI.js +20 -0
- package/dist/renderer-6HPV7BMG.js +23 -0
- package/dist/renderer-BVJ3NVRB.js +20 -0
- package/dist/renderer-DV44AS75.js +28 -0
- package/dist/renderer-FLLVGYUY.js +30 -0
- package/dist/renderer-FSV7MTW3.js +17 -0
- package/dist/renderer-H6XEVHKH.js +27 -0
- package/dist/renderer-HNEMQJXT.js +21 -0
- package/dist/{renderer-CVWQD442.js → renderer-IIN3RY4F.js} +6 -5
- package/dist/renderer-K2OWHNBV.js +25 -0
- package/dist/renderer-M6UIXQHH.js +27 -0
- package/dist/renderer-N5CRYFBI.js +31 -0
- package/dist/{renderer-VF7X66SL.js → renderer-O3O6A3RY.js} +16 -16
- package/dist/renderer-OVRX36WE.js +39 -0
- package/dist/renderer-PLKMHBAB.js +30 -0
- package/dist/{renderer-G2DPKJAN.js → renderer-REHVBQ57.js} +17 -16
- package/dist/{renderer-GHBF5PRH.js → renderer-RW446FGL.js} +6 -5
- package/dist/renderer-SJV75NUI.js +28 -0
- package/dist/renderer-TKWW45LZ.js +36 -0
- package/dist/{renderer-FTX67CYZ.js → renderer-UHLTPQTW.js} +7 -6
- package/dist/renderer-UNYFAMFE.js +16 -0
- package/dist/renderer-URXHBQOF.js +26 -0
- package/dist/renderer-VBAQQWDB.js +25 -0
- package/dist/renderer-VI72MVFW.js +77 -0
- package/dist/renderer-XGJIACBV.js +25 -0
- package/dist/renderer-XVTKGPYT.js +20 -0
- package/dist/{renderer-R5HIRN2M.js → renderer-YLIICO4R.js} +9 -9
- package/dist/renderer-ZG6GPWZF.js +27 -0
- package/dist/renderer-radial-7UHFYOOL.js +21 -0
- package/dist/{state-parser-TPA67IXM.js → state-parser-XT4ZPQAF.js} +5 -5
- package/dist/state-renderer-6TVII5ZJ.js +41 -0
- package/dist/{tag-groups-BAtkq0b_.d.ts → tag-groups-DIJV_50B.d.ts} +18 -9
- package/dist/{themes-DpsyRSO7.d.ts → themes-Bgkyh6gh.d.ts} +2 -2
- package/docs/architecture-report.md +3 -3
- package/docs/language-reference.md +128 -30
- package/docs/migration-sequence-color-to-tags.md +16 -8
- package/package.json +7 -6
- package/dist/charts-d3-HMEMHSSW.js +0 -29
- package/dist/chunk-53SEVJQM.js +0 -9
- package/dist/chunk-LP7EC4MI.js +0 -16
- package/dist/chunk-YM5RMLFO.js +0 -40
- package/dist/dgmo-router-A3LIHT6H.js +0 -89
- package/dist/dimensions-OFF4GRFL.js +0 -22
- package/dist/flowchart-renderer-BBJUPORB.js +0 -36
- package/dist/layout-5ILNODTP.js +0 -15
- package/dist/layout-IN53LAE6.js +0 -9
- package/dist/layout-KQUSB45X.js +0 -18
- package/dist/layout-ROORJQ4X.js +0 -18
- package/dist/layout-VUZ3MLOI.js +0 -15
- package/dist/renderer-2ANDPQWC.js +0 -16
- package/dist/renderer-2LDT4TUX.js +0 -25
- package/dist/renderer-2NYQDW37.js +0 -20
- package/dist/renderer-2RIIIO34.js +0 -39
- package/dist/renderer-3HFU3DTO.js +0 -25
- package/dist/renderer-4BF6ILP6.js +0 -27
- package/dist/renderer-5E2AH5TO.js +0 -38
- package/dist/renderer-62SLWRYF.js +0 -27
- package/dist/renderer-ANJUDBOS.js +0 -34
- package/dist/renderer-D6GJ6EVK.js +0 -30
- package/dist/renderer-DNFV2IQI.js +0 -36
- package/dist/renderer-EDVCGIQO.js +0 -76
- package/dist/renderer-EFQSMHID.js +0 -27
- package/dist/renderer-GZLRX764.js +0 -24
- package/dist/renderer-H2HYLFN3.js +0 -20
- package/dist/renderer-IR5655M7.js +0 -28
- package/dist/renderer-L237AOOZ.js +0 -16
- package/dist/renderer-LSJWYGOL.js +0 -39
- package/dist/renderer-LWXDMZOV.js +0 -28
- package/dist/renderer-MYSVPERC.js +0 -22
- package/dist/renderer-OL5QSZPC.js +0 -31
- package/dist/renderer-P26HH3NA.js +0 -30
- package/dist/renderer-RNFECJ5D.js +0 -21
- package/dist/renderer-RPZVNCTF.js +0 -26
- package/dist/renderer-SDNWZDUY.js +0 -23
- package/dist/renderer-UKHH4UWV.js +0 -25
- package/dist/renderer-Y3Y7PEUS.js +0 -20
- package/dist/renderer-radial-QNGCGKZP.js +0 -21
- package/dist/state-renderer-ELWDRXD6.js +0 -40
|
@@ -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
|
-
- Bare shorthand is not an alias (TD-18): `tag Priority p` declares a group
|
|
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 and family 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. **Flowchart, wireframe and raci take no tags** — a `tag` block or `active-tag` on any of them is ignored with a warning, because what an element looks like is fixed by what it is (a flowchart's shape, a wireframe's state keywords) or by the roles (raci).
|
|
218
218
|
|
|
@@ -282,6 +282,12 @@ Two narrow exceptions accept same-line-metadata-only color: **cycle edges** (no
|
|
|
282
282
|
- Optional trailing-token color (kanban columns, scatter categories, era/marker labels)
|
|
283
283
|
- Optional same-line metadata (outside brackets)
|
|
284
284
|
- Indented content below belongs to the group
|
|
285
|
+
- **A tag value on the group line colors the group's own frame**, and cascades
|
|
286
|
+
to its children: `[Backend] s: Red`. Supported on boxes-and-lines, infra, c4,
|
|
287
|
+
state, pert, kanban, gantt, sequence, org, block and sketch. Two rules: a
|
|
288
|
+
group never picks up the tag group's first-value default (an untagged group
|
|
289
|
+
stays neutral grey), and a value the tag group does not recognize leaves it
|
|
290
|
+
neutral rather than painting a fallback shade.
|
|
285
291
|
|
|
286
292
|
### 1.8 Boolean Options
|
|
287
293
|
|
|
@@ -568,7 +574,9 @@ dmy` once at the top; then `7/4` is **Apr 7**.
|
|
|
568
574
|
<!-- TYPE:sequence -->
|
|
569
575
|
|
|
570
576
|
<!-- TIPS start -->
|
|
577
|
+
|
|
571
578
|
**Styling tips:** stay terse — participants are created by the messages that name them, so a plain flow needs only the arrow lines (no participant declarations). Skip `is a TYPE`: the glyph is inferred from the name (`User`→actor, `*DB`→database, `Redis`→cache, `Kafka`→queue); add a declaration, a `[Group]`, or `position: N` only when it genuinely aids reading order or grouping, never as boilerplate. Give each participant a short role name. Reach for `== Section ==` dividers only when the flow splits into **two or more** distinct phases (e.g. `== Authentication ==` then `== Checkout ==`) — a single divider over one run of arrows just repeats the diagram's subject and adds a redundant band, so a one-phase flow should have no dividers at all. Label a return arrow only when its value matters (unlabeled returns are auto-pruned). Add `autonumber` before the messages when a review or discussion needs stable message references. Drop a `note` where something subtle happens. Categorize the participants and color them (not the messages) by that category with a tag group using the named palette colors — client vs service vs datastore, trust zones (internal / external), or owning team are almost always present, so default to coloring by one rather than leaving the lifelines monochrome, and the boundaries read at a glance.
|
|
579
|
+
|
|
572
580
|
<!-- TIPS end -->
|
|
573
581
|
|
|
574
582
|
### 2.1 Participants
|
|
@@ -723,7 +731,9 @@ parallel label
|
|
|
723
731
|
<!-- TYPE:infra -->
|
|
724
732
|
|
|
725
733
|
<!-- TIPS start -->
|
|
734
|
+
|
|
726
735
|
**Styling tips:** an infra diagram traces request traffic flowing inward from an `internet` or `edge` entry — that flow IS the diagram. **Every node MUST be reachable from an `internet`/`edge` entry by following the connections.** A node with no path back to an entry receives no traffic: it is dead, serves no purpose, and must be omitted entirely — not declared, not drawn, not even left as an island. There are no standalone nodes on an infra diagram. Before you add any node, ask "which request reaches this?" — if nothing routes to it, leave it out. Build strictly outward from the entry, one hop at a time along the request path, so the graph is connected by construction. Then: keep capabilities in properties (`latency-ms`, `max-rps`, `cache-hit`), not the node name; color by tier with a tag group so the layers read at a glance; reserve async edges (`~>`) for genuine fire-and-forget like queues or pub/sub.
|
|
736
|
+
|
|
727
737
|
<!-- TIPS end -->
|
|
728
738
|
|
|
729
739
|
### 4.1 Declaration
|
|
@@ -885,7 +895,9 @@ API Gateway
|
|
|
885
895
|
<!-- TYPE:flowchart -->
|
|
886
896
|
|
|
887
897
|
<!-- TIPS start -->
|
|
898
|
+
|
|
888
899
|
**Styling tips:** write every connection as `Source -> Target` (or a single-line chain like `(Start) -> [Collect info] -> <Eligible?>`); write each connection on its own line. Every decision `<Question?>` MUST have at least two outgoing branches — usually `-yes->`/`-no->`, but use specific labels when the choices are not binary (e.g. `-retirement->`, `-disability->`, `-survivor->`); a decision with only one branch is invalid. Begin at exactly one start terminal `(Start)` and make every path terminate at a terminal node (`(Approved)`, `(Denied)`, `(End)`). Every node MUST connect to the rest of the graph: if a node cannot be traced from the start forward to a terminal, it is invalid — remove it, never leave it floating. Flowcharts have NO tag groups, node metadata, or manual node colors — do NOT write `tag … as …`, a `s: value` suffix, or a trailing color word; node colors are assigned automatically by shape (start terminal green, end terminals red, processes blue, decisions yellow). Just pick the right shape and let color follow. Label every decision edge so branches read unambiguously; keep each node to a short action phrase and phrase every decision as a question.
|
|
900
|
+
|
|
889
901
|
<!-- TIPS end -->
|
|
890
902
|
|
|
891
903
|
### 4.1 Declaration
|
|
@@ -976,7 +988,9 @@ collides with the indented-body grammar.
|
|
|
976
988
|
<!-- TYPE:state -->
|
|
977
989
|
|
|
978
990
|
<!-- TIPS start -->
|
|
991
|
+
|
|
979
992
|
**Styling tips:** name states as nouns (`Idle`, `Loading`) and label transitions with the triggering event (`-submit->`); mark the initial and final states; color by state category with a tag group; keep transition labels to the event, not a sentence.
|
|
993
|
+
|
|
980
994
|
<!-- TIPS end -->
|
|
981
995
|
|
|
982
996
|
### 5.1 Declaration
|
|
@@ -1063,7 +1077,9 @@ Published ph: Terminal
|
|
|
1063
1077
|
<!-- TYPE:org -->
|
|
1064
1078
|
|
|
1065
1079
|
<!-- TIPS start -->
|
|
1080
|
+
|
|
1066
1081
|
**Styling tips:** label each node with the name and role on separate lines, not a paragraph; let the layout build the hierarchy — don't hand-draw edges; color by department or team with a tag group; keep titles consistent (all roles, or all names).
|
|
1082
|
+
|
|
1067
1083
|
<!-- TIPS end -->
|
|
1068
1084
|
|
|
1069
1085
|
### 6.1 Declaration
|
|
@@ -1167,7 +1183,9 @@ No colon — `import: x.dgmo` is an error, and so is any other keyword before a
|
|
|
1167
1183
|
**Beta — expect rough edges and syntax changes.**
|
|
1168
1184
|
|
|
1169
1185
|
<!-- TIPS start -->
|
|
1186
|
+
|
|
1170
1187
|
**Styling tips:** name each element by its responsibility, not its technology — put the tech in the `tech` field; color by system boundary with a tag group; keep one level of abstraction per diagram (context OR container, not both); keep relationship labels to the verb of the interaction. Write relationships INDENTED under their source element (` -uses-> Other`), never as a top-level `A -uses-> B` line. Static renders (CLI, MCP) show the context level — containers/components appear only in the interactive drill-down, so author context-level diagrams for static output.
|
|
1188
|
+
|
|
1171
1189
|
<!-- TIPS end -->
|
|
1172
1190
|
|
|
1173
1191
|
### 7.1 Declaration
|
|
@@ -1266,7 +1284,9 @@ Database is a container description: PostgreSQL with read replicas
|
|
|
1266
1284
|
<!-- TYPE:er -->
|
|
1267
1285
|
|
|
1268
1286
|
<!-- TIPS start -->
|
|
1287
|
+
|
|
1269
1288
|
**Styling tips:** name entities in the singular (`Customer`, not `Customers`); mark keys (`pk`, `fk`) and show only the columns that carry the relationship story; let the crow's-feet express cardinality instead of restating it in text; group related entities by color.
|
|
1289
|
+
|
|
1270
1290
|
<!-- TIPS end -->
|
|
1271
1291
|
|
|
1272
1292
|
### 8.1 Declaration
|
|
@@ -1326,7 +1346,9 @@ Cardinality symbols: `1` (one), `*` (many), `?` (optional)
|
|
|
1326
1346
|
<!-- TYPE:class -->
|
|
1327
1347
|
|
|
1328
1348
|
<!-- TIPS start -->
|
|
1349
|
+
|
|
1329
1350
|
**Styling tips:** show only the members that serve the diagram's point, not every field; mark visibility (`+`/`-`); express connections with relationships (inheritance, composition) rather than restating them in notes; group related classes by color.
|
|
1351
|
+
|
|
1330
1352
|
<!-- TIPS end -->
|
|
1331
1353
|
|
|
1332
1354
|
### 9.1 Declaration
|
|
@@ -1408,7 +1430,9 @@ Optional label: `--|> Vessel : extends` (colon optional before label)
|
|
|
1408
1430
|
<!-- TYPE:kanban -->
|
|
1409
1431
|
|
|
1410
1432
|
<!-- TIPS start -->
|
|
1411
|
-
|
|
1433
|
+
|
|
1434
|
+
**Styling tips:** Color EVERY column — write a lowercase color word right after the closing bracket (`[Done] green`). Don't match on column names; reason about what each column _means_ for a card sitting in it, then pick the color whose everyday connotation fits, so the board reads at a glance. The guiding sense: green = good / finished / success, red = bad / stuck / needs attention, yellow = waiting / caution / in review, blue = active work in motion, gray = inert / not yet started / parked. Apply that to whatever columns exist — e.g. a terminal success column reads green even if it's called `Shipped`, `Hired`, or `Live`; a column meaning a card is stuck reads red whether it's `Blocked`, `On Hold`, or `Rejected`; an early holding column reads gray whether it's `Backlog`, `Ideas`, or `Inbox`. When several columns share a sense (two active-work stages), it's fine to keep a couple uncolored or reuse a color rather than force eleven distinct hues. Name columns for workflow stages, keep card titles to a short task phrase, and let column length convey WIP instead of annotating counts. Card color is separate from column color: color cards by owner or priority with a tag group, and if you use one, tag EVERY card — an untagged card currently inherits the first tag value (mislabeling it), so omit the tag group entirely for cards you want left uncolored.
|
|
1435
|
+
|
|
1412
1436
|
<!-- TIPS end -->
|
|
1413
1437
|
|
|
1414
1438
|
### 10.1 Declaration
|
|
@@ -1458,7 +1482,9 @@ tag Crew as c
|
|
|
1458
1482
|
<!-- TYPE:sitemap -->
|
|
1459
1483
|
|
|
1460
1484
|
<!-- TIPS start -->
|
|
1485
|
+
|
|
1461
1486
|
**Styling tips:** Build a real navigation graph, not a flat column of boxes. Three things make a sitemap read well, and a good one uses all three. (1) **Cluster pages into `[Area]` group sections** when the site has distinct areas — e.g. `[Shop]`, `[Account]`, `[Admin]` — indenting each page under its bracket header, and leave only the true entry page (`Home` / `Landing`) at the top level. (2) **Show how a visitor moves** with an indented labeled arrow under the source page: `-submit-> Home`, `-checkout-> Payment`, `-back-> Dashboard`, where the label is the action or link text. Every arrow target must be declared as its own page; an arrow can point at a whole area with `-> [Admin]`. If pages share no links you've drawn a list, not a sitemap — connect them. (3) **Classify pages with a colored tag group**, so the legend organizes the map by meaning rather than by position. Declare a facet with colored values and assign it to every page in same-line metadata — access level works well: `tag Access` with `Public green`, `Member blue`, `Admin red`, then `Pricing Access: Public`; or a functional facet (`Browse`, `Purchase`, `Admin`). A second tag group for page kind (`Landing purple`, `Form orange`, `Content cyan`) adds a second color dimension. Reason about which facet actually distinguishes this site's pages rather than reaching for a fixed list. Keep the tree shallow and order siblings by prominence.
|
|
1487
|
+
|
|
1462
1488
|
<!-- TIPS end -->
|
|
1463
1489
|
|
|
1464
1490
|
### 11.1 Declaration
|
|
@@ -1538,7 +1564,9 @@ Blog
|
|
|
1538
1564
|
<!-- TYPE:gantt -->
|
|
1539
1565
|
|
|
1540
1566
|
<!-- TIPS start -->
|
|
1567
|
+
|
|
1541
1568
|
**Styling tips:** group tasks under labeled phases; mark milestones as zero-duration; color by workstream or status with a tag group; keep task names to a short verb phrase; draw dependencies only where they actually drive the schedule.
|
|
1569
|
+
|
|
1542
1570
|
<!-- TIPS end -->
|
|
1543
1571
|
|
|
1544
1572
|
### 12.1 Declaration
|
|
@@ -1672,7 +1700,9 @@ want; anything left un-chained starts together at the parent's start.
|
|
|
1672
1700
|
<!-- TYPE:pert -->
|
|
1673
1701
|
|
|
1674
1702
|
<!-- TIPS start -->
|
|
1703
|
+
|
|
1675
1704
|
**Styling tips:** Name each task as a short action and wire the real finish-to-start dependencies — branch and merge them so the critical path and per-task slack become meaningful. Give one most-likely estimate per task (the engine derives optimistic/pessimistic), or explicit O/M/P when you know them.
|
|
1705
|
+
|
|
1676
1706
|
<!-- TIPS end -->
|
|
1677
1707
|
|
|
1678
1708
|
PERT diagrams visualize project networks with three-point duration estimates, surfacing critical path, slack, and project μ/σ. Each activity renders as a node card (rectangle, or diamond for milestones); dependencies are arrows between them. Monte Carlo simulation runs automatically whenever any activity carries duration data.
|
|
@@ -1706,22 +1736,22 @@ divvy shares 1 2 3
|
|
|
1706
1736
|
|
|
1707
1737
|
### Directives
|
|
1708
1738
|
|
|
1709
|
-
| Directive | Effect
|
|
1710
|
-
| ------------------------------- |
|
|
1711
|
-
| `time-unit <unit>` | Unit for bare-number durations (default `d`); accepts `min`, `h`, `d`, `bd`, `w`, `sp` (sprints)
|
|
1712
|
-
| `default-confidence <level>` | M-only heuristic: `high`, `medium`, `low`, or a custom `O/P` factor pair (e.g. `0.6/2.5`)
|
|
1713
|
-
| `direction-lr` / `direction-tb` | Layout direction booleans (last one wins; default `LR`); key+value `direction LR\|TB` accepted legacy
|
|
1714
|
-
| `node-detail <compact\|full>` | Visual density; `full` adds slack bars and σ-as-border-thickness
|
|
1739
|
+
| Directive | Effect |
|
|
1740
|
+
| ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1741
|
+
| `time-unit <unit>` | Unit for bare-number durations (default `d`); accepts `min`, `h`, `d`, `bd`, `w`, `sp` (sprints) |
|
|
1742
|
+
| `default-confidence <level>` | M-only heuristic: `high`, `medium`, `low`, or a custom `O/P` factor pair (e.g. `0.6/2.5`) |
|
|
1743
|
+
| `direction-lr` / `direction-tb` | Layout direction booleans (last one wins; default `LR`); key+value `direction LR\|TB` accepted legacy |
|
|
1744
|
+
| `node-detail <compact\|full>` | Visual density; `full` adds slack bars and σ-as-border-thickness |
|
|
1715
1745
|
| `no-analysis` | Bare flag — hide the analysis layer (tornado + S-curve). The layer renders by default whenever Monte Carlo ran; this suppresses it. An explicit `viewState.an` (app toggle / share link) overrides it. The project subtitle is not part of the layer and still renders |
|
|
1716
|
-
| `trials <N>` | Canonical Monte Carlo trial count (`< 100` clamps to analytical)
|
|
1717
|
-
| `seed <N>` | Mulberry32 PRNG seed for deterministic runs
|
|
1718
|
-
| `scrubber-trials <N>` | Fast-MC trials for the interactive duration scrubber
|
|
1719
|
-
| `start-date <YYYY-MM-DD>` | Anchor the forward pass — accepts the literal `now`
|
|
1720
|
-
| `end-date <YYYY-MM-DD>` | Anchor the backward pass (mutually exclusive with `start-date`)
|
|
1721
|
-
| `sprint-length <duration>` | Sprint length when sprint mode is active (default `2w`)
|
|
1722
|
-
| `sprint-number <N>` | Starting sprint label N — cells render as `S<N+offset>` (default `1`)
|
|
1723
|
-
| `sprint-start <YYYY-MM-DD>` | Optional ISO date the starting sprint begins on
|
|
1724
|
-
| `active-tag <GroupName>` | Pre-expand a tag group + drive node fill
|
|
1746
|
+
| `trials <N>` | Canonical Monte Carlo trial count (`< 100` clamps to analytical) |
|
|
1747
|
+
| `seed <N>` | Mulberry32 PRNG seed for deterministic runs |
|
|
1748
|
+
| `scrubber-trials <N>` | Fast-MC trials for the interactive duration scrubber |
|
|
1749
|
+
| `start-date <YYYY-MM-DD>` | Anchor the forward pass — accepts the literal `now` |
|
|
1750
|
+
| `end-date <YYYY-MM-DD>` | Anchor the backward pass (mutually exclusive with `start-date`) |
|
|
1751
|
+
| `sprint-length <duration>` | Sprint length when sprint mode is active (default `2w`) |
|
|
1752
|
+
| `sprint-number <N>` | Starting sprint label N — cells render as `S<N+offset>` (default `1`) |
|
|
1753
|
+
| `sprint-start <YYYY-MM-DD>` | Optional ISO date the starting sprint begins on |
|
|
1754
|
+
| `active-tag <GroupName>` | Pre-expand a tag group + drive node fill |
|
|
1725
1755
|
|
|
1726
1756
|
Sprint mode activates automatically when `time-unit sp` is set, or explicitly when any `sprint-*` directive appears. ES/EF/LS/LF cells then render as `S5`, `S7`, etc.
|
|
1727
1757
|
|
|
@@ -1838,7 +1868,9 @@ See spec §13A for full date-anchoring semantics, S-curve axes, and diagnostic c
|
|
|
1838
1868
|
<!-- TYPE:family -->
|
|
1839
1869
|
|
|
1840
1870
|
<!-- TIPS start -->
|
|
1871
|
+
|
|
1841
1872
|
**Styling tips:** Two line shapes carry the whole tree: a **person line** (`Anne b: 1665, sex: f`) and a **union line** (`Anne + Jack m: 1701`), with children indented under the union. Declare each person **standalone** with their full metadata — per-side metadata on a union line is unsupported and re-stating a name just re-references the same person. Set `sex:` so cards color (m→blue, f→purple), but **treat the legend as the real sex channel**: blue and purple separate weakly under the 25% tint, so where color-vision matters distinguish with a `tag` group (labeled legend entries) instead. Reuse a name in a second union for remarriage (one card, two bars); a lone person with indented children is a single parent; a bare trailing `adopted` token marks an adopted child.
|
|
1873
|
+
|
|
1842
1874
|
<!-- TIPS end -->
|
|
1843
1875
|
|
|
1844
1876
|
### Declaration
|
|
@@ -1883,7 +1915,9 @@ Henry Turner + Carina Smyth m: 1751
|
|
|
1883
1915
|
<!-- TYPE:swimlane -->
|
|
1884
1916
|
|
|
1885
1917
|
<!-- TIPS start -->
|
|
1886
|
-
|
|
1918
|
+
|
|
1919
|
+
**Styling tips:** Give each lane a color and let nodes inherit it — reach for a `tag` group only when you need a _second_ dimension (e.g. risk) that deliberately breaks lane color. Echo the gateway/terminal delimiters (`<Review>`, `(Paid) success`) even though bare names also resolve — it keeps the source self-documenting. Put every edge label _inside_ the arrow (`-invalid->`), never as a trailing word.
|
|
1920
|
+
|
|
1887
1921
|
<!-- TIPS end -->
|
|
1888
1922
|
|
|
1889
1923
|
Swimlane diagrams model a cross-functional process: actors/systems are **lanes**, the process flows along the flow axis (`direction-lr` default, `direction-tb` transposes; key+value `direction LR|TB` accepted legacy), and optional `[Phase]` columns group steps into stages. Nodes are tasks (bare), exclusive gateways (`<X>`), parallel gateways (`<+ X>`), terminals (`(X)`), and subprocesses (`[[X]]`). A `lane` block **owns its edges** — nodes and their outgoing `->` edges are written inline, no separate flow block. A back-edge to an earlier node draws a routed loop.
|
|
@@ -1940,7 +1974,9 @@ lane Social green
|
|
|
1940
1974
|
<!-- TYPE:boxes-and-lines -->
|
|
1941
1975
|
|
|
1942
1976
|
<!-- TIPS start -->
|
|
1977
|
+
|
|
1943
1978
|
**Styling tips:** Show one clear direction of flow, label each edge with the relationship rather than a bare arrow, and keep every box a short noun phrase. **Color by category with a tag group:** declare a `tag <Facet> as <alias>` with a distinct color per value, then assign each box `<alias>: <Value>` so like things share a color and unlike things visibly differ — pick the facet that actually divides this system (tier: `Client`/`Edge`/`Compute`/`Data`, ownership, internal vs external, stateful vs stateless) rather than coloring at random. **Organize when it gets busy:** with more than ~4 boxes there is almost always a structure to surface — cluster the boxes that belong together into `[Group]` sections (a backend tier, a region, a subsystem) and draw edges to the group with `-> [Group]` where a whole cluster is the target. A flat row of many boxes is a missed opportunity; derive the grouping from how the parts relate. The `[Group]` brackets handle spatial clustering and the tag group handles color — use both, and they can cut across each other (e.g. group by subsystem, color by tier).
|
|
1979
|
+
|
|
1944
1980
|
<!-- TIPS end -->
|
|
1945
1981
|
|
|
1946
1982
|
### 13.1 Declaration
|
|
@@ -2106,7 +2142,9 @@ The tag group (color) composes with `[Group]` clustering (spatial) and can cut a
|
|
|
2106
2142
|
<!-- TYPE:timeline -->
|
|
2107
2143
|
|
|
2108
2144
|
<!-- TIPS start -->
|
|
2145
|
+
|
|
2109
2146
|
**Styling tips:** label each event with a date and a terse headline; keep entries in chronological order; color by era or category with a tag group; merge minor events rather than crowding the axis.
|
|
2147
|
+
|
|
2110
2148
|
<!-- TIPS end -->
|
|
2111
2149
|
|
|
2112
2150
|
### 14.1 Declaration
|
|
@@ -2233,7 +2271,9 @@ swimlanes # back-compat spelling of lane-by
|
|
|
2233
2271
|
<!-- TYPE:bar -->
|
|
2234
2272
|
|
|
2235
2273
|
<!-- TIPS start -->
|
|
2274
|
+
|
|
2236
2275
|
**Styling tips:** pick the form from the question — `bar` to compare categories, `line` for a trend over time, `pie` only for parts of one whole (≤6 slices); sort bars by value unless the category order is inherent (time, size); give one highlighted series a distinct color and keep the rest neutral; always label units.
|
|
2276
|
+
|
|
2237
2277
|
<!-- TIPS end -->
|
|
2238
2278
|
|
|
2239
2279
|
### Conventions shared across all data charts
|
|
@@ -2389,7 +2429,9 @@ The right axis may hold more than one series; data rows stay positional across b
|
|
|
2389
2429
|
<!-- TYPE:scatter -->
|
|
2390
2430
|
|
|
2391
2431
|
<!-- TIPS start -->
|
|
2432
|
+
|
|
2392
2433
|
**Styling tips:** label both axes with units; group points into categories with `[Category] color` brackets (points indented under each) so clusters read at a glance — scatter colors by bracketed category, not by a tag group; reach for a second category only when the comparison is the point; keep marker labels off unless a few outliers need calling out.
|
|
2434
|
+
|
|
2393
2435
|
<!-- TIPS end -->
|
|
2394
2436
|
|
|
2395
2437
|
**Data rows** — follows §15 Rule A (space-separated):
|
|
@@ -2422,7 +2464,9 @@ Point names render by default. Use `no-name` to hide them.
|
|
|
2422
2464
|
<!-- TYPE:heatmap -->
|
|
2423
2465
|
|
|
2424
2466
|
<!-- TIPS start -->
|
|
2467
|
+
|
|
2425
2468
|
**Styling tips:** Sort rows and columns by their totals (not alphabetically) so the strongest cells gather in one corner and the high-to-low pattern reads at a glance; keep every cell on the same numeric scale so the colors stay comparable.
|
|
2469
|
+
|
|
2426
2470
|
<!-- TIPS end -->
|
|
2427
2471
|
|
|
2428
2472
|
**Columns** — follows §15 Rule B (prefer the indented block for multiple columns):
|
|
@@ -2447,7 +2491,9 @@ RowLabel 5 4 3
|
|
|
2447
2491
|
<!-- TYPE:function -->
|
|
2448
2492
|
|
|
2449
2493
|
<!-- TIPS start -->
|
|
2494
|
+
|
|
2450
2495
|
**Styling tips:** Pick a domain (`x <min> to <max>`) that frames the interesting behavior and keep to a few curves for legibility. Give each curve a short readable name before the colon (`Sine: sin(x)`), not the expression repeated.
|
|
2496
|
+
|
|
2451
2497
|
<!-- TIPS end -->
|
|
2452
2498
|
|
|
2453
2499
|
```
|
|
@@ -2471,7 +2517,9 @@ The colon between name and expression is **required** — both sides can contain
|
|
|
2471
2517
|
<!-- TYPE:sankey -->
|
|
2472
2518
|
|
|
2473
2519
|
<!-- TIPS start -->
|
|
2520
|
+
|
|
2474
2521
|
**Styling tips:** Feed flows in process order (left to right) and let each connection’s value set its band width — the layout already orders nodes to reduce crossings. Fold flows into one "Other" band only when many are individually negligible; never rename a single meaningful node.
|
|
2522
|
+
|
|
2475
2523
|
<!-- TIPS end -->
|
|
2476
2524
|
|
|
2477
2525
|
**Tree structure (indented, space-separated):**
|
|
@@ -2496,7 +2544,9 @@ Source -- Target 2000
|
|
|
2496
2544
|
<!-- TYPE:funnel -->
|
|
2497
2545
|
|
|
2498
2546
|
<!-- TIPS start -->
|
|
2547
|
+
|
|
2499
2548
|
**Styling tips:** order stages largest→smallest, top to bottom; keep each stage name to a noun phrase; let the stages auto-color (each gets a distinct hue — no tag group needed); cap it at ~6 stages and merge minor drop-offs rather than crowding.
|
|
2549
|
+
|
|
2500
2550
|
<!-- TIPS end -->
|
|
2501
2551
|
|
|
2502
2552
|
**Data rows** — follows §15 Rule A (space-separated):
|
|
@@ -2518,7 +2568,9 @@ Each stage renders its name to the left of the band (in the band's color), its v
|
|
|
2518
2568
|
<!-- TYPE:slope -->
|
|
2519
2569
|
|
|
2520
2570
|
<!-- TIPS start -->
|
|
2571
|
+
|
|
2521
2572
|
**Styling tips:** Slope auto-labels both endpoints and colors each line — recolor only when one line is the story, then color just that mover and leave the rest to the default palette. It compares exactly two periods; use a line chart for more.
|
|
2573
|
+
|
|
2522
2574
|
<!-- TIPS end -->
|
|
2523
2575
|
|
|
2524
2576
|
```
|
|
@@ -2546,7 +2598,9 @@ Roberts 12 52
|
|
|
2546
2598
|
<!-- TYPE:wordcloud -->
|
|
2547
2599
|
|
|
2548
2600
|
<!-- TIPS start -->
|
|
2601
|
+
|
|
2549
2602
|
**Styling tips:** Make the largest and smallest terms differ enough in size to read at a glance — set an explicit `size <min> <max>` when raw weights are bunched together. Keep to the signal terms: cap the list (~30–40) and drop filler words.
|
|
2603
|
+
|
|
2550
2604
|
<!-- TIPS end -->
|
|
2551
2605
|
|
|
2552
2606
|
```
|
|
@@ -2567,7 +2621,9 @@ navigation 88
|
|
|
2567
2621
|
<!-- TYPE:arc -->
|
|
2568
2622
|
|
|
2569
2623
|
<!-- TIPS start -->
|
|
2624
|
+
|
|
2570
2625
|
**Styling tips:** Set `order appearance` and list links so the busiest pairs sit next to each other — heavy connections then read as short arcs hugging the axis instead of long sweeps (otherwise placement is automatic and row order is ignored). Add `layout chord` for the circular ("chord") layout when relationships are genuinely reciprocal and many-to-many; leave it off (linear default) for hub-and-spoke or mostly one-directional flows.
|
|
2626
|
+
|
|
2571
2627
|
<!-- TIPS end -->
|
|
2572
2628
|
|
|
2573
2629
|
```
|
|
@@ -2589,7 +2645,9 @@ order group
|
|
|
2589
2645
|
<!-- TYPE:event-line -->
|
|
2590
2646
|
|
|
2591
2647
|
<!-- TIPS start -->
|
|
2592
|
-
|
|
2648
|
+
|
|
2649
|
+
**Styling tips:** an event line is the annotated _narrative_ timeline (Super Bowl halftime shows, "a history of X") — reach for it over `timeline` when each event carries a real description, and over `timeline` when the spacing should NOT be to scale. Keep to ~5–25 events; lead each with a terse title and write a sentence or two of body; color by category with a tag group.
|
|
2650
|
+
|
|
2593
2651
|
<!-- TIPS end -->
|
|
2594
2652
|
|
|
2595
2653
|
**When to use vs `timeline`:** `timeline` is a to-scale date axis with eras, markers, and range bars (roadmaps, project history). `event-line` is point events with rich prose cards that auto-alternate above/below a spine — and is to-scale by default but drops to even spacing with `no-scale`.
|
|
@@ -2655,7 +2713,9 @@ Group a run of events into a labeled section with a `[Name]` bracket, then **ind
|
|
|
2655
2713
|
<!-- TYPE:body -->
|
|
2656
2714
|
|
|
2657
2715
|
<!-- TIPS start -->
|
|
2716
|
+
|
|
2658
2717
|
**Styling tips:** Reach for `body` when the drawing IS the human figure — colour muscle groups over a skin layer to show which parts a workout targets, where an injury sits, or how the musculature is organised. Choose the figure with `male`/`female` and `front`/`back`; each named muscle group takes a tag so the legend carries the meaning. Best for fitness, medical, exercise, and educational diagrams — not for generic part-to-whole (that's `pie`/`treemap`).
|
|
2718
|
+
|
|
2659
2719
|
<!-- TIPS end -->
|
|
2660
2720
|
|
|
2661
2721
|
**Figures:** male and female, front and back — four figures. `skin` form renders any figure as a plain silhouette (with head + hair) instead of the segmented muscle map. `skeletal` is reserved.
|
|
@@ -2702,7 +2762,9 @@ abs e: Secondary
|
|
|
2702
2762
|
<!-- TYPE:version-control -->
|
|
2703
2763
|
|
|
2704
2764
|
<!-- TIPS start -->
|
|
2765
|
+
|
|
2705
2766
|
**Styling tips:** the git / version-control branch-and-merge graph (GitFlow, trunk-based, release trains). The grammar is keyword-less — a bare top-level line is a branch, a bare indented line is a commit; only `merge` / `cherry-pick` are required verbs. Keep to ~3–6 branches and ~5–30 commits; name branches meaningfully (`feature/login`); tag releases. Use it for branching strategy, not real timestamps (use `timeline`/`gantt` for dates).
|
|
2767
|
+
|
|
2706
2768
|
<!-- TIPS end -->
|
|
2707
2769
|
|
|
2708
2770
|
**When to use vs `timeline`:** `version-control` shows commit/branch **topology** (who branched from whom, what merged where), not wall-clock time. It is the git-graph picture; `timeline` is a date axis.
|
|
@@ -2761,7 +2823,9 @@ main
|
|
|
2761
2823
|
**Beta — expect rough edges and syntax changes.**
|
|
2762
2824
|
|
|
2763
2825
|
<!-- TIPS start -->
|
|
2826
|
+
|
|
2764
2827
|
**Styling tips:** Use 2–3 sets and write the count of each meaningful overlap directly on its intersection; circle area is NOT proportional, so the numbers — not the sizes — carry the comparison.
|
|
2828
|
+
|
|
2765
2829
|
<!-- TIPS end -->
|
|
2766
2830
|
|
|
2767
2831
|
```
|
|
@@ -2784,7 +2848,9 @@ sw + nav + lead Legendary Pirates
|
|
|
2784
2848
|
<!-- TYPE:quadrant -->
|
|
2785
2849
|
|
|
2786
2850
|
<!-- TIPS start -->
|
|
2851
|
+
|
|
2787
2852
|
**Styling tips:** Name the four quadrants as meaningful categories (not just positions) and call out the outliers; normalize values to 0–1 so the points spread across the whole space.
|
|
2853
|
+
|
|
2788
2854
|
<!-- TIPS end -->
|
|
2789
2855
|
|
|
2790
2856
|
```
|
|
@@ -2812,7 +2878,9 @@ Navigator 0.85 0.8
|
|
|
2812
2878
|
<!-- TYPE:mindmap -->
|
|
2813
2879
|
|
|
2814
2880
|
<!-- TIPS start -->
|
|
2881
|
+
|
|
2815
2882
|
**Styling tips:** keep each node to 1–3 words; let depth carry the structure — don't echo a parent's word in its child; color the top-level branches distinctly with a tag group; favor breadth over long single chains.
|
|
2883
|
+
|
|
2816
2884
|
<!-- TIPS end -->
|
|
2817
2885
|
|
|
2818
2886
|
A radial hierarchy of ideas branching out from a central root. Hierarchy is established by indentation, nodes accept descriptions and tag-driven coloring, and any subtree can be collapsed by default.
|
|
@@ -2945,7 +3013,9 @@ Universal options (`palette`, `theme`) apply as elsewhere.
|
|
|
2945
3013
|
<!-- TYPE:wireframe -->
|
|
2946
3014
|
|
|
2947
3015
|
<!-- TIPS start -->
|
|
3016
|
+
|
|
2948
3017
|
**Styling tips:** Keep it low-fidelity — boxes, labels, and one primary action `(Sign in) primary` per screen, grouped by region. Links are bare text (`Forgot password?`); `[brackets]` is an input field.
|
|
3018
|
+
|
|
2949
3019
|
<!-- TIPS end -->
|
|
2950
3020
|
|
|
2951
3021
|
Wireframe diagrams use **visual-mnemonic syntax** where bracket characters communicate element type.
|
|
@@ -3083,7 +3153,9 @@ wireframe Login Page
|
|
|
3083
3153
|
<!-- TYPE:tech-radar -->
|
|
3084
3154
|
|
|
3085
3155
|
<!-- TIPS start -->
|
|
3156
|
+
|
|
3086
3157
|
**Styling tips:** Group blips into the four domain quadrants and let the rings carry adoption stage (Adopt→Hold); annotate movement with a `trend`. When the source is a numeric score, bucket it into a ring and keep the number in the description.
|
|
3158
|
+
|
|
3087
3159
|
<!-- TIPS end -->
|
|
3088
3160
|
|
|
3089
3161
|
```
|
|
@@ -3159,7 +3231,9 @@ Blips receive sequential global numbers. Order: quadrants clockwise (top-left
|
|
|
3159
3231
|
<!-- TYPE:cycle -->
|
|
3160
3232
|
|
|
3161
3233
|
<!-- TIPS start -->
|
|
3234
|
+
|
|
3162
3235
|
**Styling tips:** Aim for 3–6 stages so the loop stays legible; name each as a short step and let the closed ring imply repetition (no wrap-around edge needed). An indented line adds a description.
|
|
3236
|
+
|
|
3163
3237
|
<!-- TIPS end -->
|
|
3164
3238
|
|
|
3165
3239
|
Circular process flows where nodes sit on a ring and directed edges connect each to the next, wrapping from last back to first. Common use: OODA loops, PDCA, product lifecycles, continuous improvement.
|
|
@@ -3296,7 +3370,9 @@ Act red
|
|
|
3296
3370
|
<!-- TYPE:journey-map -->
|
|
3297
3371
|
|
|
3298
3372
|
<!-- TIPS start -->
|
|
3373
|
+
|
|
3299
3374
|
**Styling tips:** A journey map is a story about one specific person, so author it richly even when the prompt is thin — fill the gaps with plausible, concrete detail rather than leaving it skeletal. **Persona:** give them a real first name, a color, and a short background — `persona Gina green`, then a sentence or 2–3 indented bullet (`- …`) lines covering who they are, their goal, and their constraints. Always color the persona (trailing color word after the name, or `persona Name color: green`) so the protagonist's card stands out. When the prompt implies a customer archetype, let the name's first letter echo it (a fanatic → Fred, a casual user → Carl, a beginner → Betty) — a light touch, never forced. **Structure:** organize the journey into 2–4 `[Phase]` sections, each holding 1–3 steps — and never one step per phase across the board. If every phase has exactly one step you've just bracketed a flat list; that 1:1 mapping is wrong — either give phases multiple steps or drop the brackets and let the steps run flat. Give every step a 1–5 `score:` (and a single-word `emotion:` at the highs and lows) so the mood curve has shape. **Depth per step:** every step gets a `description:` (what actually happens there) plus 2–5 annotations drawn from `pain:` (friction, red), `opportunity:` (a fix, green), and `thought:` (what they're thinking, italic) — choose the ones that genuinely fit that moment; a smooth early step might be all `thought:`/`opportunity:`, a trough heavy on `pain:`. Don't pad every step identically — let the friction cluster where the score dips so the arc reads true.
|
|
3375
|
+
|
|
3300
3376
|
<!-- TIPS end -->
|
|
3301
3377
|
|
|
3302
3378
|
Persona-centric mood landscapes. Steps carry a 1–5 score and optional emotion label; the renderer draws an emotion curve over phase-grouped step cards. **Declaration is required** — the `journey-map` keyword must appear on the first line (no inference, to avoid colliding with kanban's `[Column]` + indented items shape).
|
|
@@ -3425,7 +3501,9 @@ Got resolution score: 5, emotion: Relieved
|
|
|
3425
3501
|
<!-- TYPE:pyramid -->
|
|
3426
3502
|
|
|
3427
3503
|
<!-- TIPS start -->
|
|
3504
|
+
|
|
3428
3505
|
**Styling tips:** Keep to a few tiers (3–5), widest at the base, and label each tier with its value — bands are uniform height, so the number carries the magnitude. For a funnel-shaped dataset, list the smallest stage first.
|
|
3506
|
+
|
|
3429
3507
|
<!-- TIPS end -->
|
|
3430
3508
|
|
|
3431
3509
|
Hierarchical pyramid visualization with stacked layers, descriptions, and optional per-layer color. Source order reads apex-first (top of file = top of pyramid).
|
|
@@ -3492,7 +3570,9 @@ When descriptions don't fit a layer's band the renderer wraps at the column edge
|
|
|
3492
3570
|
<!-- TYPE:ring -->
|
|
3493
3571
|
|
|
3494
3572
|
<!-- TIPS start -->
|
|
3573
|
+
|
|
3495
3574
|
**Styling tips:** Order rings core→outward by hierarchy, not by size — band thickness is uniform and carries no proportional meaning (use pie/funnel for part-of-whole). Keep any value you want read at a glance in the ring’s own label.
|
|
3575
|
+
|
|
3496
3576
|
<!-- TIPS end -->
|
|
3497
3577
|
|
|
3498
3578
|
Concentric-ring visualization for nested or hierarchical categories. Source order reads core-out: top of file = innermost element (rendered as a filled disc), last line = outermost ring. Min 2 layers, max 15.
|
|
@@ -3565,7 +3645,9 @@ When ring band thickness would force the in-band label below the readable floor
|
|
|
3565
3645
|
<!-- TYPE:treemap -->
|
|
3566
3646
|
|
|
3567
3647
|
<!-- TIPS start -->
|
|
3648
|
+
|
|
3568
3649
|
**Styling tips:** Put the unit in the title (`Cloud Spend ($)`) — there is no currency/format directive. Reach for `depth N` once a tree goes past ~3 levels (deeper subtrees collapse to a drillable block) and `other-below N` to fold a long tail of tiny categories into one **Other** box. Pick the color mode to match intent: tags for categories, `heat` for a gain/loss heatmap, branch for zero-config structure. Add `radial` to render a **sunburst / hierarchical pie** — best for shallow trees where you want "share of a circle"; keep the rectangular default for deep trees or precise magnitude comparison.
|
|
3650
|
+
|
|
3569
3651
|
<!-- TIPS end -->
|
|
3570
3652
|
|
|
3571
3653
|
Nested rectangles sized by value — the canonical way to show a hierarchy's proportions at a glance (budgets, disk usage, portfolios, taxonomies). Indentation is the hierarchy; a bare trailing number on a leaf is its size; parents auto-sum their children. Built on a squarified layout so cells keep good aspect ratios.
|
|
@@ -3676,7 +3758,9 @@ In the desktop app a treemap is interactive: click a parent to drill in (with a
|
|
|
3676
3758
|
<!-- TYPE:block -->
|
|
3677
3759
|
|
|
3678
3760
|
<!-- TIPS start -->
|
|
3761
|
+
|
|
3679
3762
|
**Styling tips:** Reach for `block` when the **arrangement is the message** (system/hardware/architecture layouts) — not when you just want boxes auto-connected (that's `boxes-and-lines`/`flowchart`). Group with **containers** (indent a sub-grid) and **tag the container** so the colour cascades to its children. Don't write `columns` unless you need to override the inferred width; a lone block on a row already fills it. Mark a busy subsystem `collapsed` to keep the overview readable.
|
|
3763
|
+
|
|
3680
3764
|
<!-- TIPS end -->
|
|
3681
3765
|
|
|
3682
3766
|
An author-controlled **grid** of rectangular blocks — for diagrams where the 2-D arrangement itself is the meaning (system block diagrams, hardware/signal chains, layered stacks, deployment topologies). Unlike the auto-layout diagrams, you place the blocks; the renderer still derives every pixel (column widths, row heights, gaps). One source line = one row; `[Label]` is a block; `_` is an empty cell.
|
|
@@ -3767,7 +3851,9 @@ In the desktop app a block diagram is interactive: click a container header to c
|
|
|
3767
3851
|
**Beta — expect rough edges and syntax changes.**
|
|
3768
3852
|
|
|
3769
3853
|
<!-- TIPS start -->
|
|
3854
|
+
|
|
3770
3855
|
**Styling tips:** Sketch is a GUI-authored format — the desktop and web canvas editors generate this markup, so hand-writing it is the exception. If you generate it anyway: keep it SMALL (sketches read best under ~15 shapes), and either omit `at:` everywhere (shapes flow into rows) or use integer half-slot coordinates with shapes **at least 3 half-slots apart** on one axis (a footprint spans 2 half-units and the mandatory gap adds 1 more, so each shape claims a 3×3 block; 2 apart overlaps). A `[Box]` may hold another `[Box]`, to **depth 2** — a third level is refused and its shapes join the box above it. Alias any shape an edge references (`as con`). Never write `size:`, colors, fonts, or a `shape:` outside the closed set (database, queue, cloud, person, document, note). In sketch, `~` dashed means secondary emphasis, NOT async. Categorize with a tag group instead of reaching for more shape kinds — kind-of-thing is meaning, and meaning lives in tags. Reach for `sketch` when the drawing itself is the content; reach for `boxes-and-lines` when topology should auto-lay-out.
|
|
3856
|
+
|
|
3771
3857
|
<!-- TIPS end -->
|
|
3772
3858
|
|
|
3773
3859
|
A **GUI-first constrained canvas**: uniformly-sized shapes placed freely on a snap grid, arrows between them, meaning through tags. The renderer owns all styling — authors own placement, connection, naming, and tags. Every shape has ONE universal footprint (no resizing); text always fits (shrink → smart-wrap → `…`). Pick `sketch` when the spatial arrangement is yours to decide; pick `boxes-and-lines` when topology should auto-lay-out.
|
|
@@ -3844,7 +3930,9 @@ In the desktop and web app a sketch opens in the **canvas editor** (the code pan
|
|
|
3844
3930
|
<!-- TYPE:goal -->
|
|
3845
3931
|
|
|
3846
3932
|
<!-- TIPS start -->
|
|
3933
|
+
|
|
3847
3934
|
**Styling tips:** A single progress-toward-a-target reading — one `now` against one `target`, answering "how close am I?". Reach for it for a KPI tile, a fundraising thermometer, a quarterly quota, or a completion percentage; there is no time axis, series, or milestones (use `line` for a trend, `countdown` for a live deadline). Put the **unit in the title** (`Marathon Fund ($)`, `Grog Barrel Fill (L)`) — there is no format/currency directive. `now` and `target` are **space-separated `key value`** directives, no colon (`now 6400` / `target 10000`); the percent is `now / target` and values auto-compact (`6.4k`, `1.2M`). Pick the face for the story with a bare flag on its own line: the default progress **bar** for a plain KPI, `thermometer` for fundraising/fill-the-tank framings, `gauge` for a speedometer/quota dial — all three read the same value pair. The fill is **auto traffic-light** by completion (`< 50%` red, `50–80%` orange, `≥ 80%` green; over-target stays green) so the color already reads the number's health — leave it unless you have reason to override with a trailing color on the title line (`goal Marathon Fund ($) green`) or `no-auto-color` (flat palette color). Over-target clamps the fill at 100% while the `%` label stays truthful (`120%`). Add a `note` — inline (`note Still waiting on three crews`) or a block header on its own line with an indented body — to caption the number with context (who's still owed, what's left); it takes simple markdown (`**bold**`, `*italic*`, `` `code` ``) and `- ` bullets. `fill-solid` for a bolder fill; `no-percent` / `no-value` / `no-title` / `no-notes` to drop labels.
|
|
3935
|
+
|
|
3848
3936
|
<!-- TIPS end -->
|
|
3849
3937
|
|
|
3850
3938
|
A single progress-toward-a-target value: one `now` measured against one `target`, drawn in one of three static faces. No time axis, no series, no milestones — just "how close am I?". The face is a bare-flag mode directive under the title (like treemap's `radial`); all three faces consume the same value pair.
|
|
@@ -3917,7 +4005,9 @@ Percent is `now / target`. Over-target clamps the fill at 100% while the `%` lab
|
|
|
3917
4005
|
<!-- TYPE:countdown -->
|
|
3918
4006
|
|
|
3919
4007
|
<!-- TIPS start -->
|
|
4008
|
+
|
|
3920
4009
|
**Styling tips:** The only dynamic chart — it ticks every second and is accurate on every load, so use it for a live "N days until X" widget, not a static report. Keep the title to the event (`Trip to Japan`); the target date renders as a caption automatically. `target` is a space-separated `key value` directive (no colon): a bare date (`2026-08-21`) counts to the viewer's local midnight, a datetime or offset is honored. Default `units days` reads best for weeks/months out; use `units full` for a launch-day `Nd HH:MM:SS` clock. Set `expired` to the celebration text (`🚀 Shipped!`); after the target passes every live surface shows it and the tick stops. On images (PNG export, `.svg` via `<img>`, GitHub camo) it can't tick and shows the whole-day count baked at export time — the correct fallback.
|
|
4010
|
+
|
|
3921
4011
|
<!-- TIPS end -->
|
|
3922
4012
|
|
|
3923
4013
|
The only _dynamic_ dgmo chart: a single "N days until X" recomputed against the viewer's clock on every load and ticking every second on any live surface. Distinct from `goal` (static) — a countdown has no `now`/`target` pair, just one future instant: either an absolute `target`, or the next occurrence of a recurring block anchored by `since`. The renderer bakes a whole-day fallback number (the no-JS floor); a tiny page-level ticker overwrites it live and, in `units full`, upgrades it to `Nd HH:MM:SS`.
|
|
@@ -3961,16 +4051,16 @@ every 2 weeks
|
|
|
3961
4051
|
|
|
3962
4052
|
### Directives
|
|
3963
4053
|
|
|
3964
|
-
| Directive | Effect
|
|
3965
|
-
| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
3966
|
-
| `target <iso>` | The future instant of a **one-shot** block. `2026-08-21`, `2026-08-21T18:00`, or with a tz offset. The literal `now` resolves at render (→ immediately expired; for testing).
|
|
3967
|
-
| `since <date>` | The anchor instant of a **recurring** block, and the only date in it — month, day, weekday and time are all read from here (`since 2026-01-05T18:00` recurs at 18:00; a bare date is all-day). Liberal date grammar (§2B).
|
|
3968
|
-
| `every <cadence>` | How often it comes round, and nothing else: `year`, `month`, `month by weekday`, `month by last weekday`, `week`, `day`, or `N days\|weeks\|months`. Omit the line entirely and **yearly** is assumed.
|
|
3969
|
-
| `since-label <tmpl>` | Opt-in eyebrow numbering the occurrence — `Nth` → `7th`, `N` → `7` (`since-label Nth Anniversary`, `since-label Year N`). With no `since-label` there is no eyebrow.
|
|
3970
|
-
| `on-day <text>` | Shown on the occurrence day itself (`on-day 🎂 Today!`).
|
|
3971
|
-
| `tz <IANA>` | Pin authored times to a zone (`America/New_York`, `Asia/Kolkata`, `UTC`) so the count is the **same for every viewer** and doesn't drift when the host moves zones. Default viewer-local. Footer then shows the in-zone time + a `UTC±` tag.
|
|
3972
|
-
| `units <days\|full>` | `days` (default) shows whole days (ceil); `full` ticks `Nd HH:MM:SS` on live surfaces.
|
|
3973
|
-
| `expired <text>` | Shown once the target passes; the tick stops. Default `"Now!"`. One-shot blocks only — a recurring block rolls forward to its next occurrence instead.
|
|
4054
|
+
| Directive | Effect |
|
|
4055
|
+
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
4056
|
+
| `target <iso>` | The future instant of a **one-shot** block. `2026-08-21`, `2026-08-21T18:00`, or with a tz offset. The literal `now` resolves at render (→ immediately expired; for testing). |
|
|
4057
|
+
| `since <date>` | The anchor instant of a **recurring** block, and the only date in it — month, day, weekday and time are all read from here (`since 2026-01-05T18:00` recurs at 18:00; a bare date is all-day). Liberal date grammar (§2B). |
|
|
4058
|
+
| `every <cadence>` | How often it comes round, and nothing else: `year`, `month`, `month by weekday`, `month by last weekday`, `week`, `day`, or `N days\|weeks\|months`. Omit the line entirely and **yearly** is assumed. |
|
|
4059
|
+
| `since-label <tmpl>` | Opt-in eyebrow numbering the occurrence — `Nth` → `7th`, `N` → `7` (`since-label Nth Anniversary`, `since-label Year N`). With no `since-label` there is no eyebrow. |
|
|
4060
|
+
| `on-day <text>` | Shown on the occurrence day itself (`on-day 🎂 Today!`). |
|
|
4061
|
+
| `tz <IANA>` | Pin authored times to a zone (`America/New_York`, `Asia/Kolkata`, `UTC`) so the count is the **same for every viewer** and doesn't drift when the host moves zones. Default viewer-local. Footer then shows the in-zone time + a `UTC±` tag. |
|
|
4062
|
+
| `units <days\|full>` | `days` (default) shows whole days (ceil); `full` ticks `Nd HH:MM:SS` on live surfaces. |
|
|
4063
|
+
| `expired <text>` | Shown once the target passes; the tick stops. Default `"Now!"`. One-shot blocks only — a recurring block rolls forward to its next occurrence instead. |
|
|
3974
4064
|
|
|
3975
4065
|
### Values & color
|
|
3976
4066
|
|
|
@@ -3987,7 +4077,9 @@ A recurring block always counts to the **next** occurrence: the anchor's calenda
|
|
|
3987
4077
|
<!-- TYPE:clock -->
|
|
3988
4078
|
|
|
3989
4079
|
<!-- TIPS start -->
|
|
3990
|
-
|
|
4080
|
+
|
|
4081
|
+
**Styling tips:** A live world clock — one panel per person or place, each showing the CURRENT time in its zone and ticking every second, accurate the instant the page loads. Reach for it to answer "what time is it for the crew right now": a distributed team's local times, a single collaborator's clock, or the overlap window for scheduling a call. The first line declares the type and a title (`Crew standups`). Each entry is one line, `<anchor> [as <label>]`, where the **anchor** names the zone in one of three forms (first match wins): (1) a **city name** resolved through a built-in gazetteer — just write it the way you'd say it (`London`, `New York`, `Los Angeles`, `Tokyo`, and aliases like `NYC`/`LA`/`Bombay`) — this is the easiest and preferred form; (2) an explicit **IANA id** containing a `/` (`Europe/London`, `America/New_York`) for anything ambiguous or obscure; (3) a raw **UTC offset** (`UTC`, `UTC+5:30`, `UTC-7`, `GMT+2`) — a FIXED offset that does not track daylight saving, so it renders with a small "no DST" marker and no sunrise line (use it for `UTC` itself or regions that don't shift, e.g. India `UTC+5:30`). You name the zone ONCE — do NOT write a place and an IANA zone as two tokens. Use `as <label>` to name the person or role (`New York as Dani (NY)`); the label becomes the caption and defaults to the resolved city. The single-clock case is common and encouraged — one title, one entry (`clock Dani` / `New York`). An ambiguous city (e.g. `San Jose`) errors listing the candidate zones; an unknown place is skipped with a did-you-mean. Global directives are flat, no colon: `analog` for analog dials (digital is the default face), `time-24` for a 24-hour readout (12h am/pm is the default), and optional context bands `hours 9-17` + `workweek mon-fri` (the window accepts `HH:MM` and am/pm, e.g. `hours 8:30-17:15`) to shade each zone's working window so out-of-hours people read at a glance. `no-sun` hides the sunrise/sundown indicator (on by default). Add `hours`/`workweek` only when the point is scheduling overlap; drop them for a plain "current time" widget. Zones are **colorized by default** (`color-by`, default `place` — a distinct palette accent per place); reach for a semantic mode when color should _mean_ something: `color-by time` or `color-by daylight` make an at-a-glance world board read as day-vs-night (order the zones west→east so the daylight sweeps across), and `color-by work` turns a standup/team board green/amber/grey by availability — it needs `hours` set. A hand-set per-zone color (`London as UK team purple`) is a **defined** shade that always wins over the dimension, so you can pin one zone and let the rest follow. `color-by none` goes neutral. On image surfaces (PNG, `.svg` via `<img>`, GitHub camo) it can't tick and bakes the time at export — the correct graceful fallback.
|
|
4082
|
+
|
|
3991
4083
|
<!-- TIPS end -->
|
|
3992
4084
|
|
|
3993
4085
|
The second _dynamic_ dgmo chart (with `countdown`): a live board of world clocks recomputed against the viewer's clock every second. Flat syntax — the first line is `clock <Title>`; every other non-blank line is either a board-level directive (its first token is an option keyword) or a place row. Order-independent; no colons anywhere.
|
|
@@ -4066,7 +4158,9 @@ Each row's time comes from `Intl.DateTimeFormat` with that row's zone, so DST is
|
|
|
4066
4158
|
<!-- TYPE:bracket -->
|
|
4067
4159
|
|
|
4068
4160
|
<!-- TIPS start -->
|
|
4161
|
+
|
|
4069
4162
|
**Styling tips:** A single-elimination tournament bracket: winners auto-advance rightward toward a championship. Reach for it for playoff trees, knockout draws, and seeded fields. Two ways to author: seed the field for a **day-0 skeleton** (`seed 1 Team A`, `seed 2 Team B` …) and let matches fill in, or list results casually as `A beats B` / `A vs B` lines and let winners flow forward. Name the columns with `rounds` (comma-separated, e.g. `rounds Quarterfinals, Semifinals, Final`) or an indented `rounds` block with per-round colors. The two sides mirror inward to the final. Color a competitor's box outline with a `tag` group; `accent` overrides the winner highlight (default blue). `single-elim` is the default; opt-outs are `no-round` (hide column labels) and `no-legend`.
|
|
4163
|
+
|
|
4070
4164
|
<!-- TIPS end -->
|
|
4071
4165
|
|
|
4072
4166
|
A single-elimination tournament bracket. Winners auto-advance up a tree that builds itself from the results — a one-sided ladder for a simple pool, or two `[Side]` columns that mirror inward and meet at a championship (MLB / NBA / NCAA-style). Any `seed` line switches on **seeded mode** (day-0 skeleton); otherwise the bracket is **casual** (structure inferred from `beats` / `vs` lines).
|
|
@@ -4119,7 +4213,9 @@ The winner is always the left operand of `beats`, regardless of the score; a sco
|
|
|
4119
4213
|
<!-- TYPE:raci -->
|
|
4120
4214
|
|
|
4121
4215
|
<!-- TIPS start -->
|
|
4216
|
+
|
|
4122
4217
|
**Styling tips:** Put each task at indent-0 with its `Role: A/R/C/I` cells indented one level under it — never nest tasks inside the `roles` block (it swallows them). Give every task exactly one Accountable (ideally one Responsible) and keep roles small (≤~6) so the matrix stays scannable.
|
|
4218
|
+
|
|
4123
4219
|
<!-- TIPS end -->
|
|
4124
4220
|
|
|
4125
4221
|
A tasks × roles responsibility matrix with author-time linting. **One chart type — `raci` — covers all three variants.** The variant is **inferred from the markers used**: any `D` marker → DACI, any `S` marker → RASCI, otherwise RACI. There is no directive to lock a variant; just use the markers you want. Using both `D` and `S` in one chart is an error (`E_RACI_MIXED_VARIANTS`).
|
|
@@ -4214,7 +4310,9 @@ Markers in cells are always **rendered in canonical alphabet order** (`R A C I`,
|
|
|
4214
4310
|
<!-- TYPE:map -->
|
|
4215
4311
|
|
|
4216
4312
|
<!-- TIPS start -->
|
|
4313
|
+
|
|
4217
4314
|
**Styling tips:** the zero-config map already looks good — name places and stop. When POIs fall into categories, tag them so each category gets its own color; keep place labels to the place name; leave region colorize and coastlines on unless the user asks to hide them. **For flights and airport routes, use IATA codes, not city names** — `LHR ~> JFK`, `LHR ~> DXB`, `LHR ~> SIN`, `LHR ~> HND` — the bundled airport set (large international hubs + all US commercial airports) resolves them to the right coordinates and labels them with the code. **For cities, use the exact canonical name**: "New York City" (NOT "New York"), "Washington, D.C.", etc. — a name the gazetteer doesn't have **silently drops that point** and the map just reframes around the rest, so it looks fine but is wrong. When unsure of the exact token, look it up: `dgmo map-search "<place>"` (or the `lookup_map_location` MCP tool) returns the city name or airport code to paste; fall back to coordinates (`poi Name as 40.71,-74.0`) for anything not found. **For routes/flows from a hub** (an airport's daily flights, a distribution center's shipments), write ONE edge per line and repeat the origin — never indented edges (those error). Use **arcs** (`~>`) for flights and long-haul links so the spokes separate; the connector label carries the relationship (`~daily~>`, `~2x daily~>`). Endpoints auto-create POIs, so don't add separate `poi` lines for places already in an edge. Reach for a `route` block only when the trip is an **ordered voyage** that continues stop→stop (a cruise itinerary), not a set of independent routes from one origin.
|
|
4315
|
+
|
|
4218
4316
|
<!-- TIPS end -->
|
|
4219
4317
|
|
|
4220
4318
|
Geographic concept maps: highlight/shade political subdivisions, drop points of interest (POIs), and connect them with routes or edges. For "share a concept" business maps, not cartography. Renders at a fixed, auto-fit position — no pan/zoom. Basemap and viewport are **inferred from the content you reference** — most maps need no directives. v1 boundaries: world countries + US states.
|