dreamcontext 0.8.6 → 0.8.7

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.
Files changed (127) hide show
  1. package/dist/dashboard/assets/Assistant-Bold-gm-uSS1B.woff2 +0 -0
  2. package/dist/dashboard/assets/Assistant-Medium-DrcxCXg3.woff2 +0 -0
  3. package/dist/dashboard/assets/Assistant-Regular-DVxZuzxb.woff2 +0 -0
  4. package/dist/dashboard/assets/Assistant-SemiBold-SCI4bEL9.woff2 +0 -0
  5. package/dist/dashboard/assets/{BrainCanvas3D-CAB2im2F.js → BrainCanvas3D-CyuMh6vC.js} +1 -1
  6. package/dist/dashboard/assets/{_baseUniq-dsXhE6Mb.js → _baseUniq-TeXEp9Tn.js} +1 -1
  7. package/dist/dashboard/assets/{ar-SA-G6X2FPQ2-BmAprFYu.js → ar-SA-G6X2FPQ2-Da5wNUeW.js} +1 -1
  8. package/dist/dashboard/assets/{arc-d9gHov8I.js → arc-NQuoeYrp.js} +1 -1
  9. package/dist/dashboard/assets/{architectureDiagram-Q4EWVU46-C58hXcUE.js → architectureDiagram-Q4EWVU46-B108azq_.js} +1 -1
  10. package/dist/dashboard/assets/{az-AZ-76LH7QW2-BDUks0et.js → az-AZ-76LH7QW2-cJYSsraO.js} +1 -1
  11. package/dist/dashboard/assets/{bg-BG-XCXSNQG7-Bdi-CLmM.js → bg-BG-XCXSNQG7-Dt4_IvAk.js} +1 -1
  12. package/dist/dashboard/assets/{blockDiagram-DXYQGD6D-yJn6zNZG.js → blockDiagram-DXYQGD6D-HAo6Tqxd.js} +1 -1
  13. package/dist/dashboard/assets/{bn-BD-2XOGV67Q-THuskwuf.js → bn-BD-2XOGV67Q-DE20hZpG.js} +1 -1
  14. package/dist/dashboard/assets/{c4Diagram-AHTNJAMY-fGKTGH97.js → c4Diagram-AHTNJAMY-SHRA5Nk_.js} +1 -1
  15. package/dist/dashboard/assets/{ca-ES-6MX7JW3Y-CWrsv8xQ.js → ca-ES-6MX7JW3Y-9ZUzuDs-.js} +1 -1
  16. package/dist/dashboard/assets/channel-CIQg6WkP.js +1 -0
  17. package/dist/dashboard/assets/{chunk-4BX2VUAB-ZCQicbHU.js → chunk-4BX2VUAB-BlLy4y9z.js} +1 -1
  18. package/dist/dashboard/assets/{chunk-4TB4RGXK-DGTUpfCU.js → chunk-4TB4RGXK-cDLog-pk.js} +1 -1
  19. package/dist/dashboard/assets/{chunk-55IACEB6-BnK0E2R4.js → chunk-55IACEB6-BfLlL9Jv.js} +1 -1
  20. package/dist/dashboard/assets/{chunk-EDXVE4YY-B3YEC9QU.js → chunk-EDXVE4YY-BjKTlHye.js} +1 -1
  21. package/dist/dashboard/assets/{chunk-FMBD7UC4-DIteC6lG.js → chunk-FMBD7UC4-CoMoOB69.js} +1 -1
  22. package/dist/dashboard/assets/{chunk-OYMX7WX6-DC84qLFn.js → chunk-OYMX7WX6-DSYZ4BzO.js} +1 -1
  23. package/dist/dashboard/assets/{chunk-QZHKN3VN-Uc2Uvh7x.js → chunk-QZHKN3VN-hsCUyt37.js} +1 -1
  24. package/dist/dashboard/assets/{chunk-YZCP3GAM--p-GHUD7.js → chunk-YZCP3GAM-CMBEUThQ.js} +1 -1
  25. package/dist/dashboard/assets/classDiagram-6PBFFD2Q-kJkUaIqm.js +1 -0
  26. package/dist/dashboard/assets/classDiagram-v2-HSJHXN6E-kJkUaIqm.js +1 -0
  27. package/dist/dashboard/assets/clone-COSoK5_M.js +1 -0
  28. package/dist/dashboard/assets/{cose-bilkent-S5V4N54A-DBBUVsxi.js → cose-bilkent-S5V4N54A-Ds3A4r-y.js} +1 -1
  29. package/dist/dashboard/assets/{cs-CZ-2BRQDIVT-B8STDI2F.js → cs-CZ-2BRQDIVT-WgNPbRaT.js} +1 -1
  30. package/dist/dashboard/assets/{da-DK-5WZEPLOC-CWhAB8Gq.js → da-DK-5WZEPLOC-BQPVoqBy.js} +1 -1
  31. package/dist/dashboard/assets/{dagre-KV5264BT-BcS_NAij.js → dagre-KV5264BT-D3AamC0s.js} +1 -1
  32. package/dist/dashboard/assets/{de-DE-XR44H4JA-BULNBnuJ.js → de-DE-XR44H4JA-FOMlLeg-.js} +1 -1
  33. package/dist/dashboard/assets/{diagram-5BDNPKRD-CmCCHnLC.js → diagram-5BDNPKRD-DeAuY_LW.js} +1 -1
  34. package/dist/dashboard/assets/{diagram-G4DWMVQ6-Ba84raDA.js → diagram-G4DWMVQ6-CsPuBl6m.js} +1 -1
  35. package/dist/dashboard/assets/{diagram-MMDJMWI5-xNrgYgGq.js → diagram-MMDJMWI5-Celrp7iZ.js} +1 -1
  36. package/dist/dashboard/assets/{diagram-TYMM5635-CMTfUaO1.js → diagram-TYMM5635-D-Y8kdqj.js} +1 -1
  37. package/dist/dashboard/assets/{el-GR-BZB4AONW-DBD23y9B.js → el-GR-BZB4AONW-DdhrZvUu.js} +1 -1
  38. package/dist/dashboard/assets/{erDiagram-SMLLAGMA-BajnFM-6.js → erDiagram-SMLLAGMA-CyPB81Ul.js} +1 -1
  39. package/dist/dashboard/assets/{es-ES-U4NZUMDT-C71t6ojw.js → es-ES-U4NZUMDT-B-Hbpc6c.js} +1 -1
  40. package/dist/dashboard/assets/{eu-ES-A7QVB2H4-B_ttSuYR.js → eu-ES-A7QVB2H4-CIeXN6PD.js} +1 -1
  41. package/dist/dashboard/assets/{fa-IR-HGAKTJCU-Bq4zIqyT.js → fa-IR-HGAKTJCU-BojqXzkR.js} +1 -1
  42. package/dist/dashboard/assets/{fi-FI-Z5N7JZ37-CsLCTzrZ.js → fi-FI-Z5N7JZ37-Dix2X0V9.js} +1 -1
  43. package/dist/dashboard/assets/{flowDiagram-DWJPFMVM-CwfPSiA0.js → flowDiagram-DWJPFMVM-D7IX0DxI.js} +1 -1
  44. package/dist/dashboard/assets/{fr-FR-RHASNOE6-3XVH-KvN.js → fr-FR-RHASNOE6-B-jqOA6L.js} +1 -1
  45. package/dist/dashboard/assets/{ganttDiagram-T4ZO3ILL-DttgldaZ.js → ganttDiagram-T4ZO3ILL-CbK6p7_G.js} +1 -1
  46. package/dist/dashboard/assets/{gitGraphDiagram-UUTBAWPF-BD3bGHtr.js → gitGraphDiagram-UUTBAWPF-DWDwNpLK.js} +1 -1
  47. package/dist/dashboard/assets/{gl-ES-HMX3MZ6V-DROoNE8o.js → gl-ES-HMX3MZ6V-B6zmZpsw.js} +1 -1
  48. package/dist/dashboard/assets/{graph-CDuZp5IO.js → graph-CrDZc6w0.js} +1 -1
  49. package/dist/dashboard/assets/{he-IL-6SHJWFNN-BqAkB-H9.js → he-IL-6SHJWFNN-CaSPpOxb.js} +1 -1
  50. package/dist/dashboard/assets/{hi-IN-IWLTKZ5I-Bn1svlpD.js → hi-IN-IWLTKZ5I-n86mXoF4.js} +1 -1
  51. package/dist/dashboard/assets/{hu-HU-A5ZG7DT2-BpbEcSt9.js → hu-HU-A5ZG7DT2-MqIG43UE.js} +1 -1
  52. package/dist/dashboard/assets/{id-ID-SAP4L64H-BFbKSomM.js → id-ID-SAP4L64H-DbrGiOFJ.js} +1 -1
  53. package/dist/dashboard/assets/index-D1nedbBU.css +1 -0
  54. package/dist/dashboard/assets/{index-Di8SAJL6.js → index-DjaqCcd7.js} +106 -104
  55. package/dist/dashboard/assets/{index-cIXUPF7a.js → index-zJ2-S49k.js} +1 -1
  56. package/dist/dashboard/assets/{infoDiagram-42DDH7IO-CrGCfIaU.js → infoDiagram-42DDH7IO-CpAQyAyt.js} +1 -1
  57. package/dist/dashboard/assets/{ishikawaDiagram-UXIWVN3A-DdanP4Cg.js → ishikawaDiagram-UXIWVN3A-DXIwINgb.js} +1 -1
  58. package/dist/dashboard/assets/{it-IT-JPQ66NNP-DElAu1GB.js → it-IT-JPQ66NNP-IX1Td9Wl.js} +1 -1
  59. package/dist/dashboard/assets/{ja-JP-DBVTYXUO-CX5hYCt6.js → ja-JP-DBVTYXUO-Bd8nX8VR.js} +1 -1
  60. package/dist/dashboard/assets/{journeyDiagram-VCZTEJTY-BJYoD993.js → journeyDiagram-VCZTEJTY-DZlgujgy.js} +1 -1
  61. package/dist/dashboard/assets/{kaa-6HZHGXH3-Dv86pOJk.js → kaa-6HZHGXH3-D5xD9fsf.js} +1 -1
  62. package/dist/dashboard/assets/{kab-KAB-ZGHBKWFO-BdVPAiBC.js → kab-KAB-ZGHBKWFO-xBaAbT-9.js} +1 -1
  63. package/dist/dashboard/assets/{kanban-definition-6JOO6SKY-BCtHyYn3.js → kanban-definition-6JOO6SKY-0klC865z.js} +1 -1
  64. package/dist/dashboard/assets/{kk-KZ-P5N5QNE5-rqy6kPw3.js → kk-KZ-P5N5QNE5-CboXRRre.js} +1 -1
  65. package/dist/dashboard/assets/{km-KH-HSX4SM5Z-W6zLGjnE.js → km-KH-HSX4SM5Z-Clsilmtp.js} +1 -1
  66. package/dist/dashboard/assets/{ko-KR-MTYHY66A-ACtkqDBa.js → ko-KR-MTYHY66A-CIjzZcRO.js} +1 -1
  67. package/dist/dashboard/assets/{ku-TR-6OUDTVRD-D2MiKXrW.js → ku-TR-6OUDTVRD-Bs1RU4e9.js} +1 -1
  68. package/dist/dashboard/assets/{layout-G4fEkmiY.js → layout-fipBctpD.js} +1 -1
  69. package/dist/dashboard/assets/{linear-B2IKexSz.js → linear-DVXXJr0u.js} +1 -1
  70. package/dist/dashboard/assets/{lt-LT-XHIRWOB4-BXUl6qoc.js → lt-LT-XHIRWOB4-CQ-xLU_o.js} +1 -1
  71. package/dist/dashboard/assets/{lv-LV-5QDEKY6T-CbfqRExf.js → lv-LV-5QDEKY6T-C0inT4d9.js} +1 -1
  72. package/dist/dashboard/assets/{min-CGs-EORe.js → min-B_cNy5kS.js} +1 -1
  73. package/dist/dashboard/assets/{mindmap-definition-QFDTVHPH-BG5rEg9o.js → mindmap-definition-QFDTVHPH-Cioz1NOY.js} +1 -1
  74. package/dist/dashboard/assets/{mr-IN-CRQNXWMA-BDQS6spB.js → mr-IN-CRQNXWMA-DhEHYUYK.js} +1 -1
  75. package/dist/dashboard/assets/{my-MM-5M5IBNSE-slOXMPAS.js → my-MM-5M5IBNSE-Dj4Iwdrf.js} +1 -1
  76. package/dist/dashboard/assets/{nb-NO-T6EIAALU-DsUSa36i.js → nb-NO-T6EIAALU-CvAPy7iN.js} +1 -1
  77. package/dist/dashboard/assets/{nl-NL-IS3SIHDZ-Bmxt9uv4.js → nl-NL-IS3SIHDZ-DgQc3gPO.js} +1 -1
  78. package/dist/dashboard/assets/{nn-NO-6E72VCQL-B3EKWZ2E.js → nn-NO-6E72VCQL-DORPUv8K.js} +1 -1
  79. package/dist/dashboard/assets/{oc-FR-POXYY2M6-CQ95AKGA.js → oc-FR-POXYY2M6-Cym9O8Me.js} +1 -1
  80. package/dist/dashboard/assets/{pa-IN-N4M65BXN-DlOGvEPy.js → pa-IN-N4M65BXN-BiE5SCOy.js} +1 -1
  81. package/dist/dashboard/assets/percentages-BXMCSKIN-B-_e8Y6s.js +215 -0
  82. package/dist/dashboard/assets/percentages-BXMCSKIN-DnMnD4LF.css +1 -0
  83. package/dist/dashboard/assets/{pica-BElmNROA.js → pica-C5ISA_oR.js} +1 -1
  84. package/dist/dashboard/assets/{pieDiagram-DEJITSTG-CM8vpcY4.js → pieDiagram-DEJITSTG-CD7iu1Mo.js} +1 -1
  85. package/dist/dashboard/assets/{pl-PL-T2D74RX3-ia8QfWiE.js → pl-PL-T2D74RX3-C-29ZIfD.js} +1 -1
  86. package/dist/dashboard/assets/{pt-BR-5N22H2LF-Dk0_mzTj.js → pt-BR-5N22H2LF-CIQq615m.js} +1 -1
  87. package/dist/dashboard/assets/{pt-PT-UZXXM6DQ-DVhHd3sQ.js → pt-PT-UZXXM6DQ-CN7xbXrH.js} +1 -1
  88. package/dist/dashboard/assets/{quadrantDiagram-34T5L4WZ-DHK8pFQ0.js → quadrantDiagram-34T5L4WZ-DEPkZ_lv.js} +1 -1
  89. package/dist/dashboard/assets/{requirementDiagram-MS252O5E-O5-02BwJ.js → requirementDiagram-MS252O5E-BpAjr03x.js} +1 -1
  90. package/dist/dashboard/assets/{ro-RO-JPDTUUEW-BnsPiMQX.js → ro-RO-JPDTUUEW-DBtenXzw.js} +1 -1
  91. package/dist/dashboard/assets/{ru-RU-B4JR7IUQ-DGg0hVo9.js → ru-RU-B4JR7IUQ-CA_iHOeh.js} +1 -1
  92. package/dist/dashboard/assets/{sankeyDiagram-XADWPNL6-CWTRPjWg.js → sankeyDiagram-XADWPNL6-B1zLPVle.js} +1 -1
  93. package/dist/dashboard/assets/{sequenceDiagram-FGHM5R23-DgPVR3Bj.js → sequenceDiagram-FGHM5R23-pEX8i9B5.js} +1 -1
  94. package/dist/dashboard/assets/{si-LK-N5RQ5JYF-tYLdyZ7v.js → si-LK-N5RQ5JYF-BTsFn4Rn.js} +1 -1
  95. package/dist/dashboard/assets/{sk-SK-C5VTKIMK-1xA3G05_.js → sk-SK-C5VTKIMK-DGoN-I5B.js} +1 -1
  96. package/dist/dashboard/assets/{sl-SI-NN7IZMDC-DhfNsg9e.js → sl-SI-NN7IZMDC-CwiRr92B.js} +1 -1
  97. package/dist/dashboard/assets/{stateDiagram-FHFEXIEX-Bca5FGdM.js → stateDiagram-FHFEXIEX-W_EdYNVF.js} +1 -1
  98. package/dist/dashboard/assets/stateDiagram-v2-QKLJ7IA2-BsdphuJ6.js +1 -0
  99. package/dist/dashboard/assets/{subset-shared.chunk-CGU8uh4H.js → subset-shared.chunk-CAlKIepB.js} +1 -1
  100. package/dist/dashboard/assets/{subset-worker.chunk-y2R5BeoP.js → subset-worker.chunk-YIXEPnjQ.js} +1 -1
  101. package/dist/dashboard/assets/{sv-SE-XGPEYMSR-DfzE39Ps.js → sv-SE-XGPEYMSR-7SNur8Fe.js} +1 -1
  102. package/dist/dashboard/assets/{ta-IN-2NMHFXQM-D7LBIYw1.js → ta-IN-2NMHFXQM-DqQBCB2J.js} +1 -1
  103. package/dist/dashboard/assets/{th-TH-HPSO5L25-Cfm5Dm_a.js → th-TH-HPSO5L25-ClwEsAak.js} +1 -1
  104. package/dist/dashboard/assets/{timeline-definition-GMOUNBTQ-C-mJxmUk.js → timeline-definition-GMOUNBTQ-uPtwwnY7.js} +1 -1
  105. package/dist/dashboard/assets/{tr-TR-DEFEU3FU-m5lXhQtR.js → tr-TR-DEFEU3FU-DmCg5qbG.js} +1 -1
  106. package/dist/dashboard/assets/{uk-UA-QMV73CPH-CDhF3uD5.js → uk-UA-QMV73CPH-DixKG8eB.js} +1 -1
  107. package/dist/dashboard/assets/{vennDiagram-DHZGUBPP-EXa8McYU.js → vennDiagram-DHZGUBPP-CAggDlIj.js} +1 -1
  108. package/dist/dashboard/assets/{vi-VN-M7AON7JQ-C67Ii_Ev.js → vi-VN-M7AON7JQ-C15Za2rn.js} +1 -1
  109. package/dist/dashboard/assets/{wardley-RL74JXVD-auY9rf2s.js → wardley-RL74JXVD-D5C_gWsf.js} +1 -1
  110. package/dist/dashboard/assets/{wardleyDiagram-NUSXRM2D-B8qVq-Ss.js → wardleyDiagram-NUSXRM2D-tqYHOmfO.js} +1 -1
  111. package/dist/dashboard/assets/{xychartDiagram-5P7HB3ND-DIfk5B6V.js → xychartDiagram-5P7HB3ND-CsxZKm-V.js} +1 -1
  112. package/dist/dashboard/assets/{zh-CN-LNUGB5OW-8NshHSLl.js → zh-CN-LNUGB5OW-BhlF39b5.js} +1 -1
  113. package/dist/dashboard/assets/{zh-HK-E62DVLB3-D22tHzlZ.js → zh-HK-E62DVLB3-P2FWmB4w.js} +1 -1
  114. package/dist/dashboard/assets/{zh-TW-RAJ6MFWO-BllueYdk.js → zh-TW-RAJ6MFWO-B0yB1dNp.js} +1 -1
  115. package/dist/dashboard/index.html +2 -2
  116. package/dist/index.js +6971 -259
  117. package/dist/skill-packs/excalidraw/SKILL.md +19 -4
  118. package/package.json +1 -1
  119. package/skill/SKILL.md +3 -1
  120. package/skill-packs/excalidraw/SKILL.md +19 -4
  121. package/dist/dashboard/assets/channel-Do_JtUNy.js +0 -1
  122. package/dist/dashboard/assets/classDiagram-6PBFFD2Q-Dj8SIYaT.js +0 -1
  123. package/dist/dashboard/assets/classDiagram-v2-HSJHXN6E-Dj8SIYaT.js +0 -1
  124. package/dist/dashboard/assets/clone-BpmzOucO.js +0 -1
  125. package/dist/dashboard/assets/index-CgYfjFTP.css +0 -1
  126. package/dist/dashboard/assets/percentages-BXMCSKIN-Cghe4Ak9.js +0 -215
  127. package/dist/dashboard/assets/stateDiagram-v2-QKLJ7IA2-DIY7ac6n.js +0 -1
@@ -231,13 +231,28 @@ _dream_context/knowledge/diagrams/
231
231
  │ ├── my-board.excalidraw.md ← generated board (do NOT hand-edit scene JSON)
232
232
  │ ├── my-board.board.cjs ← generator (dark sibling — excluded from index/recall)
233
233
  │ └── my-board.json ← spec / source of truth (dark sibling — excluded)
234
+ ├── competitors/ ← optional category subfolder (groups many boards)
235
+ │ └── acme/
236
+ │ └── acme.excalidraw.md
234
237
  └── legacy-flat.excalidraw.md ← flat layout still works; no forced migration
235
238
  ```
236
239
 
237
- **Dark siblings**: any file inside a `diagrams/<title>/` folder that is NOT the board itself
238
- is automatically excluded from the index, recall corpus, snapshot, and dashboard list.
239
- This includes generator scripts (`.board.cjs`), spec JSON, and any helper `.md` notes.
240
- They are tooling they do not pollute memory.
240
+ **Category subfolders** are optional and free-form: `diagrams/<category>/<title>/<title>.excalidraw.md`.
241
+ The dashboard Knowledge view renders the whole `diagrams/` subtree as a nested, collapsible folder
242
+ tree (each board shows a sketch icon), so a large diagram set stays navigable instead of collapsing
243
+ into one flat list. A board's own `<title>/` folder is always its innermost folder. Note: a
244
+ `.board.cjs` that `require()`s shared helpers by relative path must use a depth that matches its
245
+ actual location.
246
+
247
+ **Dark siblings**: tooling files inside a `diagrams/<title>/` folder are automatically excluded
248
+ from the index, recall corpus, snapshot, and dashboard list — generator scripts (`.board.cjs`),
249
+ spec JSON, and frontmatter-less helper `.md` notes. They are tooling — they do not pollute memory.
250
+
251
+ **Companion knowledge is the exception**: a `.md` beside a board that carries `name:` frontmatter
252
+ is indexed as first-class knowledge (not a dark sibling). This lets you co-locate a board with its
253
+ detailed write-up — e.g. `acme/acme.excalidraw.md` next to `acme/acme.teardown.md` — and have the
254
+ teardown recall normally. Only frontmatter-less notes stay dark, so good organization no longer
255
+ costs you recall.
241
256
 
242
257
  **Flat layout** (`diagrams/<title>.excalidraw.md`) works without any migration. Use the
243
258
  per-title folder when you want to keep the board + generator + spec together cleanly.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dreamcontext",
3
- "version": "0.8.6",
3
+ "version": "0.8.7",
4
4
  "description": "dreamcontext — the persistent brain for your AI agents. Remembers what you built, knows how your project works.",
5
5
  "type": "module",
6
6
  "bin": {
package/skill/SKILL.md CHANGED
@@ -443,11 +443,13 @@ Excalidraw boards (`.excalidraw.md`) are first-class knowledge files. Two layout
443
443
 
444
444
  **Per-title folder** (preferred convention): `knowledge/diagrams/<title>/<title>.excalidraw.md`
445
445
 
446
+ **Optional category subfolder** (for many diagrams): group boards under a category, e.g. `knowledge/diagrams/<category>/<title>/<title>.excalidraw.md` (`diagrams/competitors/acme/acme.excalidraw.md`, `diagrams/system/recall/recall.excalidraw.md`). The dashboard Knowledge view renders these as a nested, collapsible folder tree, so categories stay navigable instead of collapsing into one flat Diagrams list. Nesting is free-form and any depth; the board still lives in its own `<title>/` folder. Generators that `require()` shared helpers via a relative path must account for the extra depth.
447
+
446
448
  Rules:
447
449
  - **REQUIRED frontmatter**: every board MUST have `name:` and `description:` fields. Boards with no `## Text Elements` section fall back to description-only recall — make it descriptive.
448
450
  - **Do NOT hand-edit scene JSON.** The `.excalidraw.md` file is generated output. Build a spec and run the generator (`.board.cjs`). Edit the spec, not the board.
449
451
  - **Spec is the source of truth.** If the spec and the board ever disagree, the spec wins. Commit both.
450
- - **Dark siblings**: all files inside a `knowledge/diagrams/<title>/` folder that are NOT the board itself (generator scripts `.board.cjs`, spec `.json`, helper `.md`) are excluded from the index, recall corpus, snapshot, and dashboard. They are tooling artifacts they do NOT surface in memory.
452
+ - **Dark siblings**: tooling files inside a `knowledge/diagrams/<title>/` folder generator scripts (`.board.cjs`), spec `.json`, and frontmatter-less helper `.md` are excluded from the index, recall corpus, snapshot, and dashboard. **Exception:** a companion `.md` that carries `name:` frontmatter is indexed as first-class knowledge, so you can co-locate a board with its detailed teardown (`acme/acme.excalidraw.md` + `acme/acme.teardown.md`) and have it recall normally. Only frontmatter-less notes stay dark.
451
453
  - **Memory indexes only frontmatter + ## Text Elements**: scene JSON, base64, and element ids are stripped before indexing. A 2 MB board with rich Text Elements is as searchable as a tiny board. The dashboard renderer still receives the raw body (with full scene JSON) via the detail API route.
452
454
  - **Migration is opt-in**: flat boards stay flat unless you explicitly ask for reorganization. Use `dreamcontext migrations pending` to see pending migration tasks; use `dreamcontext migrations apply-diagrams` to opt-in to organizing flat boards into per-title folders.
453
455
 
@@ -231,13 +231,28 @@ _dream_context/knowledge/diagrams/
231
231
  │ ├── my-board.excalidraw.md ← generated board (do NOT hand-edit scene JSON)
232
232
  │ ├── my-board.board.cjs ← generator (dark sibling — excluded from index/recall)
233
233
  │ └── my-board.json ← spec / source of truth (dark sibling — excluded)
234
+ ├── competitors/ ← optional category subfolder (groups many boards)
235
+ │ └── acme/
236
+ │ └── acme.excalidraw.md
234
237
  └── legacy-flat.excalidraw.md ← flat layout still works; no forced migration
235
238
  ```
236
239
 
237
- **Dark siblings**: any file inside a `diagrams/<title>/` folder that is NOT the board itself
238
- is automatically excluded from the index, recall corpus, snapshot, and dashboard list.
239
- This includes generator scripts (`.board.cjs`), spec JSON, and any helper `.md` notes.
240
- They are tooling they do not pollute memory.
240
+ **Category subfolders** are optional and free-form: `diagrams/<category>/<title>/<title>.excalidraw.md`.
241
+ The dashboard Knowledge view renders the whole `diagrams/` subtree as a nested, collapsible folder
242
+ tree (each board shows a sketch icon), so a large diagram set stays navigable instead of collapsing
243
+ into one flat list. A board's own `<title>/` folder is always its innermost folder. Note: a
244
+ `.board.cjs` that `require()`s shared helpers by relative path must use a depth that matches its
245
+ actual location.
246
+
247
+ **Dark siblings**: tooling files inside a `diagrams/<title>/` folder are automatically excluded
248
+ from the index, recall corpus, snapshot, and dashboard list — generator scripts (`.board.cjs`),
249
+ spec JSON, and frontmatter-less helper `.md` notes. They are tooling — they do not pollute memory.
250
+
251
+ **Companion knowledge is the exception**: a `.md` beside a board that carries `name:` frontmatter
252
+ is indexed as first-class knowledge (not a dark sibling). This lets you co-locate a board with its
253
+ detailed write-up — e.g. `acme/acme.excalidraw.md` next to `acme/acme.teardown.md` — and have the
254
+ teardown recall normally. Only frontmatter-less notes stay dark, so good organization no longer
255
+ costs you recall.
241
256
 
242
257
  **Flat layout** (`diagrams/<title>.excalidraw.md`) works without any migration. Use the
243
258
  per-title folder when you want to keep the board + generator + spec together cleanly.
@@ -1 +0,0 @@
1
- import{aq as o,ar as n}from"./index-Di8SAJL6.js";const t=(r,a)=>o.lang.round(n.parse(r)[a]);export{t as c};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-4TB4RGXK-DGTUpfCU.js";import{_ as i}from"./index-Di8SAJL6.js";import"./chunk-FMBD7UC4-DIteC6lG.js";import"./chunk-YZCP3GAM--p-GHUD7.js";import"./chunk-55IACEB6-BnK0E2R4.js";import"./chunk-EDXVE4YY-B3YEC9QU.js";var u={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{u as diagram};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-4TB4RGXK-DGTUpfCU.js";import{_ as i}from"./index-Di8SAJL6.js";import"./chunk-FMBD7UC4-DIteC6lG.js";import"./chunk-YZCP3GAM--p-GHUD7.js";import"./chunk-55IACEB6-BnK0E2R4.js";import"./chunk-EDXVE4YY-B3YEC9QU.js";var u={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{u as diagram};
@@ -1 +0,0 @@
1
- import{b as r}from"./graph-CDuZp5IO.js";var e=4;function a(o){return r(o,e)}export{a as c};