@forsion/unit 2.12.2

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 (791) hide show
  1. package/LICENSE +223 -0
  2. package/README.md +101 -0
  3. package/backendWorker.mjs +273 -0
  4. package/main.mjs +3434 -0
  5. package/package.json +26 -0
  6. package/release.json +11 -0
  7. package/web/assets/ArtificialView-B4ESD4iK.js +1 -0
  8. package/web/assets/AutomationBuilder-sxWdUa0L.js +1 -0
  9. package/web/assets/CalendarConfigView-cCfo_EvZ.js +1 -0
  10. package/web/assets/CalendarView-wgLapctk.js +1 -0
  11. package/web/assets/CapabilityMenu-BQBsM638.js +1 -0
  12. package/web/assets/CapabilityMenu-CTIzmTJB.css +1 -0
  13. package/web/assets/ChatView-BIUk0OJd.css +1 -0
  14. package/web/assets/ChatView-C-jCJnyS.js +47 -0
  15. package/web/assets/CheckboxInput-BsaoUHZ0.js +1 -0
  16. package/web/assets/Chrome-CwFiDmre.js +1 -0
  17. package/web/assets/CodeView-j065KtVh.js +15 -0
  18. package/web/assets/DancingScript-Bold-latin-CWNX0RqN.woff2 +0 -0
  19. package/web/assets/DashboardGridView-Ck3LKkOb.css +1 -0
  20. package/web/assets/DashboardGridView-DXqe0vPd.js +17 -0
  21. package/web/assets/EventCard-BmDQkEj9.js +1 -0
  22. package/web/assets/ExcalidrawCanvas-4uYrLYin.css +1 -0
  23. package/web/assets/ExcalidrawCanvas-C3egkikA.js +1 -0
  24. package/web/assets/FloatingToc-CENybkAA.js +1 -0
  25. package/web/assets/HomepageView-BNabJQfP.css +1 -0
  26. package/web/assets/HomepageView-CRdhjLXu.js +1 -0
  27. package/web/assets/ImageStudioPanels-Dke7xf8E.js +3 -0
  28. package/web/assets/ImageStudioView-g38V8gaj.js +1 -0
  29. package/web/assets/InlineFiles-C_hjvn3u.js +1 -0
  30. package/web/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  31. package/web/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  32. package/web/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  33. package/web/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  34. package/web/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  35. package/web/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  36. package/web/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  37. package/web/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  38. package/web/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  39. package/web/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  40. package/web/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  41. package/web/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  42. package/web/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  43. package/web/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  44. package/web/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  45. package/web/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  46. package/web/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  47. package/web/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  48. package/web/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  49. package/web/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  50. package/web/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  51. package/web/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  52. package/web/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  53. package/web/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  54. package/web/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  55. package/web/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  56. package/web/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  57. package/web/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  58. package/web/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  59. package/web/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  60. package/web/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  61. package/web/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  62. package/web/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  63. package/web/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  64. package/web/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  65. package/web/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  66. package/web/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  67. package/web/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  68. package/web/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  69. package/web/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  70. package/web/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  71. package/web/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  72. package/web/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  73. package/web/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  74. package/web/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  75. package/web/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  76. package/web/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  77. package/web/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  78. package/web/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  79. package/web/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  80. package/web/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  81. package/web/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  82. package/web/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  83. package/web/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  84. package/web/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  85. package/web/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  86. package/web/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  87. package/web/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  88. package/web/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  89. package/web/assets/MarkdownBlock-DIjYEhTK.js +56 -0
  90. package/web/assets/ModelPill-BPlgovPo.js +1 -0
  91. package/web/assets/ModelPill-CzdNh7Mt.css +1 -0
  92. package/web/assets/MuseLibraryView-CenyTTim.js +2 -0
  93. package/web/assets/MuseView-d-iBk3sc.js +6 -0
  94. package/web/assets/PageHistoryPanel-CR-k1AM7.js +2 -0
  95. package/web/assets/PageHistoryPanel-DFjh0pWs.css +1 -0
  96. package/web/assets/PdfAnnotator-CGzC_o1Q.css +1 -0
  97. package/web/assets/PdfAnnotator-D79ip27w.js +560 -0
  98. package/web/assets/ProductView-u2aezVsl.js +1 -0
  99. package/web/assets/RightPanel-C3OJTIqT.js +4 -0
  100. package/web/assets/RunLocationPicker-BNcZ7KKF.css +1 -0
  101. package/web/assets/RunLocationPicker-CTYXUH2z.js +34 -0
  102. package/web/assets/SidebarRow-BuSkKH5q.js +9 -0
  103. package/web/assets/SidebarRow-CsWEqPKX.css +1 -0
  104. package/web/assets/SketchCard-D87GADyG.js +437 -0
  105. package/web/assets/StudioGuestSurface-BijU_EEb.js +1 -0
  106. package/web/assets/TodoListView-DPPVpPUn.js +1 -0
  107. package/web/assets/Tooltip-DY4ISA-e.js +1 -0
  108. package/web/assets/UnifiedPage-CKNtVD_n.js +57 -0
  109. package/web/assets/UnifiedPage-DX_sTpyZ.css +1 -0
  110. package/web/assets/amadeus-manual.en-DWaN2fPs.js +3515 -0
  111. package/web/assets/amadeus-manual.zh--7D5TS8X.js +3515 -0
  112. package/web/assets/apl-B4CMkyY2.js +1 -0
  113. package/web/assets/appStore-Dg9WALEA.js +3080 -0
  114. package/web/assets/appStore-Di8LXuJ9.css +1 -0
  115. package/web/assets/approvalText-Cy2UAUAQ.js +2 -0
  116. package/web/assets/arrow-up-right-CpQs92mu.js +1 -0
  117. package/web/assets/artificial-BzLFkChP.css +1 -0
  118. package/web/assets/asciiarmor-Df11BRmG.js +1 -0
  119. package/web/assets/asn1-EdZsLKOL.js +1 -0
  120. package/web/assets/asterisk-B-8jnY81.js +1 -0
  121. package/web/assets/astryxBridge-BZhaZPs4.js +70 -0
  122. package/web/assets/astryxBridge-CF_hpqC2.css +1 -0
  123. package/web/assets/automationListSource-DP5xZBxo.js +1 -0
  124. package/web/assets/brainfuck-C4LP7Hcl.js +1 -0
  125. package/web/assets/calendarNavStore-C7fGRpoH.js +1 -0
  126. package/web/assets/canvasPrefs-BeG4oEgP.js +1 -0
  127. package/web/assets/chatBoxSurface-zvcyfrxE.js +1 -0
  128. package/web/assets/circle-question-mark-WL3vbp-Z.js +1 -0
  129. package/web/assets/circle-x-D7s-M5sB.js +1 -0
  130. package/web/assets/client-BSKpsyAw.js +9 -0
  131. package/web/assets/clike-B9uivgTg.js +1 -0
  132. package/web/assets/clojure-BMjYHr_A.js +1 -0
  133. package/web/assets/cmake-BQqOBYOt.js +1 -0
  134. package/web/assets/cobol-CWcv1MsR.js +1 -0
  135. package/web/assets/code-xml-BALV9u_c.js +1 -0
  136. package/web/assets/codeStudioStore-C2mWfm32.js +22 -0
  137. package/web/assets/coffeescript-S37ZYGWr.js +1 -0
  138. package/web/assets/commonlisp-DBKNyK5s.js +1 -0
  139. package/web/assets/create-4xUyKtAF.js +14 -0
  140. package/web/assets/create-BgE3edmZ.css +1 -0
  141. package/web/assets/crystal-SjHAIU92.js +1 -0
  142. package/web/assets/css-BnMrqG3P.js +1 -0
  143. package/web/assets/cursor-editorTextHighlight-kG3uUOwL.svg +8 -0
  144. package/web/assets/cypher-C_CwsFkJ.js +1 -0
  145. package/web/assets/d-pRatUO7H.js +1 -0
  146. package/web/assets/dashboardSurface-CFTH5z4c.js +1 -0
  147. package/web/assets/deskCapture-Df701U8L.js +1 -0
  148. package/web/assets/diff-DbItnlRl.js +1 -0
  149. package/web/assets/diff2html-BV-zCH4d.js +111 -0
  150. package/web/assets/dockerfile-BKs6k2Af.js +1 -0
  151. package/web/assets/docx-preview-DW4IyU_Q.js +22 -0
  152. package/web/assets/dtd-DF_7sFjM.js +1 -0
  153. package/web/assets/dylan-DwRh75JA.js +1 -0
  154. package/web/assets/ebnf-CDyGwa7X.js +1 -0
  155. package/web/assets/ecl-Cabwm37j.js +1 -0
  156. package/web/assets/eiffel-CnydiIhH.js +1 -0
  157. package/web/assets/ellipsis-r1EcXsFq.js +1 -0
  158. package/web/assets/elm-vLlmbW-K.js +1 -0
  159. package/web/assets/emoji-DGaxpCIu.js +1 -0
  160. package/web/assets/erlang-BNw1qcRV.js +1 -0
  161. package/web/assets/factor-kuTfRLto.js +1 -0
  162. package/web/assets/fcl-Kvtd6kyn.js +1 -0
  163. package/web/assets/floatingTocSurface-C6RJ6i41.js +1 -0
  164. package/web/assets/foldActions-B7KByFdN.js +1 -0
  165. package/web/assets/folder-DlxnPmWY.js +1 -0
  166. package/web/assets/folder-plus-D1TDb7k9.js +1 -0
  167. package/web/assets/forsion-logo-dark-DnB9JTdv.svg +5 -0
  168. package/web/assets/forsion-logo-light-DhkEeB4V.svg +11 -0
  169. package/web/assets/forth-Ffai-XNe.js +1 -0
  170. package/web/assets/fortran-DYz_wnZ1.js +1 -0
  171. package/web/assets/frame-_xBVYe3P.js +1 -0
  172. package/web/assets/gas-Bneqetm1.js +1 -0
  173. package/web/assets/gestures-CkW1Kfs9.js +1 -0
  174. package/web/assets/gherkin-heZmZLOM.js +1 -0
  175. package/web/assets/groovy-D9Dt4D0W.js +1 -0
  176. package/web/assets/hack2gate-dark-Dx2RtDRI.jpg +0 -0
  177. package/web/assets/hack2gate-light-DRKq9tyS.jpg +0 -0
  178. package/web/assets/hand-Crrw-nSn.js +1 -0
  179. package/web/assets/hard-drive-BbyVSbfP.js +1 -0
  180. package/web/assets/haskell-Cw1EW3IL.js +1 -0
  181. package/web/assets/haxe-H-WmDvRZ.js +1 -0
  182. package/web/assets/http-DBlCnlav.js +1 -0
  183. package/web/assets/i18n-D-eU58uw.css +1 -0
  184. package/web/assets/i18n.generated-Bbsz16cl.js +15 -0
  185. package/web/assets/idl-BEugSyMb.js +1 -0
  186. package/web/assets/imageStudio-BqbNOvpu.css +1 -0
  187. package/web/assets/imageStudio-C_Rs630L.js +2 -0
  188. package/web/assets/index--drOLtq7.js +1 -0
  189. package/web/assets/index-BCZZVJ_w.js +1 -0
  190. package/web/assets/index-BCubCwdT.js +1 -0
  191. package/web/assets/index-BRW82CsP.js +6 -0
  192. package/web/assets/index-BYsdKR_1.js +1 -0
  193. package/web/assets/index-Brik2pf9.js +1 -0
  194. package/web/assets/index-C6GJulug.js +13 -0
  195. package/web/assets/index-C7U6T-k8.js +1 -0
  196. package/web/assets/index-CF4RV4mh.js +298 -0
  197. package/web/assets/index-CflzrdSt.js +1 -0
  198. package/web/assets/index-Cmr7gVZQ.js +1 -0
  199. package/web/assets/index-CqyM6tQ0.js +1 -0
  200. package/web/assets/index-CzM-C2Sd.js +1 -0
  201. package/web/assets/index-Czu_bbDM.js +1 -0
  202. package/web/assets/index-D1f_JwPH.js +1 -0
  203. package/web/assets/index-DKhyDkGB.js +7 -0
  204. package/web/assets/index-DUWR2nZi.js +1 -0
  205. package/web/assets/index-DZfZTksa.js +1 -0
  206. package/web/assets/index-Dg9oixs4.js +1 -0
  207. package/web/assets/index-DjzSBM0U.js +2 -0
  208. package/web/assets/index-KL5Rj9kP.js +1 -0
  209. package/web/assets/index-OHi69jDq.js +3 -0
  210. package/web/assets/index-SZ5waGAq.js +1 -0
  211. package/web/assets/index-gPSbFSUn.js +1 -0
  212. package/web/assets/index-tAXBa_fN.js +1 -0
  213. package/web/assets/invitePage-lLQ-e0pj.js +19 -0
  214. package/web/assets/ipc-DQOD2UKk.js +1 -0
  215. package/web/assets/javascript-iXu5QeM3.js +1 -0
  216. package/web/assets/jszip.min-DZxV9uZ_.js +2 -0
  217. package/web/assets/julia-DuME0IfC.js +1 -0
  218. package/web/assets/layout-grid-B_pjJwz4.js +1 -0
  219. package/web/assets/linkFollow-C0_3k_PC.js +8 -0
  220. package/web/assets/list-tree-DkAJYEXd.js +1 -0
  221. package/web/assets/listFold-BsOVn9UZ.js +1 -0
  222. package/web/assets/livescript-BwQOo05w.js +1 -0
  223. package/web/assets/lock-BnGHxjeE.js +1 -0
  224. package/web/assets/log-out-DBuMeqik.js +1 -0
  225. package/web/assets/lua-VAEuO923.js +1 -0
  226. package/web/assets/main-Dki8NlsT.js +21 -0
  227. package/web/assets/main-NgUPPqDn.css +1 -0
  228. package/web/assets/markdownEditorSurface-B4PeUzed.js +3 -0
  229. package/web/assets/markdownEditorSurface-Bql20IAf.css +1 -0
  230. package/web/assets/mathematica-DTrFuWx2.js +1 -0
  231. package/web/assets/mbox-CNhZ1qSd.js +1 -0
  232. package/web/assets/mdMarkStore-CsKl7C8O.js +2 -0
  233. package/web/assets/mdMarks-Bq7Hl-4C.js +1 -0
  234. package/web/assets/message-square-plus-BiAZAvcw.js +1 -0
  235. package/web/assets/messages-BH5MfQdZ.js +1 -0
  236. package/web/assets/minus-Cyv1YzOU.js +1 -0
  237. package/web/assets/mirc-CjQqDB4T.js +1 -0
  238. package/web/assets/mllike-CXdrOF99.js +1 -0
  239. package/web/assets/mobileEntry-Bd_nKr0D.js +13 -0
  240. package/web/assets/mobileEntry-DS1vohuL.css +1 -0
  241. package/web/assets/modelica-Dc1JOy9r.js +1 -0
  242. package/web/assets/mscgen-BA5vi2Kp.js +1 -0
  243. package/web/assets/mumps-BT43cFF4.js +1 -0
  244. package/web/assets/nativeDownload-D-f1_L2S.js +1 -0
  245. package/web/assets/nginx-DdIZxoE0.js +1 -0
  246. package/web/assets/nsis-LdVXkNf5.js +1 -0
  247. package/web/assets/ntriples-BfvgReVJ.js +1 -0
  248. package/web/assets/octave-Ck1zUtKM.js +1 -0
  249. package/web/assets/oz-BzwKVEFT.js +1 -0
  250. package/web/assets/pageChrome-C9_azUYW.js +1 -0
  251. package/web/assets/pageChrome-xLNdFaSg.css +1 -0
  252. package/web/assets/pageTree-CZH2J6cc.js +7 -0
  253. package/web/assets/panel-left-rOc8As0s.js +1 -0
  254. package/web/assets/pascal--L3eBynH.js +1 -0
  255. package/web/assets/pdf-C2_sJa3b.js +57 -0
  256. package/web/assets/pdf.worker.min-CGb3BKV9.js +1 -0
  257. package/web/assets/pdf.worker.min-Dr1KORA9.mjs +31 -0
  258. package/web/assets/pen-line-m6_HvWZ9.js +1 -0
  259. package/web/assets/pen-tool-lkmBqliH.js +1 -0
  260. package/web/assets/pencil-Cvk91P_Z.js +1 -0
  261. package/web/assets/perl-CdXCOZ3F.js +1 -0
  262. package/web/assets/pig-CevX1Tat.js +1 -0
  263. package/web/assets/pluginExt-Byb64tQO.js +1 -0
  264. package/web/assets/powershell-CFHJl5sT.js +1 -0
  265. package/web/assets/properties-C78fOPTZ.js +1 -0
  266. package/web/assets/protobuf-ChK-085T.js +1 -0
  267. package/web/assets/pug-DeIclll2.js +1 -0
  268. package/web/assets/puppet-DMA9R1ak.js +1 -0
  269. package/web/assets/python-BuPzkPfP.js +1 -0
  270. package/web/assets/q-pXgVlZs6.js +1 -0
  271. package/web/assets/r-B6wPVr8A.js +1 -0
  272. package/web/assets/redo-2-DSi54z4e.js +1 -0
  273. package/web/assets/rotate-ccw-CUlnplr0.js +1 -0
  274. package/web/assets/rpm-CTu-6PCP.js +1 -0
  275. package/web/assets/ruby-B2Rjki9n.js +1 -0
  276. package/web/assets/sas-B4kiWyti.js +1 -0
  277. package/web/assets/scheme-C41bIUwD.js +1 -0
  278. package/web/assets/sharePage-MM6UpPJ9.js +2 -0
  279. package/web/assets/shareViewer-CDZ8lTdy.js +345 -0
  280. package/web/assets/shareViewer-DLVrwanO.css +1 -0
  281. package/web/assets/shell-CjFT_Tl9.js +1 -0
  282. package/web/assets/sieve-C3Gn_uJK.js +1 -0
  283. package/web/assets/simple-mode-GW_nhZxv.js +1 -0
  284. package/web/assets/smalltalk-CnHTOXQT.js +1 -0
  285. package/web/assets/solr-DehyRSwq.js +1 -0
  286. package/web/assets/sparql-DkYu6x3z.js +1 -0
  287. package/web/assets/spreadsheet-BCZA_wO0.js +1 -0
  288. package/web/assets/sql-D0XecflT.js +1 -0
  289. package/web/assets/star-CwDiGyUW.js +1 -0
  290. package/web/assets/stex-C3f8Ysf7.js +1 -0
  291. package/web/assets/sticky-note-BIuPUSOU.js +1 -0
  292. package/web/assets/stylus-B533Al4x.js +1 -0
  293. package/web/assets/swift-BzpIVaGY.js +1 -0
  294. package/web/assets/tableSurface-CDNa0QFp.css +1 -0
  295. package/web/assets/tableSurface-Y_JBQsuz.js +1 -0
  296. package/web/assets/tcl-DVfN8rqt.js +1 -0
  297. package/web/assets/terminal-DIXogYJY.js +1 -0
  298. package/web/assets/terminalView-B3aZSsrQ.js +12 -0
  299. package/web/assets/terminalView-DFuMZ0ql.css +1 -0
  300. package/web/assets/textile-CnDTJFAw.js +1 -0
  301. package/web/assets/theme-DfEi_DND.css +1 -0
  302. package/web/assets/theme-OMpAfNto.css +1 -0
  303. package/web/assets/tiddlywiki-DO-Gjzrf.js +1 -0
  304. package/web/assets/tiki-DGYXhP31.js +1 -0
  305. package/web/assets/toml-Bm5Em-hy.js +1 -0
  306. package/web/assets/troff-wAsdV37c.js +1 -0
  307. package/web/assets/ttcn-CfJYG6tj.js +1 -0
  308. package/web/assets/ttcn-cfg-B9xdYoR4.js +1 -0
  309. package/web/assets/turtle-B1tBg_DP.js +1 -0
  310. package/web/assets/type-Cqoabh7H.js +1 -0
  311. package/web/assets/undo-2-tUKCv5Gs.js +1 -0
  312. package/web/assets/unitAccount-D8lVwaaT.js +1 -0
  313. package/web/assets/unitBridge-D547ublk.js +1 -0
  314. package/web/assets/unitCloudTransport-BVF6lVp4.js +1 -0
  315. package/web/assets/unitOwnerAccess-BfnEjsZb.js +1 -0
  316. package/web/assets/unitShim-DxetRgmP.js +5 -0
  317. package/web/assets/upload-BbeAsMuD.js +1 -0
  318. package/web/assets/userSpaces-DyyAn7vj.js +1 -0
  319. package/web/assets/vb-CmGdzxic.js +1 -0
  320. package/web/assets/vbscript-BuJXcnF6.js +1 -0
  321. package/web/assets/velocity-D8B20fx6.js +1 -0
  322. package/web/assets/verilog-C6RDOZhf.js +1 -0
  323. package/web/assets/vhdl-lSbBsy5d.js +1 -0
  324. package/web/assets/viewportLock-C4SX-9PO.js +103 -0
  325. package/web/assets/viewportLock-DYSe7Jsn.css +1 -0
  326. package/web/assets/waves-horizontal-B8ZpHQ5H.js +1 -0
  327. package/web/assets/webidl-ZXfAyPTL.js +1 -0
  328. package/web/assets/workflow-DuoVRSSX.js +1 -0
  329. package/web/assets/xlsx-CNerDvZX.js +105 -0
  330. package/web/assets/xquery-DzFWVndE.js +1 -0
  331. package/web/assets/yacas-BJ4BC0dw.js +1 -0
  332. package/web/assets/z80-Hz9HOZM7.js +1 -0
  333. package/web/assets/zoom-in-hr5bRpDL.js +1 -0
  334. package/web/excalidraw/excalidraw.css +1 -0
  335. package/web/excalidraw/excalidraw.js +579 -0
  336. package/web/excalidraw/fonts/Assistant/Assistant-Bold.woff2 +0 -0
  337. package/web/excalidraw/fonts/Assistant/Assistant-Medium.woff2 +0 -0
  338. package/web/excalidraw/fonts/Assistant/Assistant-Regular.woff2 +0 -0
  339. package/web/excalidraw/fonts/Assistant/Assistant-SemiBold.woff2 +0 -0
  340. package/web/excalidraw/fonts/Cascadia/CascadiaCode-Regular.woff2 +0 -0
  341. package/web/excalidraw/fonts/ComicShanns/ComicShanns-Regular-279a7b317d12eb88de06167bd672b4b4.woff2 +0 -0
  342. package/web/excalidraw/fonts/ComicShanns/ComicShanns-Regular-6e066e8de2ac57ea9283adb9c24d7f0c.woff2 +0 -0
  343. package/web/excalidraw/fonts/ComicShanns/ComicShanns-Regular-dc6a8806fa96795d7b3be5026f989a17.woff2 +0 -0
  344. package/web/excalidraw/fonts/ComicShanns/ComicShanns-Regular-fcb0fc02dcbee4c9846b3e2508668039.woff2 +0 -0
  345. package/web/excalidraw/fonts/Excalifont/Excalifont-Regular-349fac6ca4700ffec595a7150a0d1e1d.woff2 +0 -0
  346. package/web/excalidraw/fonts/Excalifont/Excalifont-Regular-3f2c5db56cc93c5a6873b1361d730c16.woff2 +0 -0
  347. package/web/excalidraw/fonts/Excalifont/Excalifont-Regular-41b173a47b57366892116a575a43e2b6.woff2 +0 -0
  348. package/web/excalidraw/fonts/Excalifont/Excalifont-Regular-623ccf21b21ef6b3a0d87738f77eb071.woff2 +0 -0
  349. package/web/excalidraw/fonts/Excalifont/Excalifont-Regular-a88b72a24fb54c9f94e3b5fdaa7481c9.woff2 +0 -0
  350. package/web/excalidraw/fonts/Excalifont/Excalifont-Regular-b9dcf9d2e50a1eaf42fc664b50a3fd0d.woff2 +0 -0
  351. package/web/excalidraw/fonts/Excalifont/Excalifont-Regular-be310b9bcd4f1a43f571c46df7809174.woff2 +0 -0
  352. package/web/excalidraw/fonts/Liberation/LiberationSans-Regular.woff2 +0 -0
  353. package/web/excalidraw/fonts/Lilita/Lilita-Regular-i7dPIFZ9Zz-WBtRtedDbYE98RXi4EwSsbg.woff2 +0 -0
  354. package/web/excalidraw/fonts/Lilita/Lilita-Regular-i7dPIFZ9Zz-WBtRtedDbYEF8RXi4EwQ.woff2 +0 -0
  355. package/web/excalidraw/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTA3j6zbXWjgevT5.woff2 +0 -0
  356. package/web/excalidraw/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTQ3j6zbXWjgeg.woff2 +0 -0
  357. package/web/excalidraw/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTk3j6zbXWjgevT5.woff2 +0 -0
  358. package/web/excalidraw/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTo3j6zbXWjgevT5.woff2 +0 -0
  359. package/web/excalidraw/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTs3j6zbXWjgevT5.woff2 +0 -0
  360. package/web/excalidraw/fonts/Virgil/Virgil-Regular.woff2 +0 -0
  361. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-019d66dcad46dc156b162d267f981c20.woff2 +0 -0
  362. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-04b718e5623574919c8b0dea5f301444.woff2 +0 -0
  363. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-069e77aac84590e2e991d0a0176d34f2.woff2 +0 -0
  364. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-06c77b8c66e51ed6c63ccb502dd8b8af.woff2 +0 -0
  365. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-08e0dc436ad0ad61ba5558db0674d762.woff2 +0 -0
  366. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-093b9ef39a46ceae95a1df18a0a3a326.woff2 +0 -0
  367. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-095c169f3314805276f603a362766abd.woff2 +0 -0
  368. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-09850c4077f3fffe707905872e0e2460.woff2 +0 -0
  369. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-0986d134c05864f5025962eef9f994a0.woff2 +0 -0
  370. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-0b5d723fdc4e249c140f0909e87d03b4.woff2 +0 -0
  371. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-0f626226ba1272e832aea87bafd9720e.woff2 +0 -0
  372. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-0f7fb1e0d5015bb1371343153ecf7ce3.woff2 +0 -0
  373. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-0fa55a080fcd0f9dc2e0b0058b793df8.woff2 +0 -0
  374. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-0facdf1ea213ba40261022f5d5ed4493.woff2 +0 -0
  375. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-10a7ae9a371830a80c3d844acf1c02d7.woff2 +0 -0
  376. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-112c051027b2d766c19a519f6ee1f4f7.woff2 +0 -0
  377. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-11c345711937f0ba4b8f7b6b919c8440.woff2 +0 -0
  378. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-12b52b58eb3df36804b9a654ec9ee194.woff2 +0 -0
  379. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-13ae07ed2e272d26d59bc0691cd7117a.woff2 +0 -0
  380. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-13d2887ec8ee73c43acdabc52a05af7b.woff2 +0 -0
  381. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-145aa02cdd91946e67dc934e1acffe75.woff2 +0 -0
  382. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-15dc6d811c9cd078f9086a740d5a1038.woff2 +0 -0
  383. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-173945821411c09f70c95f98d590e697.woff2 +0 -0
  384. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-1b611157cd46bb184d4fa4dae2d6a2b8.woff2 +0 -0
  385. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-1e6fd68f1f3902ce48ce8c69df385622.woff2 +0 -0
  386. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-1ee544f0f1dac422545c505baa788992.woff2 +0 -0
  387. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-1fdc0c67ed57263a80fd108c1f6ccf24.woff2 +0 -0
  388. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-203b0e569e3b14aac86a003dc3fa523e.woff2 +0 -0
  389. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-20cc1bbf50e7efb442756cb605672c1f.woff2 +0 -0
  390. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-20e7bf72fa05de9adf7dbcc7bf51dde6.woff2 +0 -0
  391. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-21430ee05a1248901da8d0de08744d47.woff2 +0 -0
  392. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-23686f7f29da6e8008c36dd3a80c83d6.woff2 +0 -0
  393. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-23ad2d71b280f00b1363b95b7bea94eb.woff2 +0 -0
  394. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-23f228f3999c01983860012330e4be08.woff2 +0 -0
  395. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-24476a126f129212beb33f66853ea151.woff2 +0 -0
  396. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-24a21c1e4449222e8d1898d69ff3a404.woff2 +0 -0
  397. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-25b7f38e18f035f96cb5e547bd2bd08c.woff2 +0 -0
  398. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-29cec36cd205b211da97acabaa62f055.woff2 +0 -0
  399. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-2a26d20a23b00898ce82f09d2ee47c3f.woff2 +0 -0
  400. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-2adbc89c11e65905393d3dfc468b9d5b.woff2 +0 -0
  401. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-2b7441d46298788ac94e610ffcc709b6.woff2 +0 -0
  402. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-2b77e8ebfb2367ab2662396a60e7d320.woff2 +0 -0
  403. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-2cf96d082d35ea3d8106851223ad0d16.woff2 +0 -0
  404. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-2d43040e86ff03ba677f6f9c04cd0805.woff2 +0 -0
  405. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-2e33e8dc771ef5e1d9127d60a6b73679.woff2 +0 -0
  406. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-33432927cd87d40cfe393c7482bf221f.woff2 +0 -0
  407. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-353f33792a8f60dc69323ddf635a269e.woff2 +0 -0
  408. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-36925dfe329a45086cbb7fc5c20d45ac.woff2 +0 -0
  409. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-3717077e38f98d89eae729b6c14e56dc.woff2 +0 -0
  410. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-3756e81d3e149cf6099163ee79944fec.woff2 +0 -0
  411. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-395c35dd584b56b0789f58a0559beaf1.woff2 +0 -0
  412. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-3c9de2ae0ea4bc91a510942dfa4be8d2.woff2 +0 -0
  413. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-3cc70dbb64df5b21f1326cc24dee2195.woff2 +0 -0
  414. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-3e1f8f654357353bf0e04ba5c34b5f7f.woff2 +0 -0
  415. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-3e63ed8162808a9e425ed80a8bc79114.woff2 +0 -0
  416. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-3eaa538115d76932653c21d8dc28f207.woff2 +0 -0
  417. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-4095eb84ef3874e2600247bee0b04026.woff2 +0 -0
  418. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-41521fade99856108931b4768b1b2648.woff2 +0 -0
  419. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-450da755d5bcb70906e1295e559b9602.woff2 +0 -0
  420. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-452225341522a7942f0f6aab1a5c91a3.woff2 +0 -0
  421. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-4535823663ad81405188a528d8f2b1a2.woff2 +0 -0
  422. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-4806e761d750087c2d734fc64596eaff.woff2 +0 -0
  423. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-4a0fdb40036e87b40aa08dd30584cb85.woff2 +0 -0
  424. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-4a38cc3e9cf104e69ba246d37f8cf135.woff2 +0 -0
  425. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-4aca6a43e59aceee2166b0c7e4e85ef1.woff2 +0 -0
  426. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-4bfaa8ffa64c5ee560aa2daba7c9cbd3.woff2 +0 -0
  427. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-4dc6d5f188d5c96d44815cd1e81aa885.woff2 +0 -0
  428. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-4ddc14ed3eb0c3e46364317dfc0144a3.woff2 +0 -0
  429. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-4ee10ae43505e2e0bc62656ced49c0fa.woff2 +0 -0
  430. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-4f50e5136e136527280bc902c5817561.woff2 +0 -0
  431. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-51502f1206be09c565f1547c406e9558.woff2 +0 -0
  432. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-51a0e808bbc8361236ac521a119758a3.woff2 +0 -0
  433. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-52a84a22fd1369bffeaf21da2d6158dc.woff2 +0 -0
  434. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-5330a2119a716e4e7224ed108b085dac.woff2 +0 -0
  435. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-543fa46ace099a7099dad69123399400.woff2 +0 -0
  436. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-544fc28abe2c5c30e62383fd4dac255f.woff2 +0 -0
  437. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-54acdfc2166ad7fcbd074f75fd4a56ba.woff2 +0 -0
  438. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-5572b3513ba8df57a3d5d7303ee6b11b.woff2 +0 -0
  439. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-56467a5c8840c4d23a60b2f935114848.woff2 +0 -0
  440. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-56a32a7689abd0326e57c10c6c069bb4.woff2 +0 -0
  441. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-57862b464a55b18c7bf234ce22907d73.woff2 +0 -0
  442. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-583d166e56ba0de4b77eabb47ef67839.woff2 +0 -0
  443. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-5882ffa04f32584d26109137e2da4352.woff2 +0 -0
  444. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-58fd02350d0bc52cf1ca3bb32ce9766e.woff2 +0 -0
  445. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-5935a5775af3d5c6307ac667bd9ae74e.woff2 +0 -0
  446. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-59e9ff77b0efaf684bc09274fb6908c9.woff2 +0 -0
  447. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-5a1ce3117cfe90c48e8fb4a9a00f694d.woff2 +0 -0
  448. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-5a45d991244d4c7140217e1e5f5ca4f4.woff2 +0 -0
  449. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-5a7fac4b8b23a6e4e5ba0c9bf1756c91.woff2 +0 -0
  450. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-5b0ed6971aaab9c8ad563230bd5471a7.woff2 +0 -0
  451. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-5d2898fbc097a7e24c6f38d80587621e.woff2 +0 -0
  452. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-603aefd23e350ba7eb124273e3c9bcf1.woff2 +0 -0
  453. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-60a3089806700d379f11827ee9843b6b.woff2 +0 -0
  454. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-60a41c7e1c68f22424e6d22df544bc82.woff2 +0 -0
  455. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-642b26e2e5f5fb780b51b593dbc8c851.woff2 +0 -0
  456. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-66493ba5a8367f2928812f446f47b56a.woff2 +0 -0
  457. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-670ba603758d94268e8606f240a42e12.woff2 +0 -0
  458. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-671a2c20b1eb9e4ef8a192833940e319.woff2 +0 -0
  459. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-684d65f1793cac449dde5d59cb3c47fb.woff2 +0 -0
  460. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-69c09cc5fa3e55c74fc4821f76909cc3.woff2 +0 -0
  461. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-6ae5b42180ad70b971c91e7eefb8eba2.woff2 +0 -0
  462. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-6e092f71c1e634059ada0e52abadce67.woff2 +0 -0
  463. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-6f3256af8454371776bc46670d33cc65.woff2 +0 -0
  464. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-6fe5c5973cc06f74b2387a631ea36b88.woff2 +0 -0
  465. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-70c2eb8d64e71a42a834eb857ea9df51.woff2 +0 -0
  466. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-70e811fd7994e61f408c923de6ddd078.woff2 +0 -0
  467. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-7197d6fda6cba7c3874c53d6381ca239.woff2 +0 -0
  468. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-72252d73220fa3cd856677888cee1635.woff2 +0 -0
  469. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-72536a3d71b694a0d53dd90ddceae41e.woff2 +0 -0
  470. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-726303e0774b4e678bff8c2deb6ca603.woff2 +0 -0
  471. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-733171b4ffcd17ea1fe1c0ba627173bf.woff2 +0 -0
  472. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-739bc1a567439c7cffcd1614644593d2.woff2 +0 -0
  473. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-73e309718fd16cea44b4d54a33581811.woff2 +0 -0
  474. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-7494dc504ae00ee9cd0505f990f88c5d.woff2 +0 -0
  475. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-74e2263a91439c25b91d5132ce9f4d62.woff2 +0 -0
  476. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-761d05e3cd968cf574166867998ef06a.woff2 +0 -0
  477. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-7718fe60986d8b42b1be9c5ace5ccf25.woff2 +0 -0
  478. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-774d4f764a1299da5d28ec2f2ffe0d69.woff2 +0 -0
  479. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-79d494361ae093b69e74ee9dbe65bfd4.woff2 +0 -0
  480. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-79f007c1c6d07557120982951ea67998.woff2 +0 -0
  481. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-7a07ddc0f0c0f5f4a9bad6ee3dda66b5.woff2 +0 -0
  482. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-7ab2bed91166a9dca83a5ebfbe2a7f38.woff2 +0 -0
  483. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-7ccce86603f80a099ddb0cb21d4ae3e3.woff2 +0 -0
  484. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-7e4bde7e9c7f84cd34d8a845e384c746.woff2 +0 -0
  485. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-7e929f262f30c8ee78bf398150b1a7cd.woff2 +0 -0
  486. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-7eb9fffd1aa890d07d0f88cc82e6cfe4.woff2 +0 -0
  487. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-7f855356ab893b0d2b9c1c83b8116f0e.woff2 +0 -0
  488. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-829615148e6357d826b9242eb7fbbd1e.woff2 +0 -0
  489. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-866fa7613df6b3fd272bcfd4530c0bb9.woff2 +0 -0
  490. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-87599f94b6cc129d505b375798d0d751.woff2 +0 -0
  491. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-8c2f33cee3993174f7e87c28e4bf42ee.woff2 +0 -0
  492. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-8d3bcabb847b56243b16afe62adaaf21.woff2 +0 -0
  493. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-8de5b863cb50dfefdd07cb11c774d579.woff2 +0 -0
  494. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-8e9f97f01034820170065b2921b4fb5e.woff2 +0 -0
  495. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-8f476c4c99813d57cbe6eca4727388ad.woff2 +0 -0
  496. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-903bb6865f3452e2fda42e3a25547bc5.woff2 +0 -0
  497. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-91ddb2969bf2d31ba02ad82998d1314c.woff2 +0 -0
  498. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-938d90c10ff8c20386af7f242c05d6b0.woff2 +0 -0
  499. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-93fc8f28a33234bcadf1527cafabd502.woff2 +0 -0
  500. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-95429962233afd82db1c27df1500a28c.woff2 +0 -0
  501. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-9544732d2e62d1a429674f8ee41b5d3a.woff2 +0 -0
  502. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-9592bfc861f07bcb8d75c196b370e548.woff2 +0 -0
  503. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-95bfd249da4902577b4b7d76ebdd0b44.woff2 +0 -0
  504. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-968cffdc8ee679da094e77ebf50f58ef.woff2 +0 -0
  505. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-97f7f48ce90c9429bf32ae51469db74d.woff2 +0 -0
  506. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-982b630266d87db93d2539affb1275c6.woff2 +0 -0
  507. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-98f2ad84457de7f3740d9920b8fa8667.woff2 +0 -0
  508. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-99a16ef6a64934d5781933dbd9c46b2e.woff2 +0 -0
  509. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-9cfb2a77a4e45025105ad29a1748b90d.woff2 +0 -0
  510. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-9d81066dd2b337c938df6e90380a00dc.woff2 +0 -0
  511. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-9eb5a99df4e76ac3363453ac9ca288b1.woff2 +0 -0
  512. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-a004ddfcb26e67bd6e678c8ed19e25ce.woff2 +0 -0
  513. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-a0ca5df4258213d7fc9fce80f65ce760.woff2 +0 -0
  514. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-a1f916d6039285c4ffb900cd654e418f.woff2 +0 -0
  515. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-a203b91dad570bf05a58c3c3ddb529bf.woff2 +0 -0
  516. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-a365e82ed54697a52f27adcea1315fe8.woff2 +0 -0
  517. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-a4c34be6d42152e64b0df90bc4607f64.woff2 +0 -0
  518. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-a7accba310e821da5505f71c03b76bdb.woff2 +0 -0
  519. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-aa0d470430e6391eca720c7cfa44446f.woff2 +0 -0
  520. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-aa5c9ca6cf4fba00433b7aa3fa10671a.woff2 +0 -0
  521. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-ac9ceb44437becc3e9c4dbfebab7fc2d.woff2 +0 -0
  522. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-b1220a3c61f85cc0408deedb4c5f57a2.woff2 +0 -0
  523. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-b358f7a51ece39a3247942b1feabdb29.woff2 +0 -0
  524. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-b57aaedfd8ebdf3931f25119dc6a5eb2.woff2 +0 -0
  525. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-b5c1596551c256e0e9cf02028595b092.woff2 +0 -0
  526. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-b6d128682ee29e471486354d486a1b90.woff2 +0 -0
  527. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-b6fd38ca30869792244804b04bc058da.woff2 +0 -0
  528. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-b7d203b051eff504ff59ddca7576b6a9.woff2 +0 -0
  529. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-b96d9226ce77ec94ceca043d712182e6.woff2 +0 -0
  530. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-ba3de316d63c7e339987b16f41a0b879.woff2 +0 -0
  531. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-bafff7a14c27403dcc6cf1432e8ea836.woff2 +0 -0
  532. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-bd77e3c7f9e0b072d96af37f73d1aa32.woff2 +0 -0
  533. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-be549ab72f0719d606a5c01e2c0219b6.woff2 +0 -0
  534. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-c16ed9740b85badf16e86ea782a3062f.woff2 +0 -0
  535. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-c1f94158256bb1f3bf665b053d895af9.woff2 +0 -0
  536. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-c40533fdf4cc57177b12803598af7e59.woff2 +0 -0
  537. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-c4a687ac4f0c2766eefc9f77ed99cddf.woff2 +0 -0
  538. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-c69f61a4ab18d0488c8d1fc12e7028e8.woff2 +0 -0
  539. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-c8b71798409ccc126ee264a00aadcf21.woff2 +0 -0
  540. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-c99eda15fc26a2941579560f76c3a5cf.woff2 +0 -0
  541. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-cb17fc3db95f6d139afc9d31a8e93293.woff2 +0 -0
  542. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-cbaaefaaf326668277aa24dfa93c4d28.woff2 +0 -0
  543. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-cd145ce4a0ea18469358df53c207bc1b.woff2 +0 -0
  544. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-cdbce89e82cc1ab53a2decbf5819278f.woff2 +0 -0
  545. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-ce4884f96f11589608b76b726a755803.woff2 +0 -0
  546. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-cf2cc71752631e579e35b0e423bf2638.woff2 +0 -0
  547. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-cf6ff4e0f491ca0cf3038187a997b9b4.woff2 +0 -0
  548. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-cfb211578629b7e8153b37240de6a9d5.woff2 +0 -0
  549. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-d0cf73942fea1c74edbdf0b3011f4656.woff2 +0 -0
  550. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-d2666cbed13462c5dc36fa2f15c202ca.woff2 +0 -0
  551. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-d3716376641d615e2995605b29bca7b6.woff2 +0 -0
  552. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-dac48066b5883d8b4551fc584f0c2a3e.woff2 +0 -0
  553. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-dbea1af6dcd9860be40c3d18254338f5.woff2 +0 -0
  554. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-e11567fd2accf9957cd0d3c2be937d87.woff2 +0 -0
  555. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-e2ead7ea7da0437f085f42ffc05f8d13.woff2 +0 -0
  556. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-e3fcf5180fd466c8915c4e8069491054.woff2 +0 -0
  557. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-e480d9c614742d05f0e78f274f1e69e6.woff2 +0 -0
  558. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-e4bca6cfa53e499cae0a6be4894a90e9.woff2 +0 -0
  559. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-e51ef413167c6e14e0c0fdcc585f2fc9.woff2 +0 -0
  560. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-e5f453bb04da18eed01675eeebd88bf8.woff2 +0 -0
  561. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-e656f091b9dc4709722c9f4b84d3c797.woff2 +0 -0
  562. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-ec181b795ac1fb5a50d700b6e996d745.woff2 +0 -0
  563. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-ee8bae97908d5147b423f77ad0d3c1bb.woff2 +0 -0
  564. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-f0f13b5c60e0af5553bd359f5513be1b.woff2 +0 -0
  565. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-f2b54d4e7be0eaefe1c2c56836fa5368.woff2 +0 -0
  566. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-f56414bf9bced67990def8660e306759.woff2 +0 -0
  567. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-f5d079153c99a25b9be5b8583c4cc8a7.woff2 +0 -0
  568. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-f6032fc06eb20480f096199713f70885.woff2 +0 -0
  569. package/web/excalidraw/fonts/Xiaolai/Xiaolai-Regular-f8ee5d36068a42b51d0e4a1116cfcec1.woff2 +0 -0
  570. package/web/fonts/LICENSE-_fontsource-variable_inter.txt +93 -0
  571. package/web/fonts/LICENSE-_fontsource-variable_jetbrains-mono.txt +93 -0
  572. package/web/fonts/LICENSE-_fontsource_lxgw-wenkai.txt +94 -0
  573. package/web/fonts/LICENSE-_fontsource_noto-sans-sc.txt +93 -0
  574. package/web/fonts/files/inter-cyrillic-ext-wght-normal.woff2 +0 -0
  575. package/web/fonts/files/inter-cyrillic-wght-normal.woff2 +0 -0
  576. package/web/fonts/files/inter-greek-ext-wght-normal.woff2 +0 -0
  577. package/web/fonts/files/inter-greek-wght-normal.woff2 +0 -0
  578. package/web/fonts/files/inter-latin-ext-wght-normal.woff2 +0 -0
  579. package/web/fonts/files/inter-latin-wght-normal.woff2 +0 -0
  580. package/web/fonts/files/inter-vietnamese-wght-normal.woff2 +0 -0
  581. package/web/fonts/files/jetbrains-mono-cyrillic-ext-wght-normal.woff2 +0 -0
  582. package/web/fonts/files/jetbrains-mono-cyrillic-wght-normal.woff2 +0 -0
  583. package/web/fonts/files/jetbrains-mono-greek-wght-normal.woff2 +0 -0
  584. package/web/fonts/files/jetbrains-mono-latin-ext-wght-normal.woff2 +0 -0
  585. package/web/fonts/files/jetbrains-mono-latin-wght-normal.woff2 +0 -0
  586. package/web/fonts/files/jetbrains-mono-vietnamese-wght-normal.woff2 +0 -0
  587. package/web/fonts/files/lxgw-wenkai-latin-500-normal.woff2 +0 -0
  588. package/web/fonts/files/noto-sans-sc-100-400-normal.woff2 +0 -0
  589. package/web/fonts/files/noto-sans-sc-100-700-normal.woff2 +0 -0
  590. package/web/fonts/files/noto-sans-sc-101-400-normal.woff2 +0 -0
  591. package/web/fonts/files/noto-sans-sc-101-700-normal.woff2 +0 -0
  592. package/web/fonts/files/noto-sans-sc-102-400-normal.woff2 +0 -0
  593. package/web/fonts/files/noto-sans-sc-102-700-normal.woff2 +0 -0
  594. package/web/fonts/files/noto-sans-sc-103-400-normal.woff2 +0 -0
  595. package/web/fonts/files/noto-sans-sc-103-700-normal.woff2 +0 -0
  596. package/web/fonts/files/noto-sans-sc-104-400-normal.woff2 +0 -0
  597. package/web/fonts/files/noto-sans-sc-104-700-normal.woff2 +0 -0
  598. package/web/fonts/files/noto-sans-sc-105-400-normal.woff2 +0 -0
  599. package/web/fonts/files/noto-sans-sc-105-700-normal.woff2 +0 -0
  600. package/web/fonts/files/noto-sans-sc-106-400-normal.woff2 +0 -0
  601. package/web/fonts/files/noto-sans-sc-106-700-normal.woff2 +0 -0
  602. package/web/fonts/files/noto-sans-sc-107-400-normal.woff2 +0 -0
  603. package/web/fonts/files/noto-sans-sc-107-700-normal.woff2 +0 -0
  604. package/web/fonts/files/noto-sans-sc-108-400-normal.woff2 +0 -0
  605. package/web/fonts/files/noto-sans-sc-108-700-normal.woff2 +0 -0
  606. package/web/fonts/files/noto-sans-sc-109-400-normal.woff2 +0 -0
  607. package/web/fonts/files/noto-sans-sc-109-700-normal.woff2 +0 -0
  608. package/web/fonts/files/noto-sans-sc-110-400-normal.woff2 +0 -0
  609. package/web/fonts/files/noto-sans-sc-110-700-normal.woff2 +0 -0
  610. package/web/fonts/files/noto-sans-sc-111-400-normal.woff2 +0 -0
  611. package/web/fonts/files/noto-sans-sc-111-700-normal.woff2 +0 -0
  612. package/web/fonts/files/noto-sans-sc-112-400-normal.woff2 +0 -0
  613. package/web/fonts/files/noto-sans-sc-112-700-normal.woff2 +0 -0
  614. package/web/fonts/files/noto-sans-sc-113-400-normal.woff2 +0 -0
  615. package/web/fonts/files/noto-sans-sc-113-700-normal.woff2 +0 -0
  616. package/web/fonts/files/noto-sans-sc-114-400-normal.woff2 +0 -0
  617. package/web/fonts/files/noto-sans-sc-114-700-normal.woff2 +0 -0
  618. package/web/fonts/files/noto-sans-sc-115-400-normal.woff2 +0 -0
  619. package/web/fonts/files/noto-sans-sc-115-700-normal.woff2 +0 -0
  620. package/web/fonts/files/noto-sans-sc-116-400-normal.woff2 +0 -0
  621. package/web/fonts/files/noto-sans-sc-116-700-normal.woff2 +0 -0
  622. package/web/fonts/files/noto-sans-sc-117-400-normal.woff2 +0 -0
  623. package/web/fonts/files/noto-sans-sc-117-700-normal.woff2 +0 -0
  624. package/web/fonts/files/noto-sans-sc-118-400-normal.woff2 +0 -0
  625. package/web/fonts/files/noto-sans-sc-118-700-normal.woff2 +0 -0
  626. package/web/fonts/files/noto-sans-sc-119-400-normal.woff2 +0 -0
  627. package/web/fonts/files/noto-sans-sc-119-700-normal.woff2 +0 -0
  628. package/web/fonts/files/noto-sans-sc-21-400-normal.woff2 +0 -0
  629. package/web/fonts/files/noto-sans-sc-21-700-normal.woff2 +0 -0
  630. package/web/fonts/files/noto-sans-sc-22-400-normal.woff2 +0 -0
  631. package/web/fonts/files/noto-sans-sc-22-700-normal.woff2 +0 -0
  632. package/web/fonts/files/noto-sans-sc-23-400-normal.woff2 +0 -0
  633. package/web/fonts/files/noto-sans-sc-23-700-normal.woff2 +0 -0
  634. package/web/fonts/files/noto-sans-sc-24-400-normal.woff2 +0 -0
  635. package/web/fonts/files/noto-sans-sc-24-700-normal.woff2 +0 -0
  636. package/web/fonts/files/noto-sans-sc-25-400-normal.woff2 +0 -0
  637. package/web/fonts/files/noto-sans-sc-25-700-normal.woff2 +0 -0
  638. package/web/fonts/files/noto-sans-sc-26-400-normal.woff2 +0 -0
  639. package/web/fonts/files/noto-sans-sc-26-700-normal.woff2 +0 -0
  640. package/web/fonts/files/noto-sans-sc-27-400-normal.woff2 +0 -0
  641. package/web/fonts/files/noto-sans-sc-27-700-normal.woff2 +0 -0
  642. package/web/fonts/files/noto-sans-sc-28-400-normal.woff2 +0 -0
  643. package/web/fonts/files/noto-sans-sc-28-700-normal.woff2 +0 -0
  644. package/web/fonts/files/noto-sans-sc-29-400-normal.woff2 +0 -0
  645. package/web/fonts/files/noto-sans-sc-29-700-normal.woff2 +0 -0
  646. package/web/fonts/files/noto-sans-sc-30-400-normal.woff2 +0 -0
  647. package/web/fonts/files/noto-sans-sc-30-700-normal.woff2 +0 -0
  648. package/web/fonts/files/noto-sans-sc-31-400-normal.woff2 +0 -0
  649. package/web/fonts/files/noto-sans-sc-31-700-normal.woff2 +0 -0
  650. package/web/fonts/files/noto-sans-sc-32-400-normal.woff2 +0 -0
  651. package/web/fonts/files/noto-sans-sc-32-700-normal.woff2 +0 -0
  652. package/web/fonts/files/noto-sans-sc-33-400-normal.woff2 +0 -0
  653. package/web/fonts/files/noto-sans-sc-33-700-normal.woff2 +0 -0
  654. package/web/fonts/files/noto-sans-sc-34-400-normal.woff2 +0 -0
  655. package/web/fonts/files/noto-sans-sc-34-700-normal.woff2 +0 -0
  656. package/web/fonts/files/noto-sans-sc-35-400-normal.woff2 +0 -0
  657. package/web/fonts/files/noto-sans-sc-35-700-normal.woff2 +0 -0
  658. package/web/fonts/files/noto-sans-sc-36-400-normal.woff2 +0 -0
  659. package/web/fonts/files/noto-sans-sc-36-700-normal.woff2 +0 -0
  660. package/web/fonts/files/noto-sans-sc-37-400-normal.woff2 +0 -0
  661. package/web/fonts/files/noto-sans-sc-37-700-normal.woff2 +0 -0
  662. package/web/fonts/files/noto-sans-sc-38-400-normal.woff2 +0 -0
  663. package/web/fonts/files/noto-sans-sc-38-700-normal.woff2 +0 -0
  664. package/web/fonts/files/noto-sans-sc-39-400-normal.woff2 +0 -0
  665. package/web/fonts/files/noto-sans-sc-39-700-normal.woff2 +0 -0
  666. package/web/fonts/files/noto-sans-sc-4-400-normal.woff2 +0 -0
  667. package/web/fonts/files/noto-sans-sc-4-700-normal.woff2 +0 -0
  668. package/web/fonts/files/noto-sans-sc-40-400-normal.woff2 +0 -0
  669. package/web/fonts/files/noto-sans-sc-40-700-normal.woff2 +0 -0
  670. package/web/fonts/files/noto-sans-sc-41-400-normal.woff2 +0 -0
  671. package/web/fonts/files/noto-sans-sc-41-700-normal.woff2 +0 -0
  672. package/web/fonts/files/noto-sans-sc-42-400-normal.woff2 +0 -0
  673. package/web/fonts/files/noto-sans-sc-42-700-normal.woff2 +0 -0
  674. package/web/fonts/files/noto-sans-sc-43-400-normal.woff2 +0 -0
  675. package/web/fonts/files/noto-sans-sc-43-700-normal.woff2 +0 -0
  676. package/web/fonts/files/noto-sans-sc-44-400-normal.woff2 +0 -0
  677. package/web/fonts/files/noto-sans-sc-44-700-normal.woff2 +0 -0
  678. package/web/fonts/files/noto-sans-sc-45-400-normal.woff2 +0 -0
  679. package/web/fonts/files/noto-sans-sc-45-700-normal.woff2 +0 -0
  680. package/web/fonts/files/noto-sans-sc-46-400-normal.woff2 +0 -0
  681. package/web/fonts/files/noto-sans-sc-46-700-normal.woff2 +0 -0
  682. package/web/fonts/files/noto-sans-sc-47-400-normal.woff2 +0 -0
  683. package/web/fonts/files/noto-sans-sc-47-700-normal.woff2 +0 -0
  684. package/web/fonts/files/noto-sans-sc-48-400-normal.woff2 +0 -0
  685. package/web/fonts/files/noto-sans-sc-48-700-normal.woff2 +0 -0
  686. package/web/fonts/files/noto-sans-sc-49-400-normal.woff2 +0 -0
  687. package/web/fonts/files/noto-sans-sc-49-700-normal.woff2 +0 -0
  688. package/web/fonts/files/noto-sans-sc-5-400-normal.woff2 +0 -0
  689. package/web/fonts/files/noto-sans-sc-5-700-normal.woff2 +0 -0
  690. package/web/fonts/files/noto-sans-sc-50-400-normal.woff2 +0 -0
  691. package/web/fonts/files/noto-sans-sc-50-700-normal.woff2 +0 -0
  692. package/web/fonts/files/noto-sans-sc-51-400-normal.woff2 +0 -0
  693. package/web/fonts/files/noto-sans-sc-51-700-normal.woff2 +0 -0
  694. package/web/fonts/files/noto-sans-sc-52-400-normal.woff2 +0 -0
  695. package/web/fonts/files/noto-sans-sc-52-700-normal.woff2 +0 -0
  696. package/web/fonts/files/noto-sans-sc-53-400-normal.woff2 +0 -0
  697. package/web/fonts/files/noto-sans-sc-53-700-normal.woff2 +0 -0
  698. package/web/fonts/files/noto-sans-sc-54-400-normal.woff2 +0 -0
  699. package/web/fonts/files/noto-sans-sc-54-700-normal.woff2 +0 -0
  700. package/web/fonts/files/noto-sans-sc-55-400-normal.woff2 +0 -0
  701. package/web/fonts/files/noto-sans-sc-55-700-normal.woff2 +0 -0
  702. package/web/fonts/files/noto-sans-sc-56-400-normal.woff2 +0 -0
  703. package/web/fonts/files/noto-sans-sc-56-700-normal.woff2 +0 -0
  704. package/web/fonts/files/noto-sans-sc-57-400-normal.woff2 +0 -0
  705. package/web/fonts/files/noto-sans-sc-57-700-normal.woff2 +0 -0
  706. package/web/fonts/files/noto-sans-sc-58-400-normal.woff2 +0 -0
  707. package/web/fonts/files/noto-sans-sc-58-700-normal.woff2 +0 -0
  708. package/web/fonts/files/noto-sans-sc-59-400-normal.woff2 +0 -0
  709. package/web/fonts/files/noto-sans-sc-59-700-normal.woff2 +0 -0
  710. package/web/fonts/files/noto-sans-sc-6-400-normal.woff2 +0 -0
  711. package/web/fonts/files/noto-sans-sc-6-700-normal.woff2 +0 -0
  712. package/web/fonts/files/noto-sans-sc-60-400-normal.woff2 +0 -0
  713. package/web/fonts/files/noto-sans-sc-60-700-normal.woff2 +0 -0
  714. package/web/fonts/files/noto-sans-sc-61-400-normal.woff2 +0 -0
  715. package/web/fonts/files/noto-sans-sc-61-700-normal.woff2 +0 -0
  716. package/web/fonts/files/noto-sans-sc-62-400-normal.woff2 +0 -0
  717. package/web/fonts/files/noto-sans-sc-62-700-normal.woff2 +0 -0
  718. package/web/fonts/files/noto-sans-sc-63-400-normal.woff2 +0 -0
  719. package/web/fonts/files/noto-sans-sc-63-700-normal.woff2 +0 -0
  720. package/web/fonts/files/noto-sans-sc-64-400-normal.woff2 +0 -0
  721. package/web/fonts/files/noto-sans-sc-64-700-normal.woff2 +0 -0
  722. package/web/fonts/files/noto-sans-sc-65-400-normal.woff2 +0 -0
  723. package/web/fonts/files/noto-sans-sc-65-700-normal.woff2 +0 -0
  724. package/web/fonts/files/noto-sans-sc-66-400-normal.woff2 +0 -0
  725. package/web/fonts/files/noto-sans-sc-66-700-normal.woff2 +0 -0
  726. package/web/fonts/files/noto-sans-sc-67-400-normal.woff2 +0 -0
  727. package/web/fonts/files/noto-sans-sc-67-700-normal.woff2 +0 -0
  728. package/web/fonts/files/noto-sans-sc-68-400-normal.woff2 +0 -0
  729. package/web/fonts/files/noto-sans-sc-68-700-normal.woff2 +0 -0
  730. package/web/fonts/files/noto-sans-sc-69-400-normal.woff2 +0 -0
  731. package/web/fonts/files/noto-sans-sc-69-700-normal.woff2 +0 -0
  732. package/web/fonts/files/noto-sans-sc-70-400-normal.woff2 +0 -0
  733. package/web/fonts/files/noto-sans-sc-70-700-normal.woff2 +0 -0
  734. package/web/fonts/files/noto-sans-sc-71-400-normal.woff2 +0 -0
  735. package/web/fonts/files/noto-sans-sc-71-700-normal.woff2 +0 -0
  736. package/web/fonts/files/noto-sans-sc-72-400-normal.woff2 +0 -0
  737. package/web/fonts/files/noto-sans-sc-72-700-normal.woff2 +0 -0
  738. package/web/fonts/files/noto-sans-sc-73-400-normal.woff2 +0 -0
  739. package/web/fonts/files/noto-sans-sc-73-700-normal.woff2 +0 -0
  740. package/web/fonts/files/noto-sans-sc-74-400-normal.woff2 +0 -0
  741. package/web/fonts/files/noto-sans-sc-74-700-normal.woff2 +0 -0
  742. package/web/fonts/files/noto-sans-sc-75-400-normal.woff2 +0 -0
  743. package/web/fonts/files/noto-sans-sc-75-700-normal.woff2 +0 -0
  744. package/web/fonts/files/noto-sans-sc-76-400-normal.woff2 +0 -0
  745. package/web/fonts/files/noto-sans-sc-76-700-normal.woff2 +0 -0
  746. package/web/fonts/files/noto-sans-sc-77-400-normal.woff2 +0 -0
  747. package/web/fonts/files/noto-sans-sc-77-700-normal.woff2 +0 -0
  748. package/web/fonts/files/noto-sans-sc-78-400-normal.woff2 +0 -0
  749. package/web/fonts/files/noto-sans-sc-78-700-normal.woff2 +0 -0
  750. package/web/fonts/files/noto-sans-sc-79-400-normal.woff2 +0 -0
  751. package/web/fonts/files/noto-sans-sc-79-700-normal.woff2 +0 -0
  752. package/web/fonts/files/noto-sans-sc-80-400-normal.woff2 +0 -0
  753. package/web/fonts/files/noto-sans-sc-80-700-normal.woff2 +0 -0
  754. package/web/fonts/files/noto-sans-sc-81-400-normal.woff2 +0 -0
  755. package/web/fonts/files/noto-sans-sc-81-700-normal.woff2 +0 -0
  756. package/web/fonts/files/noto-sans-sc-82-400-normal.woff2 +0 -0
  757. package/web/fonts/files/noto-sans-sc-82-700-normal.woff2 +0 -0
  758. package/web/fonts/files/noto-sans-sc-83-400-normal.woff2 +0 -0
  759. package/web/fonts/files/noto-sans-sc-83-700-normal.woff2 +0 -0
  760. package/web/fonts/files/noto-sans-sc-84-400-normal.woff2 +0 -0
  761. package/web/fonts/files/noto-sans-sc-84-700-normal.woff2 +0 -0
  762. package/web/fonts/files/noto-sans-sc-85-400-normal.woff2 +0 -0
  763. package/web/fonts/files/noto-sans-sc-85-700-normal.woff2 +0 -0
  764. package/web/fonts/files/noto-sans-sc-86-400-normal.woff2 +0 -0
  765. package/web/fonts/files/noto-sans-sc-86-700-normal.woff2 +0 -0
  766. package/web/fonts/files/noto-sans-sc-87-400-normal.woff2 +0 -0
  767. package/web/fonts/files/noto-sans-sc-87-700-normal.woff2 +0 -0
  768. package/web/fonts/files/noto-sans-sc-88-400-normal.woff2 +0 -0
  769. package/web/fonts/files/noto-sans-sc-88-700-normal.woff2 +0 -0
  770. package/web/fonts/files/noto-sans-sc-89-400-normal.woff2 +0 -0
  771. package/web/fonts/files/noto-sans-sc-89-700-normal.woff2 +0 -0
  772. package/web/fonts/files/noto-sans-sc-90-400-normal.woff2 +0 -0
  773. package/web/fonts/files/noto-sans-sc-90-700-normal.woff2 +0 -0
  774. package/web/fonts/files/noto-sans-sc-91-400-normal.woff2 +0 -0
  775. package/web/fonts/files/noto-sans-sc-91-700-normal.woff2 +0 -0
  776. package/web/fonts/files/noto-sans-sc-97-400-normal.woff2 +0 -0
  777. package/web/fonts/files/noto-sans-sc-97-700-normal.woff2 +0 -0
  778. package/web/fonts/files/noto-sans-sc-98-400-normal.woff2 +0 -0
  779. package/web/fonts/files/noto-sans-sc-98-700-normal.woff2 +0 -0
  780. package/web/fonts/files/noto-sans-sc-99-400-normal.woff2 +0 -0
  781. package/web/fonts/files/noto-sans-sc-99-700-normal.woff2 +0 -0
  782. package/web/fonts/files/noto-sans-sc-cyrillic-400-normal.woff2 +0 -0
  783. package/web/fonts/files/noto-sans-sc-cyrillic-700-normal.woff2 +0 -0
  784. package/web/fonts/files/noto-sans-sc-latin-400-normal.woff2 +0 -0
  785. package/web/fonts/files/noto-sans-sc-latin-700-normal.woff2 +0 -0
  786. package/web/fonts/files/noto-sans-sc-latin-ext-400-normal.woff2 +0 -0
  787. package/web/fonts/files/noto-sans-sc-latin-ext-700-normal.woff2 +0 -0
  788. package/web/fonts/files/noto-sans-sc-vietnamese-400-normal.woff2 +0 -0
  789. package/web/fonts/files/noto-sans-sc-vietnamese-700-normal.woff2 +0 -0
  790. package/web/fonts/fonts.css +2163 -0
  791. package/web/index.html +266 -0
@@ -0,0 +1,3515 @@
1
+ const e=`# Amadeus User Manual
2
+
3
+ This is the complete reference for Amadeus. It ships with the app and it is now an ordinary note in your vault — edit it, annotate it, and if you make a mess of it, delete it and generate a fresh copy from the command palette.
4
+
5
+ The manual exists as two files: \`Amadeus 使用手册.md\` and \`Amadeus User Manual.md\`, matching section for section. Switch the interface language and the command palette opens the matching one.
6
+
7
+ If you would rather learn by doing, start with the tutorial: command palette (\`⌘/Ctrl + K\`) → "Open the tutorial", which creates \`Amadeus 使用教程.md\` in your vault — the ten-minute hands-on tour. This manual is the thing you come back to when you need to look something up. The Outline panel in the right sidebar lists every chapter; click a heading to jump.
8
+
9
+ This manual **is its own demo**: click the "Document / Canvas" pill in the top bar and the whole thing spreads out as a mind map — one card per chapter, with each section hanging off the chapter it belongs to. Chapter 6 covers the canvas in detail; to just see what it looks like, switch now.
10
+
11
+ > [!note] Conventions
12
+ >
13
+ > - \`⌘/Ctrl\` means \`⌘\` on macOS, \`Ctrl\` on Windows and Linux.
14
+ > - Text in quotation marks is the exact wording you will see on screen.
15
+ > - Anything marked "desktop only" is unavailable in the web and mobile builds.
16
+
17
+ **What is in here**
18
+
19
+ 1. About Amadeus and this manual
20
+ 2. The interface at a glance
21
+ 3. Your vault and its files
22
+ 4. Writing: the block editor
23
+ 5. Formatting and editing
24
+ 6. Cards and the canvas
25
+ 7. Links, tags and the graph
26
+ 8. Finding things
27
+ 9. Tables and databases
28
+ 10. Dashboards
29
+ 11. Time: to-dos, daily notes and the calendar
30
+ 12. Files, media and PDFs
31
+ 13. Whiteboards and drawing
32
+ 14. Properties and metadata
33
+ 15. Working with the other Spaces
34
+ 16. Plugins and the market
35
+ 17. Commands and keyboard shortcuts
36
+ 18. Settings
37
+ 19. When something looks broken
38
+
39
+ ## 1 · About Amadeus and this manual
40
+
41
+ Amadeus is the notes Space of Forsion — where you write, connect ideas, and keep files. This manual is its full reference: not a tour, a lookup table. Read the chapter you need. This first one covers three things: what Amadeus is, where your notes actually live, and how to open this manual again later.
42
+
43
+ ### If you only read one page
44
+
45
+ Three things. Everything else is detail.
46
+
47
+ | Remember | Action | Result |
48
+ |---|---|---|
49
+ | A vault is just a folder | Click "Open vault" at the bottom of the sidebar and pick any folder on your computer | Every \`.md\` in that folder is a note — visible on disk, backed up like any file, readable in any other editor |
50
+ | \`/\` opens the block menu | Type \`/\` in the body of a note | An insert panel appears, grouped as Basic / Lists / Advanced / Plugins: headings, to-dos, tables, code blocks, equations, databases, drawings, and more |
51
+ | \`[[\` links notes | Type \`[[\` and pick a note from the list | A wikilink is created; the linked note gains a backlink, visible in the right sidebar under "Backlinks" |
52
+
53
+ Three things you can try right now:
54
+
55
+ - [ ] Open a vault: "Open vault" at the bottom of the sidebar, or \`⌘/Ctrl + K\` → "Open vault…"
56
+ - [ ] Create a note: \`⌘/Ctrl + N\` (this key means "new note" only inside Amadeus; in other Spaces it starts a new chat)
57
+ - [ ] Type \`/\` in the body and insert any block
58
+
59
+ > [!note]
60
+ > Where it is stored, how you write, how you connect — every later chapter just expands one of those three.
61
+
62
+ ### What Amadeus is
63
+
64
+ Amadeus is the notes and knowledge Space of Forsion — the workspace that holds notes, databases, drawing boards, dashboards and attachments.
65
+
66
+ - To enter: click the Amadeus icon in the ribbon on the far left. The other Forsion Spaces are Home, Tangu, Inbox, Coding, Automation, Public and Calendar; switching Space never touches the files in your vault.
67
+ - To start the app in your notes: press \`⌘/Ctrl + ,\` for settings → "Workspace" → "Spaces" → under "Startup location", set "Open the app in" to Amadeus.
68
+ - Amadeus exists in the desktop app only — it reads and writes a folder on your computer directly.
69
+
70
+ Once you are in, the screen is laid out like this:
71
+
72
+ | Area | What is there |
73
+ |---|---|
74
+ | Left sidebar | Three tabs: "Workspace" (the note tree), "Search" (full text), and "Tags". \`⌘/Ctrl + /\` collapses and expands it |
75
+ | Middle | The note itself. The top bar carries the "Document / Canvas" pill: one set of content, two views of it |
76
+ | Right sidebar | "Outline", "Backlinks", "Graph"; builds that include Tangu also put a chat panel first. Collapsed by default, and it has no default hotkey |
77
+ | Bottom | The status bar, which can show the current note's word count and backlink count |
78
+
79
+ A vault can hold these kinds of things, and each one is a real file on disk:
80
+
81
+ | What you create | On disk |
82
+ |---|---|
83
+ | Note | \`.md\` |
84
+ | Base (database) | \`.db\` |
85
+ | Drawing board | \`.excalidraw.md\` |
86
+ | Dashboard | \`.dashboard.md\` |
87
+ | Sub-note | a \`NoteName.fd/\` folder next to the note |
88
+
89
+ ### Your notes are just files on your disk
90
+
91
+ Every note is a plain Markdown file. No proprietary database, no export step — open the same folder in Obsidian, VS Code or any text editor and you see the same content.
92
+
93
+ - An existing folder of Markdown files works as-is: point "Open vault" at it. There is no import wizard, and none is needed — the files are already in the right format.
94
+ - Change files with another program (a text editor, git, a sync tool) and the note tree, search, backlinks and any open note follow along automatically, with no restart.
95
+ - A deleted note goes to the trash inside the vault, not into thin air. "Trash" at the bottom of the sidebar offers "Restore" and "Empty". Nothing is purged automatically — the trash grows until you empty it yourself.
96
+
97
+ > [!warning]
98
+ > \`.excalidraw.md\` (drawing boards) and \`.dashboard.md\` (dashboards) are Markdown files on disk, but **do not hand-edit them as ordinary notes**. Also: if a name collision breaks the suffix into something like \`x.excalidraw-1.md\`, that file stops being recognised as a drawing board and shows up in the tree as a plain note — restore the full suffix in the file name and it comes back.
99
+
100
+ - One class of thing is **not** in the files: pins, stars and collections are stored per device, not inside the note, and do not travel with it. Renaming or moving a note silently drops its pin and its star.
101
+ - Everything else — note body, wikilinks, frontmatter properties — lives in the file and follows you to another machine or another editor.
102
+
103
+ ### Opening this manual again
104
+
105
+ This manual is itself a note, created inside your vault — so you can reopen it any time, and annotate it.
106
+
107
+ | Entry point | How |
108
+ |---|---|
109
+ | Command palette | \`⌘/Ctrl + K\` → "Open the user manual" |
110
+ | Welcome screen | With no note open in the main area, click the "User manual" button |
111
+ | Note tree | It is right there in the tree, named \`Amadeus User Manual.md\` (the Chinese copy is \`Amadeus 使用手册.md\`) |
112
+
113
+ > [!warning]
114
+ > While the caret is inside the body of a note, \`⌘/Ctrl + K\` does **not** open the command palette — the editor claims that key for "insert / edit link". Click somewhere outside the body first (the sidebar, an empty part of the top bar), then press \`⌘/Ctrl + K\`. Nothing is broken.
115
+
116
+ - Both the Chinese and the English copy are written to the root of your vault; the one matching your current interface language is what opens.
117
+ - An existing manual is **never overwritten**. The upside: notes you wrote on it survive. The cost: after an app update your copy may still be the old version — to get the new one, rename or delete the old file and run "Open the user manual" again.
118
+ - Run the command with no vault open and you get the message "Open a vault first — the manual is created inside it": the manual needs somewhere to be written.
119
+
120
+ ### This manual and the tutorial are different things
121
+
122
+ | | User manual (this document) | Tutorial |
123
+ |---|---|---|
124
+ | Purpose | Full reference — look up what you need | First stop — ten minutes of learning by editing |
125
+ | How to open | \`⌘/Ctrl + K\` → "Open the user manual", or "User manual" on the welcome screen | \`⌘/Ctrl + K\` → "Open the tutorial", or "Tutorial" on the welcome screen |
126
+ | Shape | A document you read top to bottom | A demo note: a layered lesson in doc mode, a mind map when you switch to canvas mode |
127
+ | Can you edit it | Yes — it is an ordinary note in your vault | Yes, and **it is meant to be edited** — every lesson is something you can try on the spot |
128
+ | File name | One copy per language, each with its own name | Always \`Amadeus 使用教程.md\`, in both the Chinese and the English interface |
129
+
130
+ - Both are created only if absent; neither ever overwrites a file you already have under that name.
131
+ - Both need a vault open first — they are written into it.
132
+ - The tutorial's file name stays in Chinese on purpose: if the name followed the interface language, switching language once would create a second copy and the old one would no longer be recognised.
133
+ - Suggested order: run through the tutorial first (it demonstrates the doc/canvas pair along the way), then come back here to look things up.
134
+
135
+ ### How to read this manual
136
+
137
+ Chapters are independent — start anywhere. Look up the feature you need; you do not have to read in order.
138
+
139
+ - To search this page: \`⌘/Ctrl + F\`, then Enter for next, \`Shift + Enter\` for previous, Esc to close. To search across notes: \`⌘/Ctrl + P\` opens "Quick find", which covers notes, files and sessions together.
140
+ - Anything in quotation marks is the exact wording shipped in the English interface. Switch to Chinese and the button text changes; the feature does not.
141
+ - Hotkeys are always written as \`⌘/Ctrl + K\`: press \`⌘\` on mac, \`Ctrl\` on Windows and Linux.
142
+ - Every hotkey printed here is the **default**. To change one: \`⌘/Ctrl + ,\` → "Appearance" → "Shortcuts", click the shortcut on the right of a row to start recording, press the combo to set it, Esc to cancel; each combo binds to only one command.
143
+ - Paragraphs marked \`> [!warning]\` describe the places where, not knowing, you would assume the app is broken. Do not skip them.
144
+ - Where a feature has a precondition (a vault must be open, desktop only, a plugin must be enabled), it is stated in the same sentence, not hidden elsewhere.
145
+
146
+ > [!info]
147
+ > Rebind Amadeus shortcuts **from inside Amadeus**: the shortcuts list in settings only shows commands registered in the current Space, so from any other Space the dozen-odd Amadeus commands are simply not in the list.
148
+
149
+ ## 2 · The interface at a glance
150
+
151
+ The Amadeus interface has six parts: the ribbon, the left sidebar, the main area, the right sidebar, the bottom panel and the status bar. This chapter walks through all six — how to toggle each one, what lives in it, and the handful of places that look broken but are not.
152
+
153
+ ### The window at a glance
154
+
155
+ Click "Amadeus" on the ribbon and the whole workspace becomes the notes layout. There are six parts to it:
156
+
157
+ | Region | What it holds | How to toggle |
158
+ | --- | --- | --- |
159
+ | Ribbon | The vertical strip on the far left. Spaces on top; Market, Achievements, light/dark, command palette, Settings and your account below | The top-most button collapses / expands it |
160
+ | Left sidebar | Three tabs: "Workspace", "Search", "Tags" | \`⌘/Ctrl + /\`, or the panel button at the left end of the tab strip (tooltip "Toggle left panel") |
161
+ | Main area | Notes, whiteboards and dashboards live here, opened as tabs, splittable | Always on |
162
+ | Right sidebar | "Chat panel", "Outline", "Backlinks", "Graph" | The floating panel button at the top right (tooltip "Toggle right panel"); collapsed the first time you arrive |
163
+ | Bottom panel | Empty in Amadeus — you drag a view into it | \`⌘/Ctrl + J\` |
164
+ | Status bar | Current Space, cloud sync, backlink count, word count | The master switch under Settings → Appearance → Status bar |
165
+
166
+ > [!note]
167
+ > Everything note-related needs an open vault first. Until you open one, panels like search and tags just read "Open a vault first." — that is not an error.
168
+
169
+ > [!warning]
170
+ > A fresh install does not land in Amadeus. To start in your notes: Settings → Workspace → Spaces → "Startup location" → set "Open the app in" to "Amadeus".
171
+
172
+ ### The ribbon and switching Space
173
+
174
+ Each icon in the ribbon's upper zone is a Space: Home, Tangu, Inbox, Amadeus, Coding, Automation, Public, Calendar — you get the ones you have installed.
175
+
176
+ - Switch: click an icon; or press \`⌘/Ctrl + N\`, where N is that icon's position in the upper zone (the command reads "Switch to Space {n}"); or find the same command in the palette.
177
+ - Collapse / expand: the top-most button. Collapsed shows icons only, with the name on hover (tooltip "Expand"); expanded shows icon plus name ("Collapse"), and the first nine also show their shortcut.
178
+ - Home slot: the single centred cell, holding "Home" by default, and also the default startup target. Right-click it → "Space in the home slot" → pick any Space. Whatever you put there disappears from the upper zone, so it never shows twice.
179
+ - The fixed strip at the bottom: "Market", "Achievements", "Toggle light/dark mode", "Command palette (⌘K)", "Settings", and your account card last.
180
+ - Tidying up: drag icons to reorder within their zone (you cannot drag between the two zones); create a folder from the + or right-click menu ("New folder (Spaces)") and then drag icons onto it; when a zone runs out of room the tail collapses into "More". The same menu carries "New Space" and "Add command".
181
+
182
+ > [!warning]
183
+ > The slot number follows the current order — it is not tied to a Space. Drag an icon, or turn a built-in plugin on or off, and \`⌘/Ctrl + N\` opens something else; the Space sitting in the home slot takes no number at all. Expand the ribbon to see which number each icon has right now.
184
+
185
+ > [!warning]
186
+ > \`⌘/Ctrl + K\` does not open the command palette while the caret is inside note text — the editor uses that key for editing links. Click somewhere outside the note first, then press it.
187
+
188
+ ### The left sidebar: workspace, search, tags
189
+
190
+ Three icon-only tabs, named in their tooltips. Amadeus opens on "Workspace".
191
+
192
+ | Tab | What it holds |
193
+ | --- | --- |
194
+ | Workspace | The note tree. The filter box "Search notes" at the top matches names only; below it come "Pinned", "Cloud sync", "Shared with me", "Starred", "Collections" and then the vault itself ("Cloud sync" and "Shared with me" appear only when cloud sync and collaboration are available) |
195
+ | Search | Full-text search (\`⌘/Ctrl + ⇧ + F\`). Each hit carries a highlighted snippet, opening one jumps to the first matching block and flashes it; "Save as collection" stores the query in the sidebar for one-click replay |
196
+ | Tags | Every inline #tag in the vault with its count; click one to expand the notes carrying it, click again to collapse |
197
+
198
+ - Under the filter box sit two quick-create buttons: "New note" and "New whiteboard".
199
+ - Two items are pinned to the footer: "Trash" and the vault switcher.
200
+ - Four click meanings in the tree: click = open; \`⌘/Ctrl\` + click = open in a new tab; \`⇧\` + click = select a range; \`⌥/Alt\` + click = add to or remove from the selection.
201
+ - Sidebar tabs have no ×; close one by right-clicking it → "Close".
202
+ - Every section except the vault itself starts collapsed and remembers its state; folders start fully collapsed on every launch.
203
+
204
+ > [!warning]
205
+ > Pressing \`⌘/Ctrl + ⇧ + F\` again while "Search" is already the front tab collapses the whole left sidebar rather than returning you to the input box.
206
+
207
+ > [!note]
208
+ > \`⌘/Ctrl + P\` opens "Quick find", which searches notes, files and chat sessions at once; if the name you type has no note yet, an extra last row reads "Create note “name”" — press Enter to create it (the new note lands at the vault root).
209
+
210
+ ### The right sidebar and the bottom panel
211
+
212
+ The right sidebar is collapsed the first time you enter Amadeus. Toggle it from the floating buttons at the top right of the workspace (tooltip "Toggle right panel"), or from the palette → "Toggle right sidebar".
213
+
214
+ | Tab | What it holds |
215
+ | --- | --- |
216
+ | Chat panel | Talk to Tangu beside the note you are reading; it quotes the note in the main area for you. Present only in builds that include the Tangu Space |
217
+ | Outline | The current note's headings, indented by level; click one to scroll to it |
218
+ | Backlinks | Other notes that link here, with a snippet; the heading carries the count: "Backlinks · {n}" |
219
+ | Graph | The current note and its neighbours |
220
+
221
+ - Graph controls: drag a node to move it, drag the background to pan, scroll to zoom, double-click the background to reset, click a node to open that note. A \`[[link]]\` to a note that does not exist yet shows as a dimmed ghost node; clicking it offers to create the note.
222
+ - Bottom panel: \`⌘/Ctrl + J\`, or the "Toggle bottom panel (Ctrl/Cmd+J)" button in the floating group at the top right.
223
+ - Both sidebars and the bottom panel resize by dragging their divider, and each Space remembers its own widths and height.
224
+ - The right sidebar is collapsed on first entry and after "Reset layout"; if you leave it open, it comes back open.
225
+
226
+ > [!warning]
227
+ > The right sidebar has no default shortcut — assign one under Settings → Appearance → Shortcuts if you want it. The left sidebar is \`⌘/Ctrl + /\`, not \`⌘/Ctrl + B\`, because that key belongs to bold in the editor.
228
+
229
+ > [!warning]
230
+ > In Amadeus the bottom panel opens empty, showing "Empty sidebar" — that is not a fault, this Space simply presets nothing there. Drag a view in from elsewhere and it fills up. Closing the last view inside it closes the whole panel.
231
+
232
+ ### The main area: tabs, splits and the launcher
233
+
234
+ The main area is a browser-style tab strip; notes, whiteboards and dashboards all open as tabs.
235
+
236
+ - New: the + at the end of the strip (tooltip "New tab") opens the launcher.
237
+ - Close: the × on a tab ("Close"). Right-clicking a tab also offers "Move to new window".
238
+ - Back and forward: the two arrows at the left of the strip, or \`⌘/Ctrl + ⇧ + [\` and \`⌘/Ctrl + ⇧ + ]\`; \`⌘/Ctrl + ⌥/Alt + ←\` and \`⌘/Ctrl + ⌥/Alt + →\` work too. History is per tab, so switching tabs switches which history you are walking.
239
+ - Splitting: drop a tab onto another tab strip to merge, or onto the body of a pane to split. The main area takes all four directions; sidebars only top and bottom. A drop that has nowhere to land shows no target and the tab snaps back.
240
+ - The launcher (page heading "New tab"): "Recent" at the top, then a group of native Forsion entry points, then one group per plugin. Common cards are "Home", "New session", "New note", "Today", "New whiteboard", "New dashboard", "Calendar" and "To-do list". Most cards can be dragged straight onto a tab strip or sidebar to open there; the create-something cards deliberately cannot.
241
+ - Closing the last tab does not leave an empty window — you get a placeholder page with a "New tab" button on it.
242
+ - Layout gone messy: the first floating button at the top right is "Restore default layout for this Space", called "Reset layout" in the palette.
243
+ - Layout you want to keep: palette → "Save current layout as a Space", give it a name, and it becomes a new Space on the ribbon (desktop app).
244
+
245
+ > [!warning]
246
+ > "Split right" (\`⌘/Ctrl + \\\`) opens a chat pane, not a second copy of the current note. To read two notes side by side: right-click in the sidebar → "Open in new tab", then drag the new tab onto the body of another pane.
247
+
248
+ > [!warning]
249
+ > "Reset layout" has no confirmation and no undo — the tabs you had open in that Space are gone immediately.
250
+
251
+ ### The note top bar and the doc/canvas control
252
+
253
+ Open a note and the top bar sits above the text; two more buttons sit below the bar and above the title.
254
+
255
+ | Control | Tooltip | What it does |
256
+ | --- | --- | --- |
257
+ | Breadcrumb | — | Click a segment to reveal that folder in the sidebar; a long path collapses to the first two levels + "…" + the parent |
258
+ | Document / Canvas | — | A two-segment pill reading "Document" and "Canvas"; click the other segment to switch presentation |
259
+ | Pin | "Pin" / "Unpin" | Pin it to the "Pinned" section in the sidebar |
260
+ | Cloud | "Turn on cloud sync" / "Turn off cloud sync (the cloud copy is kept)" | Cloud sync for this one note (local vaults only, and only when cloud sync is available) |
261
+ | Share | "Share / publish" | Share or publish this note (only when collaboration is available) |
262
+ | Source | "Switch to Markdown source" / "Switch to visual editing (WYSIWYG)" | Visual editing ↔ raw Markdown |
263
+ | Upload | "Upload files to this note" | Put files into this note |
264
+ | ⋮ | "More actions" | "Export as PDF", "Copy as Markdown", "Version history", "Star", "Show in file manager", "Delete note"; in canvas mode also "Export as JSON Canvas" |
265
+
266
+ - The two buttons above the title: "☺ Add icon" gives the page an emoji icon, "🖼 Add cover" adds a banner image.
267
+ - Hover a cover for "Change cover", "Reposition" and "Remove"; to move the image, click "Reposition" first, drag up or down, then click "Done".
268
+ - "Toggle source / visual editing" is also in the command palette — the same thing as the top-bar button.
269
+ - Pins and stars are kept on this machine, per vault, rather than inside the note — another machine will not see them, and renaming or moving a note loses them.
270
+
271
+ > [!note]
272
+ > The Document / Canvas pill is drawn by the note into its own pane, so in a split view each pane has its own and they do not interfere. While a note is still working out its type that slot is briefly empty; it appears a moment later.
273
+
274
+ ### Windows, zoom, themes and the status bar
275
+
276
+ A tab can be moved out into a window of its own, and tabs can be dragged between windows.
277
+
278
+ | Window | How to open it | Watch out |
279
+ | --- | --- | --- |
280
+ | Detached window | Right-click a main-area tab → "Move to new window", or drag the tab out of the window and let go | A full workspace, but with no ribbon — so you cannot change Space there, and there is no status bar either |
281
+ | Merging back | Drag a tab onto another Forsion window | The drop hint is a highlight around the whole window, not down to a single pane |
282
+ | Mini card | \`⌘/Ctrl + ⇧ + M\` (global), or palette → "Open mini card" | Chat only, no note views; if another app already owns that combination, the palette entry is the only way in |
283
+
284
+ - UI zoom: \`⌘/Ctrl + =\`, \`⌘/Ctrl + -\`, \`⌘/Ctrl + 0\`, from 50% to 200% in 10% steps. It scales the whole interface, not just the text. Settings → Appearance also offers Small (80%), Standard (100%) and Large (120%) presets; the shortcuts (desktop app only) and palette commands still fine-tune or reset it.
285
+ - Themes live under Settings → Appearance → Appearance, split into independent axes: "Design language" (Genesis, Genesis Glass, the included Soft theme, plus anything you drop into the themes folder), "Color scheme" ("Accent" and "Background" are two separate axes, each offering Classic, Coral, Teal, Lavender, Clear blue, Custom), "Light / dark" (Light, Dark, Follow system), "Shadow" (Raised, Flat) and "Frosted glass" (On, Off (low-power mode)).
286
+ - Light and dark also flip in one click: the moon icon at the bottom of the ribbon, or palette → "Toggle light/dark mode".
287
+ - The status bar is the last line of the window: current Space (click = open the palette), cloud-sync state (click = sync now), backlink count, word count. The master switch and the per-item visibility list are under Settings → Appearance → Status bar, and the order is draggable.
288
+
289
+ > [!warning]
290
+ > Some design languages lock the colour scheme (Genesis Glass · 「琉璃」 is fixed to the system). The moon icon then does nothing and its tooltip changes to "This theme follows the system appearance" — not a fault, that theme simply does not allow the switch.
291
+
292
+ > [!warning]
293
+ > In the palette, "Switch theme style" changes the design language; "Switch language" is the one that switches the interface between Chinese and English. They sit next to each other — do not mix them up.
294
+
295
+ > [!note]
296
+ > The backlink and word counts appear only while the main area holds a note editor; switch to a whiteboard, dashboard, PDF or database and they vanish. Also, clicking the backlink count opens "Backlinks" in the main area, not in the right sidebar.
297
+
298
+ ## 3 · Your vault and its files
299
+
300
+ A vault is just an ordinary folder on your disk. Notes are plain Markdown files and attachments are ordinary images and PDFs — no hidden database, no proprietary format, and you can open the same files with another program at any time. This chapter covers opening a vault, organising the files inside it, and which file names you must not change.
301
+
302
+ ### Opening and switching a vault
303
+
304
+ Pick any folder to be your vault, and everything under it — Markdown notes, attachments, databases, drawing boards — becomes your file tree. Three entry points, all the same action:
305
+
306
+ | Entry point | Where | Label |
307
+ |---|---|---|
308
+ | Sidebar footer button | Below "Trash", pinned so it never scrolls away | "Open vault" with no vault open, otherwise "Vault: {name}" |
309
+ | Welcome screen button | The main area when no vault is open | "Open a vault folder" |
310
+ | Command palette \`⌘/Ctrl + K\` | Anywhere | "Open vault…" |
311
+
312
+ - The folder picker is desktop only; on the web the same footer button opens the "Cloud vault" panel instead.
313
+ - The first launch does not ask which folder you want — it creates \`Forsion/Amadeus\` in your home folder as the default vault and seeds a \`Calendar.db\` in it.
314
+ - Every launch after that reopens the last vault and returns to the note you last had open. If that folder is gone, the main area reads "Open a vault folder to get started."
315
+ - Switching vaults flushes unsaved edits back to the old vault before the root changes, so nothing leaks between libraries.
316
+ - After you switch vaults by hand you land on the first note alphabetically, not where you left off — that is normal for a switch, as opposed to a restore on launch.
317
+ - Trash, pins and stars are recorded per vault, so a different vault means a different set of them.
318
+
319
+ > [!note]
320
+ > The system folder-picker dialog is titled in Chinese ("打开 Vault 文件夹") even in the English interface. That is the operating system dialog's title and it does not affect anything.
321
+
322
+ ### The note tree: browsing, filtering, selecting
323
+
324
+ The left sidebar lays the whole vault out as a tree: folders first in alphabetical order (empty ones included), then every file — notes, attachments, databases, PDFs, images, drawing boards. A note with an icon shows that icon instead of the generic file glyph. The whole tree sits in a section named after the vault folder; click that name to collapse it all.
325
+
326
+ Above the tree sit a few more sections: "Pinned", "Starred", "Collections", "Shared with me", "Cloud sync". Press and drag a section header to reorder them (mouse only); the order and each section's open state are remembered.
327
+
328
+ - The box at the top, "Search notes", filters by **file name** and replaces the tree with a flat list. It does not search note contents — full-text search is a separate command, \`⌘/Ctrl + Shift + F\` "Search notes (full text)"; to jump by name use \`⌘/Ctrl + P\` "Quick find".
329
+ - While the filter box has text, folders are not shown and you cannot drag a file to the vault root. With no hits it reads "No matching notes".
330
+ - Hover a row for file details: "Modified: {t}", plus "Created: {t}" where the filesystem can supply it; hovering a folder shows "{files} files, {folders} folders".
331
+ - Click the breadcrumb above a note title and the sidebar expands the parent chain, scrolls that row into view and flashes it.
332
+ - Paths deeper than three segments show as "first two + … + last" in the breadcrumb, and that ellipsis is not clickable.
333
+
334
+ Selection follows the Finder / Explorer conventions:
335
+
336
+ | Action | Result |
337
+ |---|---|
338
+ | Click | Opens it, and selects only it |
339
+ | \`⌘/Ctrl\` + click | Opens it in a new tab |
340
+ | \`Shift\` + click | Selects a contiguous range, limited to currently visible rows (does not open) |
341
+ | \`Option/Alt\` + click | Adds or removes one row from the selection (does not open) |
342
+ | Click blank space | Clears the selection |
343
+
344
+ With several rows selected, the right-click menu offers exactly two batch actions: "Open {n} items in new tabs" and "Delete {n} items".
345
+
346
+ > [!warning]
347
+ > Folders start fully collapsed on every launch — only the section-level open state is remembered, not the folders'. Nothing is broken.
348
+
349
+ ### Creating notes, folders and other files
350
+
351
+ | To create | How | What lands on disk |
352
+ |---|---|---|
353
+ | A note | Sidebar "New note", right-click blank space or a folder, \`⌘/Ctrl + N\`, command palette | \`untitled.md\` (then \`untitled-2.md\` on collision) |
354
+ | A sub-note | The + at the end of a note row (tooltip "New sub-note"), or right-click the note | Written into \`<Note>.fd/\` |
355
+ | A folder | Right-click blank space → "New folder"; right-click a folder → "New subfolder" | Default name "New folder" |
356
+ | A database | Right-click blank space or a folder → "New base" | \`Untitled database.db\` |
357
+ | A drawing board | Sidebar "New whiteboard", right-click, command palette | \`Untitled whiteboard.excalidraw.md\` |
358
+ | A dashboard | Right-click → "New dashboard", command palette | \`Untitled dashboard.dashboard.md\` |
359
+
360
+ - The sidebar's top strip has exactly two buttons: "New note" and "New whiteboard". Folders, bases and dashboards can only be created from a context menu (or the command palette).
361
+ - \`⌘/Ctrl + N\` means "New note" only inside the Amadeus space — it takes over the new-chat binding while you are there and hands it back when you leave. With no vault open the command does nothing.
362
+ - A new note really is called \`untitled.md\` on disk, but the title bar shows an empty field with the placeholder "New Page". Editing the title renames the file.
363
+ - Sub-notes live in a \`.fd\` folder named after the note. That folder is hidden in the tree; the sub-notes hang off the parent note's row, which grows a chevron and a child count.
364
+ - Creating a base with a name that already exists is rejected up front: "“{name}” already exists". That is deliberate — a table's file name and its internal title must match, and auto-appending a suffix would split them.
365
+ - If you have plugins installed, their own "New X" entries appear below these built-in ones, with the plugin's own icon and wording.
366
+
367
+ > [!warning]
368
+ > In the new-whiteboard dialog, the part that picks paper size and orientation ("纸张", "无限画布", "纵向", "横向") is in Chinese only, including in the English interface.
369
+
370
+ ### Renaming and moving
371
+
372
+ Renaming has three entry points and they all do the same thing: move the file to a new name on disk, rewrite every \`[[wikilink]]\` pointing at it across the whole vault, and re-point any open tab that was showing it.
373
+
374
+ - Right-click a note or a \`.db\` in the tree → "Rename": that row turns into a text field. Enter commits, \`Esc\` cancels, clicking away also commits.
375
+ - The big title in the editor is the file name: click it, type, Enter commits (and the cursor slides into the body), \`Esc\` reverts.
376
+ - Right-click a folder → "Rename" uses a dialog (titled "Rename folder"), not an inline field; confirming rewrites links in every note underneath it.
377
+
378
+ > [!warning]
379
+ > There is **no** "Rename" item in the context menu for PDFs, images, drawing boards or plain attachments. Only notes, \`.db\` files and plugin file types can be renamed from the tree. To rename anything else, use "Show in file manager" and rename it in the operating system.
380
+
381
+ Moving works one way only: drag. There is no "Move to…" item in any menu.
382
+
383
+ | Drop it on | Result |
384
+ |---|---|
385
+ | A folder row, or anywhere inside an expanded folder | Moves into that folder |
386
+ | A note row that has sub-notes | Becomes one of its sub-notes (goes into \`.fd\`) |
387
+ | Blank space in the vault section | Moves to the vault root |
388
+ | An ordinary note row (one with no sub-notes) | Nothing happens |
389
+
390
+ - A move carries the note's \`.fd\` sub-note folder along with it, and rewrites links across the vault as usual.
391
+ - Drag one row of a multi-selection and the whole batch moves.
392
+ - A destination that already has a \`.fd\` folder of the same name is refused: "A .fd folder with the same name already exists at the destination". A note also cannot be dropped into its own \`.fd\`.
393
+ - While the search box has text, the "drop on blank space to move to the root" case is disabled.
394
+
395
+ ### Deleting and the trash
396
+
397
+ On the desktop, deleting does **not** ask: right-click "Delete" moves the item straight to the trash with the toast "Moved to trash". Batch delete is the exception — it always confirms first with "Delete the {n} selected items?".
398
+
399
+ When you delete a note, if some attachments are referenced by that note alone, a dialog asks what to do with them:
400
+
401
+ - The dialog is titled Delete "{name}", with three buttons — "Cancel", "Delete note only", "Delete them too" — plus the checkbox "Don't ask again (change it back in Settings → Notes)".
402
+ - Attachments that any other note also references are always kept, whatever you choose.
403
+ - To change the behaviour back: Settings → Notes → "Editing and safety" → "Delete exclusive attachments with the note", with the options "Ask every time", "Remembered: delete them", "Remembered: keep them". That choice is stored on this device, not in the vault.
404
+ - Deleting a note that has sub-notes deletes its whole \`.fd\` subtree too; the confirmation tells you how many sub-files that is first.
405
+
406
+ The trash sits at the very bottom of the sidebar, button "Trash", with a count when it is not empty; it is desktop only — where there is no trash, deleting confirms first and then deletes for good. Items are listed newest-first, each showing where it came from ("Original location: {path}").
407
+
408
+ | Action | What it does |
409
+ |---|---|
410
+ | "Restore" | Puts it back where it came from (missing parent folders are recreated; a taken spot gets \`(2)\`) |
411
+ | "Delete" | Deletes it for good, confirming "Permanently delete “{name}”? This cannot be undone." |
412
+ | "Empty" | Empties everything, confirming "Empty the trash? Everything in it is deleted permanently." |
413
+
414
+ > [!warning]
415
+ > Anything in the trash disappears **immediately** from the file tree, search results, backlinks and cloud sync — the scanner skips that folder. So when a note "has vanished" or "cannot be found any more", check the trash first. The trash is never purged automatically and has no size limit; you have to press "Empty" yourself.
416
+
417
+ ### Version history
418
+
419
+ The trash only covers deleted files. When content gets mangled, use "More actions" → "Version history" to get it back (desktop, notes only).
420
+
421
+ - Each save keeps a copy of the content it overwrites. A note keeps at most one copy per 5 minutes, and none if it matches the previous copy; each note keeps up to 50, and once all notes together pass 200 MB the oldest go first.
422
+ - The panel lists versions on the left (relative time, exact time, size); on the right you can switch between "Content" and "Compare with current".
423
+ - "Restore this version" asks first, and saves the current content to version history before restoring, so a restore can itself be undone. A locked page shows its history but must be unlocked to restore.
424
+ - Versions live in the app's data folder, not in the vault, and are not synced; they follow the note when you rename or move it. The web and mobile apps do not have this entry yet.
425
+
426
+ ### What the files on disk are
427
+
428
+ There is no hidden database in the vault. Everything is a file, told apart by its extension:
429
+
430
+ | Name | What it is |
431
+ |---|---|
432
+ | \`.md\` | A note |
433
+ | \`.excalidraw.md\` (and \`.excalidraw\`) | A drawing board |
434
+ | \`.dashboard.md\` | A dashboard |
435
+ | \`.db\` | A database / note view |
436
+ | \`Note.fd/\` | That note's sub-note folder (hidden in the tree; its contents hang off the note's row) |
437
+ | \`.amadeus/\` | Pasted images, one folder per containing folder |
438
+ | \`attachments/\` | Files you dragged in (the location is configurable, see below) |
439
+ | \`.trash/\` | The trash |
440
+
441
+ > [!warning]
442
+ > \`.excalidraw.md\`, \`.dashboard.md\` and the compound suffixes claimed by plugins all end in \`.md\`, but they must never be opened or renamed as ordinary notes. The app checks the whole compound suffix before it applies the "\`.md\` means note" rule precisely so it never rewrites them. If a compound suffix gets broken — say a name collision turns a file into \`x.excalidraw-1.md\` — that file stops being a drawing board and comes back into the tree as an ordinary note.
443
+ > The other way round, the rule is the suffix table, not "has two dots": \`Report.001.md\` and \`Note.fd.md\` are genuine notes.
444
+
445
+ - Where attachments land is a setting: Settings → Notes → "Files and attachments" → "Attachment location", one of three — "attachments/ folder next to the note" (the default), "Same folder as the note", or "Fixed folder in the vault" (then fill in a path such as \`assets\` under "Vault-relative folder").
446
+ - Whether a dragged-in file is inserted as a preview block or a plain link is controlled by "Editing and safety" → "Preview imported files by default".
447
+ - Paste a screenshot with \`⌘/Ctrl + V\` and the image is saved into the \`.amadeus/\` folder beside the note, with a standard Markdown image inserted in the body; spaces in the file name become underscores.
448
+ - Attachments kept outside the vault cannot be previewed inline, as the hint in Settings says.
449
+
450
+ To look at the real files, right-click any item → "Show in file manager" (desktop only); the command palette also has "Reveal current note in file manager". To hand a file to your operating system's default program, use "Open with the system app" — that is also what clicking an audio or video file in the tree does, rather than opening the in-app player.
451
+
452
+ ### How a note is stored
453
+
454
+ A new note is a piece of plain Markdown on disk, without even a leading \`---\` frontmatter block. Open it in another editor and you see exactly what you typed.
455
+
456
+ The small capsule under the title is the properties bar, reading "Properties {n}"; expand it for a key/value list of that note's frontmatter. Add one with the + beside it (tooltip "Add property"), remove one with the × that appears at the end of a row on hover (tooltip "Delete property").
457
+
458
+ - There is no property-type picker: a new property is always empty text, and the control is inferred from the YAML value — \`true\` gives a checkbox, a number gives a number box, a string shaped \`2026-09-05\` gives a date picker, a list gives removable chips, and nested structures are read-only.
459
+ - To get any other type, write the value in source mode, or use a note view column.
460
+ - The page icon \`icon\`, the cover \`cover\` and its position \`cover_y\` are ordinary property rows too — delete them here and the icon and cover go with them.
461
+ - If the frontmatter is broken into invalid YAML, the capsule changes to "Properties (raw)" and expands into a single textarea holding the raw text, so you can repair it by hand without the app rewriting anything.
462
+
463
+ These are the app's own structural keys. They **appear only once the note actually uses columns or the canvas**, and should not be edited by hand:
464
+
465
+ | Key | When it appears |
466
+ |---|---|
467
+ | \`amadeus_schema\` | Whenever columns or a canvas is present; it comes and goes with them |
468
+ | \`amadeus_layout\` | The note uses a column layout |
469
+ | \`amadeus_canvas\` | The note uses canvas mode |
470
+
471
+ > [!warning]
472
+ > Editing any property from the properties bar re-serialises the whole frontmatter block, so **comments in the YAML are lost**. To keep it byte-for-byte, edit in source mode: the \`</>\` button in the top bar (tooltip "Switch to Markdown source"), or "Toggle source / visual editing" in the command palette. That command has no hotkey.
473
+
474
+ Source mode is the only place the frontmatter can be edited verbatim, and it is also where you give a property its type — write \`done: true\` and next time you get a checkbox, \`count: 3\` a number box, \`due: 2026-09-05\` a date picker, \`- item\` a list of chips:
475
+
476
+ \`\`\`markdown
477
+ ---
478
+ done: true
479
+ count: 3
480
+ due: 2026-09-05
481
+ tags:
482
+ - reading
483
+ - wip
484
+ ---
485
+
486
+ - [ ] The body is written as usual — it is ordinary Markdown
487
+ \`\`\`
488
+
489
+ ### Sharing the vault with other apps
490
+
491
+ Obsidian, or any app that stores its notes as plain \`.md\`, just needs its folder picked with "Open vault". There is nothing to import and no import wizard — the files are already a common format, so they work as they are.
492
+
493
+ Dragging files in from the operating system has two landing places:
494
+
495
+ | Drop them on | Result |
496
+ |---|---|
497
+ | A folder row, inside an expanded folder, or blank tree space | Copied into the vault as-is, touching no note; toast "Imported {n} files to “{where}”" |
498
+ | An ordinary note row, or straight into the editor body | Saved to your configured attachment location and referenced from that note |
499
+
500
+ - Only genuinely blank space counts as "the root"; a drop on a row or a section is cancelled rather than quietly importing to the root.
501
+ - Drawing boards, dashboards, plugin files and plain attachments do not accept a body drop — drop a file on one of those rows and it lands in their **parent folder** instead. A note with sub-notes behaves the same way: the file goes into its \`.fd\`.
502
+ - If you switch away mid-upload the file is still saved, but the placeholder line in the body is left as it is, and the toast says so.
503
+
504
+ External changes are picked up automatically (desktop): edit, add, move or delete files in the vault with another editor, \`git\` or another sync tool, and the file tree, search index, backlinks and open notes all follow without a restart. While you are typing, write-back from outside is held off so it cannot eat the character you are entering.
505
+
506
+ - If search or backlinks ever look stale — usually after a large batch of changes made outside the app — use the command palette → "Rebuild full-text index". It has no progress bar and no completion toast; when it is done, it is done.
507
+ - Do not hand \`.trash\` to an external sync tool: it is hidden from this app, but not from the sync tool.
508
+ - Watch the compound suffixes when renaming from outside (see the warning in the previous section) — break \`.excalidraw.md\` and the file stops being a drawing board.
509
+ - Pins and stars are recorded on this device, not in the note file, so they do not travel with the files to another machine.
510
+
511
+ > [!warning]
512
+ > Do not keep the same note open for editing in two apps at once. This app guards against one specific thing — an external write-back eating the character you are typing — and it is not a two-way merge tool. Edit on both sides at once and whichever save lands last overwrites the whole file.
513
+
514
+ ## 4 · Writing: the block editor
515
+
516
+ An Amadeus note is made of blocks: a line of text, a snippet of code, a table, a card are all blocks. There are three interchangeable ways to make one — the slash menu, Markdown prefixes, the ⠿ block handle — and knowing any one of them is enough. This chapter lists every entry point on all three.
517
+
518
+ ### The slash menu ("/")
519
+
520
+ Type \`/\` at the start of a line or after a space in any text block and a block-type menu opens at the caret. What you type stays in the document, so no letters are ever swallowed; a space, a \`]\`, a newline, or going past 40 characters closes the menu and leaves \`/xxx\` as ordinary text.
521
+
522
+ - Keys: \`↑↓\` to move, \`↵\` or \`Tab\` to insert, \`esc\` to close. The footer reads "↑↓ Select", "↵ Insert", "esc Close", and an empty result shows "No matches".
523
+ - Keywords include pinyin aliases, so \`/biaoti\` finds "Heading". With an empty query items are grouped as "Basic", "Lists", "Advanced", "Callouts"; once you type it becomes one flat list ranked by match.
524
+ - After you close it with \`esc\`, that same \`/\` will not reopen the menu — delete it and type a fresh \`/\`.
525
+ - Enter during IME candidate selection is passed through, not taken by the menu.
526
+ - A \`/\` inside a code block is always a literal character; no menu opens.
527
+ - The grey hint in an empty block, "Type '/' for commands", is the only pointer to this menu.
528
+
529
+ | Menu item | What it inserts | Typed equivalent |
530
+ | --- | --- | --- |
531
+ | Text | A plain paragraph, lifting the line out of any list or quote | — |
532
+ | Heading 1 | A level-1 heading | \`#\` + space |
533
+ | Heading 2 | A level-2 heading | \`##\` + space |
534
+ | Heading 3 | A level-3 heading | \`###\` + space |
535
+ | Heading 4 | A level-4 heading | \`####\` + space |
536
+ | Heading 5 | A level-5 heading | \`#####\` + space |
537
+ | Heading 6 | A level-6 heading | \`######\` + space |
538
+ | Card | Turns the block the cursor is in into a canvas card; if the cursor was already inside a card, the new card becomes its child | — |
539
+ | Bulleted list | A bullet list | \`-\` + space |
540
+ | Numbered list | An ordered list starting at 1 | \`1.\` + space |
541
+ | To-do list | A checkbox list item | \`- [ ]\` + space |
542
+ | Quote | A blockquote | \`\\|\` + space |
543
+ | Toggle | A collapsible callout block | \`>\` + space |
544
+ | Code block | A fenced code block | \` \`\`\` \` + space |
545
+ | Table | A 2-column, 1-row table | — |
546
+ | Divider | A horizontal rule | \`---\` |
547
+ | Equation | A one-line \`$$ $$\` skeleton | \`$$\` + space |
548
+ | Link to note | \`[[\`, followed by the note picker | \`[[\` |
549
+ | Image | Opens the file picker, saves an attachment and inserts \`![[filename]]\` | — |
550
+ | Columns | Puts this block on its own row and opens a column to its right | — |
551
+ | Page | A child note, plus a link to it | — |
552
+ | Database | A new database file, embedded | — |
553
+ | Drawing | A new Excalidraw drawing file, embedded | — |
554
+ | Link database | Embeds a database that already exists in the vault | — |
555
+ | Note view | A view whose every row is a note | — |
556
+ | Template | Opens the template picker and inserts what you choose | — |
557
+ | Embed block | A read-only transclusion of content from elsewhere | — |
558
+ | Bookmark | One bare link, rendered as a bookmark card | — |
559
+ | Button | An unconfigured button block | — |
560
+ | Note callout | \`> [!note] \` | — |
561
+ | Info callout | \`> [!info] \` | — |
562
+ | Warning callout | \`> [!warning] \` | — |
563
+
564
+ > [!note] Groups and gates
565
+ > The three "Callouts" items come from the built-in "Callouts" plugin, toggled in Settings → Plugins; plugin item names only follow a UI language change after a restart. "Button" is desktop only. "Card" is not offered in the touch "+" block panel. The table scaffold's header cells are written as \`Column 1\` and \`Column 2\` (「列 1」 and 「列 2」 in the Chinese UI) — just type over them.
566
+
567
+ ### Markdown prefixes and inline syntax
568
+
569
+ Type a prefix at the start of a line and press space: the line converts on the spot — the prefix characters are removed, the caret stays put, and no new block appears.
570
+
571
+ | Type this | You get |
572
+ | --- | --- |
573
+ | \`#\` + space … \`######\` + space | Heading 1–6 |
574
+ | \`-\` / \`*\` / \`+\` + space | Bulleted list |
575
+ | \`3.\` + space | Numbered list, numbering from 3 |
576
+ | \`[]\` / \`[ ]\` / \`[x]\` / \`- [ ]\` / \`- [x]\` + space | To-do (the x forms start out checked) |
577
+ | \`\\|\` + space | Quote |
578
+ | \`>\` + space | Toggle block |
579
+ | \` \`\`\`py \` + space | A code block in py (a bare \` \`\`\` \` is plain text) |
580
+ | \`$$\` + space | An equation skeleton |
581
+ | \`---\` / \`___\` + space / \`***\` + space | A divider (\`---\` fires on the third hyphen, no space needed) |
582
+
583
+ > [!warning] Two things differ from other Markdown editors
584
+ > \`>\` + space gives you a collapsible Toggle block, not a quote. A plain quote is \`|\` + space.
585
+
586
+ - Headings are set, not stacked: typing \`# \` on a level-2 heading gives you a level-1 heading, and repeating the same level does nothing.
587
+ - Heading text may start with a number: once a heading is active, typing \`1. xxx\` keeps \`1. \` as literal heading text instead of turning the heading into a numbered list. \`1. \` in a paragraph and other prefixes in a heading still convert as before.
588
+ - Inside a list item, \`-\` / \`1.\` / \`[ ]\` change the current list's type or checkbox state rather than nesting another list.
589
+ - Enter fires the same conversions as space: type a single \`#\` and press \`↵\` to get a heading.
590
+
591
+ Inline syntax that converts as you type:
592
+
593
+ | Type this | You get |
594
+ | --- | --- |
595
+ | \`**bold**\` / \`__bold__\` | Bold |
596
+ | \`*italic*\` / \`_italic_\` | Italic |
597
+ | \`\` \`code\` \`\` | Inline code |
598
+ | \`~del~\` / \`~~del~~\` | Strikethrough |
599
+ | \`[text](url)\` | A link, live the moment you type the closing paren |
600
+ | \`![alt](url)\` | An image |
601
+ | \`[[\` | The note picker; picking one writes \`[[Note name]]\` |
602
+ | \`@\` | The same note picker |
603
+ | \`【【\` | Becomes \`[[\`, so you need not switch keyboards |
604
+ | \`[^note]\` | A footnote reference; if the note has no such definition yet, \`[^note]: \` is added at the end and the caret moves there |
605
+ | \`:smile\` | Emoji suggestions (at least two letters after the colon); Enter inserts the emoji itself |
606
+
607
+ - Footnotes: click a superscript in the text to jump to its definition, hover it to preview the definition; click the number left of a definition to jump back. Numbers follow the order references first appear and are display only — the file keeps the labels you wrote. Press \`Backspace\` right after a definition was added for you and the whole thing is undone, with the caret back after \`[^note]\`.
608
+ - Links accept only \`http:\`, \`https:\` and site-relative paths; a bare domain gets \`https://\` added; things like \`javascript:\` are rejected and left as plain text. \`mailto:\` and \`tel:\` are not supported.
609
+ - \`@\` stops being a mention at any space, bracket, newline, or past 30 characters; an \`@\` preceded by a non-space character (inside an email address, say) never triggers it.
610
+ - Put the caret at the very start of a rendered heading, list, to-do or quote line and press \`←\` or \`Backspace\`: the line's Markdown marker appears and can be edited character by character. Keep the marker intact (including its trailing space) and the line keeps its type; break it and the line falls back to a plain paragraph.
611
+
612
+ ### The ⠿ handle and the block menu
613
+
614
+ Hover any block and a ⠿ handle plus a + button appear in the left margin.
615
+
616
+ - Click ⠿ (tooltip "Click for menu, hold to drag") or right-click the block — this selects the block and opens its menu.
617
+ - Press and hold ⠿ to drag: drop between two rows to reorder, drop on a row's left or right edge to split into columns, drop out on the canvas stage (in canvas mode) to turn the block into a card. A drop-indicator line shows where it will land.
618
+ - Click + (tooltip "Add block below") to insert an empty paragraph below the current block, with the caret in it. It inserts a plain empty paragraph; it does not open the slash menu.
619
+ - Headings and list items with children get a fold chevron in the margin, with tooltips "Collapse section" / "Expand section" and "Collapse children" / "Expand children". This kind of fold is view state remembered on this device and is not written to the file; a Toggle block's open state is written into the Markdown and survives in other editors.
620
+ - \`Esc\` selects the whole block the caret is in, so copy, cut and delete act on the block; press \`Esc\` again to get back into the text. If a popup is open, \`Esc\` closes that first.
621
+ - \`⌘/Ctrl + A\` selects in tiers: first the current text block, then its top-level block (the whole list, the whole quote, or the block within its column), and only on the third press the whole note.
622
+ - \`⌘/Ctrl + ⇧ + ↑\` / \`⌘/Ctrl + ⇧ + ↓\` move the current block up or down among its siblings.
623
+ - \`⌘/Ctrl + D\` duplicates, the same as "Duplicate block" in the block menu: the block the caret is in (a single item inside a list), the selected block, or every block a cross-block selection touches. The copy goes right below, and the caret or selection moves onto it. On a Mac, \`Ctrl + D\` still deletes the next character.
624
+ - Deleting a block that points at a file on disk asks whether to delete that file too; cutting does not.
625
+
626
+ The block menu, in order: the section header "Turn into", then "Text", "Heading 1", "Heading 2", "Heading 3", "Bulleted list", "Numbered list", "To-do list", "Quote", "Toggle", "Card", a separator, then "Move to new column", "Return to document", "Duplicate block", "Delete".
627
+
628
+ - "Card" is hidden when the selection is a card, a column row, a column cell, a list item, or a block inside a column cell; "Return to document" appears only when what you selected is itself a card.
629
+ - Some notes use a shorter block menu instead: "Copy embed reference", "Duplicate block", "Move to new column", "Delete", with no "Turn into" section. A brand-new note you have not saved yet, and legacy-format notes opened after you switch off Settings → "Upgrade legacy notes to v4 plain Markdown on open", both behave this way. In those notes, change a block's type from the slash menu, a prefix, or the inline toolbar; their slash menu also has no "Card", and Enter does not fire the prefix conversions.
630
+
631
+ ### Turning blocks into other blocks, and the inline toolbar
632
+
633
+ There are three routes to a different block type, each covering a different set:
634
+
635
+ | Entry point | Targets it offers |
636
+ | --- | --- |
637
+ | Slash menu | Every block type |
638
+ | Block menu, "Turn into" | Text, Heading 1–3, Bulleted list, Numbered list, To-do list, Quote, Toggle, Card |
639
+ | Inline toolbar, "Turn into…" | Text, Heading 1–6, Bulleted list, Numbered list, To-do, Quote, Toggle, Code block, Equation |
640
+
641
+ Headings 4–6 can only be reached from the slash menu or the inline toolbar; Divider lives only in the slash menu; Columns and Card only in the slash menu and the block menu.
642
+
643
+ Select some text and a toolbar floats above the selection: leftmost is a button showing the current block type (tooltip "Turn into…"), then "Bold", "Italic", "Underline", "Strikethrough", "Inline code", "Link", the colour menu A ▾, "Clear formatting", "Align left", "Align center", "Align right". \`Esc\` closes it.
644
+
645
+ - A button lights up only when the format covers the whole selection; on a half-covered run it shows inactive, so pressing it again formats the entire run.
646
+ - No toolbar appears when the selection is an image. Across blocks, the type button reads "Multiple blocks".
647
+ - Shortcuts: \`⌘/Ctrl + B\` bold, \`⌘/Ctrl + I\` italic, \`⌘/Ctrl + U\` underline, \`⌘/Ctrl + ⇧ + S\` strikethrough, \`⌘/Ctrl + K\` link, \`⌘/Ctrl + L\` align left, \`⌘/Ctrl + R\` align right.
648
+ - \`⌘/Ctrl + K\` is the same path as the 🔗 button: if the selection is already a link it removes the link, and on an empty selection it does nothing. The dialog is titled "Insert link" with the hint "Type or paste an address (a bare domain gets https:// added)".
649
+ - A ▾ opens two swatch rows: "Text color" with 10 colours and "Background color" with 10 — Default, Red, Orange, Yellow, Green, Teal, Blue, Purple, Magenta, Gray, with the background row swapping Magenta for Pink. Picking "Default" clears that colour. Colours are stored as hex in the file, so Obsidian shows them too.
650
+ - \`Tab\` / \`⇧ + Tab\` follow the first rule that matches: indent two spaces inside a code block, move to the next or previous cell inside a table, sink or lift a list item, add or remove one indent step in a plain paragraph. \`Tab\` never moves focus out of the editor.
651
+ - Paragraph indent has a ceiling; deeper indents in an imported file stay as text. \`Tab\` onto a folded previous sibling only expands it — press again to actually indent.
652
+
653
+ ### Columns and cards
654
+
655
+ Putting two blocks side by side has three entry points:
656
+
657
+ - Slash menu "Columns": the current block takes a row of its own, an empty column opens to its right, and the caret moves into it.
658
+ - Block menu "Move to new column": the same result.
659
+ - Press and hold ⠿ and drop the block on a row's left or right edge to open a new column on that side. Notes that use the shorter block menu also show the hint "Drag ⠿ to a column edge to split into columns · drop between rows to add a row".
660
+
661
+ Press in the gap between two columns and drag sideways to change their widths.
662
+
663
+ > [!warning] Columns work on top-level blocks only
664
+ > Run it inside a list, or on a block already sitting in a column, and you get "Columns only work on top-level blocks — move this block out of its current column or list first." The \`/columns\` you just typed is already gone by then, so type it again.
665
+
666
+ Card has a sibling restriction: choose "Card" on a list item or on a block inside a column cell and you get "This block cannot be turned into a card — move it out of the list or columns first." On success you get "Turned into a card — switch to canvas mode at the top right to see it." — a new top-level card is inserted at the end of the note, which is why it disappears from where you were typing; nothing is lost. Cards are still visible in doc mode: a card with no parent looks exactly like ordinary body text, and one with a parent is indented and framed. To see how they are arranged, use the segmented control at the top right to switch to canvas mode. A card made while the caret was inside another card becomes its child.
667
+
668
+ ### Code blocks, equations and callouts
669
+
670
+ Code blocks:
671
+
672
+ - Slash menu "Code block", or \` \`\`\`py \` + space at the start of a line. An empty block is replaced in place, a non-empty one gets a new block below; text after the caret moves into a paragraph after the code block rather than being swallowed.
673
+ - Hover a code block and a toolbar appears at its top right: a language dropdown (titled "Language", with a "Plain text" entry, recently used languages first), "Copy" (titled "Copy code", flashing "Copied"), "Wrap", "Numbers" (which becomes "Hide numbers"), and "Fold" (which becomes "Unfold").
674
+ - The language is the fence info and is saved to the file; wrap, numbers and fold are view state for this session only and reset when you reopen the note — deliberately, so nothing proprietary goes into the Markdown.
675
+ - Line numbers are unavailable while wrap is on, and the button explains "Line numbers are unavailable while wrapping is on (soft-wrapped lines have no number of their own)". "Fold" limits the block to 8 lines.
676
+
677
+ Equations:
678
+
679
+ - Slash menu "Equation", or \`$$\` + space at the start of a line, inserts a one-line \`$$ $$\` skeleton with the caret between the delimiters.
680
+ - It renders with KaTeX whenever the caret is elsewhere, and shows its source when the caret is on that line. Hovering the rendered result reveals a \`</>\` button ("View source") that jumps into the source; note links and \`![[…]]\` image embeds carry the same button.
681
+ - An equation that cannot be parsed shows "Formula could not be rendered".
682
+
683
+ > [!warning] An equation must be on one line
684
+ > Only the one-line \`$$ $$\` form renders. Two \`$$\` on separate lines are read as two paragraphs and will never render.
685
+
686
+ Callouts:
687
+
688
+ - A blockquote whose first line starts with \`[!type]\` renders as a coloured callout. The types with a colour of their own are note, info, tip, hint, warning, caution, danger, error, bug, example, quote, plus the fold type used by Toggle blocks; anything else falls back to the note colour.
689
+ - Add \`+\` or \`-\` after the type to make it foldable, and a chevron appears next to the title ("Expand" / "Collapse"). The open state lives in that one character in the Markdown, so Obsidian opens it folded too.
690
+ - While the caret is elsewhere, the \`[!type]\` token and any \`## \` or \`- \` prefix in the title are hidden; they come back when you edit the title line.
691
+
692
+ ### Images, embeds, bookmarks and file blocks
693
+
694
+ - "Image" opens the system file picker, saves the image you choose as an attachment next to the note, and inserts \`![[filename]]\`, which renders as an image block with a resize handle. A failed save says nothing at all — if no image appears after the insert, just do it again.
695
+ - "Embed block" asks for a \`note-name#block-id\` (dialog "Embed a block reference", confirm button "Embed"); a note name on its own embeds that note's first block. If the clipboard already holds an \`![[…]]\` the field is pre-filled — "Copy embed reference" in the shorter block menu is where such a reference comes from.
696
+ - An embedded block is read-only where it sits, carrying an "↪ Embed" badge and an "Edit at the source" link.
697
+ - "Bookmark" asks for a link, with the hint "Paste a link starting with https:// — YouTube links turn into an embedded player." Only addresses starting with \`https://\` or \`http://\` are accepted; anything else is discarded. On disk it is one bare link, rendered as a bookmark card with page information.
698
+ - Pasting a link outright pops a small "Paste as" menu: "Link" (hinting the hostname), "Bookmark card" ("Default"), "Embed" ("Player / web page"). Nothing is highlighted at first, so pressing Enter right after the paste still inserts a newline; press \`↑\` or \`↓\` to pick an item first, then \`↵\` or \`Tab\` confirms — any other key dismisses the menu and goes through as normal.
699
+ - "Page" creates a child note in this note's sub-folder, inserts a \`[[link]]\` to it, and opens it.
700
+ - "Database" creates a database file and embeds it as \`![[…]]\`, rendered as an interactive table. "Link database" lists every database in the vault for you to pick from; with none there yet it shows "No databases in this vault yet (create one with /database)".
701
+ - "Note view" creates a folder plus a view definition in which every row is a note.
702
+ - "Drawing" creates a drawing file and embeds it, in the same format the Obsidian Excalidraw plugin uses, so one vault opens in both.
703
+ - "Template" opens the template picker — templates live in the vault's \`templates/\` folder — and inserts the one you choose at the caret.
704
+ - "Button" inserts an unconfigured button block; clicking that fresh button opens the builder, where you attach a manual automation rule, a label, an icon and an optional confirmation prompt. Desktop only.
705
+ - To tick a to-do, click the box itself: it is drawn in the list's left margin, and a click that lands on the text does nothing.
706
+
707
+ ## 5 · Formatting and editing
708
+
709
+ Formatting in Amadeus happens as you type: inline formatting has both a floating toolbar and key bindings, the Markdown source is always one click away, and folding, indent and undo each behave in a definite way. This chapter is organised by what you press — every entry says where to press it, what happens, and when it will not show up.
710
+
711
+ ### Select text and the toolbar appears
712
+
713
+ Drag-select a non-empty stretch of text in a note and a formatting toolbar floats above the selection (it flips below when there is no room above). There is no hotkey and no menu entry — selecting is the switch, and \`Esc\` dismisses it.
714
+
715
+ Twelve controls, left to right:
716
+
717
+ | Control | What it does |
718
+ |---|---|
719
+ | The leftmost button with a ▾ | Shows the current block type; opens the "Turn into…" menu |
720
+ | B / I / U / S | "Bold", "Italic", "Underline", "Strikethrough" |
721
+ | \`</>\` | "Inline code" |
722
+ | 🔗 | "Link"; on a selection that is already a link it removes the link |
723
+ | A ▾ | "Text / background color", opens two rows of swatches |
724
+ | T× | "Clear formatting" |
725
+ | The three rightmost | "Align left", "Align center", "Align right" |
726
+
727
+ - B / I / U / S / \`</>\` light up only when the whole selection carries that format. On a partly covered selection they read as inactive, and pressing once applies the format to all of it.
728
+ - "Turn into…" is a list of 14 block types: "Text", "Heading 1" through "Heading 6", "Bulleted list", "Numbered list", "To-do", "Quote", "Toggle", "Code block", "Equation". The whole block the selection sits in is converted.
729
+ - "Toggle" is not a block type of its own — it wraps the block into a callout that starts folded (see the folding section below).
730
+ - Colours come in two rows: "Text color" with 10 swatches (Default, Red, Orange, Yellow, Green, Teal, Blue, Purple, Magenta, Gray) and "Background color" with 10 (Default, Red, Orange, Yellow, Green, Teal, Blue, Purple, Pink, Gray). "Default" clears that colour.
731
+ - "Clear formatting" strips inline marks only (bold, italic, underline, strikethrough, inline code, links, colours). It does not change the block type — a heading stays a heading, a list stays a list.
732
+ - Alignment applies to paragraphs and headings only; list items, table cells and code blocks are not affected. When a multi-block selection has mixed alignment, none of the three buttons light up.
733
+
734
+ > [!warning] Toolbar did not appear? It is almost always one of these five
735
+ > - You selected an image — the toolbar stays out of the way for images.
736
+ > - One of the \`[[\`, \`@\`, \`/\` or "Paste as" popups is open.
737
+ > - You scrolled the page or resized the window — both close it immediately; just select again.
738
+ > - The selection spans several blocks — the toolbar is there, but the leftmost button reads "Multiple blocks".
739
+ > - You are not in the note editor: read-only views, a \`.md\` file opened directly in the workspace, and the hover preview of a wikilink do not have this toolbar.
740
+
741
+ ### Keyboard shortcuts
742
+
743
+ With the caret inside a note body, these keys belong to the editor:
744
+
745
+ | Shortcut | What it does |
746
+ |---|---|
747
+ | \`⌘/Ctrl + B\` | Bold |
748
+ | \`⌘/Ctrl + I\` | Italic |
749
+ | \`⌘/Ctrl + U\` | Underline |
750
+ | \`⌘/Ctrl + Shift + S\` | Strikethrough |
751
+ | \`⌘/Ctrl + E\` | Inline code |
752
+ | \`⌘/Ctrl + K\` | Link; on a selection that is already a link it removes it, and it does nothing on an empty selection |
753
+ | \`⌘/Ctrl + L\` | Align left |
754
+ | \`⌘/Ctrl + R\` | Align right |
755
+ | \`⌘/Ctrl + Z\` | Undo |
756
+ | \`⌘/Ctrl + Shift + Z\` or \`⌘/Ctrl + Y\` | Redo |
757
+ | \`⌘/Ctrl + Alt + ↑\` / \`↓\` | Move the current block up / down (\`⌘/Ctrl + Shift + ↑\` / \`↓\` does the same) |
758
+ | \`Esc\` | Select the whole block; press again to go back into the text |
759
+ | \`⌘/Ctrl + A\` | Tiered select-all: this block → the whole top-level block → the whole note |
760
+
761
+ > [!warning] Two things that look like bugs and are not
762
+ > - The centre button's tooltip says \`⌘/Ctrl + E\`, but that combination is inline code inside the editor. To centre text, click the centre button on the toolbar. \`⌘/Ctrl + L\` and \`⌘/Ctrl + R\` do not have this problem.
763
+ > - While the caret is in a note body, \`⌘/Ctrl + K\` is "Link", not the command palette. To open the palette, click outside the note body first.
764
+
765
+ - These keys belong to the editor itself. They are not listed under Settings → Appearance → Shortcuts and cannot be rebound; that page covers app-level commands such as find in page.
766
+ - A physical keyboard is required. Mobile installs no global hotkeys — use the floating toolbar instead.
767
+ - Tiered select-all needs "Upgrade legacy notes to v4 plain Markdown on open" under Settings → Workspace → Notes to stay on (it is on by default).
768
+ - Typing Markdown is a shortcut too: \`**bold**\`, \`*italic*\`, \`\` \`code\` \`\` and \`~~strikethrough~~\` convert on the spot, and \`[text](address)\` becomes a live link the moment you type the closing paren.
769
+ - Link addresses go through a safety filter: only \`http\` / \`https\` and site-relative paths are accepted, a bare domain gets \`https://\` added, and things like \`javascript:\` and \`data:\` are rejected and left as ordinary text.
770
+
771
+ ### Enter, line breaks, and indent
772
+
773
+ There are three kinds of Enter — do not mix them up:
774
+
775
+ | Key | Result |
776
+ |---|---|
777
+ | \`Enter\` | Starts a new paragraph. In a heading, the left half stays a heading and the right half becomes body text; a folded heading expands first, then starts body text below it |
778
+ | \`Shift + Enter\` | A line break inside the same paragraph — no new paragraph |
779
+ | \`⌘/Ctrl + Enter\` | Inside a to-do = check or uncheck it; inside a quote = a line break within the quote; inside any other list = same as Enter, it splits the item; everywhere else = a new empty paragraph below, without splitting the current text |
780
+ | \`Tab\` | Indents the paragraph one level; inserts two spaces inside a code block (a multi-line selection is indented line by line); moves to the next cell in a table; sinks a list item |
781
+ | \`Shift + Tab\` | The reverse of the above |
782
+ | \`Backspace\` at line start | First outdents one level; at the left margin it follows a ladder: a non-empty heading drops to body text in one step → the list or quote wrapper comes off → the block merges into the one above |
783
+ | \`⌘/Ctrl + Backspace\` | Back to the left margin in one step |
784
+
785
+ - Paragraph indent is capped at 8 levels. It is written to disk as literal leading tabs, so the indent survives in other editors.
786
+ - Enter inherits the current indent level. Pressing Enter in an empty indented paragraph **keeps the same level** — that is deliberate; to get out, press \`Shift + Tab\` or \`Backspace\` at the start of the line.
787
+ - Paragraphs inside list items and quotes do not take indent levels: lists sink and lift instead, and Markdown cannot express an indented paragraph inside a quote.
788
+ - \`Tab\` never moves focus out of the editor — the key is always swallowed.
789
+ - On-screen keyboards have no \`Tab\`: the "Outdent" and "Indent" buttons in the bottom editing capsule are \`Shift + Tab\` / \`Tab\`, with exactly the same rules.
790
+ - \`Tab\` against a folded previous sibling only unfolds it; press again to indent.
791
+ - Enter inside a quote gives you two clean quote paragraphs, not a line break. For a line break inside a quote, use \`⌘/Ctrl + Enter\`.
792
+ - Inside a code block, \`Shift + Tab\` removes up to two leading spaces per line.
793
+ - If a file brought in from elsewhere has more than 8 leading tabs on a line, the extra ones stay in the text — no characters are lost.
794
+ - Outdent-by-backspace and \`⌘/Ctrl + Backspace\` need "Upgrade legacy notes to v4 plain Markdown on open" under Settings → Workspace → Notes to stay on (it is on by default).
795
+
796
+ > [!note] Type \`#\`, \`-\`, \`1.\`, \`- [ ]\` or \`>\` at the start of a line and press space, and the line converts to that block on the spot — the trigger characters are removed and the caret stays where it is. Enter fires the same conversions (this also needs the "upgrade to v4" setting above to be on).
797
+
798
+ ### Source and visual editing
799
+
800
+ A whole note can switch between visual (WYSIWYG) editing and plain Markdown source. Three entry points, none with a default hotkey:
801
+
802
+ - The button on the right of the note's top bar, tooltip "Switch to Markdown source"; in source mode it reads "Switch to visual editing (WYSIWYG)".
803
+ - The command palette (click outside the note body first, then press \`⌘/Ctrl + K\`) → "Toggle source / visual editing". This command is only in the palette while the Amadeus Space is active.
804
+ - On touch devices: the "⋯" on the bottom editing capsule → "Switch to Markdown source" / "Switch to visual editing". Mobile hides the whole top bar row, so this is the only way in.
805
+
806
+ What happens to the caret:
807
+
808
+ - The caret is carried across; it no longer jumps back to the top of the file.
809
+ - When the position cannot be recognised (the text around the caret is all Markdown syntax — \`**bold**\` is just "bold" on the visual side), the caret falls back to **the start of that block**. It will never land in a different block.
810
+ - In a split view each panel remembers its own caret.
811
+ - Switching to source and back keeps heading and list folds as they were (they are remembered on this device — see "Folding" below).
812
+
813
+ To see the source of just one element, you do not have to switch the whole note:
814
+
815
+ - Equations, \`[[wikilinks]]\` and \`![[images]]\` — anything that renders into a finished object once the caret leaves the line — show a small \`</>\` button in their top-right corner on hover, tooltip "View source". Clicking it puts the caret into the raw Markdown; moving the caret away re-renders it.
816
+ - Touch devices have no hover state, so this is a desktop and web capability; read-only views do not get the button.
817
+ - An \`![](path)\` image has no literal source in the document, so clicking its button opens a one-line source input box instead of moving the caret into the text.
818
+
819
+ Line-start markers can be edited character by character too: put the caret at the very start of a line and press \`←\` or \`Backspace\`, and \`### \`, \`- \`, \`1. \`, \`- [ ] \`, \`> \` turn into a real input box. Change \`###\` to \`##\` and the level drops; delete it all and the line goes back to a plain paragraph. Breaking the syntax (losing the trailing space, \`##\` becoming \`#x\`) drops the structure there and then and writes the remaining characters back as a plain paragraph — that is by design. This path covers headings, bulleted lists, numbered lists, to-dos and quotes only; toggle tokens and code fences do not round-trip this way.
820
+
821
+ ### Folding: heading sections and callouts
822
+
823
+ There are two kinds of folding and they behave very differently — one is view state remembered on this device, the other is written into the file.
824
+
825
+ Heading section folding:
826
+
827
+ - Hover a heading line and a fold button appears in the left gutter, tooltip "Collapse section", and "Expand section" once folded; a folded heading also keeps a permanent expand button at the start of its line.
828
+ - The section ends at the next heading of the same or a higher level (or at the end of the container). Headings inside cards and inside columns fold too.
829
+ - An empty section (a heading immediately followed by a heading of the same level) gets no fold button.
830
+ - The same gutter button on a list item reads "Collapse children" / "Expand children".
831
+ - Folding is purely visual — not one character of the Markdown on disk changes.
832
+ - The fold state **is remembered on this device** (per vault and note path): switching to source and back, going to another note and returning, reopening the note or the app all keep it folded. If a heading's text changes (even from somewhere else), that fold is forgotten and shows expanded. On another device, or in another editor, everything is expanded.
833
+ - Keyboard: \`⌘/Ctrl + ⌥/Alt + Enter\` "Toggle fold" — with the caret on a heading or on a list item that has children, it folds or expands that one; with the caret in body text, it folds the section the caret is in and puts the caret at the end of its heading.
834
+ - The command palette also has "Fold all" and "Unfold all". They have no default shortcut; bind one under Settings → Appearance → Shortcuts.
835
+
836
+ Callout folding:
837
+
838
+ - A quote whose first line starts with \`[!type]\` renders as a coloured callout. The types with their own colour are \`note\`, \`info\`, \`tip\`, \`hint\`, \`warning\`, \`caution\`, \`danger\`, \`error\`, \`bug\`, \`example\`, \`quote\`. Any \`[!word]\` is accepted; the rest fall back to the default blue.
839
+ - A \`-\` after the type makes it start folded, a \`+\` makes it start expanded, and a chevron follows the title text, tooltip "Collapse" / "Expand".
840
+ - Three ways to toggle it: click anywhere on the title line, click the chevron, or press Enter while it is folded (it expands first, then breaks the line). **Double-clicking** the title line reveals the \`[!note]-\` token itself.
841
+ - The fold state is written into the \`+\` / \`-\` in the Markdown, so it survives reopening the note and reads the same way in Obsidian.
842
+ - To make a folded block quickly: type \`>\` at the start of a line and press space, or select text → toolbar "Turn into…" → "Toggle".
843
+
844
+ > [!warning] The two traps
845
+ > - \`>\` + space gives you a **collapsible callout**, not a plain quote. The plain quote is \`|\` + space.
846
+ > - A folded region is out of the caret's reach: arrow keys are pushed past it and find in page will not match folded text. That is deliberate — it stops you typing into content you cannot see.
847
+
848
+ ### Undo, find in page, and word count
849
+
850
+ Undo and redo: \`⌘/Ctrl + Z\` to undo, \`⌘/Ctrl + Shift + Z\` or \`⌘/Ctrl + Y\` to redo. A physical keyboard is required.
851
+
852
+ - Typing is merged into chunks by short pauses rather than one step per character; structural changes (converting a block, moving one, deleting one) are one step each.
853
+ - Undoing on the canvas walks the same single timeline — text typed inside cards is on it too, and steps back in the order things happened.
854
+ - Outside changes from cloud sync, an agent writing to disk, or editing the same file in Obsidian **will not interrupt the keystroke you are in the middle of**: they wait until you stop typing, and wait indefinitely while an input method composition is open. So content that updates a beat late is this guard doing its job, not the app hanging.
855
+
856
+ Find in page: \`⌘/Ctrl + F\`, or the command palette → "Find in page". The bar docks to the top right of the current view.
857
+
858
+ - The input reads "Find in page…" and searches as you type; \`Enter\` for next, \`Shift + Enter\` for previous, \`Esc\` to close; a \`3/12\` counter sits on the right.
859
+ - It scans everything in the current view, not just the note body — embed cards, databases and canvas elements all count, and it works in source mode too.
860
+ - Matching is case-insensitive. A single match may span bold, links and inline code, but it **never crosses a block**.
861
+ - Text you cannot see does not match: folded sections, and card bodies replaced by a short title on a zoomed-out canvas, are skipped.
862
+ - When focus is inside the built-in terminal, a code editor or an embedded web page, the key steps aside for their own find.
863
+ - The scan re-runs automatically after the content changes (typing, streaming output). Switching away to another tab retracts the bar.
864
+ - The key can be rebound or unbound under Settings → Appearance → Shortcuts. Mobile installs no global hotkeys — use the command palette.
865
+
866
+ Word count:
867
+
868
+ - Open a note and the right end of the status bar at the bottom of the window shows "{n} chars" live. That is a **character count** (length with all whitespace removed), not a word count.
869
+ - It can be turned off on its own under Settings → Appearance → Status bar, where the item is called "Word count".
870
+ - If you want words: command palette → "Count words", which shows a notification reading "About {chars} characters · {words} words on this page". Words are split on whitespace, so the number is of limited use in Chinese text. The command comes from a built-in plugin and disappears if you disable that plugin on the plugins page.
871
+ - The status bar belongs to the desktop shell; mobile does not have it.
872
+
873
+ ### How the caret and selection behave
874
+
875
+ The smooth caret is **off by default**. Turn it on and the caret glides to its new position (Word-style):
876
+
877
+ - Settings → Appearance → the "Smooth caret" switch, or command palette → "Toggle smooth caret" (no default hotkey).
878
+ - It covers two places: the Amadeus editor and the Tangu chat input.
879
+ - It is not drawn while there is a selection; it hands over to the system caret whenever focus is in a real input box (such as the line-start marker source box from the previous section) so you never see two carets; and it steps aside entirely when a touch keyboard comes up.
880
+
881
+ Selection:
882
+
883
+ - \`Esc\` selects the whole block the caret is in, so copy / cut / delete act on the block; a second \`Esc\` puts the caret back in the text. If a popup is open, \`Esc\` closes that first.
884
+ - \`⌘/Ctrl + A\` works in three tiers: the text of this block, then the whole top-level block (an entire list, an entire quote), then the whole note.
885
+ - Deleting a block that references a file on disk asks whether to delete that file too; cutting does not ask.
886
+
887
+ Two things happen with a live selection that are worth knowing before they surprise you:
888
+
889
+ - Typing \`(\`, \`[\`, \`{\`, \`<\`, \`"\`, \`'\`, \`\` \` \`\` — or the full-width \`(\`, \`【\`, \`「\`, \`《\`, \`“\`, \`‘\` — **wraps** the selection instead of replacing it. The text stays selected afterwards, so you can add a second layer. A backtick gives you inline code straight away. Multi-block selections are not wrapped, and inside a code block a bracket is just a bracket.
890
+ - **Pasting a URL over selected text** turns that text into a link instead of replacing it. The rule is strict: a non-empty selection inside a single block, and a clipboard holding exactly one whitespace-free \`http\` / \`https\` address. It does not apply inside code blocks.
891
+
892
+ Two more caret-level details:
893
+
894
+ - A to-do's checkbox is drawn in the padding to the left of the list, and only a click in that gutter toggles it. A click even slightly to the right lands in the text and does nothing. From the keyboard, put the caret in the to-do and press \`⌘/Ctrl + Enter\`.
895
+ - An empty block the caret is sitting in shows a grey hint: a plain paragraph says "Type '/' for commands", a heading names its own level as "Heading {n}". The hint is suppressed inside quotes, callouts and code blocks.
896
+
897
+ Wrapping with paired characters and tiered select-all both need "Upgrade legacy notes to v4 plain Markdown on open" under Settings → Workspace → Notes to stay on (it is on by default).
898
+
899
+ ## 6 · Cards and the canvas
900
+
901
+ A card is a movable shell wrapped around one block. The shell is what gives that block its own position, size and parent/child links, which is what lets it sit on a canvas. So a note has two views of the same content: doc mode reads top to bottom, canvas mode spreads the cards out to arrange by hand — both views share one copy of the content, and switching changes nothing you wrote.
902
+
903
+ ### What a card is
904
+
905
+ A card is not a new kind of content, just a shell around one block. The text inside stays ordinary Markdown and reads the same in any other editor.
906
+
907
+ | Term | What it means |
908
+ |---|---|
909
+ | card | A block in a shell — selectable, movable, resizable, and able to have parents and children |
910
+ | main card | The body text that was never pulled out into a card; the whole flow counts as one card |
911
+ | hierarchy | The parent/child links between cards, stored in the note's frontmatter only — never in the body text |
912
+
913
+ The main card behaves almost exactly like a normal card: select it, drag it, resize it, press Space to edit it, grow children from it, and let another card adopt it as a parent. Two exceptions:
914
+
915
+ - The main card cannot be deleted — it is the note body itself, so its right-click menu has no "Delete".
916
+ - The main card can only be a parent; it can never become another card's child.
917
+
918
+ > [!note]
919
+ > Notes in the old format need an upgrade before they have cards or a canvas. Settings → Notes → "Editing and safety" → "Upgrade legacy notes to v4 plain Markdown on open" is on by default; turn it off and old notes get neither cards nor the view pill. The upgrade is written to disk only after you really edit the note.
920
+
921
+ > [!warning]
922
+ > Cards and canvas mode are not the same thing as "New whiteboard" in a folder's right-click menu. A drawing board is its own separate file; a card is another view of the same note.
923
+
924
+ To try it straight away: open the command palette (\`⌘/Ctrl + K\`) and search for "Open the tutorial". It creates a real note in your vault, [[Amadeus 使用教程]], where each lesson is a card and the parent/child links indent into a hierarchy in doc mode and lay out as one branch in canvas mode. You need an open vault first, or the tutorial has nowhere to go. The file name does not follow the interface language — both languages write the same file — and an existing tutorial is never overwritten, so delete it first if you want a fresh one.
925
+
926
+ ### Turning a block into a card, and back
927
+
928
+ Put the cursor in a block and take either entrance:
929
+
930
+ - Type \`/\` on an empty line or after a space and pick "Card" from the "Basic" group (the hint column reads \`Canvas\`; card, 「卡片」, node and canvas all match).
931
+ - Hover the block, click the \`⠿\` handle in the left gutter, and pick "Card" from the "Turn into" section. Right-clicking a block in doc mode opens the same menu.
932
+
933
+ > [!warning]
934
+ > A top-level card is inserted at the END of the note — the paragraph you were typing in vanishes from where you were. The app says "Turned into a card — switch to canvas mode at the top right to see it." Nothing is lost; it moved.
935
+
936
+ Not every block can become a card. List items, column rows and columns, and anything sitting inside a column cell are refused with "This block cannot be turned into a card — move it out of the list or columns first." In those cases the block menu simply does not offer "Card" at all. The mobile \`+\` two-column block panel does not list "Card" either — type \`/\` in the note instead.
937
+
938
+ Unwrapping has exactly one entrance: the menu. Dragging a card anywhere only moves it; it never unwraps implicitly.
939
+
940
+ | Where | How | Menu item |
941
+ |---|---|---|
942
+ | Canvas mode | Right-click the card | "Unwrap into document" |
943
+ | Doc mode | Select the whole card, then \`⠿\` or right-click | "Return to document" |
944
+
945
+ Two ways to select a whole card in doc mode: put the cursor in the card and press \`Esc\` once; or hover any line inside it and click the extra \`❏\` button in the gutter (tooltip "Select card, hold to drag it"). Press \`Esc\` again for a text cursor. Note that hovering a card's **first or last line** gives that line's own \`⠿\`, not the whole card — use \`❏\` or \`Esc\` for the card.
946
+
947
+ > [!note]
948
+ > Unwrapping happens **in place**: the content stays where it is and turns back into ordinary blocks; it does not travel back to where it originally came from. The shell's anchor is not recycled — an inert comment stays in the file, so any \`![[note#anchor]]\` embed elsewhere keeps resolving, at the cost of a blank-looking empty paragraph at that spot in the editor. Unwrapping the last card dissolves the note's canvas data only when the note also has no shapes, connectors or frames left and the main card is still at its default position and width. A note that still holds any whiteboard element, or whose main card you have moved or resized, keeps its canvas data.
949
+
950
+ ### Doc mode and canvas mode
951
+
952
+ The note's top toolbar carries a segmented pill (same row as the path and share controls) with two words: "Document" and "Canvas". One click switches the view.
953
+
954
+ | Entrance | Where | Label |
955
+ |---|---|---|
956
+ | Desktop | The pill in the note's top toolbar | "Document" / "Canvas" |
957
+ | Touch | The Frame-icon button in the bottom editing bar | "Switch to canvas" / "Switch to document" |
958
+
959
+ On touch devices that whole toolbar row is not rendered, leaving only the bottom-bar button. In source mode ("Switch to Markdown source" in the top bar) neither entrance appears.
960
+
961
+ - Switching a view **writes nothing to disk**. A note that has never used the canvas just gets looked at differently; its frontmatter does not even gain the canvas line.
962
+ - What is remembered is "which view this note last used on this machine", and that local memory wins over what the file records. So switching to canvas on the desktop does not make the note open as a canvas on your phone.
963
+ - Touch devices **always open in doc mode**, whatever the file says. To see the canvas, press the bottom-bar button yourself.
964
+ - There is no command-palette command for switching views; the pill and the bottom-bar button are the only two entrances.
965
+
966
+ Switch to the canvas while typing and the card holding the cursor is brought into view and stays editable; switch back and your old scroll position returns. If you were only browsing, each side keeps its own remembered position instead of jumping to a stale selection. The document scroll position lasts only for this session and is gone when you close the app; only the view itself is remembered long term.
967
+
968
+ > [!info]
969
+ > The two views share one copy of the content and one set of folds — switching only changes appearance, it does not rebuild the editor. So your undo history survives a view switch: you can move cards on the canvas, switch back to the document and press \`⌘/Ctrl + Z\`.
970
+
971
+ One more thing: find-in-page still locates matches in canvas mode. The canvas does not use ordinary scrolling, so a match is translated back into stage coordinates and brought to the centre of the view.
972
+
973
+ ### Selecting and editing on the canvas
974
+
975
+ On the canvas a single click is reserved for selecting and dragging. **Nothing inside a card responds until that card is in edit mode — this is not a bug.** Clicking a to-do checkbox or a \`[[wikilink]]\` raises a hint instead of acting:
976
+
977
+ > [!warning]
978
+ > "Double-click a card (or select it and press Space) to edit — then you can tick to-dos and open backlinks"
979
+
980
+ Entering and leaving edit mode: double-click a card (caret lands where you clicked), or select it and press \`Space\` (caret lands at the end); \`Esc\` returns to the selected state. Real controls are the exception — buttons, links, the \`</>\` source toggle, an embed card's open button and database buttons inside a card all work without editing first, and switch the card into edit mode as they go.
981
+
982
+ | Action | Result |
983
+ |---|---|
984
+ | Click a card | Selects just that card |
985
+ | \`Shift\` + click or drag | Takes the card and every descendant, selected and moved together |
986
+ | \`⌘/Ctrl\` + click | Adds exactly this one card, without its descendants |
987
+ | Press and drag on empty space | Marquee select (mouse and trackpad only; not on touch) |
988
+ | \`⌘/Ctrl + A\` | Selects every card, the main card and shapes (connectors and hierarchy lines are excluded) |
989
+ | \`←\` \`→\` \`↑\` \`↓\` | Nudge by 8px |
990
+ | \`Shift\` + arrow keys | Nudge by 1px |
991
+ | \`⌘/Ctrl + C\` \`X\` \`V\` | Copy / cut / paste cards |
992
+ | \`Delete\` / \`Backspace\` | Delete the selection |
993
+
994
+ > [!warning]
995
+ > The arrow keys are the reverse of most software: a bare arrow key is the 8px big step, and \`Shift\` is the 1px fine step. \`Shift\` is also "take the whole branch" — \`Shift\`-click a card, press \`Delete\`, and every descendant goes with it. Use \`⌘/Ctrl\` when you mean one card.
996
+
997
+ Both cards and the main card can be resized, through two hot zones:
998
+
999
+ - **While nothing is selected**: move the pointer to the **right edge** of a card (or of the main card's body text) — there is a roughly 12px resize strip there; drag sideways to change the width.
1000
+ - **While a single card is selected**: eight handles appear on the selection box — four edges and four corners. An edge changes one dimension; a corner pins the opposite corner and changes width and height together.
1001
+
1002
+ A card's minimum size is 168 × 72px; the main card has a larger floor of 320px wide — it is the body text, and squeezing it narrower stops being a document. A purely horizontal drag (the left or right edge, or the right-edge strip) writes no height, so the card still grows and shrinks with its content; drag vertically or diagonally once and the height is pinned. With "Snap to grid" on, the height snaps at the moment you release just as the width does. Pressing a handle without moving it writes nothing.
1003
+
1004
+ Cards never stack:
1005
+
1006
+ - However a new card is created, it is nudged clear of the cards already there instead of landing on top of them.
1007
+ - Release a card overlapping another one and it slides to the nearest free spot with a short spring animation. It looks like the card "bounced back", but it is just the anti-overlap rule, and the whole gesture is still one undo step.
1008
+
1009
+ Right-click gives four menus, in this order:
1010
+
1011
+ - A card or the main card: a row of color swatches at the top (absent on the main card), then "Connect to…", "Auto-arrange" (only when it actually has children), "Group into a frame", "Unwrap into document" (absent on the main card), "Delete" (absent on the main card).
1012
+ - A shape or frame: a row of color swatches at the top, then "Edit text", "Connect to…", "Group into a frame", "Delete".
1013
+ - A connector: a row of color swatches at the top, then "Edit text", "Delete". Connectors are thin, so a right-click within 8px of the line counts as a hit.
1014
+ - Empty canvas: "New card", "Rectangle", "Ellipse", "Text", \`Frame\`, "Fit to content". That \`Frame\` entry reads the same in both languages.
1015
+
1016
+ On top of that, card, shape and frame menus have "Copy" and "Duplicate"; the connector menu has an "Arrows" group (arrow at end / at start, both ends, no arrows); the empty-canvas menu adds "Add note…" (pick a note and it lands as an embed card) and "Export as JSON Canvas".
1017
+
1018
+ Right-clicking a card you are editing yields to the system text menu (copy, paste, spell-check) instead. On touch, a 500ms long press is the right-click. One \`Esc\` backs out four levels in order: close the context menu, cancel a connector in progress, return from the current tool to the select tool, clear the selection.
1019
+
1020
+ Copy and paste cover cards only: within the same note a paste reproduces whole cards with their geometry, arrangement and embeds; into another note or another window they are rebuilt one by one from markdown, so formatting survives but the arrangement degrades to a 24px staircase; text copied from anywhere else lands as one new card. Shapes, connectors and parent/child links are not carried on the clipboard. A paste lands at the centre of the view rather than at the pointer, and repeated pastes offset by 24px.
1021
+
1022
+ Copying a card and then **pasting it in doc mode** gives you its content as a run of ordinary blocks, not a second card. For a real copy use "Duplicate block" in the block menu, or hold \`⌥/Alt\` (\`Ctrl\` on Windows and Linux) while dragging \`❏\` in doc mode.
1023
+
1024
+ Besides the slash menu and the block menu, the canvas turns anything you drop on it into a card. While you drag something over the stage, the whole stage lights up as a drop zone.
1025
+
1026
+ | What you drop | What you get |
1027
+ |---|---|
1028
+ | Files from your computer (dragged in from Finder or File Explorer) | **One card per file**, holding a reference to that attachment. A placeholder card reading "Uploading {name}" lands first and is swapped for the real reference once the file is stored; if storing fails the placeholder is removed rather than left behind as an empty shell. Several files at once are staggered by 24px |
1029
+ | A note dragged from the sidebar | An embed card \`![[note]]\` that shows the note's content; hold \`Alt\` as you drop for a \`[[wikilink]]\` card instead. Dragging the note into its own canvas always gives a wikilink |
1030
+ | A session or workspace file dragged from the sidebar | A session becomes a \`[[wikilink]]\` card; a workspace file is not in the vault, so its path lands as text |
1031
+ | Text or a link from another app | One card whose content is parsed as Markdown into real blocks — headings, lists and \`[[wikilinks]]\` come through as real nodes |
1032
+
1033
+ Files and sidebar references **always belong to the stage**: even if you release them on top of a card you are editing, they mean "put something down here", not "insert into that card". Plain text is different — released inside a card you are editing, it belongs to the editor and lands at the caret. The size limits, the failure messages and where the attachment ends up are exactly as when you drag a file into the document; see chapter 12.
1034
+
1035
+ - [ ] Clicking a checkbox inside a card does nothing? Double-click into edit mode first.
1036
+ - [ ] Deleted more than you meant to? Check whether \`Shift\` was held.
1037
+ - [ ] Want to move shapes and connectors along with cards? Select them and press \`⌘/Ctrl + C\` / \`⌘/Ctrl + V\` (pasting into another note keeps the layout), or \`⌘/Ctrl + D\` to duplicate in place. While you are typing inside a card, \`⌘/Ctrl + D\` belongs to the editor and duplicates the current block.
1038
+
1039
+ ### Child cards and the mind map
1040
+
1041
+ With exactly **one** card selected (the main card counts) and focus on the stage:
1042
+
1043
+ | Key | Result |
1044
+ |---|---|
1045
+ | \`Tab\` | Grows a child card |
1046
+ | \`Enter\` | Grows a sibling card |
1047
+
1048
+ The mouse equivalent is the pair of ⊕ affordances that appear on a selected card: the one on the right is "New child card (Tab)", the one below is "New sibling card (Enter)". They show only on a single selection that is not in edit mode, and hide when you pick a tool other than select. The new card is placed on whichever side of the parent is emptier and nudged clear of existing cards; focus stays on the stage afterwards, so you can keep pressing \`Tab\` to keep growing the branch.
1049
+
1050
+ > [!warning]
1051
+ > These two keys work only while focus is on the stage. With the caret inside a card's text, \`Tab\` is paragraph indent and \`Enter\` is a new paragraph — that belongs to the editor, and the split is deliberate.
1052
+
1053
+ Three more ways to change parent/child links:
1054
+
1055
+ - **Drag onto an edge to adopt**: drag a card so the **pointer** lands on the target's left or right edge to become its child, or its top or bottom edge to become its sibling. During the gesture the target is outlined and a label previews "Attach as child" or "Attach as sibling"; on release the card springs into the queue. The judgement is the pointer's position, not how close the two boxes are — the middle of a card is a wide neutral zone, and parking there only moves the card. Dropping a card as a top-level sibling actively detaches its old parent; that is the only drag gesture on the canvas that removes a link (dragging \`❏\` out of a parent's run in doc mode does too — see the end of this section). A target that would create a cycle is not even highlighted.
1056
+ - **The arrow tool**: click the parent, then the child. The link is made without **moving** anything. The same thing is on each object's right-click menu as "Connect to…".
1057
+ - **Delete the hierarchy line**: the drawn hierarchy line can be clicked. Select it and press \`Delete\` and only that parent/child link is removed — no card moves.
1058
+
1059
+ The main card is the root: it can have children but can never become another card's child — an attempt to link a card to it falls back to a plain connector. A card that has children gets one extra right-click item, "Auto-arrange": it holds that node still and fans all of its descendants out as a mind map, splitting the first-level branches left and right, without touching anybody else's position; one \`⌘/Ctrl + Z\` restores the lot. Select a card that has links and its own parent and child lines brighten while unrelated cards and lines fade; faded cards are still clickable and one click makes them the new focus.
1060
+
1061
+ Back in doc mode, the hierarchy shows as indent plus a rounded frame:
1062
+
1063
+ - Indentation goes up to 6 levels; the drawn frame goes only to the second level — from the third level down cards are indented but not boxed.
1064
+ - Children of the main card are treated as level 0, so they are neither indented nor framed.
1065
+ - A card's markdown always sits inside its parent's section — when you adopt a card or create a child, that card and the descendants immediately following it move as a run to just after the parent.
1066
+ - Dragging the \`❏\` handle in doc mode to pull a card out of its parent's run detaches it. No doc-mode gesture **creates** a link; adoption is canvas-only.
1067
+ - What a \`❏\` drag moves is **one whole unit** — that card plus the descendant cards immediately following it.
1068
+ - The only legal landing place is the seam between two top-level units; a card can never go inside another card, and a drag released anywhere else simply does nothing.
1069
+ - If the landing place is the lower edge of a folded heading, that heading is expanded first, so the card does not disappear into a hidden section.
1070
+ - Hold \`⌥/Alt\` (\`Ctrl\` on Windows and Linux) while dragging to **copy** the card instead of moving it. The copy is minted with a fresh anchor and is a free card: it inherits neither a parent nor children.
1071
+
1072
+ ### Panning, zooming and the view switches
1073
+
1074
+ Panning has four equivalent entrances: the hand tool in the toolbar, holding \`Alt\` and dragging, dragging with the middle mouse button, and the scroll wheel (vertical) or \`Shift\` + wheel (horizontal). Two-finger trackpad scrolling does the same. The hand tool, \`Alt\` and the middle button **do not interrupt a card you are editing** — moving the viewport should not break your typing.
1075
+
1076
+ When you drag a card or shape, draw a marquee, resize, or pull a connector's rubber band to the edge of the canvas, the viewport pans toward that side on its own — faster the closer you get to the edge — and whatever you are dragging stays under the pointer. It stops as soon as you let go or move the pointer away from the edge. Pressing without dragging does not trigger it, and neither does a read-only canvas.
1077
+
1078
+ Zoom runs from 25% to 250%:
1079
+
1080
+ | How | Anchored on |
1081
+ |---|---|
1082
+ | \`⌘/Ctrl\` + wheel | The pointer |
1083
+ | Trackpad pinch | The pointer |
1084
+ | "Zoom out" and "Zoom in" at the bottom right | The centre of the view, 1.2× per press |
1085
+
1086
+ The current percentage sits between those two buttons. Beside them are several switches:
1087
+
1088
+ - "Fit to content": frames everything (cards, the main card, shapes, connectors and labels) into view and centres it with a 48px margin, capped at 100%. It runs once automatically the first time you open a note's canvas. The same item is on the empty-canvas right-click menu.
1089
+ - "Snap to grid": a 24px grid that cards snap to at the moment you release them, while the drag itself still tracks your pointer pixel by pixel. On by default and remembered across reloads.
1090
+ - "Show minimap" / "Hide minimap": the overview at the bottom right draws cards, the main card, shapes and your current viewport box; click or drag that box to navigate without changing zoom. On by default.
1091
+ - "Low-zoom overview": at or below a chosen zoom, card bodies are replaced by a title and summary while card heights and connector geometry stay put; zoom back in and the body returns. A selected card always keeps its full body.
1092
+
1093
+ > [!warning]
1094
+ > The trigger zoom for "Low-zoom overview" defaults to 25% — it only collapses at the furthest zoom-out, which is why many people think the switch is broken. To make it kick in sooner, go to Settings → Notes → "Editing and safety" → "Zoom that collapses cards to titles" and pick 25% / 40% / 55% / 70% / 100%. The change takes effect immediately; you do not need to reopen the note.
1095
+
1096
+ The same page has "Focus canvas cards on double-click": when it is on, double-clicking a card both enters editing and smoothly centres the card at a readable zoom (up to 1.5×); when it is off, you edit in place and the viewport stays put. With the system's reduce-motion setting on, there is no animation — the view jumps straight to the target.
1097
+
1098
+ > [!note]
1099
+ > "Snap to grid" and the minimap switch **share one preference with the dashboard canvas**: turn either off in one place and it is off in the other too. The canvas position and zoom are session state only — they are gone when you close the app and are never written into the note.
1100
+
1101
+ On touch devices (Android tablets, touchscreen laptops) the canvas answers to a different set of gestures:
1102
+
1103
+ | Gesture | Result |
1104
+ |---|---|
1105
+ | Two fingers | Pan and zoom at the same time, anchored at the midpoint between your fingers |
1106
+ | One finger dragged on empty space | Pans the canvas |
1107
+ | One finger dragged on an **unselected** card or shape | Also pans the canvas — a finger is less precise than a mouse and the canvas is usually crowded, so panning on empty space alone would mean barely panning at all |
1108
+ | A tap first, then a drag | This is what actually moves that card |
1109
+ | Double-tap | On a card it enters edit mode; on empty space it makes a new card — and the card is created the moment you **lift** your finger, so a pinch or a long press never leaves a stray card behind |
1110
+ | A 500ms long press | Is the right-click |
1111
+
1112
+ There is no marquee select, no \`Space\` to edit and no \`⌘/Ctrl + Z\` on touch, so multi-select means tapping the cards one at a time.
1113
+
1114
+ ### Shapes, frames and connectors
1115
+
1116
+ A toolbar floats at the left of the stage with eight tools; pressing one switches to it, and the creation tools return to the select tool once you are done.
1117
+
1118
+ | Tool | Tooltip |
1119
+ |---|---|
1120
+ | Select | "Select (Esc)" |
1121
+ | Pan | "Pan (or hold Alt and drag)" |
1122
+ | Card | "New card (or double-click empty space)" |
1123
+ | Rectangle | "Rectangle" |
1124
+ | Ellipse | "Ellipse" |
1125
+ | Text | "Text" |
1126
+ | Frame | "Frame: drag to size (or click for the default size)" |
1127
+ | Arrow | "Arrow: click the parent, then the child (Shift or a shape = free connector)" |
1128
+
1129
+ The tools have no letter shortcuts; the only tool key is \`Esc\`, which returns to select. Rectangle, ellipse and frame can be dragged out to a size, falling back to a default if you do not drag; **text can only be created with a click**.
1130
+
1131
+ - Shapes can be dragged, reshaped from their corners (24px minimum) and given text. The reshape handles appear only on a **single selected element**.
1132
+ - To edit text: double-click the shape or connector; or select it and press \`Enter\` or \`F2\`; or right-click → "Edit text". The dialog's heading follows the type: "Connector label", "Frame title", "Element text". Clearing the text removes it rather than storing an empty string.
1133
+ - "Group into a frame" wraps the current selection in a frame with 32px of padding around it. With nothing selected it frames just the object you right-clicked.
1134
+ - Color: right-click a card, shape, frame or connector and the top row of the menu is the palette — "No color", six presets (red, orange, yellow, green, cyan, purple), and a last swatch that opens the system color picker for any color. With several objects selected they are all colored at once, and one \`⌘/Ctrl + Z\` undoes the whole batch. Colors show only in canvas mode; cards look the same as before in document mode. The note stores the same encoding as Obsidian's JSON Canvas (\`"1"\`–\`"6"\` or \`#rrggbb\`). The main card and hierarchy lines cannot be colored.
1135
+ - Land the arrow tool's second click on a shape or frame, or hold \`Shift\` for that second click, and you draw a plain connector instead of a parent/child link. \`Alt\` cannot stand in for \`Shift\` — \`Alt\` is already taken by panning. After the first click a rubber-band preview follows the pointer, and clicking empty space abandons it.
1136
+ - You can connect without switching tools: select a card, the main card or a shape and dots appear at the midpoints of its four edges. Drag from a dot; the rules match the arrow tool (onto a card = parent/child, hold \`Shift\` = plain connector).
1137
+ - Reconnect: select a connector and handles appear at both ends; drag one onto another object to re-attach it. Dropping on empty space changes nothing. Change arrowheads under "Arrows" in the connector's right-click menu.
1138
+ - Alignment guides: while moving or resizing a card, edges and center lines near other objects snap and a guide line is drawn. Turn them off in the bottom-right controls; the setting is kept on this machine.
1139
+ - Copy and duplicate: \`⌘/Ctrl + C\` / \`⌘/Ctrl + V\` carry shapes, frames and connectors too; \`⌘/Ctrl + D\` duplicates in place, offset by one grid step. Connectors and parent/child links are rewired onto the copies, and one undo reverts the whole batch.
1140
+ - Export as JSON Canvas: from the empty-canvas menu or "More actions". It writes a \`.canvas\` file with the note's name next to the note, which Obsidian can open. Export only, no import; a clashing name gets a number and existing files are never overwritten. Cards export as text nodes, a card holding only one \`![[note]]\` exports as a file node, and frames export as groups.
1141
+
1142
+ > [!warning]
1143
+ > A frame's body ignores the pointer entirely — **only its title bar can be clicked or dragged**. Clicking inside a frame does not select it. That is a deliberate trade-off (otherwise a full-screen frame would be an invisible sheet blocking the whole canvas), not a bug.
1144
+
1145
+ Dragging a frame's title bar carries away every card and element that is **fully inside** it. Partial overlap does not count, and the membership is fixed at the moment you press down — it is not recomputed while you drag.
1146
+
1147
+ > [!note]
1148
+ > A new text element's default content is written to the file in **whatever interface language was active when you created it**. Create one with the Chinese interface and it still reads 「文本」 after you switch the interface to English.
1149
+
1150
+ To delete: with focus on the stage press \`Delete\` or \`Backspace\`, or right-click → "Delete". Deleting also trims any connector whose end sits on the object you removed. \`Backspace\` while typing inside a card belongs to the editor and will not delete a selected shape by mistake.
1151
+
1152
+ - If a card you delete holds a file you dropped in (an attachment reference), you are asked whether to delete the file on disk too, exactly as when you delete that block in the document.
1153
+ - Cutting (\`⌘/Ctrl + X\`) never asks — moving is not deleting, and the file has to stay for the card you are about to paste.
1154
+
1155
+ ### Where the geometry lives, and undo
1156
+
1157
+ Switch to source mode ("Switch to Markdown source" in the top bar) and you can see the two things the canvas leaves behind:
1158
+
1159
+ - Each card's content is wrapped in a pair of comments: an opening anchor \`<!-- a k1 -->\` and a closing \`<!-- /a k1 -->\`.
1160
+ - All the geometry lives in **one single line** of frontmatter called \`amadeus_canvas\`: the position and size of the main card and every card, the shapes and connectors, and the table of parent/child links. Coordinates are always whole numbers, and an omitted height means the card sizes itself to its content.
1161
+
1162
+ A note that never used the canvas simply does not have that line: skip the canvas and the file gains nothing at all.
1163
+
1164
+ \`\`\`
1165
+ ---
1166
+ amadeus_canvas: {"v":1,"mode":"canvas","main":{"x":0,"y":0,"w":720},"cards":[{"ref":"k1","x":40,"y":40,"w":300},{"ref":"k2","x":40,"y":300,"w":300}],"tree":{"k2":"k1"}}
1167
+ ---
1168
+ \`\`\`
1169
+
1170
+ > [!warning]
1171
+ > Be careful editing that line by hand in another editor: the rule is to discard rather than guess. Only three things void the whole line: a version that is not \`1\`, the same \`ref\` listed twice in the cards list, and a coordinate or width written as a string like \`"900"\` — any one of those and the whole line is treated as "this note has no canvas". The line you wrote is kept verbatim, not wiped. Changing anything on the canvas then reports the failure to your face: "Canvas changes were not saved: the amadeus_canvas line in this note cannot be parsed — check it in source mode."
1172
+ >
1173
+ > Anchors in the body are judged one at a time, and a bad one never takes the others down with it: an anchor that is not in the list is simply skipped, so that one region does not fold into a card, and an opening anchor that appears twice in the body leaves both of those regions unfolded. Every other card still folds, the canvas line stays valid and nothing is reported — which is what lets the inert anchor left behind by unwrapping a card sit in the file harmlessly.
1174
+
1175
+ Undo runs on **one timeline**: text typed inside cards, card geometry, shapes and connectors, and hierarchy changes all share a single stack in the order they happened. Pressing \`⌘/Ctrl + Z\` while typing inside a card asks that same timeline.
1176
+
1177
+ | Action | Key |
1178
+ |---|---|
1179
+ | Undo | \`⌘/Ctrl + Z\` |
1180
+ | Redo | \`⌘/Ctrl + Shift + Z\` |
1181
+
1182
+ - There is no \`⌘/Ctrl + Y\`; redo is only the combination above.
1183
+ - One drag is one undo step — but dragging the same card twice within 500ms is two steps.
1184
+ - "Auto-arrange" commits the whole subtree's coordinates as a single step, so one undo restores all of it.
1185
+ - Undo inside a dialog's text field belongs to the system and does not touch this timeline.
1186
+ - Touch devices have no undo shortcut, and there is no gesture that stands in for one.
1187
+
1188
+ > [!note]
1189
+ > The record for shapes and connectors holds at most 50 steps, and each open note keeps its own — changing pages or closing the tab clears it.
1190
+
1191
+ ## 7 · Links, tags and the graph
1192
+
1193
+ Notes in Amadeus are not islands. This chapter covers how to connect them with wikilinks: typing and autocomplete, embeds, hover preview, backlinks, tags, the graph, and what happens to links after a rename. Everything here needs a vault open and the Amadeus Space active.
1194
+
1195
+ ### Wikilink basics
1196
+
1197
+ Type \`[[\` in a note body, then the target note name, and you have a wikilink. The full-width \`【【\` produced by a Chinese IME is converted to \`[[\` on the spot.
1198
+
1199
+ - \`[[Target]]\` — links to the note of that name
1200
+ - \`[[Target|alias]]\` — shows the alias, still links to the target
1201
+ - Move the caret off the line and the link renders as coloured text; put the caret back on the line and the raw \`[[...]]\` reappears for editing
1202
+ - Clicking a link while the caret is on that line only moves the caret, it does not navigate
1203
+ - \`[[...]]\` inside a code block is never rendered
1204
+
1205
+ Click a rendered link and the target opens in the current pane. Resolved links carry the target note's emoji icon; unresolved ones render dimmed with a dashed underline. There is no modifier-click to open a wikilink in a new tab from the note body — it always loads into the current pane.
1206
+
1207
+ A bare name is looked up in this order:
1208
+
1209
+ | Order | Where it looks |
1210
+ |---|---|
1211
+ | 1 | Notes in the same folder as the current note |
1212
+ | 2 | The current note's own \`.fd\` sub-notes |
1213
+ | 3 | The first note of that name anywhere in the vault |
1214
+
1215
+ A name containing \`/\` is treated as a path and skips those three steps.
1216
+
1217
+ Clicking a dimmed, unresolved link asks first, and tells you exactly where the file will land: the dialog is titled "New note", the message names the note that does not exist yet and the location it would be created at, and the confirm button reads "Create".
1218
+
1219
+ - A bare name → created in the source note's \`.fd\` sub-folder
1220
+ - A name containing \`/\` → created at that path
1221
+ - No source note (for example when you clicked through from a database view) → created at the vault root
1222
+
1223
+ \`[[https://…]]\` opens in your external browser; \`[[table.db]]\`, \`[[doc.pdf#page=3]]\`, drawings and mind maps each route to their own in-app view.
1224
+
1225
+ ### The autocomplete popup and @ mentions
1226
+
1227
+ Typing \`[[\` opens a candidate list of at most 8 rows, fuzzy-ranked, with 2 slots reserved for files such as attachments and databases so they are never squeezed out by notes. Each row shows the name in bold with its folder underneath.
1228
+
1229
+ | Key | What it does |
1230
+ |---|---|
1231
+ | \`↑\` \`↓\` | Move through the rows |
1232
+ | \`Enter\` or \`Tab\` | Insert the highlighted row |
1233
+ | \`Esc\` | Close the popup |
1234
+ | Letters, space, \`Backspace\` | Go to the editor as usual, so the query keeps updating |
1235
+
1236
+ Insertion picks the shortest unambiguous form: if the name is unique in the vault it inserts the bare name, otherwise it inserts \`folder/Name|Name\`, which points precisely and still displays cleanly.
1237
+
1238
+ When the query matches nothing, a final create row appears at the bottom of the list.
1239
+
1240
+ > [!warning]
1241
+ > That row is labelled 「新建链接」 “…” — it stays in Chinese even when the interface is in English. This is a known gap in the wording, not the wrong interface language.
1242
+
1243
+ The \`@\` mention is the same thing without brackets: type \`@\` at the start of a line or after a space and the same candidate list appears, ordered with the last 20 notes you opened first; picking one replaces the whole \`@query\` with \`[[Name]]\`. If the query parses as a date or time, two extra rows appear at the top, "Schedule" and "Reminder", which insert a time mark instead of a link.
1244
+
1245
+ - \`@\` only fires at line start or after a space, so email addresses are safe
1246
+ - A space, a newline, a bracket, or more than 30 characters cancels it — \`@Alice hello\` stops being a mention as soon as you hit the space
1247
+ - There is no create row on \`@\`; an unmatched query simply stays as plain text
1248
+ - The particular \`@\` you dismissed with \`Esc\` will not pop up again
1249
+
1250
+ > [!note]
1251
+ > Moving the caret back into a \`[[link]]\` you already finished does not reopen the popup — only actual typing does. That is deliberate; otherwise \`↑\` and \`↓\` could not move past the line the link sits on.
1252
+
1253
+ Typing \`:\` followed by at least two letters opens emoji suggestions (\`:smile\`, say). The keys are the same as in the table above, and Enter replaces the whole \`:smile\` with the emoji itself. It does not open when the colon directly follows a letter, a digit or another colon, so \`10:30\`, \`http:\` and \`std::vector\` stay quiet; after Chinese text it opens as usual.
1254
+
1255
+ ### Heading anchors, block anchors and hover preview
1256
+
1257
+ You can write both \`[[Note#Heading]]\` and \`[[Note#^blockid]]\`, and both resolve to that note.
1258
+
1259
+ > [!warning]
1260
+ > Clicking such a link inside a note body only opens the note — it does not scroll to the heading or the block. The thing that does scroll and flash is a citation chip in a Tangu conversation. The link's visible label is also the literal \`Note#Heading\`, not just the heading.
1261
+
1262
+ In a Tangu reply, \`[[Note#Heading]]\` renders as a citation chip labelled like "Note › Heading"; clicking it opens the note, scrolls to the anchor and flashes it.
1263
+
1264
+ - \`#Heading\` is matched against the heading text
1265
+ - \`#^blockid\` comes from files imported from Obsidian; there is no way to mint one inside the app
1266
+ - When the heading or block is not found, the note opens without scrolling — better to stay put than to jump to the wrong place
1267
+ - PDF and media subpaths are the exception: clicking \`[[doc.pdf#page=3]]\` in a note body turns to page 3, and \`[[clip.mp4#t=01:35]]\` starts playing at 1:35 — those two subpaths do survive the click
1268
+
1269
+ Hover a rendered wikilink for 400 ms and a read-only preview card of the target note appears.
1270
+
1271
+ - Move the pointer into the card and it stays open, and you can scroll inside it
1272
+ - When there is no room below, the card flips above the link
1273
+ - \`Esc\` closes it
1274
+ - Unresolved links, and links pointing at files (\`[[table.db]]\`, \`[[photo.png]]\`), get no preview
1275
+ - The preview holds about 2500 characters; a longer note is cut off at the end, and an empty note shows "(Empty note)"
1276
+ - Wikilinks in chat bubbles use the same preview card
1277
+
1278
+ The card is read-only: it is there to confirm you linked the right note. To change anything, click through and open the note.
1279
+
1280
+ ### Embedding with ![[ ]]
1281
+
1282
+ When a paragraph contains nothing but \`![[target]]\`, it renders as an embedded object instead of text. Images are the exception: \`![[image.png]]\` shows as a picture wherever it sits on the line, not only alone in a paragraph. Everything else is routed in the order of this table:
1283
+
1284
+ | What you write | What you get |
1285
+ |---|---|
1286
+ | \`![[https://…]]\` | A web page embed |
1287
+ | \`![[table.db]]\` | A database |
1288
+ | \`![[board.excalidraw]]\` | A drawing board |
1289
+ | \`![[Note.md]]\` | A read-only transclusion of the whole note |
1290
+ | \`![[clip.mp4#t=01:35]]\` | A player starting at that time |
1291
+ | \`![[doc.pdf]]\` and other files | A file card |
1292
+ | A bare URL alone on a line | A bookmark card |
1293
+
1294
+ A trailing pipe refines it further: \`![[table.db|viewName]]\` picks which view of the database to show, and \`|number\` sets the width in pixels, the same way it works for images.
1295
+
1296
+ An embedded block carries a "↪ Embed" badge and an "Edit at the source" button; media and PDFs also get "Collapse" / "Expand" and "Open ↗".
1297
+
1298
+ The matching slash-menu items all sit in the "Advanced" group: "Embed block", "Link database" and "Bookmark".
1299
+
1300
+ When an embed does not render the way you expected, read what the block says:
1301
+
1302
+ - Target not found → the block reads "Embed missing: " followed by the target you wrote
1303
+ - A malformed media time → the player still appears and plays from 0:00, marked "Invalid anchor · playing from 0:00"; only \`#t=95\`, \`#t=01:35\` and \`#t=1:02:30\` are recognised, and minutes and seconds must be two digits
1304
+ - A transclusion of another note → the block is marked "Cross-note embed (read-only)"; use "Edit at the source" to change anything
1305
+ - A plugin-provided embed type → the matching plugin has to be enabled
1306
+
1307
+ > [!warning]
1308
+ > To embed a note, write \`![[Note]]\` and you get the whole note. \`![[Note#blockId]]\` only works for notes in the older format — today's default plain-Markdown notes carry no block ids, so that form will not resolve.
1309
+
1310
+ > [!note]
1311
+ > If the transcluded note itself embeds a database or a drawing, those show up as source text rather than as live blocks.
1312
+
1313
+ ### The backlinks panel
1314
+
1315
+ The backlinks panel lists every note that links to the current note with \`[[...]]\`, each with a snippet of the line the link sits on.
1316
+
1317
+ To open it: in the Amadeus Space, expand the right sidebar first — press \`⌘/Ctrl + K\` for the command palette, run "Toggle right sidebar", then pick the "Backlinks" tab.
1318
+
1319
+ > [!warning]
1320
+ > The right sidebar starts collapsed and has no hotkey. "Outline", "Backlinks" and "Graph" are completely invisible until you expand it — the features are there, the sidebar is not open.
1321
+
1322
+ On mobile the shell is a single column with drawers, not two sidebars.
1323
+
1324
+ The header reads "Backlinks" followed by the count. With no note open it says "No note open"; with nothing pointing here it says "No other notes link here yet".
1325
+
1326
+ - Every candidate link is re-resolved in the context of its own source note, so same-named notes no longer pollute each other
1327
+ - The flip side: a link counts as a backlink only if it really resolves to this note
1328
+ - Embeds \`![[...]]\` are not counted; only \`[[...]]\` links are
1329
+ - The panel refreshes on its own when you save, or when a note is changed outside the app
1330
+
1331
+ If you edited vault files outside the app and backlinks or search results look wrong, press \`⌘/Ctrl + K\` and run "Rebuild full-text index" to re-scan the whole vault.
1332
+
1333
+ > [!note]
1334
+ > The rebuild shows no progress bar and no completion message. Running it once is enough — there is no need to click it again.
1335
+
1336
+ ### Tags
1337
+
1338
+ Write an inline tag in a note body, for example \`#idea\`, and it shows up in the tags panel.
1339
+
1340
+ To open it: Amadeus Space → the "Tags" tab in the left sidebar. The header reads "Tags" followed by the total, and the list is sorted by how many notes carry each tag, then alphabetically. Click a tag to expand the list of notes carrying it, click a note to open it, click the tag again to collapse.
1341
+
1342
+ How a tag is recognised:
1343
+
1344
+ | Rule | Detail |
1345
+ |---|---|
1346
+ | Position | Must be at the start of a line, or right after a space |
1347
+ | Allowed characters | Letters, digits, underscore, hyphen, slash (\`#work/weekly\` is valid) |
1348
+ | Pure digits | \`#1\` and \`#1/2\` are never tags |
1349
+ | Case | Matched case-insensitively, displayed with the casing seen first |
1350
+
1351
+ > [!warning]
1352
+ > Only inline tags in the body count. A \`tags:\` entry in the YAML properties at the top of a note does not appear in this panel — a vault migrated from Obsidian that keeps its tags in properties will show an empty panel.
1353
+
1354
+ The panel refreshes on its own when you save and when the vault changes outside the app, so a tag you just wrote needs no manual refresh. To search the text around a tag rather than list the notes carrying it, use the "Search" tab in the left sidebar, or press \`⌘/Ctrl + Shift + F\` for "Search notes (full text)" and search the tag as an ordinary keyword.
1355
+
1356
+ The empty state spells the same rule out: "No #tags yet. Write an inline tag like #idea in a note and it will show up here."
1357
+
1358
+ ### The graph
1359
+
1360
+ The graph draws the one-hop link graph of the current note: the note itself in the centre, its outgoing \`[[...]]\` links and its backlinks arranged around it.
1361
+
1362
+ To open it: expand the right sidebar → the "Graph" tab. The header says "Graph · current note".
1363
+
1364
+ | Action | Result |
1365
+ |---|---|
1366
+ | Hover a node | Highlights that node and its edges, dims the rest |
1367
+ | Drag a node | Moves it, and the layout settles again |
1368
+ | Drag empty space | Pans the canvas |
1369
+ | Wheel | Zooms around the pointer, 0.4× to 3× |
1370
+ | Double-click empty space | Resets the view |
1371
+ | Click a node | Opens that note |
1372
+ | Click a ghost node | Opens the same "New note" confirmation as clicking an unresolved link |
1373
+
1374
+ - Link targets that do not resolve are drawn as dim ghost nodes
1375
+ - The graph is one hop and star-shaped: every edge runs centre-to-neighbour, neighbours are never linked to each other — the panel always draws this one note, not the whole vault
1376
+ - Links pointing at files (\`[[table.db]]\`, \`[[photo.png]]\`) are excluded entirely, as neither a node nor a ghost
1377
+ - Outgoing links are read from the note file on disk: a link you just typed shows up in the graph after that edit is saved, not before
1378
+ - The click that ends a drag does not navigate — dragging and clicking are kept apart
1379
+ - With no note open it says "No note open"; a note with neither outgoing links nor backlinks says "This note has no links yet — no outgoing [[…]] links and no backlinks."
1380
+
1381
+ ### Renaming, sub-notes and the autocomplete setting
1382
+
1383
+ When you rename or move a note (or a folder), \`[[...]]\` and \`![[...]]\` references across the whole vault are rewritten so they keep pointing at the same target — the bare name if it is unique, the full path otherwise, plus a path qualifier when an incoming same-named file would otherwise shadow the link. Right-click a note in the tree and choose "Rename", or drag it into another folder; the rewrite happens on its own, with no separate command.
1384
+
1385
+ > [!warning]
1386
+ > Three kinds of reference are not rewritten: Markdown-style links \`[text](note.md)\`, file references such as \`[[doc.pdf]]\` and \`[[board.excalidraw]]\`, and links that were already broken. On top of that, starred and pinned entries are not remapped — after a rename they quietly disappear and have to be starred again.
1387
+
1388
+ A \`.fd\` sub-note is a note that behaves like a folder: note X can own a folder \`X.fd\` next to it, holding the notes, databases and drawing boards you create "inside" X. The tree does not show the \`X.fd\` row itself; its children hang directly off X, and X's row gains a chevron and a child count.
1389
+
1390
+ | Where to create one | Detail |
1391
+ |---|---|
1392
+ | The "+" on a note row | Tooltip "New sub-note" |
1393
+ | The note's right-click menu | The same item, "New sub-note" |
1394
+ | The slash-menu item "Page" | Hinted \`.fd\`; it creates the sub-note and inserts a \`[[link]]\` to it |
1395
+
1396
+ - Deleting a parent note deletes its \`.fd\` children too — the confirmation says how many sub-files will go with it and warns that this cannot be undone
1397
+ - An orphan \`.fd\` folder with no matching note stays visible as an ordinary folder
1398
+ - Breadcrumbs hide the \`.fd\` suffix, so a sub-note's parent shows up as the parent note's name
1399
+
1400
+ Whether attachments and databases appear among \`[[\` and \`@\` candidates is a setting, on by default: Settings → "Workspace" → "Notes" → "Editing and safety" → "Suggest attachments and databases in [[ ]]". The setting exists on desktop only. You can also press \`⌘/Ctrl + K\` and run "Toggle attachments & databases in wikilink autocomplete", which reports back with "Wikilink autocomplete now includes attachments and databases" or "…now covers notes only".
1401
+
1402
+ > [!note]
1403
+ > For the first second or two after launch the setting is treated optimistically as on, so you may briefly see file candidates even with it switched off. Wait a moment and it settles.
1404
+
1405
+ ## 8 · Finding things
1406
+
1407
+ Finding things in Forsion is really several different jobs: searching by name, searching by content, searching the page in front of you, and jumping to an exact spot inside a file. Pick the wrong tool and it looks like the app cannot find something that is plainly there. This chapter covers what each entry point does, its hotkey, and the few behaviours that are easy to mistake for a fault.
1408
+
1409
+ ### Pick the right entry point
1410
+
1411
+ Start from the clue you actually have, then pick the tool. Their jobs do not overlap.
1412
+
1413
+ | What you remember | Tool | Hotkey |
1414
+ |---|---|---|
1415
+ | A name (note, file or session) | Quick find | \`⌘/Ctrl + P\` |
1416
+ | The content, but not the title | Full-text search (sidebar "Search") | \`⌘/Ctrl + Shift + F\` |
1417
+ | It is on the page in front of you | Find in page | \`⌘/Ctrl + F\` |
1418
+ | A note name, which may not exist yet | Quick find (the last row offers "Create note" when nothing matches) | \`⌘/Ctrl + P\` |
1419
+ | The handful of notes you use daily | Sidebar "Pinned" and "Starred" | None |
1420
+ | A search you ran before | Sidebar "Collections" | None |
1421
+ | The page you were just on | Back (this tab) | \`⌘/Ctrl + Shift + [\` |
1422
+
1423
+ The command palette is \`⌘/Ctrl + K\`. Everything above except find in page needs an open vault.
1424
+
1425
+ > [!warning] \`⌘/Ctrl + K\` does not open the command palette inside note text
1426
+ > The editor uses that key for "insert link". Click somewhere outside the text first (the sidebar, the title bar), then press it.
1427
+
1428
+ > [!note] Some commands only exist in the Amadeus Space
1429
+ > "Search notes (full text)", "Star / unstar current note" and "Rebuild full-text index" are all like this. In another Space the palette will not find them and \`⌘/Ctrl + Shift + F\` does nothing — switch to Amadeus first.
1430
+
1431
+ ### Quick find: search by name
1432
+
1433
+ Press \`⌘/Ctrl + P\` anywhere, in any Space; in the command palette it is "Quick find". A search box floats up in the centre of the screen, with the placeholder "Search notes, files and sessions…".
1434
+
1435
+ - **What it covers**: note names, file names in the vault (including \`.db\` databases) and Tangu session titles. Fuzzy match, up to 30 rows. File rows show the extension — when you are hunting for a PDF or an image, the extension is part of the clue.
1436
+ - **Scope pills**: four segments, "All / Notes / Files / Sessions", switchable by clicking. On the keyboard, think of the pills as sitting just after your text: press \`→\` only once the caret is at the very end of what you typed and you step into the first pill, "Notes"; from there \`←\` and \`→\` move between pills; pressing \`←\` on the first one puts you back in the text. "All" is not a pill you step onto — it just means the caret is still in the text.
1437
+ - **With nothing typed**: it lists what you opened recently, under the heading "Recent", up to 12 rows; with no recent items at all it falls back to your most recently updated sessions.
1438
+ - **Keys**: \`↑\` \`↓\` select, \`←\` \`→\` scope, \`↵\` open, \`⌘/Ctrl + ↵\` open in a new tab, \`esc\` close — the footer spells them out. With no hits it reads "No matches"; before you have opened anything it reads "No recent items yet".
1439
+ - **Create**: under "All" or "Notes", if no note has the name you typed, an extra last row reads "Create note “name”"; press Enter to create and open it, with the caret in the title.
1440
+
1441
+ > [!warning] "Create" puts the note at the root of the vault
1442
+ > It does not ask where. This differs from clicking an unresolved \`[[link]]\`, which asks first and creates the note inside the source note's sub-note folder.
1443
+
1444
+ > [!warning] Quick find matches names only, never note contents
1445
+ > A word written inside a note will not turn up here. To search content, use full-text search in the next section.
1446
+
1447
+ The "Sessions" category needs Tangu; "Notes" and "Files" need an open vault. Quick find keeps its own "Recent" list, which is unrelated to the recents that order the \`@\` popup inside a note.
1448
+
1449
+ ### Full-text search: search note contents
1450
+
1451
+ The "Search" tab in the left sidebar of the Amadeus Space; also \`⌘/Ctrl + Shift + F\`, or "Search notes (full text)" in the command palette. The panel is headed "Full-text search" and the box reads "Search all notes…".
1452
+
1453
+ The syntax is short, and there is nothing beyond it:
1454
+
1455
+ | What you type | What it does |
1456
+ |---|---|
1457
+ | \`forsion\` | Matches any note whose body or title contains it, case-insensitively |
1458
+ | \`moc forsion\` | Both words must appear, in any order |
1459
+ | \`moc-forsion\` | Spaces, \`-\`, \`_\`, \`/\` and \`.\` all count as separators, so all three forms find each other |
1460
+
1461
+ There are no regular expressions, no wildcards and no field filters such as "title:". At most 50 results come back, title hits ranked above body hits, each showing the note title and a snippet with the term highlighted. Opening the panel flushes the note you are editing to disk first, so text you just typed is immediately searchable.
1462
+
1463
+ When something will not turn up, work through this in order:
1464
+
1465
+ - [ ] Check a vault is open — without one the panel says "Open a vault first."
1466
+ - [ ] Try a shorter word; if it still says "No results", the index really does not have it
1467
+ - [ ] If you edited files outside the app, run command palette → "Rebuild full-text index"
1468
+
1469
+ > [!warning] Clicking a result usually just opens the note; it does not scroll to the match
1470
+ > Once it is open, press \`⌘/Ctrl + F\` and use find in page to land on the word.
1471
+
1472
+ > [!note] "Rebuild full-text index" has no progress bar and no completion message — nothing at all happens on screen after you run it, and that is not it hanging.
1473
+
1474
+ The left sidebar also has a "Tags" tab, listing every inline \`#tag\` in the vault by count; click one to expand the notes carrying it. It only sees tags written in the note body — a \`tags:\` entry in the properties block at the top of a note will not appear here.
1475
+
1476
+ ### Find in page
1477
+
1478
+ Press \`⌘/Ctrl + F\`, or command palette → "Find in page". A narrow bar appears at the top right, reading "Find in page…".
1479
+
1480
+ - \`↵\` next, \`Shift + ↵\` previous, \`esc\` close; the bar also carries \`‹\`, \`›\` and \`✕\` buttons, with a counter between them written as current over total, like \`3/12\`, or \`0\` when nothing matches.
1481
+ - It searches the text actually painted in the current view, not just note text — embedded cards, databases, canvas elements and words on a drawing board are all in range. So it works in every Space and every panel.
1482
+ - Matching is case-insensitive, and a match can run across inline formatting: the word inside \`ap**ple**\` still counts as one hit.
1483
+ - When the page content changes it rescans on its own and the count updates; you do not have to reopen the bar.
1484
+
1485
+ > [!warning] It only finds text that is already rendered
1486
+ > Collapsed sections, and the part of a long list you have not scrolled to, are invisible to find in page — expand or scroll to that part first, then search.
1487
+
1488
+ Inside the built-in browser and code editors, \`⌘/Ctrl + F\` steps aside for their own find — that is deliberate, and find behaves differently in those two places.
1489
+
1490
+ ### Starred, pinned and collections
1491
+
1492
+ Three collapsible sections sit above the note tree. All three are kept per vault.
1493
+
1494
+ - **Starred**: right-click a note in the sidebar → "Star" (an already-starred note shows "Unstar"); the same two items are in the ⋮ menu on the note's title bar. The section is headed "Starred", is hidden entirely when nothing is starred, and starts collapsed.
1495
+ - **Pinned**: drag a note from the tree into the "Pinned" section, or use the pin button at the top right of the editor. While the section is empty its hint reads "Drag a note here to pin it, or use the pin button at the top right of the editor".
1496
+ - **Collections**: saved searches. Type a query in the full-text search box and a "Save as collection" button appears beside it; give it a name and a row joins the "Collections" section in the sidebar, replaying that search when clicked. Hovering shows "Search: {q}", and the ✕ on the row is "Remove collection".
1497
+
1498
+ > [!warning] "Star / unstar current note" in the command palette does not always take effect
1499
+ > The sidebar right-click and the title-bar ⋮ menu are the reliable routes.
1500
+
1501
+ > [!warning] All three live on this machine only
1502
+ > Stars, pins and collections are stored locally per vault, are not written into the note files, and do not travel with sync — on another machine you set them up again. Renaming or moving a note also drops its star and its pin; just add it again.
1503
+
1504
+ One more quirk: saving a collection under a name that already exists overwrites the old one silently.
1505
+
1506
+ ### Jump to an exact spot: headings, blocks and citation chips
1507
+
1508
+ > [!warning] Clicking \`[[Note#Heading]]\` inside note text only opens the note; it does not jump to the heading
1509
+ > Links in note text keep just two kinds of location: a PDF's \`#page=\` and a media file's \`#t=\` timestamp. To move between headings inside one note, use "Outline" in the right sidebar — it lists every heading in document order and scrolls to the one you click. The right sidebar starts collapsed; expand it with "Toggle right sidebar" in the command palette (that one has no hotkey).
1510
+
1511
+ The things that really do land on an exact spot are the **citation chips** in a Tangu conversation: the agent produces them when it cites your files, and one click takes you there.
1512
+
1513
+ | Chip | What clicking it does | Worth knowing |
1514
+ |---|---|---|
1515
+ | \`report.pdf p.18\` | Opens the annotatable PDF reader at page 18 | The reader's "Copy link to this page" button copies a link to the current page; paste it into a note and clicking it later returns to that page |
1516
+ | A PDF citation carrying a quote | Turns to that page, finds the sentence, scrolls it to the middle of the screen and pulses an amber highlight once | The highlight is temporary and is never written into the PDF; if the sentence is not found the page still opens |
1517
+ | \`a.ts:42\`, \`a.ts:42-48\` | Opens the file and highlights that line or range | Office documents (\`.doc\` \`.docx\` \`.xls\` \`.xlsx\` \`.ppt\` \`.pptx\`) open this way with no line number |
1518
+ | \`lecture.mp4 @01:35\` | Plays from that second; a range reads \`@01:35–02:00\` | On mobile the chip carries no timestamp and playback starts from the beginning |
1519
+ | \`note › some heading\` | Opens the note and scrolls to that heading | If no heading matches it just opens the note — it never jumps to the wrong one |
1520
+ | \`note › ^abc123\` | Opens the note and flashes that block | \`^\` block anchors only exist in notes imported from Obsidian; the app never mints one |
1521
+ | A plain link whose text is a quoted sentence | Opens the page in the built-in browser beside the conversation and scrolls to that sentence, highlighted | Desktop only, with Agent Desk and the built-in browser plugin both on; a quote under 8 or over 300 characters just opens the page at the top |
1522
+
1523
+ When two files in the vault share a name, the chip shows as a dimmed, unclickable row rather than guessing which to open. Where a chip opens things: beside the conversation when Agent Desk is on, otherwise in a main-area tab.
1524
+
1525
+ ### Getting back to where you were
1526
+
1527
+ - **Per-tab back and forward**: \`⌘/Ctrl + Shift + [\` is "Back (this tab)" and \`⌘/Ctrl + Shift + ]\` is "Forward (this tab)"; there is also a pair of arrows at the top left of the main area. Each tab keeps its own history. When focus is inside a side panel the arrows look inert — they always move the history of the active main-area tab.
1528
+ - **Recently opened**: press \`⌘/Ctrl + P\` to open Quick find and type nothing; what it lists is what you opened recently, up to 12 rows.
1529
+ - **The \`@\` recents**: type \`@\` in a note and, before you type anything else, the notes at the top are the 20 you opened most recently.
1530
+ - **There is no "Recent" section in the sidebar**: it was removed on purpose; the two entry points above are how you get at recents.
1531
+ - **The "Search notes" box at the top of the note tree**: as soon as you type, the whole tree is replaced by a flat list of matches. It matches file names by plain substring — not fuzzy, not note contents, and not folder names. With nothing matching it reads "No matching notes". While the box has text, dragging notes to move them is switched off; clear it to get dragging back.
1532
+ - **Breadcrumb reveal**: hover the editor title bar and the parent folders fade in to the left of the title; click any segment (or the title itself) and the note tree expands down to that item, scrolls it into view and flashes it. Deep paths are abbreviated in the middle, and the current title is never truncated.
1533
+
1534
+ ## 9 · Tables and databases
1535
+
1536
+ Amadeus has two kinds of table. One is the markdown table in the note body — light, and it travels with the text. The other is the database: a file of its own, with column types, several views, filters and sorting, and links between tables. This chapter draws the line between them, then walks through everything a database can do.
1537
+
1538
+ ### Two kinds of table: markdown and database
1539
+
1540
+ In a note, type \`/\` and the "Advanced" group offers two table entries: "Table" inserts a markdown table, "Database" creates a database. They are very different — look before you pick.
1541
+
1542
+ | | Markdown table | Database |
1543
+ | --- | --- | --- |
1544
+ | Where it lives | A few lines of text in the note body | Its own \`.db\` file, referenced from a note as \`![[name.db]]\` |
1545
+ | Cells | Plain text | Typed: number, checkbox, date, attachment, relation… |
1546
+ | Views | One look, always | Table / board / calendar / gallery / chart / form / gantt |
1547
+ | Filters and sorting | None | Saved separately on each view |
1548
+ | Reuse | This one note only | One table can be embedded in many notes; edit it anywhere and it updates everywhere |
1549
+ | Opened in another editor | Every markdown editor understands it | Other editors see only JSON |
1550
+ | Deleting it | Delete those lines and it is gone | Deleting the \`![[…]]\` only removes this one reference; the \`.db\` file stays in the vault |
1551
+
1552
+ Working with a markdown table:
1553
+
1554
+ - Insert: \`/\` → "Table", which gives you 2 columns × 1 row.
1555
+ - Move between cells: \`Tab\` for the next cell, \`Shift + Tab\` for the previous one. \`Tab\` in a corner cell will not throw focus out of the editor.
1556
+ - Add or remove rows and columns: visual editing has no row or column buttons, so switch to source and edit the \`|\` lines directly. Two ways in: the \`</>\` button at the right of the note top bar ("Switch to Markdown source"), or the command palette \`⌘/Ctrl + K\` → "Toggle source / visual editing".
1557
+
1558
+ > [!note] The inserted table's header cells are \`Column 1\` and \`Column 2\`, following the UI language (the Chinese UI writes 「列 1」「列 2」 to disk). Rename them by hand after inserting.
1559
+
1560
+ A database embedded in a note can be written as \`![[name.db|view name]]\` to pin that spot to one view; more on that later.
1561
+
1562
+ Which to pick: for a one-off comparison or three or four explanatory lines, use a markdown table — it is part of the prose and anything can read it. For filtering down to a subset, looking at one set of data several ways, linking to another table, or totalling anything, use a database. The rest of this chapter is about databases.
1563
+
1564
+ ### Creating and opening a database
1565
+
1566
+ Four entry points, and they give you different things:
1567
+
1568
+ | Entry point | What you do | What you get |
1569
+ | --- | --- | --- |
1570
+ | File tree | Right-click a folder, or right-click empty space in the tree → "New base" | A standalone \`.db\` in the vault, opened as its own tab |
1571
+ | Inside a note | \`/\` → "Advanced" → "Database" | A table in this note's sub-folder, plus \`![[name.db]]\` inserted at the cursor |
1572
+ | Note view | \`/\` → "Advanced" → "Note view" | A folder plus a table whose every row is a note inside that folder |
1573
+ | Reuse a table | \`/\` → "Advanced" → "Link database" | An existing table embedded here, sharing one set of data with everywhere else |
1574
+
1575
+ You are asked for a name first; the default is "Untitled database". A name collision is not auto-suffixed — it is refused, so pick another name.
1576
+
1577
+ The "Link database" picker lists every \`.db\` in the vault: type to fuzzy-filter, \`↑\` \`↓\` to move, \`Enter\` to insert, \`Esc\` to cancel. When two tables share a name it inserts the full path. You can also type it by hand: \`![[name.db]]\`; to pin this spot to one view, write \`![[name.db|view name]]\`.
1578
+
1579
+ Opening and renaming:
1580
+
1581
+ - Open as a tab: click the \`.db\` in the file tree, or right-click it → "Open"; the ↗ button in the table toolbar ("Open as a page in a new tab") does it too. The \`.db\` right-click menu has exactly three items — "Open", "Rename", "Open with the system app" — there is no delete.
1582
+ - Rename: edit the title box in the table header and press Enter, or right-click in the file tree → "Rename". The file name, the name stored in the table, and every \`[[ ]]\` and \`![[ ]]\` reference in the vault all change together. Markdown-style links such as \`[label](name.db)\` are not rewritten.
1583
+
1584
+ Where a note view differs from a normal table:
1585
+
1586
+ - Rows come from the folder, the first column is always \`Page Name\`, and the rest are the union of those notes' frontmatter keys.
1587
+ - Editing the first column renames the note file; deleting a row deletes the note file, after asking "Deleting this row also deletes its note file. Continue?".
1588
+ - The button next to the title switches the source folder, and "Whole vault (top-level notes)" is one of the choices. Switching folders adds new columns but never removes old ones.
1589
+ - Rows in a note view can never be drag-reordered.
1590
+
1591
+ > [!warning] A table created from the file tree gets two columns hardcoded as 「标题」「文本」 and a default view tab hardcoded as 「表格」; a column added in a note view creates a frontmatter key named 「属性」「属性2」. These names are Chinese in every language — just rename them.
1592
+
1593
+ ### The table view: rows and cells
1594
+
1595
+ The table view is the default look: a ⠿ drag handle and a ✕ at the left of every row, a + at the right end of the header to add a column, an add-row button under the grid, and a summary row at the very bottom (its cells read "Summary" until you pick a statistic). Above the table sits the toolbar: the "New" button, the "Search…" box, the "Filter" button, and on the right the CSV download icon and the ↗ "Open as a page in a new tab" button.
1596
+
1597
+ - Editing a cell: click it and type; \`Enter\` or \`Esc\` commits and leaves. Chinese IME candidate selection is not swallowed.
1598
+ - Adding a row: the toolbar "New" button, "+ New row" under the grid, or the per-group, per-lane and per-day plus buttons, which pre-fill that group's value.
1599
+ - Deleting a row: the ✕ at the left of the row ("Delete row"), or the red "Delete row" at the bottom of the row editor. A normal table deletes with no confirmation; only note views ask.
1600
+ - Reordering rows: drag the ⠿ handle ("Drag to reorder rows"). The order of rows in the file is the real order.
1601
+ - The row editor: one vertical panel listing every column of that row, with a delete button at the bottom. Clicking a card in board or gallery, an event in calendar, or a row label or bar in gantt all open it.
1602
+ - Wikilinks in a text cell: \`[[wikilinks]]\` render as live links you can click through; to edit the link itself, click the ✎ in the cell to go back to edit mode.
1603
+
1604
+ If sorting, filtering, search, grouping or hierarchy is on, dragging is locked and the handle's tooltip reads "Manual ordering is off while sorting, filtering, search, grouping or hierarchy is on — clear them first"; in a note view it is locked permanently.
1605
+
1606
+ Deleting a row has two knock-on effects: self-referencing relation columns in the same table drop their links to it, while relations pointing in from other tables are deliberately not cascaded and those cells show "Missing".
1607
+
1608
+ > [!note] The table view has no "open this row" affordance and no row context menu — the row editor is reachable only from the card-style views. There is also no \`Tab\`-to-next-cell in the grid; cell keyboard handling is \`Enter\` and \`Esc\` only.
1609
+
1610
+ ### Columns and property types
1611
+
1612
+ Every column operation lives on the header:
1613
+
1614
+ - Add: the + at the right end of the header ("Add column"). New columns are named "Column 1", "Column 2"… in the current interface language.
1615
+ - Rename or retype: click the header to open the column menu; the first input is the name, and the "Type" section below it changes the type. Retyping does not touch your data, it only reinterprets it, so switching back brings the values back.
1616
+ - Move: drag the header, or use "← Move left" and "Move right →" in the column menu.
1617
+ - Resize: drag the divider on the right edge of the header, between 100 and 800 px; double-click restores flexible width ("Drag to resize · double-click for flexible width").
1618
+ - Delete: the red "Delete column" at the bottom of the column menu.
1619
+
1620
+ The first column is the title column: it cannot be deleted, retyped, hidden or moved, and no column can be placed in front of it.
1621
+
1622
+ | Type | What it does |
1623
+ | --- | --- |
1624
+ | Text | Plain text with inline \`[[wikilinks]]\`; typing \`[[\` opens a note picker |
1625
+ | Number | A numeric value, with optional display formatting |
1626
+ | Checkbox | A tick box |
1627
+ | Select | One option per cell, popover headed "Pick one" |
1628
+ | Multi-select | Several options per cell, popover headed "Multi-select (click to toggle)" |
1629
+ | Link | http(s) only; a bare domain gets \`https://\` prepended |
1630
+ | Attachment | One cell can hold several files |
1631
+ | Formula | A read-only computed column |
1632
+ | Relation | Links to rows of another (or this same) database |
1633
+ | Lookup | Pulls values along a relation, or rolls up in reverse |
1634
+ | Date | A calendar date; this is the one calendar and gantt views recognise |
1635
+ | Relation | Links to a note, stored as \`[[link]]\` text |
1636
+ | Auto-number | The highest existing number + 1, stamped when the row is created |
1637
+ | Created time | Stamped once when the row is created |
1638
+ | 「修改时间」 | Re-stamped whenever the row's content actually changes |
1639
+ | 「人员」 | A person's name |
1640
+
1641
+ Select and multi-select share one option pool per column; the input at the bottom of the popover, "Press Enter to add an option…", creates a new option on the spot, and a single select also offers "Clear". An option's colour is derived from its name, so the same name is always the same colour.
1642
+
1643
+ Attachments: an empty cell shows a paperclip button labelled "Attachment" ("Upload attachments (multiple allowed)"), a filled cell shows a + ("Add another attachment"). Images render as thumbnails, everything else as a filename button that opens in the system app. Each attachment's ✕ is "Remove this attachment (the file stays)" — it drops the reference only, the file stays on disk.
1644
+
1645
+ Person: candidates come from the names already used in any person column anywhere in the vault, the eight most frequent first. \`↑\` \`↓\` to move, \`Enter\` to pick, \`Esc\` to close. The value is just a name string — no account, no avatar, and nobody gets notified. In a large vault, opening this dropdown for the first time reads every \`.db\`, so it may pause briefly.
1646
+
1647
+ Number display: on number, formula and lookup columns the menu has a "Number display (formatting only — the stored value never changes)" section with "Decimals", "Prefix" and "Suffix", plus a live "Example". Formatting adds thousands separators; clicking into the cell shows the raw value again, which is deliberate — editing the formatted string would destroy the number.
1648
+
1649
+ > [!warning] In the type list, 「修改时间」 (updated time) and 「人员」 (person) stay Chinese in the English interface. The English list also shows "Relation" twice: the upper one (「关联表」) links to rows of another table, the lower one (「关联」) links to a note. And an updated-time column cannot drive a calendar, a gantt view or date grouping, and filters on it use the text operators.
1650
+
1651
+ ### Relations, lookups and formulas
1652
+
1653
+ A relation column links two tables:
1654
+
1655
+ - In the column menu, pick "Target table (cells link to its rows)" — another \`.db\`, or "This table (self-reference · can be the parent column of a hierarchy)". When the vault holds no other table the menu reads "No other databases in this vault".
1656
+ - "Allow multiple (link several rows in one cell)" decides whether a cell can hold more than one link; "Chip label column…" decides which column of the target row the chip shows (the first column by default; formula and lookup columns cannot be labels); "Limit candidates (the picker only lists target rows that match)" filters the picker.
1657
+ - Click the chip area in a cell to open the picker: the search box is "Search rows…", \`Enter\` takes the first match, \`Esc\` closes, and "Clear links" sits at the bottom. It lists at most 12 rows at a time. The ↗ button is "Open target table".
1658
+ - When a target row is deleted the cell shows "Missing" — cross-file deletion deliberately does not cascade. Changing the target table clears the chip label column and the candidate filter, and detaches the lookups that depended on it.
1659
+
1660
+ A lookup pulls values along a relation:
1661
+
1662
+ - "Forward" follows a relation column on this table and reads one column of the linked row.
1663
+ - "Reverse" scans the target table for rows pointing back at this row, then aggregates them.
1664
+ - There are exactly five aggregates: "First" (the default), "Count", "Sum", "Average", "Join".
1665
+ - Lookups do not chain — a lookup that targets another lookup column comes out empty. A reverse lookup scans the whole target table per row, so it slows down on big tables.
1666
+ - Switch "Purpose" to projection and the column becomes an editable two-way link: it shows the target rows pointing back at this one, the real value still lives only on the target side, and editing here edits that file. This needs the target table to already have a relation column pointing back; otherwise the menu reads "The target table has no Relation column yet (or it is still loading)", and an unfinished setup shows "Needs setup" in the cell.
1667
+
1668
+ A formula is a read-only computed column — evaluated, never stored, never written to disk:
1669
+
1670
+ - Write the expression in the column menu's "Formula (reference a column as {column name})" section; \`Enter\` commits, \`Shift + Enter\` adds a line.
1671
+ - Available functions, case-insensitive: \`if and or not empty round floor ceil abs min max len lower upper trim contains replace concat number value text today days format\`.
1672
+ - Operators: \`+ - * / %\`, \`== != > < >= <=\`, \`&& || !\`, and parentheses. \`today()\` rolls over at local midnight.
1673
+
1674
+ \`\`\`
1675
+ if({is done}, "✓", {unit price} * {item count})
1676
+ \`\`\`
1677
+
1678
+ > [!warning] \`{name}\` matches the column name first — rename a referenced column and the formula silently breaks. An error renders as \`#错误\` and a reference cycle as \`#循环\`, and both markers stay Chinese in every language. Also, deleting a relation column does not delete the lookups that followed it: they go into a "needs reconfiguring" state, and switching that column's type back to Relation restores them.
1679
+
1680
+ ### View settings: filters, sorting, grouping, hierarchy, summaries
1681
+
1682
+ The view tab bar sits above the table. Click a tab that is not active to switch to it; click the already-active tab (or right-click any tab) to open the view menu, whose tooltip reads "Click again to configure this view (rename, group, delete)"; the + at the end is "Add view". The last view cannot be deleted.
1683
+
1684
+ Which view you are on is not stored in the \`.db\` — it is written on the reference side (\`![[table.db|view name]]\`), so the same table can sit on a different view in each note, each tab and each dashboard card.
1685
+
1686
+ | Setting | Where | What to know |
1687
+ | --- | --- | --- |
1688
+ | Filter | Toolbar "Filter", or view menu "Filter…" | A condition is column + operator + value; with two or more you can switch "Match all" / "Match any" |
1689
+ | Sorting | The column menu for one column, the view menu for several | View only, the row order in the file never changes; with several columns the header shows a rank number |
1690
+ | Search | The toolbar "Search…" box | Matches the first column's displayed value only, and is never saved |
1691
+ | Grouping | View menu "Grouping (table view, by a select or date column)" | A select column, or a date column ("By day" / "By month"); click a group header to collapse it |
1692
+ | Hierarchy | View menu "Hierarchy (table view, by a relation column pointing at this table)" | Builds a parent/child tree from a self-referencing relation column |
1693
+ | Column visibility | View menu "Column visibility (this view)" | Click a name to toggle it, ✓ means visible; the first column is always visible |
1694
+ | Column order / width | View menu "Column order / width" | With "Per-view column order and width" on, this view keeps its own set; turning it off discards that set |
1695
+ | Footer summary | Click a cell in the bottom row | One statistic per column, computed over the filtered rows only |
1696
+
1697
+ - Filter operators depend on the column type: text and link get 「包含·不包含·是·不是·为空·不为空」; number gets 「是·不是·大于·小于·大于等于·小于等于·介于·为空·不为空」; checkbox gets 「已勾选·未勾选」; date gets 「是当天·早于·晚于·大于等于·小于等于·介于·为空·不为空」; select gets 「是·不是·为空·不为空」; multi-select gets 「含·不含·为空·不为空」.
1698
+ - Footer statistics depend on the type too: a number column offers 「已填·空·求和·平均·最小·最大」; a checkbox column offers 「已勾选·未勾选·已填·空」; everything else offers 「已填·空」 only. Values are rounded to two decimals and an empty set shows \`–\`.
1699
+ - Grouping lays out every option of the select column as a lane, including ones with no rows, and adds a "No group" lane at the end for blanks and for values whose option was deleted; date grouping only lists dates that actually occur, with "Not set" last. Month grouping does not pre-fill the date on new rows.
1700
+ - Hierarchy needs a Relation column whose target is this same table; without one the menu says "No relation column points at this table yet (add a Relation column and set its target to this table)". Hierarchy and grouping are mutually exclusive: with hierarchy on, the grouping section greys out and reads "Grouping (inactive while hierarchy is on — turn hierarchy off first)".
1701
+ - Collapse state, for both grouping and hierarchy, lives in memory only — switch views or reopen the app and everything is expanded again.
1702
+
1703
+ > [!warning] The filter operator names and the footer statistic names stay Chinese in the English interface. String comparison when sorting always uses Chinese collation, whatever the interface language is.
1704
+
1705
+ ### The other six views
1706
+
1707
+ The + offers exactly seven view types, always in this order: table, board, calendar, gallery, chart, form, gantt. For a tree, use the table view's "Hierarchy" setting. A new view is named after its type and becomes active immediately.
1708
+
1709
+ | View | What it needs | What you see without it |
1710
+ | --- | --- | --- |
1711
+ | Board | A select column | "Board view groups by a select column, and this table has none yet." plus a one-click "+ Add a Status select column" |
1712
+ | Calendar | A date column (date, calendar date or created time) | "Calendar view needs a date column (date or calendar date)." plus a one-click "+ Add a Date column" |
1713
+ | Gallery | Nothing | — |
1714
+ | Chart | A column to group by; sum and average also need a number column | Sum and average are disabled, with the tooltip "Needs a number column" |
1715
+ | Form | At least one fillable column | The body reads "No fillable fields — formula, auto-number and created-time columns never appear in a form." |
1716
+ | Gantt | A calendar-date column (legacy date and created-time columns do not count) | "The Gantt view needs a date column (calendar date)." plus a one-click “+ Add a "Date" column” |
1717
+
1718
+ - Board: lanes come from "Group by (a select column)" in the view menu, and dragging a card to another lane changes that cell's value. "New card" at the foot of a lane pre-fills that lane's value. Dragging within a lane does not reorder anything.
1719
+ - Calendar: a fixed 42-cell month grid starting on Sunday, with multi-day rows painted across every day they span. \`‹\` \`›\` change month, "Today" returns to this month, and the + in a day cell is "New row on this day". Events cannot be dragged to another day — open the event and change the date in the row editor. This calendar is separate from the Calendar Space.
1720
+ - Gallery: each card shows the title, up to four property previews, and a cover taken from the first image in the first visible attachment column. Relation and attachment values are left out of the previews, and checkbox properties only appear when true.
1721
+ - Chart: "Chart type" offers bar, line and donut, paired with "Group by" and "Aggregate" (count rows, sum, average), plus a "Value column" when the aggregate is not count. A dashboard can host one too: add-card menu → "Chart (database)…".
1722
+ - Form: you can set "Form title / submit button" and "After submitting" ("Stay on the form" or "Go to the table"); click a field name to toggle required, and defaults and hints save as you type. Formula, lookup, auto-number, created-time and updated-time columns never appear, and relation and attachment fields cannot have a default ("Default value: not supported"). The toolbar "New" button is hidden in a form view, so rows can only come from a submission; after each submit the form resets to its defaults and reports "{n} submitted".
1723
+ - Gantt: row titles on the left, bars on the right, a "Day" and a "Week" scale, weekend shading and a today line, with the "Today" button scrolling to it. Rows without dates are greyed at the bottom. It is read-only — bars cannot be dragged or resized to reschedule, so change dates in the row editor.
1724
+
1725
+ > [!warning] The columns those one-click buttons create are Chinese in every language: board adds a 「状态」 column with the options 「待办」「进行中」「完成」, and calendar and gantt both add a 「日期」 column. The two chart messages shown when there is nothing to group by or no matching data are Chinese too.
1726
+
1727
+ ### Export, sharing and how a database is stored
1728
+
1729
+ Export to CSV with the download icon in the toolbar; its tooltip spells out "Export CSV ({cols} columns × {rows} rows in this view)". What you get is exactly the view in front of you — visible columns × rows after filtering and sorting. Desktop opens a native save dialog and then reveals the file in the file manager; the web opens a browser download; mobile does not show the button at all.
1730
+
1731
+ | This content | Exports as |
1732
+ | --- | --- |
1733
+ | Formula and lookup columns | The value they computed |
1734
+ | Relation columns | The chip labels (falling back to row ids if the target table has not loaded) |
1735
+ | Checkbox columns | \`TRUE\` / \`FALSE\` |
1736
+ | Multi-value cells | Joined with \`, \` into one field |
1737
+ | Numbers with display formatting | The formatted string, so a spreadsheet reads it as text |
1738
+
1739
+ One table shared in many places: however many notes, tabs or dashboard cards show the same \`.db\`, they share one set of data, and an edit in one shows up everywhere at once. Desktop also watches the file on disk, so a change made by another program (an agent, an automation, an external editor) is hot-reloaded with your unsaved edits replayed on top.
1740
+
1741
+ Wiring it into the calendar: view menu → "+ Add to Calendar Space" registers the table as a member of the Calendar Space; you must map one date column and may map one checkbox column for completion. Once registered, the same entry reads "Calendar settings". That dialog is Chinese in every language (「日期属性 *」「完成勾选」「不设(纯日历)」「取消」「确定」). The mapping is stored in the vault's calendar config rather than in the \`.db\`, and follows the file when you rename it.
1742
+
1743
+ - On disk: a \`.db\` is a standalone JSON file in the vault holding the table name, columns, rows and views, indented with two spaces and ending in a newline so it diffs cleanly in git. Column widths, filters, sorting, grouping and the form and gantt settings all live in that file; only "which view am I on" does not.
1744
+ - Syncing: it is an ordinary file, so any sync method (cloud drive, git) carries it. Writes are debounced by 500 ms and compared against the version on disk before saving.
1745
+ - Editing it elsewhere: another markdown editor opening a \`.db\` sees only JSON, never a rendered table. An older build opening a file written by a newer one drops the settings it does not recognise when it saves.
1746
+ - When the file goes wrong: corrupted content drops into read-only protection with the message "This database file is corrupted — it is now read-only." plus "Show in file manager" and "Retry", and is never written back. A missing target shows "Database file is missing: ". A file whose version is newer than the app is refused with the Chinese-only message 「版本过新(v{n}),请升级应用」.
1747
+ - Publishing: when a note containing \`![[table.db]]\` is published, the public page renders the table's first view as a static table, honouring filters, sorting, hidden columns and that view's column order, and computing formulas. Publishing needs a Forsion cloud account. The public page cannot read other \`.db\` files, so lookup columns come out blank; a note view publishes its columns but no rows.
1748
+
1749
+ > [!warning] Only desktop watches the file and compares before writing. Web and mobile do neither, so if the same \`.db\` is edited in two places at once the later write simply overwrites the earlier one.
1750
+
1751
+ ## 10 · Dashboards
1752
+
1753
+ A dashboard puts things from your vault on one screen: numbers, charts, a clock, weather, to-dos, a calendar, a web page — all live cards. It is itself a note, saved as \`.dashboard.md\`, so it stays searchable, \`[[linkable]]\` and syncable. Desktop only, and it needs an open vault.
1754
+
1755
+ ### Creating and opening one
1756
+
1757
+ Three entry points, same result: the new file opens already unlocked, so you can start placing cards at once.
1758
+
1759
+ | Entry point | Action | Where it lands |
1760
+ |---|---|---|
1761
+ | Command palette | \`⌘/Ctrl + K\` → "New dashboard" | Vault root |
1762
+ | Notes sidebar | Right-click a folder → "New dashboard" | Inside that folder |
1763
+ | Notes sidebar | Right-click empty tree space → "New dashboard" | Vault root |
1764
+ | New tab | The "New dashboard" card | Vault root |
1765
+
1766
+ - The name box is prefilled with "Untitled dashboard"; from a folder the prompt is titled "New dashboard in “{folder}”".
1767
+ - Slashes are stripped from the name, and the \`.dashboard\` suffix is added for you — do not type it.
1768
+ - A name that already exists is refused with a message; you never end up with a silent duplicate.
1769
+ - To open one: single-click its \`.dashboard.md\` row in the file tree, or follow a \`[[Name.dashboard]]\` link; an already-open dashboard reuses its tab.
1770
+ - Gates: the palette command only appears inside the Amadeus Space, and all three entry points need an open vault.
1771
+
1772
+ > [!note]
1773
+ > There is no hotkey for creating a dashboard, and the structured grid claims no keys at all — canvas mode is the only part of the feature with keyboard control.
1774
+
1775
+ > [!warning]
1776
+ > The \`.dashboard\` suffix is the file's identity. Renaming from the toolbar re-applies it automatically; if you rename the file in your operating system's file manager and lose the suffix, it turns back into an ordinary note and no longer opens as a dashboard.
1777
+
1778
+ ### Locked and unlocked
1779
+
1780
+ A dashboard is only ever in one of two states, and this is the most important toggle in the whole feature: locked is the finished page, unlocked is the layout bench. The split exists because one click cannot mean both "use this card" and "move this card" — locked, the whole card belongs to its content and a click goes into the view; unlocked, the whole card belongs to layout and a click picks it up. Press "Done" when you finish arranging, or the cards will feel unresponsive.
1781
+
1782
+ | | Locked (finished page) | Unlocked (layout bench) |
1783
+ |---|---|---|
1784
+ | Toolbar button | "Edit layout" | "Done" |
1785
+ | Card content | Directly clickable and usable | Covered by a drag shield in the grid; double-click to get in |
1786
+ | Drag / resize | Off | On |
1787
+ | + "Add card" | Hidden | Shown |
1788
+ | Card delete button and ⋯ menu | Hidden | Shown |
1789
+ | ↗ "Open in a tab" on view cards | Shown | Hidden |
1790
+
1791
+ - In the grid, the tooltip on "Edit layout" reads "Edit layout (drag to reorder, resize, add or remove cards)".
1792
+ - On the canvas it is the same button (labelled "Edit layout" / "Done" too), with tooltips "Unlock for editing (drag, resize, change content)" and "Lock (browse mode)".
1793
+ - Locking drops you out of any card you had entered, and on the canvas it also clears the selection and any open menu.
1794
+
1795
+ > [!note]
1796
+ > The lock state belongs to the tab, not to the file — close a dashboard and reopen it and it is locked again. The one exception is a freshly created dashboard, which is born unlocked.
1797
+
1798
+ ### Two layouts: structured grid and free-form canvas
1799
+
1800
+ Every dashboard is either a structured grid or a free-form canvas. A new, empty one is always a grid.
1801
+
1802
+ | | Structured grid | Free-form canvas |
1803
+ |---|---|---|
1804
+ | Placement | Cards flow in order into a 12-column reference grid: you choose what and how big, the app chooses where | Cards sit at pixel positions on a fixed 1152×648 board |
1805
+ | Window behaviour | Reflows proportionally and holds at any width | Fills the panel by percentage once locked; a very different panel shape stretches it |
1806
+ | "Section heading" and "Stat card…" | Yes | No |
1807
+ | Page filter bar | Yes | No |
1808
+ | Card ⋯ size menu | Yes | No |
1809
+ | Keyboard control | No | Yes |
1810
+
1811
+ - To switch: toolbar ⋯ "More actions" → "Switch to free-form canvas (advanced)" in the grid, "Switch to structured grid" on the canvas.
1812
+ - Each layout keeps its own coordinates and neither overwrites the other, so switching back restores the old arrangement exactly.
1813
+ - A free-positioned dashboard opens with a banner; "Switch to auto layout" folds the pixel rectangles into 12-column spans in reading order and keeps the original layout key in the file as a rollback net, while "Keep free positioning" is a permanent declaration and the banner never returns.
1814
+ - A legacy (grid) dashboard shows a different banner, with the button "Convert to canvas".
1815
+
1816
+ > [!warning]
1817
+ > Switching from the ⋯ menu records the mode only — it does not move anything. Turn a grid into a canvas and the cards land on whatever canvas coordinates the file already held; a file that never had any gets a default stack. The banner's "Switch to auto layout" is the only real geometric conversion.
1818
+
1819
+ > [!note]
1820
+ > When a layout cannot be read the app stops rather than overwriting your arrangement: broken frontmatter raises "Could not parse this note's frontmatter ({error}). The layout is frozen and will not be rewritten — please fix the YAML first."; a layout pointing at blocks that no longer match raises "The block ids in the saved layout do not match the current blocks (the note may have been renumbered), so automatic reflow is off to avoid losing the layout." with a "Reflow in current order" button.
1821
+
1822
+ ### The card catalogue
1823
+
1824
+ Unlock first, then use the + "Add card" button in the toolbar. The top half of the menu is seven built-in cards, the bottom half is a "Views" section.
1825
+
1826
+ | Card | What it asks | Notes |
1827
+ |---|---|---|
1828
+ | "Section heading" | A title, prefilled "New section" | A full-width typographic divider: no border, always one row tall. Grid only |
1829
+ | "Stat card…" | Pick a database, then which column and which aggregation | See the next section. Grid only |
1830
+ | "Chart (database)…" | Pick a database | See the next section |
1831
+ | "Text block" | Nothing | An ordinary Amadeus block, slash menu and all |
1832
+ | "Clock" | Nothing | A clock ticking by the second, with date and time zone taken from your machine |
1833
+ | "Weather" | A city, prefilled "上海" | Current temperature, condition icon and wind, refreshed every 15 minutes; needs internet |
1834
+ | "Web page" | An address, prefilled \`https://\` | Embeds a live web page in the card; desktop only |
1835
+
1836
+ The "Views" section embeds app views as cards; the dashboard draws each title as "view name · file name":
1837
+
1838
+ | View | Needs a file first | Gate |
1839
+ |---|---|---|
1840
+ | "Editor" | Yes | — |
1841
+ | "Database" | Yes | — |
1842
+ | "Whiteboard" | Yes | — |
1843
+ | "PDF" | Yes | — |
1844
+ | "Image" | Yes | — |
1845
+ | "Outline" | Yes | — |
1846
+ | "Search" | No | — |
1847
+ | "Tags" | No | — |
1848
+ | "What's new" | No | — |
1849
+ | "Messages" | No | Needs a local backend |
1850
+ | "To-do list" | No | Needs the Calendar builtin plugin on |
1851
+ | "Calendar" | No | Needs the Calendar builtin plugin on |
1852
+ | "Automations" | No | Needs an Automation Space |
1853
+ | "Activity log" | No | Developer view |
1854
+ | "Active window" | No | Developer view |
1855
+
1856
+ - Views that need a file open a picker first, titled: Pick a file for the "{name}" card…
1857
+ - If a view is currently unavailable (its plugin is switched off, say), the card reads View "{type}" is unavailable instead of going blank.
1858
+ - The canvas add menu is a strict subset: "Text block", "Chart (database)…", "Clock", "Weather", "Web page", plus the same "Views" section.
1859
+ - Text blocks behave differently in the two layouts: in the grid they are editable both locked and unlocked, but while unlocked a drag shield covers them, so double-click to get in; on the canvas a text block is read-only until you enter its card.
1860
+
1861
+ > [!note]
1862
+ > Two Chinese strings are stored values rather than interface text and stay Chinese in the English interface: the weather card's prefilled city "上海", and the clock's date and time formatting. Just replace the city as you add the card.
1863
+
1864
+ > [!warning]
1865
+ > The web page card only accepts public http(s) addresses. file:, data:, localhost and every private range are rejected with "Only public http(s) addresses are allowed — file/data, localhost and private networks are rejected"; the check runs again at render time, so a dashboard synced in from elsewhere is blocked too.
1866
+
1867
+ ### Laying out on the grid
1868
+
1869
+ Once unlocked, the grid gives you this:
1870
+
1871
+ | What you want | How |
1872
+ |---|---|
1873
+ | Reorder | Press a card and drag it over another; the page reflows live and settles where you see it |
1874
+ | Place a card in a row by hand | Drag it into empty space inside a row and let go; neighbours shift aside and anything pushed past the end drops to the next row |
1875
+ | Resize | Drag the small grip at the card's bottom-right corner, "Resize"; it snaps by whole cells |
1876
+ | Pick a preset size | The card's ⋯ "Size and more" → "Size" |
1877
+ | Delete a card | The trash button "Delete this card", or ⋯ → "Delete card" |
1878
+ | Hand it back to automatic layout | ⋯ → "Restore automatic layout" (only on hand-arranged rows) |
1879
+
1880
+ The presets are "Small" 3×2, "Medium" 4×3, "Wide" 6×3, "Tall" 3×5, "Large" 6×5, "Full row" 12×4 and "Workspace" 12×8. Those numbers are columns × rows of the 12-column reference grid, not pixels, and each card type only lists the presets it supports — clock and weather offer just "Small" and "Wide", while "Workspace" only shows up on editor, database, whiteboard and PDF cards. Rows you have arranged by hand stay as you left them; rows you have never touched keep arranging themselves.
1881
+
1882
+ - A mouse drag starts after 4 pixels; a touch drag needs about a 150 ms hold first, so a finger can still scroll the page. Press \`Esc\` mid-drag to cancel.
1883
+ - Deleting goes through the shared block delete: if the block has backlinks you are asked a second time.
1884
+ - While locked, a view card's title bar carries a ↗ "Open in a tab" button that opens the same view, with the same parameters, in its own tab.
1885
+ - A brand-new empty dashboard offers a "Start from a template" panel with two buttons: "Today" (Clock · Weather · To-dos · Calendar) and "Workbench" (Inbox · To-dos · Activity log). Workbench uses Inbox and Calendar, so if those are off those cards read View "{type}" is unavailable.
1886
+ - While unlocked you can drag files from your operating system's file manager onto the dashboard; they are imported into this dashboard note the same way notes import files. While locked the drop is ignored.
1887
+
1888
+ > [!warning]
1889
+ > As soon as you resize a card by hand, or drag it into a hand-arranged row, automatic layout stops touching its size and will no longer swap it to a different preset to fill a row. To hand it back use ⋯ → "Restore automatic layout" — note that this releases the **whole row**, not just that one card.
1890
+
1891
+ ### Laying out on the canvas
1892
+
1893
+ The canvas is a fixed 16:9 board (1152×648). Cards can never leave its four edges, and the camera is clamped to it. Once unlocked:
1894
+
1895
+ - Drag empty board space to pan, wheel or pinch to zoom. The controls along the bottom are "Zoom out", the live percentage, "Zoom in", "Fit to content", "Snap to grid" and the minimap toggle; the toolbar also has "Reset board view (100%)".
1896
+ - Click to select, \`Shift\` or \`⌘/Ctrl\` to add to the selection, drag from empty space for a marquee; a multiple selection moves as one rigid group. Cards repel each other, keep an 18-pixel air gap, and animate into place when you let go.
1897
+ - A selected card shows eight handles on its edges and corners; drag one to resize (tooltip "Resize").
1898
+ - Double-click a card to enter it before you can use the view inside or edit text, and click elsewhere to leave; only one card at a time. Double-click-to-enter still works while locked.
1899
+ - Right-click (or long-press): on a card, "Enter card" and "Delete" (with several selected, "Delete {n} cards"); on empty board, "Add card…" and "Fit to content".
1900
+
1901
+ Keyboard control needs the board focused, so click it once first:
1902
+
1903
+ | Key | Effect |
1904
+ |---|---|
1905
+ | \`Esc\` | Clear the selection |
1906
+ | \`⌘/Ctrl + A\` | Select all cards |
1907
+ | \`Delete\` / \`Backspace\` | Delete the selected cards |
1908
+ | \`Space\` | Enter the single selected card |
1909
+ | Arrow keys | Nudge by 8 pixels (24 pixels when snap to grid is on) |
1910
+ | \`Shift\` + arrow keys | Nudge by 32 pixels |
1911
+
1912
+ These keys are swallowed while you type inside a card, so nothing gets deleted by accident. All of them are canvas-only and unlocked-only.
1913
+
1914
+ > [!note]
1915
+ > Locking the canvas turns it into a presentation page: no panning, no zooming, no dot grid, no bottom controls — the board is mapped onto the panel by percentage so it fills the space and text is never scaled. And because positions are percentages of a fixed board, a panel whose shape is far from 16:9 stretches the arrangement — which is exactly why the structured grid became the default.
1916
+
1917
+ > [!warning]
1918
+ > Below 720 pixels of panel width the canvas abandons free positioning and shows a plain vertical card list (top to bottom, then left to right) that cannot be dragged; when empty it reads "Empty dashboard — unlock it and use + to add a card." Two more things that look like faults but are not: unlocking always resets zoom to 100%, and the "Snap to grid" and minimap toggles share one preference with the note canvas, so changing them here changes them there.
1919
+
1920
+ ### Data cards and page filters
1921
+
1922
+ Stat cards and charts both read a database (\`.db\`) — they are the seam between a dashboard and your data.
1923
+
1924
+ Stat card (grid only): add menu → "Stat card…" → the picker "Stat card — pick a database (.db)…" → the prompt "Which column to measure? (leave empty to count rows)" → if you named a column, "Aggregation (count/sum/avg/min/max)" (prefilled \`sum\`). The card face is one big number. It runs through the same engine as the database's own summary row, so the two always agree.
1925
+
1926
+ Chart: add menu (grid or canvas) → "Chart (database)…" → the picker "Chart — pick a database (.db)…". A chart is modelled as a view of a database — the app makes sure that database has a chart view (creating one if needed), then drops in a database card already switched to it. The shape is then configured in the card's view options:
1927
+
1928
+ | Setting | Choices |
1929
+ |---|---|
1930
+ | "Chart type" | "Bar", "Line", "Donut" |
1931
+ | "Group by" | Any column in the database |
1932
+ | "Aggregate" | "Count", "Sum", "Average" |
1933
+ | "Value column ({agg})" | Only shown when the aggregation is not "Count" |
1934
+
1935
+ "Sum" and "Average" are disabled when the database has no number column, and the tooltip says why. Line charts sort by group key, not by value, so the x-axis reads as a real sequence.
1936
+
1937
+ Page filter bar (grid only): unlock and a "Filter" row appears under the toolbar. "Add filter" starts one — pick a property, pick an operator, type a value, commit with "Add" or Enter; remove a chip with its × "Remove this filter".
1938
+
1939
+ - Filters match by **property name**, so cards drawn from different databases follow along together; a card whose database lacks that property simply ignores the condition.
1940
+ - The properties on offer come only from databases already loaded on this page, not from the whole vault.
1941
+ - When the page has nothing filterable yet, "Add filter" is disabled with the tooltip "No filterable data cards on this page yet".
1942
+ - Once locked, the bar is hidden entirely if there are no filters, and shown but not editable if there are.
1943
+ - With filters active, a stat card adds a row count under the big number.
1944
+ - The canvas has no filter bar at all; data cards there always compute with no page filters.
1945
+
1946
+ > [!note]
1947
+ > A few Chinese strings are hard-wired along the chart path and stay Chinese in the English interface: the auto-created chart view is named "图表" (and that name is written into the database file); in chart group labels an empty value is "(空)", booleans are "是" and "否", and anything past the twelfth group collapses into "其他(N)"; the filter operator names ("包含", "是", "为空" and so on) are Chinese only too.
1948
+
1949
+ ### The note behind a dashboard
1950
+
1951
+ A dashboard is a Markdown note. The layout lives in a few frontmatter keys and each card is a fenced code block named after its kind (clock, weather, webview, view, section, stat, chart). That is why it stays searchable, \`[[linkable]]\` and syncable, and why opening it in an editor like Obsidian shows an ordinary note with a few code blocks rather than damaging it.
1952
+
1953
+ | Key | What it holds |
1954
+ |---|---|
1955
+ | \`dashLayout:\` | \`grid\` or \`canvas\` |
1956
+ | \`dashboard3:\` | Grid: each block's order, width and height |
1957
+ | \`dashboard3x:\` | Rows you arranged by hand in the grid |
1958
+ | \`dashboard2:\` | Canvas: each block's pixel rectangle |
1959
+ | \`dashFilter:\` | This page's filters |
1960
+
1961
+ - Values are checked strictly: a tuple of the wrong length, or one holding something that is not a number, is never guessed at — the whole layout freezes and a banner appears.
1962
+ - The fenced blocks are only activated inside the dashboard view; in a normal note they stay inert code blocks, by design.
1963
+ - A few card options have no interface and are only reachable by editing the file: custom captions on clock and weather cards, a weather card's latitude and longitude, the small second line under a section heading, scoping a stat or chart to one saved view of a database, and a stat card that shows a literal number with no database behind it.
1964
+
1965
+ The relationship with the vault runs both ways: a dashboard reads the vault — view cards, stat cards and charts all point at real notes, whiteboards and database files, and the cards follow whenever that data changes — and a dashboard is itself a file in the vault, so it can be found by search, \`[[linked]]\` from another note, and carried along by sync. Whole-file actions live in the toolbar:
1966
+
1967
+ | Action | Where |
1968
+ |---|---|
1969
+ | Pin to the sidebar | The pin button, "Pin" / "Unpin"; it then appears in the sidebar's "Pinned" section |
1970
+ | Rename | ⋯ → "Rename", prompt titled "Rename dashboard" |
1971
+ | Delete | ⋯ → "Delete", confirmation reading Delete the dashboard "{name}"?, then the toast "Deleted" |
1972
+
1973
+ - "Pin" is stored in local preferences rather than in the file, so it deliberately does not travel to your other devices with cloud sync.
1974
+ - The toolbar's "Pin" and pinning a card into a hand-arranged row are unrelated features that merely sound alike.
1975
+ - Some plugins generate a dashboard of their own, or draw one inside their own panel; the cards, the layout bench, the dragging and the ⋯ menu are all exactly the same as here.
1976
+
1977
+ ## 11 · Time: to-dos, daily notes and the calendar
1978
+
1979
+ Everything about time in Amadeus — the to-do list, the calendar, reminders — is wired up by one thing: an \`@\` time mark in your note text. Read the first section first: **a \`- [ ]\` with no \`@\` mark appears in no time view at all**, and that is the one rule you have to know before anything else. The rest of the chapter covers how to write dates, how the to-do list groups things, daily notes and templates, the Calendar Space, and where calendar events come from.
1980
+
1981
+ ### The @ time mark: the gate into every time view
1982
+
1983
+ > [!warning] Know this one first
1984
+ > Writing \`- [ ] Submit the weekly report\` is not enough. **A checkbox with no \`@\` time mark appears in the to-do list, the calendar and reminders — nowhere.** The gate is deliberate: most checkboxes in notes are formatting, not tasks.
1985
+
1986
+ The time views do not scan your vault looking for tasks; they honour this one explicit mark. Write an \`@\` time mark on any line of a note and that line joins the time views, and the line itself decides where it goes:
1987
+
1988
+ - A line with a Markdown checkbox (\`- [ ] …\`) → the "To-do list".
1989
+ - A line without a checkbox → the calendar, as an event.
1990
+ - Any line carrying \`@remind:\` → a notification at that moment; it stacks on top of either of the above.
1991
+
1992
+ Four forms; what lands in your text is always this canonical shape:
1993
+
1994
+ | Form | Meaning |
1995
+ |---|---|
1996
+ | \`@2026-09-01\` | All day |
1997
+ | \`@2026-09-01T14:30\` | A point in time |
1998
+ | \`@2026-09-01T09:00/2026-09-01T10:30\` | A range |
1999
+ | \`@remind:2026-09-01T14:30\` | Remind me then |
2000
+
2001
+ \`\`\`markdown
2002
+ - [ ] Submit the weekly report @2026-09-01
2003
+ Team meeting @2026-09-01T14:30
2004
+ Health check @2026-05-06 @remind:2026-05-06T08:00
2005
+ \`\`\`
2006
+
2007
+ > [!note] The space matters
2008
+ > The \`@\` must be at the start of the line or come straight after a space, and the mark must be followed by whitespace, the end of the line, or closing punctuation. So \`Meeting@2026-09-01\` is not a mark, and \`foo@bar.com\` is never mistaken for a date.
2009
+
2010
+ The rest of the rules:
2011
+
2012
+ - Only the first schedule mark and the first \`@remind:\` on a line count; extras are ignored.
2013
+ - Anything inside a fenced code block is never a mark.
2014
+ - Impossible dates (\`@2026-02-29\`) are rejected.
2015
+ - A line that is nothing but the mark is skipped; a heading line may carry a mark itself.
2016
+ - What the time views show is the line with the \`@\` mark and any leading symbols (\`-\`, \`>\`, \`#\`) stripped off.
2017
+ - Every entry remembers which note it came from and the nearest heading above it; one click takes you back there.
2018
+ - Marks in note text are read by the desktop app — on web and mobile there are no note-driven to-dos, events or reminders.
2019
+
2020
+ If you are unsure whether a line was picked up, look where it should have gone: the "To-do list" for lines with a checkbox, the calendar named "Notes" for lines without. Marks are not recomputed on every keystroke — they are rescanned when you switch views, switch vaults, open another note, or files are added or removed, and refresh on their own within a minute anyway.
2021
+
2022
+ ### Type @ to write a date: the suggestion panel
2023
+
2024
+ You do not have to type a full date. Type \`@\` in a note and the mention panel opens; as soon as what you type after it parses as a date or time, two extra rows appear above the page candidates — "Schedule" and "Reminder" — with the date they resolved to in grey on the right. Press Enter on one and the canonical form is inserted.
2025
+
2026
+ | You type | Date inserted |
2027
+ |---|---|
2028
+ | \`@2026-09-01\` | 1 September 2026, all day |
2029
+ | \`@2026-09-01T14:30\` | That day at 14:30 |
2030
+ | \`@9-1\` | 1 September this year |
2031
+ | \`@9-1T14:30\` | 1 September this year, 14:30 |
2032
+ | \`@14:30\` | Today at 14:30 |
2033
+ | \`@2200\` / \`@930\` | Today at 22:00 / 9:30 |
2034
+ | \`@today\`, \`@tomorrow\`, \`@后天\` (day after tomorrow) | That day, all day |
2035
+
2036
+ - The "Schedule" and "Reminder" rows sit above the page candidates, so \`@\` still works for mentioning a note: when what you type does not look like a date, the panel is the ordinary mention list.
2037
+ - Keyboard: \`↑\` \`↓\` to move, \`Enter\` or \`Tab\` to insert, \`Esc\` to dismiss (once dismissed, that same \`@\` will not re-open the panel).
2038
+ - A trailing space is added after the insert so you can keep typing.
2039
+ - Reminder only: start the query with \`remind:\`, e.g. \`@remind:2200\`, and only the "Reminder" row is offered.
2040
+ - Picking an all-day date as a reminder sets it to 09:00 that day — a ping at midnight is useless.
2041
+ - The panel simply closes as soon as the query contains a space, a newline or a bracket, or runs past 30 characters — so \`@Li Ming hello\` loses the panel at the space, and a date has to be typed without spaces in it.
2042
+ - Ranges (\`@start/end\`) are not offered as candidates and have to be typed: insert the start from the panel, then type \`/\` and the end after it.
2043
+ - No natural language: "next Wednesday at three" is not parsed; only the forms in the table above are.
2044
+
2045
+ The panel is available anywhere in the note editor and is not offered on read-only pages. The grey text on the right of each row is the full date it resolved to — glance at it before inserting, especially with a year-less form like \`@9-1\`, which fills in the current year.
2046
+
2047
+ > [!info] Loose to type, canonical on disk
2048
+ > The loose forms (\`@2200\`, \`@9-1\`, \`@tomorrow\`) only exist inside this panel; what goes into your text is always \`@YYYY-MM-DD\` or \`@YYYY-MM-DDTHH:mm\`. When you write a mark by hand, write that canonical form — anything else is not a mark.
2049
+
2050
+ ### The to-do list
2051
+
2052
+ The "To-do list" collects everything unfinished across the vault into one list. Two ways in: the left panel of the Calendar Space, or the "To-do list" card on the new tab page behind the \`+\` in the tab bar (the card can be dragged into a sidebar or a split). There is no command palette entry for it.
2053
+
2054
+ It draws from exactly two sources: rows of databases that have joined the calendar and have a completion checkbox column mapped, and checkbox lines in note text that carry an \`@\` mark.
2055
+
2056
+ | Group | What lands here |
2057
+ |---|---|
2058
+ | Overdue | Past its date and not ticked off |
2059
+ | Today | Due today |
2060
+ | Tomorrow | Due tomorrow |
2061
+ | This week | Within the next 7 days |
2062
+ | Later | Further out (collapsed by default) |
2063
+ | Unscheduled | Database rows with no date, grouped again by source |
2064
+ | Completed | Ticked off (collapsed by default) |
2065
+
2066
+ - Click a group header to collapse or expand it; empty groups are not rendered at all. The count for the group sits next to the header.
2067
+ - Note to-dos and database rows share the same groups, sorted by time.
2068
+ - When the list is empty it shows a hint spelling out the first one to write: \`- [ ] Task @2026-09-01\`.
2069
+ - Each row has its checkbox on the left and its due date on the right.
2070
+ - Ticking off a note to-do: click the checkbox and that line in the note is rewritten from \`- [ ]\` to \`- [x]\`. The Markdown file stays the single source of truth; the view is only a projection of it. Ticking in place is a desktop feature.
2071
+ - The line is located by its content, not by its line number. If it has changed in the note since the list was loaded, the write is refused rather than guessed and you get "Can't update ... — that line in the note has changed" with an "Open note" button.
2072
+ - Clicking the row text (not the checkbox) does something else: note to-dos "Open in note", database rows open their peek card.
2073
+ - At the bottom is a "New to-do" box: type, press Enter, and a to-do dated today is created in the first writable calendar database. Confirming a candidate in a Chinese input method with Enter does not submit it.
2074
+ - That box only appears when a writable calendar database exists — creating in the wrong place is worse than not creating.
2075
+
2076
+ ### Reminders (@remind:)
2077
+
2078
+ Write \`@remind:2026-09-01T14:30\` on any line of a note and a sticky notification pops when that moment arrives: the title is "Reminder · source note", the body is the text of that line, and the "View" button takes you back to the note it came from. The "Reminder" row in the suggestion panel inserts exactly this string.
2079
+
2080
+ An event and a reminder are different things: an event occupies a slot on the calendar, a reminder just goes off once. A line can carry only a reminder, or both — a reminder stacks on top of other marks, so one line is both a to-do and a ping:
2081
+
2082
+ \`\`\`markdown
2083
+ - [ ] Submit the weekly report @2026-09-01 @remind:2026-09-01T09:00
2084
+ \`\`\`
2085
+
2086
+ - Master switch: \`⌘/Ctrl + ,\` opens "Settings" → "Notifications" → the event "Note reminders (@remind:)", on by default.
2087
+ - A desktop feature; it relies on marks in note text being read.
2088
+ - **They only fire while the app is running.** Nothing is replayed for the time the app was closed — this is the point most often mistaken for a fault.
2089
+ - On launch a missed reminder is replayed only if it is less than 24 hours late; older ones are dropped, so opening the app does not bury you in stale reminders.
2090
+ - Each reminder fires once. It is identified by the note's path, the reminder time and the text of that line (not its line number), so editing that text can make the same reminder fire again.
2091
+ - Only the first \`@remind:\` on a line counts; a second one never fires. The notification body is that line with its marks stripped, so write the line so it reads on its own.
2092
+ - Reminders come from note text only; a date in a database never pings on its own — write a line with \`@remind:\` in a note for that.
2093
+ - Turning the "Note reminders (@remind:)" switch off leaves the marks in your notes; they just stop popping.
2094
+ - The notification is sticky: it stays until you dismiss it.
2095
+ - Ticking a to-do off does not cancel its reminder — the reminder only looks at the \`@remind:\` on that line, not at the checkbox.
2096
+ - Choosing an all-day date as a reminder in the suggestion panel sets the time to 09:00 that day.
2097
+ - To cancel a reminder, go back to the note and delete the \`@remind:…\` from that line.
2098
+
2099
+ The "View" button opens the note the line came from and stops at the nearest heading above it, so a daily note full of reminder lines still lands you in the right place.
2100
+
2101
+ ### Daily notes and templates
2102
+
2103
+ A daily note is a note named after the date: \`2026-09-01.md\`. Press \`⌘/Ctrl + K\` for the command palette and run "Open today's daily note"; if it does not exist it is created. That command is only in the palette while the Amadeus Space is active; from another Space, use the "Today" card on the new tab page behind the \`+\` in the tab bar. Both routes need a vault to be open.
2104
+
2105
+ Where daily notes land: \`⌘/Ctrl + ,\` → "Settings" → "Notes" → "Daily notes folder", a path relative to the vault; empty means the vault root. Press "Save"; the new location applies to daily notes created after that.
2106
+
2107
+ Any note under \`templates/\` is a template. When today's daily note is created, \`templates/daily.md\` is applied automatically if it exists. To insert a template by hand: type \`/\` in a note for the slash menu → "Template" → in "Choose a template…" use \`↑\` \`↓\` to move, \`Enter\` to insert, \`Esc\` to close.
2108
+
2109
+ Three variables are substituted on insert:
2110
+
2111
+ | Variable | Becomes |
2112
+ |---|---|
2113
+ | \`{{date}}\` | Today, as \`YYYY-MM-DD\` |
2114
+ | \`{{time}}\` | Now, as \`HH:mm\` |
2115
+ | \`{{title}}\` | The name of the note you are in |
2116
+
2117
+ - Templates go into any note, not just daily notes. The content is inserted at the cursor and replaces nothing, so you can insert several into one note.
2118
+ - The folder name is fixed at \`templates/\`; anything else will not be found. Before that folder exists, the picker offers a "Create templates folder" button.
2119
+ - A template is applied **at creation only**. An existing daily note is never re-templated, even an empty one — insert the template by hand from the slash menu if you want its content.
2120
+ - Whether today's note exists is checked against the disk, so a \`2026-09-01.md\` you created by hand in that folder is simply opened by "Open today's daily note".
2121
+ - If a template fails to apply you get an empty daily note rather than an error — the note itself always gets created.
2122
+
2123
+ A daily note is an ordinary Markdown note: link out of it with \`[[wikilinks]]\`, and write \`@\` marks in it so the day's plans land straight on the calendar and in the to-do list. A \`templates/daily.md\` that already contains the headings you use every day is the cheapest way to keep that habit.
2124
+
2125
+ ### The Calendar Space: views and navigation
2126
+
2127
+ Click the "Calendar" icon in the ribbon to enter the Calendar Space, or press \`⌘/Ctrl + 5\` (the digit is the icon's position in the ribbon; on a default install it is the fifth). There is no calendar entry in the command palette. The Calendar Space is a desktop feature.
2128
+
2129
+ Inside are three panels: the calendar in the main area, the "To-do list" on the left, and a mini month calendar plus "Calendar settings" on the right. That is the starting layout; once you rearrange the panels yourself, your arrangement is what comes back.
2130
+
2131
+ | View | Key | What it looks like |
2132
+ |---|---|---|
2133
+ | Day | \`d\` | One day on a 24-hour time axis |
2134
+ | Week | \`w\` | Seven columns of time axis, scrolling sideways |
2135
+ | 3 days | \`3\` | Three columns of time axis |
2136
+ | Month | \`m\` | A month grid, scrolling vertically |
2137
+
2138
+ - The single-key switches apply to the whole window while the calendar is showing; they do not fire while you are typing in a field or a note. The toolbar dropdown holds the same four.
2139
+ - Navigation: the toolbar's "Today", "Previous" and "Next", or \`←\` \`→\`. You can also just scroll — sideways in Day/3 days/Week, vertically in Month.
2140
+ - The scrollable range is finite: roughly 150 days either side of today in the time views and 40 weeks either side in Month. Scrolling stops at the edge.
2141
+ - Weeks start on Sunday and that is not configurable.
2142
+ - Timeline density: the toolbar's "Density" → "Zoom out timeline", "Zoom in timeline", "Reset to default density"; or hold \`⌘/Ctrl\` and scroll over the time grid. Zooming keeps the time at the centre of the viewport fixed. Month view has no density control.
2143
+ - A month cell shows at most 3 events; click the "{n} more" chip at the bottom of the cell for that day's full list.
2144
+ - Mini month calendar on the right: click a day and the main area scrolls smoothly to it (only while the main area is showing the calendar). It also paints a soft band over the range currently visible in the main calendar and follows it as you scroll.
2145
+ - The whole calendar can be switched off: \`⌘/Ctrl + ,\` → "Plugins" → "Built-in plugins" → the checkbox on the "Calendar" card. That removes the ribbon icon and the three views; your panel arrangement is still there when you switch it back on.
2146
+ - The calendar opens elsewhere too: the "Calendar" card on the new tab page, and calendar and to-do cards on a dashboard. Only one calendar instance can exist at a time; the "To-do list" can be opened several times.
2147
+
2148
+ ### Events: creating, dragging and the peek card
2149
+
2150
+ There are three ways to create an event, and each opens the peek card straight away so you can name it:
2151
+
2152
+ - The toolbar's "New": a 30-minute event starting at the next 15-minute slot from now. With no calendar database at all the button is disabled and reads "Add a calendar database in the right panel first".
2153
+ - Double-click empty space in a day column in Day/3 days/Week: also a 30-minute event, snapped to the nearest 15 minutes.
2154
+ - Double-click an empty month cell: an all-day event.
2155
+
2156
+ New events land in the calendar starred as the default (set in the right panel; see the next section).
2157
+
2158
+ Dragging edits the data directly:
2159
+
2160
+ | Gesture | Result |
2161
+ |---|---|
2162
+ | Drag the block | Move it in time, or to another day |
2163
+ | Drag its top or bottom edge | Change the length, snapped to 15 minutes, 15 minutes minimum |
2164
+ | Drag an all-day chip into a time slot | It becomes a 30-minute timed event that day |
2165
+ | Drag a month chip onto another day | Re-date it, keeping its length |
2166
+
2167
+ - A movement under 3 pixels counts as a click and opens the peek card instead of moving anything.
2168
+ - The peek card: the source calendar and its colour dot at the top, an editable title, a time row that opens into date, time and an optional end, then the record's other properties, and at the bottom "Open note" or "Open database" and "Delete". Close with × or \`Esc\`; clicking outside closes it too.
2169
+ - Related-row, lookup, formula and file columns are read-only on the card, with a hint reading "Edit related rows in the table".
2170
+ - Keyboard, with an event selected: \`⌘/Ctrl + C\` remembers it, \`⌘/Ctrl + V\` duplicates it into its own database, \`Delete\` or \`Backspace\` deletes it — ordinary databases show a notification with an "Undo" button.
2171
+ - That copy lives only in the current session and is not the system clipboard; the duplicate keeps the original time and does not land on the day you happen to be looking at.
2172
+ - Read-only sources (agent schedules, \`.ics\` subscriptions, the other side's vault) cannot be dragged or deleted; clicking one only opens it for reading.
2173
+ - Events coming from note text can be dragged: doing so rewrites the \`@\` string on that line, so Markdown stays the single source of truth. To change such an event's title or make it go away, edit that line in the note — the card's "Open note" takes you straight to the right heading.
2174
+
2175
+ ### What feeds the calendar, and its settings
2176
+
2177
+ The calendar is not one table but several sources stacked together. The "Calendars" section of "Calendar settings" in the right panel lists them all, each row with a type icon.
2178
+
2179
+ | Source | Where it comes from | Editable? |
2180
+ |---|---|---|
2181
+ | Databases | Databases you added to the calendar yourself | Yes |
2182
+ | "Notes" | Every \`@\` mark on a non-checkbox line across the vault, merged into one calendar | Time only |
2183
+ | Agent schedules | Plans background agents wrote themselves | Read-only |
2184
+ | Subscriptions | An \`.ics\` / webcal subscription URL | Read-only |
2185
+ | Imported \`.ics\` | A one-off snapshot from a local file | Read-only |
2186
+ | The other vault | Local ↔ cloud: whichever side you are not in | Read-only |
2187
+
2188
+ - Adding a database: "Add calendar" at the bottom of the right panel → "Add database" → search (only databases with a date property show up here) → then pick which column is the date anchor and, optionally, a completion checkbox column. **Only with a checkbox column mapped do that table's rows also appear in the to-do list.**
2189
+ - You can also add it from the table: open the database → view settings → "+ Add to Calendar Space"; once added, that item becomes "Calendar settings".
2190
+ - Where the date comes from: give the database a "Date" column, which holds a start date, an optional time (blank means all day) and an optional end. A plain date column or a "Created time" column can serve as the anchor too.
2191
+ - On each row: the colour swatch sets the event colour, the "Show in calendar" checkbox hides or shows it, and writable databases also get a star — the starred one is where new events land.
2192
+ - The row's ⋯ menu, for writable databases: "Rename", "Set as default", "Open in new tab", "Calendar settings (column mapping)", "Remove from calendar" — removing only takes it out of the calendar, it does not delete the table.
2193
+ - Subscribing to an external calendar: "Add calendar" → "Subscribe to external calendar" → paste an \`.ics\` URL (Google, Outlook or Apple Calendar's private address all work). It refreshes every 30 minutes, and the ⋯ menu offers "Refresh now", "Rename" and "Unsubscribe". A desktop feature, and strictly one-way — your changes here never travel back to the remote calendar. A failed fetch shows "Fetch failed" next to the calendar's name.
2194
+ - Importing an \`.ics\` file: "Add calendar" → "Import .ics file". It comes in as a static snapshot and never refreshes; files over 8 MB are rejected.
2195
+ - **Colours, show/hide, the default star and the list of subscriptions all live on this machine**, not in the vault, and are not synced — set them again on another machine.
2196
+ - A single database can also have its own calendar view: open it → the + next to the view tabs → "Calendar". This is a simpler calendar: month only, no dragging, one table, with a + on each day that creates a row already dated to that day.
2197
+
2198
+ ## 12 · Files, media and PDFs
2199
+
2200
+ Files in Amadeus are not dead weight in an attachments drawer: drag one in and it lands in the vault, write it as an embed line and it becomes a resizable image, a player that can start at a given second, an annotatable PDF, or a web card. This chapter covers how files get in, where they are stored, what each kind looks like inside a note, and how to cite an exact page, second or line back into a note or a conversation.
2201
+
2202
+ ### Getting files in
2203
+
2204
+ There are many ways to hand a file to Amadeus, and they all end the same way: the file is copied into the vault at the attachment location, and a reference is left in the note.
2205
+
2206
+ | What you do | What happens |
2207
+ | --- | --- |
2208
+ | Drag from Finder / File Explorer onto a note body | Saved to the attachment location, reference inserted at the cursor |
2209
+ | Drag onto the stage in canvas mode | One card per file, each holding a reference to it (see chapter 6) |
2210
+ | Drag onto a folder row in the sidebar | Copied into that folder like a file manager, no note text touched |
2211
+ | Drag onto a note row in the sidebar | That note opens and the files go into its body |
2212
+ | Drag onto blank sidebar space | Imported to the "Vault root" |
2213
+ | Drag from the workspace file panel into the sidebar | Same as the two rows above; desktop and local vaults only |
2214
+ | \`⌘/Ctrl + V\` with an image on the clipboard | Saved into the vault and inserted as an image, immediately resizable |
2215
+ | \`⌘/Ctrl + V\` with files on the clipboard | One embed block per file, in paste order |
2216
+ | Note toolbar → "Upload files to this note" | Opens a file picker, same as dragging in |
2217
+ | Slash menu \`/\` → "Image" | Image-only picker, inserts \`![[name.png]]\` |
2218
+ | Slash menu \`/\` → "Embed" | Type any embed target, inserts \`![[ ]]\` |
2219
+
2220
+ Typing \`[[\` in a note also completes attachments, databases and drawings — that is how you hand-write a reference like \`![[report.pdf]]\` without leaving the keyboard.
2221
+
2222
+ - A ⏳ placeholder line appears while the file uploads and is replaced in place when it finishes. A failure leaves a visible "⚠️ Upload failed: {name}" line you can delete; the placeholder plus its replacement is two undo steps.
2223
+ - If you switch notes mid-upload, the file still lands in the original note and you are told: "The file was saved to the original note (you switched pages, so the placeholder line was left as is)".
2224
+ - Cloud vaults cap each file at 5 MB; over-limit files are skipped and named in the toast with the reason "over 5 MB". Local disk vaults have no cap.
2225
+ - Files dragged from the workspace file panel into a note body are capped at 50 MB, reported as "{name} (over 50 MB)"; unreadable ones as "unreadable".
2226
+ - File names containing \`[\` \`]\` \`|\` \`#\` cannot use the embed form and fall back to a \`[name](path)\` link.
2227
+
2228
+ > [!note]
2229
+ > Dropping a file on a surface that does not accept files (a Space view, an empty panel, the sidebar background, the tab bar) does nothing at all — that is deliberate, otherwise the whole window would navigate away to that file. While you drag, the window shows a highlight.
2230
+
2231
+ ### Where attachments go
2232
+
2233
+ Every entry point shares one set of settings, all under Settings → "Notes".
2234
+
2235
+ | Setting | Panel | What it does |
2236
+ | --- | --- | --- |
2237
+ | "Attachment location" | "Files and attachments" | Which folder dragged-in files are saved to |
2238
+ | "Vault-relative folder" | "Files and attachments" | Only shown for the fixed-folder option; defaults to \`assets\`, press "Save" |
2239
+ | "Preview imported files by default" | "Editing and safety" | Insert a preview embed or a plain link; on by default |
2240
+ | "Suggest attachments and databases in [[ ]]" | "Editing and safety" | Whether \`[[\` also completes attachments, databases and drawings; on by default |
2241
+ | "Delete exclusive attachments with the note" | "Editing and safety" | "Ask every time" / "Remembered: delete them" / "Remembered: keep them" |
2242
+
2243
+ The hint in Settings spells the behaviour out: "Where dragged-in files are saved. “attachments” auto-creates an attachments/ subfolder beside the note."
2244
+
2245
+ "Attachment location" offers three choices:
2246
+
2247
+ - "attachments/ folder next to the note" — the default; the subfolder is created automatically if it does not exist.
2248
+ - "Same folder as the note" — attachments sit beside the note.
2249
+ - "Fixed folder in the vault" — one place for the whole vault. That folder must be inside the vault or inline previews will not work.
2250
+
2251
+ When you delete a note whose attachments no other note references, a dialog asks whether to "Delete them too" or "Delete note only", with a "Don't ask again (change it back in Settings → Notes)" checkbox. Deleting a whole file-reference block asks the same thing, with "Keep files" instead.
2252
+
2253
+ - Files another note links to are always kept and never appear in that dialog.
2254
+ - Cutting a reference block is not deleting — it is moving, so nothing is asked. Hand-editing the characters away asks nothing either.
2255
+ - The dialog needs the desktop app; other ends never ask, and therefore never delete anything for you.
2256
+ - An embed can name just the file (\`![[pic.png]]\`, \`![[report.pdf]]\`) — the whole vault is searched for that name, so moving an attachment between folders does not break the reference.
2257
+ - When two files share a name, a note opens the first match; a chat citation chip instead shows as dimmed and unresolved rather than guessing.
2258
+ - With "Suggest attachments and databases in [[ ]]" off, typing \`[[\` completes notes only — attachments can still be referenced by hand-writing the file name, you just get no suggestions.
2259
+
2260
+ ### Images
2261
+
2262
+ Images are directly manipulable objects in a note — you never have to switch to source to work on one.
2263
+
2264
+ - Click an image to select it (it stays rendered; the source is not revealed) and a handle grows on its right edge with the tooltip "Drag to resize". The width previews live and commits as one integer on release, as a single undo step. The minimum is 40 px; clicking the handle without moving it writes nothing at all.
2265
+ - Once selected, copy, cut, delete and typing over it behave like any normal editor operation.
2266
+ - Double-click an image for a full-screen lightbox at natural size; close it by clicking anywhere in the overlay or pressing \`Escape\`.
2267
+ - Hovering an image reveals a \`</>\` button: for the \`![[…]]\` form it moves the cursor into that literal text; for the \`![](path)\` form it floats an editable line above the image with the path in readable, decoded form. \`Enter\` or blur commits, \`Escape\` cancels; an edit that is no longer valid is discarded rather than written back broken.
2268
+ - There are two forms on disk and they feel identical: dragging in or the slash menu writes \`![[pic.png|200]]\` with the width after the pipe; pasting or uploading writes \`![caption|200](path)\` with the width in the alt text, which is Obsidian's convention. Paths with spaces or brackets are escaped on save.
2269
+
2270
+ Clicking an image file in the sidebar opens it in its own tab: the image is centred, and clicking it toggles between fitting the window and actual pixel size. There is no zoom slider, rotate or pan — just those two states; switching files returns to fit-to-window.
2271
+
2272
+ Cover images are the other place images show up: hover the note title area → "🖼 Add cover". The picker has three tabs, "Gallery", "Link" and "Upload"; on a note that already has one the title area offers "Change cover", "Reposition" (then "Done") and "Remove".
2273
+
2274
+ - "Gallery" ships 12 featured covers that work on every end; the search box above them searches the online image library (Openverse) and needs the desktop app.
2275
+ - A failed search says so: "The image library is unreachable right now — pick a featured cover above, or use Link or Upload."
2276
+ - "Upload" saves into the vault at the attachment location set in Settings → Notes, and the hint says exactly that.
2277
+
2278
+ > [!warning]
2279
+ > A \`.ico\` file opens in the image tab from the sidebar, but written as an embed in a note it is **not** rendered as an image — you get a plain file card.
2280
+
2281
+ ### Audio, video and time anchors
2282
+
2283
+ Put a media file on its own line in a note, for example \`![[lecture.mp4]]\`, and it renders as a card: a 🎬 / 🎵 icon, the file name, "Collapse" ⇄ "Expand", "Open ↗" (opens with the system default app), and a player underneath.
2284
+
2285
+ Add a time anchor after the file name and the player starts there; write a range and it pauses automatically at the end point. The time format is strict:
2286
+
2287
+ | Written as | Meaning |
2288
+ | --- | --- |
2289
+ | \`![[lecture.mp4#t=95]]\` | Starts at 95 seconds; the card shows a "Start time" badge |
2290
+ | \`![[lecture.mp4#t=95.5]]\` | Seconds may carry a decimal |
2291
+ | \`![[lecture.mp4#t=01:35]]\` | 1 minute 35 seconds — minutes and seconds must both be two digits |
2292
+ | \`![[lecture.mp4#t=1:02:30]]\` | 1 hour 2 minutes 30 seconds |
2293
+ | \`![[lecture.mp4#t=95,120]]\` | Starts at 95 seconds and pauses at 120 |
2294
+ | \`![[lecture.mp4#t=1:35]]\` | Not recognised (minutes are one digit) — plays from 0:00 and shows "Invalid anchor · playing from 0:00" |
2295
+
2296
+ - "Open ↗" on the card hands the file to the system default app; "Collapse" folds the player away and leaves just the file name, which helps in a note carrying many recordings.
2297
+ - Video cards carry a "✂ Capture this frame" button: it saves the current picture as a PNG attachment and inserts two paragraphs below the video block — the image, and a link back to that exact moment. When frames are unavailable the button is disabled with "Frames are unavailable here — the video loaded without cross-origin access"; a failure reports "Cannot capture a frame from a cross-origin video" or "Frame capture failed" inline and clears after three seconds. The button exists only on video cards inside a note.
2298
+ - The recognised extensions are deliberately narrow: video \`.mp4\` \`.webm\` \`.mov\` \`.m4v\`, audio \`.mp3\` \`.wav\` \`.ogg\` \`.m4a\` \`.flac\`. \`.mkv\` and \`.avi\` stay plain file cards on purpose rather than becoming a black frame that will not play.
2299
+ - The card's right edge can be dragged to set a width, written as \`![[lecture.mp4#t=95|400]]\`.
2300
+ - Large files stream as you play, so scrubbing a multi-gigabyte lecture recording does not wait for the whole file.
2301
+ - To write a time-anchored reference without leaving the keyboard, type \`[[\`, let it complete the file name, then add the anchor by hand.
2302
+
2303
+ > [!warning]
2304
+ > Clicking an audio or video file in the sidebar (or right-clicking it and choosing "Open") opens the **system player**, not the in-app one. The in-app player has exactly two entry points: an embed card in a note, and a time-anchored citation chip in a conversation. A plain \`[[lecture.mp4]]\` link with no time anchor also goes to the system player.
2305
+
2306
+ ### Web embeds and bookmark cards
2307
+
2308
+ A note line that contains nothing but an http(s) URL renders as a bookmark card: cover image, title, description, favicon and site name. When no cover can be fetched, a colour gradient generated from the host is used, so every card has one — you never get a hole.
2309
+
2310
+ Pasting a URL into an empty paragraph pops the "Paste as" menu with three choices; \`↓\` \`↑\` to move, \`Enter\` or \`Tab\` to confirm, \`Escape\` or a click elsewhere to dismiss.
2311
+
2312
+ | Option | Hint | Result |
2313
+ | --- | --- | --- |
2314
+ | "Link" | The host name | An inline link whose text is the host name |
2315
+ | "Bookmark card" | "Default" | Choosing nothing and closing the menu gives you this |
2316
+ | "Embed" | "Player / web page" | Video links become a player, everything else an embedded page |
2317
+
2318
+ - The slash menu's "Bookmark" item does the same, prompting "Paste a link starting with https:// — YouTube links turn into an embedded player."
2319
+ - Hovering a bookmark card reveals two tools: ✎ "Edit link URL", and ▶ "Embed the player" for video links or ⤢ "Embed this page (live page, frozen by default)" otherwise. Frozen pages and the inbox stream have no ✎.
2320
+ - YouTube and Bilibili links embed the platform's official player, with a footer carrying the site name, an optional "Start time" badge, "Open in browser" and "Convert to bookmark card". The start time is read from the URL in \`90\`, \`1m30s\` or \`01:30\` form. Only these two platforms are supported.
2321
+ - Embedded pages are frozen by default: you first see the bookmark card plus a "▶ Wake page" button, next to the note "Pauses automatically while you edit this paragraph". Once woken it is a real page with a small bar carrying the site name, "⏸ Freeze" and "Open in browser ↗". Desktop only; elsewhere it falls back to a card with the note "Embedded web pages are not supported here, so this fell back to a bookmark card."
2322
+ - Only public http(s) addresses are allowed. file, data, javascript, localhost and private-network addresses are refused: "Blocked: web embeds only allow public http(s) addresses — file/data/javascript, localhost and private networks are rejected."
2323
+ - Fetching the title and cover needs the desktop app; elsewhere the card still renders, with the generated cover and the raw URL as the title.
2324
+ - Video, audio, PDF and web cards can all be dragged by the right edge to set a width, written as \`![[target|560]]\`. Databases, drawings, plugin embeds and note-in-note embeds have no such handle — the pipe means something else there.
2325
+
2326
+ > [!warning]
2327
+ > A live page freezes the moment your cursor enters its paragraph — the card says so; that is by design, not a crash. Changing the start time remounts the player, and committing a width reloads a playing video or a live page once. Pasting a video URL gives you a **bookmark card, not a player** — click ▶ on the card for the player. One more: pressing \`Enter\` in the "Paste as" menu without having pressed an arrow key first picks nothing — the menu closes and that \`Enter\` inserts a line break as usual.
2328
+
2329
+ ### Reading and annotating PDFs
2330
+
2331
+ Right-click a \`.pdf\` row in the sidebar → "Open (annotatable)", or just click the row, and the reader opens in the app. Several PDFs can be open as separate tabs at once and are restored with the layout; a vault must be open first, and until then the pane only says it is waiting for one. **Annotations are written into the PDF file itself**, so any other PDF reader sees them, and there is nothing to save by hand.
2332
+
2333
+ The toolbar holds 13 tools:
2334
+
2335
+ | Tool | How you use it |
2336
+ | --- | --- |
2337
+ | "Pointer (select text, scroll)" | Select text, scroll, select existing annotations |
2338
+ | "Highlight (select text; drag on a blank area for a free-form highlight)" | Select text to highlight it, or drag on blank space |
2339
+ | "Underline (select text to mark it)" | Select text to mark it |
2340
+ | "Squiggly underline (select text to mark it)" | Select text to mark it |
2341
+ | "Strikethrough (select text to mark it)" | Select text to mark it |
2342
+ | "Add text (click the page to type)" | Click anywhere on the page and type |
2343
+ | "Sticky note (click the page to place one)" | Click the page to drop a note |
2344
+ | "Pen (pressure-sensitive ink written into the PDF; stylus supported)" | Write directly; a stylus gives pressure |
2345
+ | "Eraser (drag across ink to erase it)" | Drag across ink to remove it |
2346
+ | "Rectangle (drag on the page)" | Drag out a rectangle |
2347
+ | "Ellipse (drag on the page)" | Drag out an ellipse |
2348
+ | "Line (drag on the page)" | Drag out a straight line |
2349
+ | "Arrow (drag on the page)" | Drag out an arrow |
2350
+
2351
+ - Selecting text on a page pops a floating highlight button, so you can highlight without switching to the Highlight tool first. Read-only PDFs do not get it.
2352
+ - The "Annotation color" row offers seven: Yellow, Green, Blue, Pink, Orange, Red, Black (black is meant for the pen).
2353
+ - Picking a shape tool adds a filled/outline toggle, "Stroke width" (1, 2, 3, 5, 8 pt) and "Opacity" (100%, 75%, 50%, 25%); Line and Arrow have no filled state. Picking the pen adds "Pen thickness" (0.35 to 5 pt) and the same opacity choices.
2354
+ - With the Pointer tool, click an annotation to select it, or drag on blank page area to marquee-select several. Ink, rectangles, ellipses, lines, sticky notes and text boxes can be dragged to a new position. A floating bar offers "Delete" ("Delete {n}" for a multi-selection), plus "Edit" for a single sticky note. On the keyboard, \`Delete\` or \`Backspace\` removes the selection and \`Escape\` clears it. Clicking on text yields to the native text selection instead of starting a marquee.
2355
+ - Undo is \`⌘/Ctrl + Z\`; redo is \`⌘/Ctrl + Shift + Z\` or \`⌘/Ctrl + Y\`.
2356
+ - The left-most "Sidebar (thumbnails and outline)" button opens a panel with two tabs, "Thumbnails" and "Outline"; an empty outline reads "No outline or bookmarks". "Add bookmark (written into the PDF outline, visible in any reader)" writes the current page into the PDF's own outline, titled "Page {n}" by default.
2357
+ - The floating bottom bar carries "Zoom out", "Zoom in" and a zoom menu ("Fit width", "Fit page", 50% to 300%), "Previous page", "Next page", and an editable page box — type a number and press \`Enter\`. \`⌘/Ctrl + scroll wheel\` over the page, or a trackpad pinch, zooms too.
2358
+
2359
+ > [!warning]
2360
+ > Three behaviours that look like breakage: the eraser removes **only** pen ink, not shapes or text markup; \`⌘/Ctrl + Z\` does nothing while "Highlight" or "Add text" is the active tool (those two keep their own undo stack — switch tools and it works again); and a protected or damaged PDF cannot be written, which raises the banner "Could not save — this PDF may be protected or damaged". Separately, a PDF embedded in a note and a PDF opened from an absolute path outside the vault are both read-only: paging and zoom work, but there is no toolbar or sidebar and nothing is ever written — to annotate one, click "Open ↗" on the embed card (tooltip "Open in a Forsion tab (with annotations)") for an annotatable tab.
2361
+
2362
+ ### Citing a page, a second, a line
2363
+
2364
+ Reading a page you want to note down: click "Copy link to this page" on the right of the reader's toolbar (tooltip "Copy a note link to this page") and the clipboard holds a link to that page; the button flashes "Copied". Paste it into a note and clicking it brings the reader back to that page — and if the PDF is already open, it **jumps in place** instead of reloading.
2365
+
2366
+ - What is copied is the bare file name, with no path. A note resolves it by searching the whole vault, so it still opens; but when two PDFs in the vault share that name, a chat citation chip shows dimmed and unresolved rather than guessing.
2367
+ - You can also write one by hand: \`[[report.pdf#page=18]]\` opens page 18.
2368
+
2369
+ After Tangu has read a document, its reply carries citation chips that jump straight to the source. With Agent Desk on they open beside the conversation; otherwise they open as a main-area tab.
2370
+
2371
+ | Chip | Reads as | What clicking it does |
2372
+ | --- | --- | --- |
2373
+ | PDF page | \`report.pdf p.18\` | The annotatable reader stops on page 18 |
2374
+ | PDF page plus a quoted sentence | Same as above | Stops on that page, scrolls to the sentence and paints an amber band that pulses once on arrival |
2375
+ | Media moment | \`lecture.mp4 @01:35\` | The player starts at 1:35; a range reads \`@01:35–02:00\` |
2376
+ | Code line | \`a.ts:42\` or \`a.ts:42-48\` | Opens the file, scrolls to and highlights that line |
2377
+ | Note heading | \`note › heading\` | Opens the note and scrolls to that heading |
2378
+ | Note block anchor | \`note › anchor\` | Opens the note and flashes that block |
2379
+ | Office document | The file name | Opens \`.doc\` \`.docx\` \`.xls\` \`.xlsx\` \`.ppt\` \`.pptx\` directly |
2380
+
2381
+ - The quote highlight is transient: it is never written into the PDF and vanishes on reload. If the sentence is not found the page still opens, just without the band.
2382
+ - Heading matching is exact first, then format-stripped, then case-insensitive; if nothing matches, the note simply opens and never jumps to the wrong heading.
2383
+ - An unparseable time anchor still opens the player, from the start, and the hover text says "(invalid time anchor — playing from the start)". A broken range end degrades to the start point with "(invalid range end — ignored)".
2384
+ - A plain quoted-sentence link in a conversation opens in the built-in browser beside the chat and scrolls to that sentence in amber — this needs the desktop app with both Agent Desk and the built-in browser plugin enabled; with any of those off it is treated as an ordinary external link. Link text under 8 characters or over 300 is not located, and the page just opens at the top.
2385
+ - On mobile, media citation chips carry no timestamp and play from the start.
2386
+
2387
+ ### Supported file types
2388
+
2389
+ Any file can go into the vault and any file can be referenced from a note — the only difference is what it renders as. The same file is also treated differently inside a note and in the sidebar; this table is the complete picture.
2390
+
2391
+ | Kind | Extensions | Inside a note | Clicked in the sidebar |
2392
+ | --- | --- | --- | --- |
2393
+ | Images | \`.png\` \`.jpg\` \`.jpeg\` \`.gif\` \`.webp\` \`.svg\` \`.avif\` \`.bmp\` | Rendered inline, selectable, width draggable | Image tab |
2394
+ | Icons | \`.ico\` | Plain file card | Image tab |
2395
+ | Video | \`.mp4\` \`.webm\` \`.mov\` \`.m4v\` | Player card with time anchors | System player |
2396
+ | Audio | \`.mp3\` \`.wav\` \`.ogg\` \`.m4a\` \`.flac\` | Player card with time anchors | System player |
2397
+ | PDF | \`.pdf\` | Collapsible read-only preview card | Annotatable reader |
2398
+ | Drawings | \`.excalidraw.md\` | Embed card | "Open whiteboard" |
2399
+ | Databases | \`.db\` | Embed card | Table view, with "Rename" |
2400
+ | Everything else | \`.mkv\` \`.avi\` \`.zip\` \`.docx\` … | 📄 file card | System default app |
2401
+
2402
+ - Compound extensions win: \`.excalidraw.md\` is a drawing and \`.dashboard.md\` is a dashboard, never opened as a plain Markdown note.
2403
+ - An unrecognised type is not an error — it simply renders as a 📄 file card, and "Open ↗" on the card hands it to the system default app.
2404
+ - Right-clicking any file in the sidebar offers "Open with the system app", "Show in file manager" and "Delete". PDFs add "Open (annotatable)", images and databases get "Open", drawings get "Open whiteboard", and file types registered by a plugin get "Open" too.
2405
+ - With "Preview imported files by default" turned off, imported files are inserted as \`[name](path)\` links instead of embed cards; clicking such a link also opens the file with the system default app.
2406
+ - Attachments are served with range requests, so paging through a very large PDF or scrubbing a long video fetches as you go rather than waiting for the whole file.
2407
+ - A plugin can register its own file types; once it does, those files get their own "Open" in the sidebar and the plugin decides what happens.
2408
+ - The recognised media extensions are deliberately narrow so that formats which cannot play never render as a black frame: better an honest file card that hands the file to a program on your machine that really can play it.
2409
+
2410
+ ## 13 · Whiteboards and drawing
2411
+
2412
+ A drawing board is a freehand canvas driven by the Excalidraw engine. It is its own file in the vault, opens in its own tab, and can also be embedded whole inside a note. This chapter covers how it differs from canvas mode, how to create one, the tools and pens, paper and grid settings, and one naming rule that damages the file if you break it.
2413
+
2414
+ ### A drawing board is not canvas mode
2415
+
2416
+ Both let things float freely on a surface, but they are not the same feature.
2417
+
2418
+ | | Drawing board | Canvas mode |
2419
+ |---|---|---|
2420
+ | What it is | A separate file driven by the Excalidraw engine | Another layout for one note |
2421
+ | Where it lives | Its own \`.excalidraw.md\` file | Inside that note's own \`.md\` |
2422
+ | What is in it | Strokes, shapes, text, images | That note's own blocks as draggable cards, plus rectangles, ellipses, text, frames and connectors |
2423
+ | How to get there | Open a board file from the sidebar, or embed one in a note | The "Document" / "Canvas" switch in the note's top bar |
2424
+ | Can you draw | Yes — draw, highlighter and eraser are all there | No freehand strokes, but rectangles, ellipses, text and frames are there, and the arrow tool draws connectors |
2425
+
2426
+ Canvas mode is the segmented switch in a note's top bar: "Document" and "Canvas", labelled "Editing mode" for screen readers. On mobile it is the frame icon in the floating toolbar, with the tooltips "Switch to canvas" and "Switch to document". The switch is hidden in source mode.
2427
+
2428
+ Which one to reach for:
2429
+
2430
+ - Freehand sketching, flowcharts, marking up a rough drawing → a drawing board.
2431
+ - Spreading one note's paragraphs out to reorder them → canvas mode.
2432
+
2433
+ They are easy to tell apart in the sidebar too: board files carry a pen-nib icon at the start of the row, while canvas mode has no file of its own and travels with the note.
2434
+
2435
+ One naming trap: the app labels the same thing two ways — the sidebar and the command palette say "New whiteboard", while the slash menu inside a note says "Drawing". Both mean the drawing board described in this chapter.
2436
+
2437
+ > [!note] The in-app tutorial describes canvas mode as arranging blocks "like a whiteboard". That is only a comparison — canvas mode has no pens, so there are no freehand strokes; rectangles, ellipses, text and frames are all there, and the arrow tool draws connectors.
2438
+
2439
+ ### Creating a drawing board
2440
+
2441
+ Three ways in. All of them need a vault open and Amadeus as the current Space:
2442
+
2443
+ - Command palette \`⌘/Ctrl + K\` → "New whiteboard". Creates it at the vault root.
2444
+ - The pen-nib button "New whiteboard" at the top of the sidebar, next to "New note". Also creates it at the root; the button row is hidden while there is text in the sidebar search box.
2445
+ - Right-click a folder → "New whiteboard". Creates it inside that folder, then expands the tree and opens it. The folder menu order is fixed: New note / New subfolder / New database / New whiteboard / New dashboard.
2446
+
2447
+ All three open the same dialog, which asks three things at once: the name (prefilled "Untitled whiteboard"), the paper, and the orientation. Paper is either an infinite canvas (the default) or A4, A5, B4, B5; a portrait/landscape row appears only once you pick a paper. Enter confirms; Esc or a click outside cancels.
2448
+
2449
+ The paper is only a starting default — you can change it at any time later from the board's ☰ menu.
2450
+
2451
+ The name is cleaned up: slashes are stripped, and a \`.excalidraw\` or \`.excalidraw.md\` ending you typed yourself is removed before the app appends the full one. A duplicate name is refused on the spot, with a message of the form "Sketch.excalidraw.md" already exists.
2452
+
2453
+ The palette matches the command on a wide set of words: whiteboard, drawing, excalidraw, 「白板」 and 「画板」 all find it.
2454
+
2455
+ > [!warning] With no vault open, "New whiteboard" in the command palette does nothing at all — no dialog, no error. Open a vault first.
2456
+
2457
+ > [!note] The body of this dialog is shown in Chinese, on the English UI as well: 「纸张」 is paper, 「无限画布」 is infinite canvas, 「纵向」 is portrait, 「横向」 is landscape, 「取消」 is cancel and 「创建」 is create. Only the title and the prefilled name follow the interface language.
2458
+
2459
+ ### The tool capsule and the pens
2460
+
2461
+ Every board has a tool capsule across the top, split into three segments by two divider lines. Only the middle segment carries number keys, assigned by position from left to right.
2462
+
2463
+ | Tool | Segment | Number key | What it does |
2464
+ |---|---|---|---|
2465
+ | Keep tool selected | Left | — | Pins the current tool so it does not snap back to selection |
2466
+ | Hand | Left | — | Pans the canvas |
2467
+ | Selection | Middle | \`1\` | Select, move and resize elements |
2468
+ | Shape | Middle | \`2\` | Rectangle / diamond / ellipse |
2469
+ | Line | Middle | \`3\` | Arrow / line |
2470
+ | Draw | Middle | \`4\` | Freehand, with the 7 pens |
2471
+ | Highlighter | Middle | \`5\` | Jumps straight to the highlighter pen |
2472
+ | Text | Middle | \`6\` | Type on the board |
2473
+ | Eraser | Middle | \`7\` | Erase |
2474
+ | Frame | Right | — | Frame a group of elements |
2475
+ | Laser pointer | Right | — | Point at things while presenting, leaves no element |
2476
+
2477
+ Number keys only fire while the focus is on that board; typing in an input or a text element does not trigger them. "Keep tool selected" is a toggle, not a tool — it applies to whichever tool is current.
2478
+
2479
+ "Shape" and "Line" are merged buttons and open no dropdown: swap the member in the left properties panel, section "Shape" (rectangle / diamond / ellipse) or "Line" (arrow / line). The button remembers the member you used last.
2480
+
2481
+ With "Draw" active the properties panel gains a "Pen" section holding seven fixed pens: "Default", "Fine tip", "Fountain pen", "Marker", "Highlighter", "Thick to thin", "Tapered ends". Click the same pen again to go back to your own colour and width. With the highlighter picked the panel also shows a "Stroke" section: "Flat cap" and "Round cap", flat by default. Width and colour are still set with Excalidraw's own stroke controls.
2482
+
2483
+ To add an image, paste it onto the board.
2484
+
2485
+ Press and drag any tool button to move it, across segments too. Because the number keys follow position in the middle segment, dragging deliberately changes the shortcut. The order is one global setting (the panel marks it "All boards"), not per file and not per window.
2486
+
2487
+ > [!warning] Pens that only apply to freehand, such as the marker and the highlighter, hand your colours back when you leave the draw tool. So picking the highlighter and then drawing a rectangle will not give you a highlighter-coloured rectangle.
2488
+
2489
+ ### Paper, pages and grid
2490
+
2491
+ The ☰ menu at the top left of a board holds Excalidraw's own items — export, save as image, search, clear canvas and so on — and below them the app's own settings.
2492
+
2493
+ | Section | What it does | Scope |
2494
+ |---|---|---|
2495
+ | Paper | "Infinite" or A4 / A5 / B4 / B5, then "Portrait" or "Landscape" | This board |
2496
+ | Page layout | "Top to bottom" (default) or "Left to right" | This board |
2497
+ | Grid | Spacing for "Horizontal" and "Vertical" lines, plus an "Opacity" slider | This board |
2498
+ | Properties panel | "Standard" or "Compact" | All boards |
2499
+ | Toolbar | "Reset to default order" | All boards |
2500
+
2501
+ Once a paper is chosen the page edge is drawn, and panning is held to the page strip so you cannot drift far off into empty space.
2502
+
2503
+ Adding pages: move the pointer into the margin past either end of the page strip and a "+ New page" button fades in. A blank page you added by hand can be removed with the "−" button beside it, tooltip "Delete this blank page"; a page with content on it cannot be removed. Pages also grow on their own to cover whatever you have drawn.
2504
+
2505
+ Grid: tick "Horizontal" or "Vertical" and set the spacing (20 px by default), then use "Opacity" for how strong the lines look. The slider is greyed out when both sets of lines are off. Lines that would sit too close together at the current zoom are not drawn at all.
2506
+
2507
+ The "Toolbar" section is hidden while the order is still the factory one — there is nothing to reset.
2508
+
2509
+ > [!warning] Changing "Page layout" really does move your content: every element travels with its page. Press \`⌘/Ctrl + Z\` to put it back.
2510
+
2511
+ > [!note] "Properties panel" ships set to "Compact", a narrow strip on the left that folds its groups into popovers. Switch to "Standard" for the full properties island.
2512
+
2513
+ > [!note] Paper only holds panning. A stroke started on the page can still be dragged past the page edge.
2514
+
2515
+ ### Putting a board inside a note
2516
+
2517
+ A board can live inside a note as a live, editable block that you draw on in place.
2518
+
2519
+ - Insert it: on an empty line in a note type \`/\` → group "Advanced" → "Drawing" (the hint column reads Excalidraw). On mobile, use the "+" button in the floating toolbar (tooltip "Insert block") → "Advanced" → "Drawing".
2520
+ - This path does not ask for a name: the file is named with a timestamp, such as "Whiteboard 2026-09-05 12.30.00", is always an infinite canvas, and is stored next to the note.
2521
+ - What stays in the note is a single reference line, written in the \`![[Name.excalidraw]]\` form. What you draw goes into the board file, not into the note.
2522
+ - The same board can be open in a tab and in several notes at once. Edit it anywhere and every other place updates immediately.
2523
+ - A plain link without the exclamation mark, \`[[Name.excalidraw]]\`, opens the board in a whiteboard tab when clicked instead of creating a note of that name.
2524
+ - A reference carrying a \`#\` block anchor or a \`|\` alias is not treated as a board; it stays an ordinary reference.
2525
+ - A board can also sit on a dashboard as a widget: unlock the dashboard and add it. Two sizes are offered, full and workspace.
2526
+
2527
+ Opening from the sidebar: board files carry a pen-nib icon at the start of the row; click it and the board opens in its own tab. A board that is already open is brought forward rather than opened twice. Select several rows and right-click the "Open 3 items in new tabs" entry to open a batch at once.
2528
+
2529
+ The right-click menu for a board has four items: "Open whiteboard", "Open with the system app", "Show in file manager" and "Delete".
2530
+
2531
+ > [!warning] The ✕ on an embedded board removes only that reference line from the note. The board file stays where it is on disk. To delete the file itself, right-click it in the sidebar and choose "Delete".
2532
+
2533
+ ### File format, syncing, and what not to rename
2534
+
2535
+ A board has no save button. It writes itself to disk about a second after you stop drawing, and flushes again when the tab closes or the app quits.
2536
+
2537
+ The file is a \`.excalidraw.md\`, the same format the Obsidian Excalidraw plugin writes, so one vault can be opened from both apps. Only the drawing section is ever rewritten; the front matter, the text-element section and the link section are preserved as they were. Paper, page layout and grid settings live in the front matter, where they are harmless to Obsidian.
2538
+
2539
+ If the same board changes elsewhere — another window, another device, a cloud sync — those strokes are merged element by element into the canvas you have open, instead of one side overwriting the other.
2540
+
2541
+ > [!warning] \`.excalidraw.md\` is one whole ending and must not be split. Rename the file to \`Name.md\` or \`Name.excalidraw-1.md\` and the app stops recognising it as a board and opens it in the note editor, which rewrites the drawing data inside. Always keep the complete \`.excalidraw.md\` ending.
2542
+
2543
+ A few more naming rules:
2544
+
2545
+ - The board's right-click menu has no rename item. Use "Show in file manager" and rename it there, keeping the ending intact.
2546
+ - A board inserted from a note is referenced by name. Rename or move it and the block in the note goes to its missing state.
2547
+ - If the name is taken at creation time and the file gets auto-renamed into a broken suffix, the app stops there and tells you to rename it back to \`.excalidraw.md\` before opening it.
2548
+
2549
+ Other things worth knowing up front:
2550
+
2551
+ - Saving is delayed by about a second. Force-quitting inside that window can lose the last few strokes.
2552
+ - Strokes merged in from elsewhere do not enter your undo stack, so \`⌘/Ctrl + Z\` will not undo someone else's change.
2553
+ - If the scene data cannot be read, the board enters read-only protection and stops writing to disk, so a damaged file is not made worse.
2554
+ - Opening a \`.excalidraw.md\` from the workspace file panel shows its source read-only. That is deliberate, to keep it from being edited as an ordinary note.
2555
+
2556
+ > [!note] These state messages are shown in Chinese, on the English UI as well: 「画板文件缺失」 means the board file is missing, 「画板文件读不出场景数据」,「已进入只读保护」 means the scene data could not be read and the board is read-only, 「重试」 is retry and 「在文件管理器中显示」 is show in file manager.
2557
+
2558
+ ## 14 · Properties and metadata
2559
+
2560
+ Properties are the block of YAML at the very top of a note, between two \`---\` lines — Obsidian calls it frontmatter. It holds information *about* the note: status, date, tags, page icon, cover. This chapter covers how to read and write it from the interface, which editors you get, where those values flow, and which keys belong to the app and should be left alone.
2561
+
2562
+ ### The properties bar
2563
+
2564
+ Open a note and a small chip sits directly under the title reading "Properties 3" — the number is how many properties the note has. Click it to expand a key/value list (the chip turns to ▾), click again to collapse it (back to ▸).
2565
+
2566
+ - It is collapsed by default, and **it re-collapses every time you switch to another note**. That is by design, not a lost setting.
2567
+ - With no properties at all it reads "Properties 0", and the expanded panel shows one line: "No properties yet."
2568
+ - The panel edits the key/value pairs inside that \`---\` block. The app's own structural keys never appear here, and keys that plugins (canvas, mind map, and so on) use to store their data are hidden so you cannot corrupt them by hand. They stay safe either way: editing an unrelated property never drops them.
2569
+ - If the YAML is broken and the app cannot parse it, the chip becomes "Properties (raw)". Expanding it gives you a monospace text box holding that text verbatim so you can repair it; click away to commit. In this state the app never rewrites anything for you.
2570
+ - Requires a vault open in Amadeus. Database, dashboard, drawing board and PDF tabs have their own interfaces and show no chip, and it is hidden entirely while a note is in canvas mode.
2571
+
2572
+ > [!warning]
2573
+ > Editing **any** property from the panel re-serialises the whole YAML block — comments you wrote in the frontmatter are lost at that moment. To keep comments byte for byte, edit in source mode (see the last section of this chapter).
2574
+
2575
+ ### Adding, renaming and deleting properties
2576
+
2577
+ - **Add**: the + next to the chip (tooltip "Add property") opens a dialog whose field is labelled "Key name written to the note frontmatter". Type the key, press Enter to confirm, Esc to cancel. The new property lands as empty text and the panel expands.
2578
+ - **Three ways an add is refused**: a key starting with \`amadeus_\` raises "amadeus_* keys are reserved"; a key a plugin owns raises "This key is managed by a plugin"; a key the note already has is **silently ignored** — no error, nothing added, it looks like nothing happened.
2579
+ - **Rename**: expand the panel, click the key on the left of a row, then click away (blur) to commit. The value and the key's position in the YAML block are both kept.
2580
+ - **Rename refusals are all silent**: the field simply snaps back to the old key with no message. An empty key, the app's five structural keys, a key a plugin owns, and a key the note already has (including the hidden ones) all snap back like this.
2581
+ - **Delete**: hover a row and an × appears on the right (tooltip "Delete property"); one click removes it. There is no confirmation and no undo in the panel, and the change is written to disk immediately.
2582
+
2583
+ > [!warning]
2584
+ > That delete × is fully transparent until the row is hovered. On a touch screen it amounts to tapping blind — delete properties on the desktop.
2585
+
2586
+ ### Property types
2587
+
2588
+ The control you get on each row is inferred from **what that key's value currently looks like**:
2589
+
2590
+ | Value in the YAML | Control you get |
2591
+ |---|---|
2592
+ | \`done: true\` | checkbox |
2593
+ | \`count: 3\` | number box (re-parsed on blur) |
2594
+ | \`due: 2026-09-05\` | date picker |
2595
+ | \`tags: [reading, wip]\` | removable chips plus an input |
2596
+ | \`note: some text\`, or an empty value | text box |
2597
+ | a nested map, or a list containing maps | read-only monospace YAML preview |
2598
+
2599
+ > [!note]
2600
+ > There is **no type picker** in the panel. A newly added property is always empty text. To get a checkbox, number, date or list, take one of two routes: write the value in that shape in source mode (\`done: true\`, \`count: 3\`, \`due: 2026-09-05\`, or one \`- item\` per line), or add a column in a Note view (see the next section).
2601
+
2602
+ - Chips: type in the trailing input and press Enter or comma to append one; press Backspace on an empty input to drop the last one; each chip's × removes just that one; duplicates are refused. While the list is empty the input reads "Press Enter to add…".
2603
+ - The chips control only appears if the key is **already** a list in the file — the panel has no "turn this into a list" action.
2604
+ - Text and number boxes **commit on blur only**: typing without clicking away saves nothing. The date box commits as soon as it changes.
2605
+ - Put something that is not a number into a number box and it is stored as text instead, quietly turning that row into a text property.
2606
+ - Nested structures are read-only here; hovering one shows "Edit nested values in source mode".
2607
+
2608
+ ### Page icon and cover
2609
+
2610
+ Both of these are properties, they just have dedicated buttons. Hover the title area and a row of buttons appears above it.
2611
+
2612
+ - **Add an icon**: click "☺ Add icon" and the app assigns a random emoji straight away — the first click does not ask, it just gives you one to change.
2613
+ - **Change or remove**: click the large emoji above the title to open the picker (tooltip "Change or remove the page icon"). Inside is a grouped grid plus a search box that matches Chinese and English keywords, placeholder "Search emoji (Chinese or English), or paste any character and press Enter…". Enter takes the first hit; with no hits, Enter uses whatever you typed — so any symbol from the OS emoji panel can be pasted in as the icon. Once an icon is set the picker also offers "Remove icon". Esc or a click outside closes it.
2614
+ - The bundled emoji table is a curated subset, not all of Unicode; group headings follow the interface language. If a character is missing, paste it.
2615
+ - Once an icon is set it replaces the generic file glyph in the file tree row, on the tab, and in the \`[[\` link suggestion list.
2616
+ - **Add a cover**: click "🖼 Add cover" to open the picker, which has three tabs — "Gallery" (12 featured covers, plus an online image search box on hosts that support it), "Link" (paste an \`https://…\` image address, then Enter or "Set as cover"), and "Upload" (pick a local image; it is saved into the vault at the attachment location set in Settings → Notes). Clicking a thumbnail applies it at once and **deliberately leaves the popover open** so you can try several in a row.
2617
+ - **Change a cover**: hover the cover banner and "Change cover", "Reposition" and "Remove" appear. "Reposition" unlocks the banner so you can drag the image up or down to set the vertical focal point; click "Done" when it looks right.
2618
+
2619
+ > [!warning]
2620
+ > "Gallery" and "Link" store a **remote address**, not a local copy — go offline, or let the far end drop the image, and the cover goes blank. A failed image is never reported either; the banner just fades, which looks like a bug. "Upload" stores a relative path, so moving the note without its attachment breaks the cover too.
2621
+
2622
+ > [!note]
2623
+ > The "Reposition" drag is mouse-only: on a touch screen you can enter the mode but the image will not move, so adjust it on the desktop. The buttons above the title are also hidden until hovered, which makes them invisible on touch.
2624
+
2625
+ ### Where properties go: databases, search and dashboards
2626
+
2627
+ A Note view is the thing that turns properties into a table — one row per note, one column per property key.
2628
+
2629
+ - In a note body type \`/\` to open the block menu → group "Advanced" → "Note view" (hinted \`Bases\`). The app creates a folder and a view file and embeds the view in the current note; the view file lives in the note's \`.fd\` sub-folder, which you will see in the file tree.
2630
+ - Every row is a note in the source folder, every column is a key found in those notes' frontmatter, and the column type is guessed from the value. Nothing is copied into the view file — the rows are read from disk every time.
2631
+ - The folder button in the header switches the source (tooltip "Choose the source folder (each row is a note inside it)"). Its first entry, "Whole vault (top-level notes)", covers top-level notes only, not sub-folders; a folder likewise counts only its direct children. Switching folders **adds** columns but never removes old ones.
2632
+ - Editing a cell edits that note's property. The first column, "Page Name", is the filename, so editing it renames the file and references across the vault follow.
2633
+ - Adding a row really creates a note in the source folder; deleting a row really deletes that \`.md\` file, behind the confirmation "Deleting this row also deletes its note file. Continue?".
2634
+
2635
+ > [!warning]
2636
+ > In a Note view, **clearing a cell or unchecking a checkbox deletes the key**, rather than storing an empty value or false. Also, a newly added column writes a key literally named 「属性」, then 「属性2」, 「属性3」… into every note, in Chinese, whatever the interface language; the Board layout's "+ Add a Status select column" and the Calendar layout's "+ Add a Date column" likewise write the Chinese keys 「状态」 and 「日期」 (with the options 「待办」 / 「进行中」 / 「完成」). Rename the column from its menu if you want a different key — that rewrites every note in the source folder at once, and the table cannot undo it.
2637
+
2638
+ Two boundaries are worth knowing before you rely on properties.
2639
+
2640
+ > [!warning]
2641
+ > Full-text search (\`⌘/Ctrl + Shift + F\`) looks at the title and the body only — **the properties block is not indexed**, so a value that exists only there will not be found. The sidebar's "Tags" panel works the same way: it counts \`#tags\` written in the body, and a \`tags:\` list in the frontmatter is just an ordinary list property that never shows up in that panel.
2642
+
2643
+ - A dashboard's "Stat card…" and "Chart (database)…" ask you to pick a \`.db\`. A Note view keeps no rows of its own in the file, so those two cards report "No data" when pointed at one. To put a Note view on a dashboard, use "Add card" → "Views" → "Database" and pick the file — that gives you the live table.
2644
+
2645
+ ### Keys that belong to the app
2646
+
2647
+ A few kinds of key inside that \`---\` block are not your data — they are the app's and the plugins' bookkeeping:
2648
+
2649
+ | Key | Who uses it | What to do |
2650
+ |---|---|---|
2651
+ | \`amadeus_page\` \`amadeus_schema\` \`amadeus_layout\` \`amadeus_canvas\` \`amadeus_next_id\` | the note's own structure | never shown in the panel, and you cannot rename another key to one of these. You can see them in source mode — leave them alone |
2652
+ | \`icon\` \`cover\` \`cover_y\` | page icon, cover, cover focal point | ordinary editable rows in the panel, but change them with the icon and cover buttons. Deleting the \`cover\` row by hand strands a lone \`cover_y\` |
2653
+ | \`dashboard\` \`dashboard2\` \`dashboard3\` \`dashboard3x\` \`dashFilter\` | dashboard card layout and page-level filters | dashboards show no properties panel, so these surface only in source mode. Break one and the layout scrambles |
2654
+ | \`canvas\`, \`mindmap\`, \`mindmap_rel\` and similar | plugins (canvas, mind map, …) storing their own data | hidden in the panel; editing other properties never touches them |
2655
+
2656
+ - One exception: the raw mode you get after the YAML breaks **hides nothing**. If the note carries plugin data keys, a line is printed above the text box first: "⚠️ This file contains plugin data keys (…) — leave those lines untouched while fixing the YAML." Do what it says.
2657
+ - **Source mode is the only place that edits the \`---\` block byte for byte**: comments survive there, and it is where non-text types get written. On the desktop, click the \`</>\` button at the top right of the note (tooltip "Switch to Markdown source"); coming back, the tooltip is "Switch to visual editing (WYSIWYG)". On mobile, use the bottom capsule's "⋯" → "Switch to visual editing". The command palette (\`⌘/Ctrl + K\`) also has "Toggle source / visual editing"; that command has no hotkey.
2658
+ - Note that this switch is **app-wide state**, not per-note — once you flip it, every note you open is in source.
2659
+
2660
+ A fully filled-in frontmatter block looks roughly like this:
2661
+
2662
+ \`\`\`yaml
2663
+ ---
2664
+ icon: 📌
2665
+ cover: https://example.com/banner.jpg
2666
+ cover_y: 38
2667
+ 状态: 进行中
2668
+ due: 2026-09-05
2669
+ done: false
2670
+ tags:
2671
+ - reading
2672
+ - wip
2673
+ ---
2674
+ \`\`\`
2675
+
2676
+ ## 15 · Working with the other Spaces
2677
+
2678
+ Amadeus is not an island. What lives in your vault reaches the other Spaces along a few fixed channels, and some of them write back. This chapter goes neighbour by neighbour: what crosses the boundary, how to turn it on, and what does not cross. Everything below describes the full Forsion desktop build; anything marked "desktop only" is absent on the web and mobile clients.
2679
+
2680
+ ### Tangu: chatting beside your notes
2681
+
2682
+ The first tab in the Amadeus Space's right sidebar is Tangu's "Chat panel". The right sidebar ships collapsed; three ways to open it: the "Toggle right panel" button on the right edge; the command palette \`⌘/Ctrl + K\` → "Show chat panel"; or the palette → "Toggle right sidebar" (no hotkey).
2683
+
2684
+ > [!warning]
2685
+ > The side chat and the main chat area are the same session, not "the conversation about this note". Switching sessions in one switches the other.
2686
+
2687
+ - **The note you are reading is attached automatically**: with a note open in the main area, a "Selected:" reference chip appears above the input, so you can just say "summarise this". The chip's × ("Remove") only mutes the current note; open another one and it comes back. The chip exists in local sessions only — cloud sessions do not show it. It carries the path alone, so the assistant still has to read the file itself.
2688
+ - **\`[[\` picks a note**: type \`[[\` in the input to open the picker. Candidates are ordered vault notes → files under the session working folder → your other conversations. \`↑\` \`↓\` move, Enter or Tab picks, Esc closes. Picking deletes the \`[[\` text you typed and turns it into a chip above the box.
2689
+ - **\`@\` delegates to an agent, it does not pick notes**: the menu header reads "Delegate to agent · runs as subagent". Notes always go through \`[[\`.
2690
+ - **Drag notes into the chat**: drag one row or a multi-selection from the note tree onto the chat area and it becomes a reference chip; the same drag onto the editor becomes a \`[[wikilink]]\` instead.
2691
+ - **Citations in the answer are clickable**: \`[[…]]\` in an assistant message renders as a citation chip covering notes, headings, block anchors, a PDF page, a moment in audio or video, a range of source lines, and past sessions. Hovering a note citation shows the preview card. Anything that cannot be resolved renders as grey unclickable text rather than erroring, and a bare filename matching more than one file deliberately refuses to guess.
2692
+ - **Select text inside a message**: two buttons float up, "Quote" and "Ask in side panel"; the second sends the selection to the docked chat panel.
2693
+
2694
+ | Boundary | Detail |
2695
+ |---|---|
2696
+ | What crosses | The path of the current note, notes / files / sessions you pick by hand, citations in the assistant's answers |
2697
+ | How to turn it on | Just open the right sidebar; the chip appears on its own, everything else goes through \`[[\` or a drag |
2698
+ | What does not cross | Note bodies are not put into context automatically (the assistant reads them); \`@\` never lists notes; the side panel has no session of its own |
2699
+
2700
+ ### Tangu: letting the assistant work in your vault
2701
+
2702
+ In a local session the assistant knows where your vault is, and is told plainly that notes are real files on disk to be read and written with the ordinary file tools. Just say "tidy up the project plan in my vault" — there is no switch to flip. If the vault directory does not exist, none of this is handed to the assistant.
2703
+
2704
+ - **It is warned in advance about the formats it must not rewrite wholesale**: notes carrying structured properties or block anchors, mind maps, drawing boards, \`.db\` databases, and canvas-mode notes. It also knows the \`X.md\` plus \`X.fd/\` subpage convention, so "add a subpage under X" works.
2705
+ - **Listing notes**: the assistant can list the Markdown notes in your vault, filtered by a fragment of the path. Only \`.md\` is listed — \`.db\` files, PDFs and images are not.
2706
+ - **Calendar**: it can list calendars, list events, and create, edit or delete them. A "calendar" here means any \`.db\` database with a date column. Times are written \`YYYY-MM-DD\` (all day) or \`YYYY-MM-DDTHH:mm\`. With no calendar named, a new event goes into the first one it finds, and the title goes into that table's first column.
2707
+ - **Session files land in the vault**: unless you set a working folder yourself, a new session's working folder is \`<vault>/Sessions\`. Files the assistant produces show up in the note tree and can be \`[[linked]]\`. Setting a working folder in settings takes it off this path.
2708
+ - **It can read your other conversations**: pick a session with \`[[\`, or just ask "when did we last talk about this". Only your own sessions are reachable, and never the current one.
2709
+ - **During a run it can drive the window in front of you**: open a note / drawing board / dashboard / PDF / database (optionally scrolled to a heading or a block), switch Space, start a new chat, open settings. So "write it and then open it for me" works. It can also change interface settings: language, light/dark, accent, background, fonts, and interface zoom.
2710
+
2711
+ > [!warning]
2712
+ > The command palette lists "Open note" and "Switch Space", and running them by hand does nothing at all — they are carriers for the assistant, not entries meant for you.
2713
+
2714
+ > [!warning]
2715
+ > Overwriting a whole database or a whole canvas note destroys its column definitions and card positions. When you ask the assistant to touch those files, say which one part to change.
2716
+
2717
+ | Boundary | Detail |
2718
+ |---|---|
2719
+ | What crosses | Read and write over the whole local vault, creating and editing calendar events, your own past sessions |
2720
+ | How to turn it on | Automatic in local sessions, as long as the vault directory really exists; a chat started from Home carries the vault too |
2721
+ | What does not cross | Cloud sessions never touch the local vault; Muse and Historian write nothing into it |
2722
+
2723
+ ### Calendar: what actually feeds the grid
2724
+
2725
+ Calendar is a built-in plugin, desktop only. Turn it on or off in Settings → "Plugins" → "Built-in plugins" → the "Calendar" card. It has no command-palette entry and no hotkey — the only way in is the "Calendar" icon on the ribbon. Inside: to-dos on the left, the calendar grid in the middle, calendar settings on the right. Three things feed it.
2726
+
2727
+ - **Databases, by explicit membership**: only a \`.db\` you add yourself reaches the calendar. Route one: Calendar Space → right panel → "Add calendar" → "Add database". Route two: open a \`.db\` → click the active view tab → "+ Add to Calendar Space". Adding it asks for a column mapping: which column anchors the date (required) and which column is the completion checkbox (optional; leave it unset and the table contributes events but no to-dos).
2728
+ - **\`@\` time marks in notes**: write \`@2026-09-01T14:30\` on any line and that line becomes an event, folded into a read-only synthetic calendar named "Notes". If the same line also carries \`- [ ]\`, it goes to the to-do list instead of the calendar.
2729
+ - **Read-only overlays**: \`.ics\` subscriptions and imports, calendars in the other side of your vault, and each agent's own schedule. All of these can be viewed but not edited.
2730
+
2731
+ > [!warning]
2732
+ > A \`- [ ]\` with no \`@\` appears in no view at all — the \`@\` mark is the only gate.
2733
+
2734
+ > [!warning]
2735
+ > The one-time auto-enrolment happened at first launch. A database you create later, even with a date column, does not join the calendar until you add it by hand.
2736
+
2737
+ > [!warning]
2738
+ > The column-mapping dialog is in Chinese only, including on the English interface: 「日期属性 *」 is the date property (required), 「该库没有日期列」 means the table has no date column, 「完成勾选」 is the completion checkbox, 「不设(纯日历)」 is none (calendar only), 「取消」 is cancel, 「确定」 is confirm.
2739
+
2740
+ > [!warning]
2741
+ > \`@remind:\` reminders only fire while the app is running; one that came due more than 24 hours ago is dropped rather than replayed.
2742
+
2743
+ Write-back is real: dragging or resizing a note-sourced event rewrites the \`@\` string on that line of the note, and ticking a note-sourced to-do rewrites \`- [ ]\` to \`- [x]\`. The line is found by its text, not by its line number — if that line changed underneath, the edit fails loudly with "Can't update \\"{name}\\" — that line in the note has changed" plus an "Open note" button.
2744
+
2745
+ | Boundary | Detail |
2746
+ |---|---|
2747
+ | What crosses | Rows of member databases; note lines carrying \`@\` (two-way, they can be written back) |
2748
+ | How to turn it on | Databases must be added as members and mapped by hand; notes only need the \`@\` |
2749
+ | What does not cross | The synthetic "Notes" calendar cannot be recoloured, hidden or made default; note-sourced events cannot be deleted or duplicated; the dashboard's calendar and to-do cards omit note-sourced items |
2750
+
2751
+ ### Home: exactly one connection
2752
+
2753
+ Home is a built-in plugin, registered as the first ribbon slot. Turn it on or off in Settings → "Plugins" → "Built-in plugins" → the "Home" card. It gives you a wallpaper, a clock and greeting, a full Tangu composer, and a shelf of Spaces along the bottom.
2754
+
2755
+ > [!warning]
2756
+ > Home shows nothing from your vault — no recent notes, no to-dos, no calendar widget.
2757
+
2758
+ - **The composer is the only connection**: it is the real Tangu composer (model, mode, attachments, references, voice, skills, slash commands). Sending switches to the Tangu Space and starts a new conversation; if that session runs on this machine, your vault root is added to the folders the assistant may reach. So asking "look at the weekly report in my vault" straight from Home does work.
2759
+ - **It always starts a new session**: it never continues the chat you were last in. The composer is disabled while the backend connection is down.
2760
+ - **The shelf is a projection of the ribbon's upper zone**: one order and one set of folders — reorder on the shelf and the ribbon follows, and the other way round. Only the first six tiles show; the rest live behind "All Spaces". Home itself never appears as a tile.
2761
+ - **Pinned zone**: dragging a Space onto "Pinned Spaces" adds a Home-only copy that leaves the ribbon order alone; drag it back out to remove it.
2762
+ - **Folders**: "New folder" creates one, then drop Spaces onto it. Right-click a folder for "Rename" and "Dissolve folder"; right-click an item inside one for "Move out". Right-click blank background to open or close the "Space organizer".
2763
+ - **Home slot**: the centred ribbon cell holds Home by default. Right-click that cell → "Space in the home slot" to swap in any Space; Settings → "Spaces" → "Ribbon home slot" is the same switch.
2764
+ - **Startup location**: Settings → "Spaces" → "Startup location" → "Open the app in", three choices — the Space in the home slot (default), the last Space on exit (with its tabs), or a fixed Space. Only the second one restores the tabs you had open.
2765
+
2766
+ | Boundary | Detail |
2767
+ |---|---|
2768
+ | What crosses | Your vault root is attached to the conversation started from Home |
2769
+ | How to turn it on | With the Home plugin on and a Tangu Space registered, the composer is simply there |
2770
+ | What does not cross | Notes, to-dos and events never reach Home; pinned copies never reach the ribbon |
2771
+
2772
+ ### Inbox: notes render here, messages never land in the vault
2773
+
2774
+ Inbox sits behind the ribbon's "Inbox" icon: "Messages" on the left, "Message" in the main area. Messages come from agents, the Forsion server and the system. It exists on desktop and mobile, not on the web client. The direction is one-way: things in your vault can be rendered into the inbox, but nothing in the inbox lands in your vault.
2775
+
2776
+ > [!warning]
2777
+ > There is no "save as note" anywhere in the inbox. The only button pointing back at your notes is "Go to the source" on an embed.
2778
+
2779
+ - **A standalone \`![[target]]\` line renders as a live embed**, dispatched in a fixed order: images (\`|number\` sets the width) → a URL becomes a bookmark card (deliberately not a player here) → \`.db\` becomes a database → drawing boards → plugin files such as mind maps become an "Open in a Forsion tab" card → plugin-provided embeds → \`.md\` becomes a note embed → audio and video (with \`#t=\` start anchors) → PDFs get a read-only inline viewer → any other file gets an "Open with the default app" button.
2780
+ - **A \`.db\` embed is genuinely writable**: editing a cell in the inbox edits that table on disk.
2781
+ - **Cross-note embeds** carry an "↪ Embed" badge and a "Go to the source" button; anything unresolvable shows "Embed missing: " plus the target. Embeds resolve once when the message opens, so later edits to the source note do not show up in that message.
2782
+ - **The list**: filters "All", "Unread", "Archived"; search is local and only matches the title and body of what the current filter has already loaded. The header also has "Mark all as read" and "Fetch new messages". Right-click a row for mark as read / unread, archive / unarchive, and delete (it confirms, and it is gone for good).
2783
+ - **The reader**: when the sender is a known agent the header offers "Chat with {name}" — it switches to the Tangu Space and starts a fresh conversation, it does not continue an old one. Messages with attachments show "Attached items" and a "Claim" button under the body.
2784
+ - **Getting things in from outside the app**: that runs through the external MCP endpoint, covered in the last section of this chapter.
2785
+
2786
+ | Boundary | Detail |
2787
+ |---|---|
2788
+ | What crosses | Notes, databases, drawing boards, images, PDFs and media can all be embedded in a message and used in place |
2789
+ | How to turn it on | Nothing to configure; a \`![[…]]\` on its own line in a message body just renders |
2790
+ | What does not cross | A message never becomes a note; embeds do not track later edits; PDFs here cannot be annotated |
2791
+
2792
+ ### Automation: buttons in notes, rules that watch databases
2793
+
2794
+ Automation lives behind the ribbon's "Automation" icon, in three panes: "Automations", "Automation detail", "Run history". Desktop only, and it needs the local engine running. There is no hotkey.
2795
+
2796
+ > [!warning]
2797
+ > The rule engine runs alongside Forsion — while the app is closed, timer, event and database rules do not fire at all.
2798
+
2799
+ - **Buttons in a note**: type \`/\` in a note → "Advanced" → "Button". A fresh button reads "+ Set up button"; clicking it opens the builder in place, locked to the "Manual (button)" trigger. Saving pops the appearance panel: "Name", "Icon", "Confirm before running" (leave it blank to run immediately). The gear reopens that panel, and "Edit actions" inside it goes back to the builder. On disk a button is an ordinary fenced code block, so it survives any Markdown editor; break the text by hand and it falls back to a plain code block shown verbatim — the app never rewrites it for you.
2800
+ - **Triggers that watch your vault**: "Database" (a row was added to a chosen \`.db\`, or a watched column's cell changed; up to 10 extra conditions) and "File threshold" (a file reached N non-whitespace characters). "Database" accepts classic databases only — picking a note-view database is refused.
2801
+ - **Actions that write back**: "Add table row" and "Edit table row", which can pull from the triggering row with \`{{row.ColumnName}}\`.
2802
+ - **The other actions**: "Notify" (posts into the Inbox), "Run agent", "Run tool". The chain is fail-stop, and "Run agent" only waits for the run to be queued, not finished — which is why a button reports "Ran {n} steps · agent started (still running in the background)".
2803
+ - **"Test run"**: the ▶ button on the detail card runs the chain once immediately without touching the normal schedule.
2804
+ - **System rows**: "Muse patrol" periodically works out what to do for you, and "Historian memory upkeep" summarises sessions and maintains logs and memory — neither writes anything into your vault. "Agent schedules" lists only entries that have both a date and a prompt.
2805
+
2806
+ > [!warning]
2807
+ > A button stores only a reference to a rule, never the actions. A note synced or copied from another machine shows "The linked automation no longer exists (it may have been deleted, or this note came from elsewhere)" and clicking does nothing. A disabled rule reports "This automation is disabled — enable it in the Automation panel first", and a click while the last run is still going reports "The previous run is still going".
2808
+
2809
+ > [!warning]
2810
+ > Turning off Settings → "Developer" → "Record in-app activity" silently kills every Event-triggered rule for good, with no warning anywhere.
2811
+
2812
+ | Boundary | Detail |
2813
+ |---|---|
2814
+ | What crosses | Row changes in a database fire rules; rules add and edit database rows; a button puts a rule inside a note |
2815
+ | How to turn it on | Automation Space → "New automation", or \`/\` → "Button" inside a note |
2816
+ | What does not cross | Rules do not edit note bodies, only databases; a rule the builder does not understand can only be changed by asking the assistant in chat |
2817
+
2818
+ ### Public: publishing, sharing, and exactly what becomes visible
2819
+
2820
+ Public is the ribbon's "Publish" icon; the page is titled "Published" and has three sections: "My sites", "Published notes", "Shared notes". Each row offers open, copy link, and a two-click "Unpublish".
2821
+
2822
+ > [!warning]
2823
+ > This Space only manages — it creates nothing; both publishing and sharing start from the note itself. It also needs a Forsion account: signed out, all it says is "Sign in to Forsion to see your published content".
2824
+
2825
+ - **Publishing a note (public, read-only)**: open the note → the toolbar's "Share / publish" icon → the "Publish" tab → "Publish to a public link". Anyone with the link can read it with no account at all. The card always shows "Published {used} / {total} pages." and refuses past your quota with "Plan limit reached". Publishing a page also publishes its \`.fd\` subpage tree.
2826
+ - **Publishing a whole folder**: right-click a folder in the notes sidebar → "Publish this folder (public link)". That publishes the entire subtree at once and copies the link to your clipboard in the same action.
2827
+ - **Sharing a note (collaboration)**: the same "Share / publish" icon → the "Share" tab → "Turn on live sharing". You set "Link access" (can edit / read-only), "Open for", and a "Password", and manage people under "Participants · {n}". "Stop sharing" cuts everyone off at once, and rotating the link kills the old one instantly.
2828
+ - **"Shared with me"**: a section in the notes sidebar listing pages other people shared with you. It renders nothing at all when the list is empty, so not finding it is normal.
2829
+ - **Who may act**: only the vault owner can manage publishing and sharing; a participant is told "Only the vault owner can manage sharing and publishing." Live sharing is also plan-gated, and free plans are asked to upgrade to Plus or Pro.
2830
+
2831
+ > [!warning]
2832
+ > Share and publish expose different things: someone you share with must have a Forsion account and accept the invite, while a published link is readable by anyone with no account.
2833
+
2834
+ > [!warning]
2835
+ > Folder publishing has no confirmation dialog — one click makes the whole subtree public — and that right-click menu has no unpublish, so you must go to the Public Space to take it down. The note right-click menu has no publish item at all; only the toolbar button.
2836
+
2837
+ > [!warning]
2838
+ > If you set "Open for" to 30 days and save, reopening the card shows 7 days. The real duration is whatever you saved.
2839
+
2840
+ | Boundary | Detail |
2841
+ |---|---|
2842
+ | What crosses | A note body and its subpage tree → a public URL; a whole folder → one public link; a collaborated page → the people you name |
2843
+ | How to turn it on | The note toolbar's "Share / publish"; folders through the sidebar right-click; everything is managed afterwards in the Public Space |
2844
+ | What does not cross | The rest of your vault stays private; taking things down happens only in the Public Space or the share card |
2845
+
2846
+ ### Coding, and the doors from outside the app
2847
+
2848
+ What you build in the Coding Space can be published straight to a public web app: the Globe icon on the toolbar, "Publish", opens the "Publish to Forsion" dialog, where you fill in an "App name", a "Link slug" and an "Entry page". \`.ts\` and \`.tsx\` are transpiled on publish, no build step; use relative paths for assets. A project with no \`.html\` entry is refused with "No .html entry in this project yet — generate a page first".
2849
+
2850
+ > [!warning]
2851
+ > This publishes a Coding project, not a note — it is a completely separate mechanism from the note-side "Publish".
2852
+
2853
+ - **Manage it afterwards in the Public Space**: every row under "My sites" can "Apply to list" in the Forsion app market (a human reviews it), "Re-apply", "Withdraw" or "Delist". Visitors sign in with their own Forsion account and spend their own quota. The number of published slots is limited by your plan.
2854
+ - **The external MCP endpoint**: Settings (\`⌘/Ctrl + ,\`) → "Advanced" → "MCP endpoint" → tick "Expose to external agents (Claude Code / Codex / OpenCode, etc.)". The panel gives you the endpoint address, a copy button, and ready-made connection snippets for Claude Code, Codex, OpenCode and "Generic JSON". Off by default, desktop only.
2855
+ - **The endpoint exposes exactly two tools**: \`inbox_send\` (post a titled message into the inbox of the running app on this machine) and \`transcribe_audio\` (transcribe a local audio file). No MCP tool reads or writes notes.
2856
+ - **The snippets carry the token, so treat them as secrets** and do not paste them anywhere public. The endpoint binds to 127.0.0.1. Port 3591 is the default, and if it is taken the app climbs to the next free one — so re-copy the snippet after a restart.
2857
+ - **\`forsion://\` deep links**: the packaged desktop app registers this scheme, so a browser, a terminal or another app can bring Forsion forward and navigate straight to something. The forms are \`forsion://note/<vault-relative path>\`, \`forsion://session/<id>\`, \`forsion://space/<id>\` and \`forsion://agent/<slug>\`. There is no "copy link" button anywhere, so you write these by hand. Absolute paths and \`.\` / \`..\` segments are rejected.
2858
+ - **Forsion Unit (same local network)**: the Unit switcher at the top of the ribbon → "Allow other devices to connect"; once on, it prints "Direct address: {addr}" underneath. From the other machine, open the same switcher → "Connect by address…". This machine pops a native confirmation showing the visitor's name, IP and a 6-digit code you compare by eye before letting them in. Paired devices are listed under "Paired devices" and can be revoked one at a time, taking effect immediately.
2859
+
2860
+ > [!warning]
2861
+ > The remote surface is allow-list only: dialogs and anything touching the system shell (opening a vault, opening an attachment, exporting PDF or CSV, revealing in the file manager, installing or removing plugins) never work from the far device. If the port was taken at startup the app silently picks another, so check the printed address again.
2862
+
2863
+ | Boundary | Detail |
2864
+ |---|---|
2865
+ | What crosses | A Coding project → a public URL; an external agent → your inbox; \`forsion://\` → opens a note, session or Space |
2866
+ | How to turn it on | Connect is on the Coding toolbar; the MCP endpoint and Unit are both off by default and you turn them on yourself |
2867
+ | What does not cross | MCP can neither read nor write notes; Unit is same-LAN direct only |
2868
+
2869
+ ## 16 · Plugins and the market
2870
+
2871
+ Forsion is a shell; most of what it does arrives as plugins. This chapter covers what a plugin can add to Amadeus, what each built-in plugin does, how to install more from the market, and where to look when one misbehaves. The plugin page and the market are desktop only.
2872
+
2873
+ ### What a plugin can add
2874
+
2875
+ A plugin hooks into the surfaces below. Most plugins use only two or three of them.
2876
+
2877
+ | Surface | Where you see it |
2878
+ |---|---|
2879
+ | \`/\` menu item | Type \`/\` in a note; the item lands in the "Plugins" group, or a group the plugin names |
2880
+ | Command | Searchable in the command palette \`⌘/Ctrl + K\`; also one button per command under "Commands" on the plugin's detail page |
2881
+ | Hotkey | Every plugin command gets a row on the "Shortcuts" page, where you bind your own key |
2882
+ | View | The plugin's own group on the new-tab page; open it as a tab, drag it into either sidebar, and a Space remembers it |
2883
+ | Custom file type | Files carry the plugin's icon in the file tree and open straight into the plugin's editor |
2884
+ | "New X" | Right-click the vault root or a folder in the file tree; the entry sits after the built-in ones |
2885
+ | Embed preview | Write \`![[filename]]\` in a note and it renders in place; the \`</>\` button on hover flips back to source |
2886
+ | Database column type | Click a column header in a database to change its type; the plugin's type sits after the built-ins |
2887
+ | Status bar item | The status bar at the bottom of the window |
2888
+ | Notification | A card in the top right, attributed to the plugin |
2889
+ | Font | The "From plugins" group in the three font dropdowns on the "Appearance" page |
2890
+ | Sidebar list source | The mode picker at the top of the workspace sidebar, after "Auto", "Sessions", "Files" and "Notes" |
2891
+ | Achievement series | The achievements panel, below the official series |
2892
+ | Bundled content | A plugin can carry engine plugins, agents, skills and Spaces, toggled along with it |
2893
+
2894
+ Two more things have no UI of their own: a plugin can change typing behaviour in the note editor (intercept keys, expand snippets), live in every note while it is enabled; and it can read and write files and databases inside your vault, by default in its own working folder.
2895
+
2896
+ > [!note] Everything above appears and disappears the moment you toggle the plugin. No restart.
2897
+
2898
+ ### The plugins that ship with the app
2899
+
2900
+ The "Built-in plugins" section at the top of the plugin page holds six items that ship with the app and are on by default. Each card has a checkbox.
2901
+
2902
+ | Card | What it gives you | What turning it off removes |
2903
+ |---|---|---|
2904
+ | Browser | Open web pages and local HTML inside the app; the command "Open browser" | The browser view and that command |
2905
+ | Terminal | A real terminal inside the app (login shell; vim/top/ssh work); the command "Open terminal" | The terminal view and that command |
2906
+ | Home | Home Space: wallpaper, a clock, the full Tangu composer, and an organized shelf for your Spaces | The whole Home Space, taken off the ribbon |
2907
+ | Calendar | Calendar Space: aggregates date and to-do properties across your vault, with .ics subscriptions | The whole Calendar Space, along with the to-do list and calendar config |
2908
+ | Callouts | Three entries in the "Callouts" group of the \`/\` menu: "Note callout", "Info callout", "Warning callout", in Obsidian syntax | Those three \`/\` entries |
2909
+ | Word count | The command "Count words", which reports the page's characters and words | That command; the live word count in the status bar is unaffected |
2910
+
2911
+ - The Browser card carries an extra checkbox, "Open in-app links in the built-in browser". Uncheck it and every external link goes to your system browser instead.
2912
+ - Calendar registers no command at all; its Space is the only door.
2913
+ - These switches are stored per machine and are not synced with your account; other windows on the same machine follow instantly.
2914
+ - The terminal depends on a native component shipped with the app; on the odd machine where it is not ready, opening it says so outright.
2915
+
2916
+ > [!warning] Turning off Home or Calendar does not close a panel — it takes the whole Space off the ribbon. Come back to this page and re-check the box to get it back.
2917
+
2918
+ ### Turning plugins on and off
2919
+
2920
+ Press \`⌘/Ctrl + ,\` to open settings, then "Extensions" → "Plugins" in the left nav. This page is desktop only. It has two sub-tabs: "Forsion plugins" for interface plugins, "Tangu engine plugins" for the half that gives the AI its tools.
2921
+
2922
+ - Check or uncheck the box on a card to enable or disable it. It takes effect instantly, with no restart.
2923
+ - Click a card for its detail page: version, a "Built-in" or "External" badge, description, "Settings", one button per entry under "Commands", "Bundled content", "Companion app", the README, and an expandable "What's new". Leave with "Back to list".
2924
+ - "Uninstall" appears only for external plugins. The confirmation spells it out: the folder is deleted whole, bundled engine plugins and Spaces go with it, seeded agents are kept.
2925
+ - Every enabled plugin automatically gets one extra setting, "Working folder" — where it reads and writes inside your vault. Leave it empty to fall back to the default, the plugin's name.
2926
+ - A plugin with settings of its own also gets a direct entry in the "Extensions" group of the left nav.
2927
+ - A greyed-out card badged "Requires app version ≥ …" or "Requires plugin API v…, incompatible with this app" is a version mismatch; its checkbox will not respond.
2928
+ - When a plugin declares a setup flow, its card carries a "Setup pending" badge and the detail page gains a "Run setup" button. The setup card collects the settings it needs and installs its companion content in one click.
2929
+ - The "Companion app" block handles plugins that need another program running: "Check connection" probes it, "Install" runs the app's own whitelisted installer, and "Open website" is the manual fallback.
2930
+
2931
+ > [!warning] Engine plugins can be installed from npm. Take the line on the install dialog literally: "Plugins run with your full system permissions — only install sources you trust."
2932
+
2933
+ ### The market
2934
+
2935
+ The market has exactly two doors: the store icon at the bottom of the ribbon (tooltip "Market"), or the command palette \`⌘/Ctrl + K\` → "Market". There is no default hotkey. It is a full-window overlay rather than a tab; "Back to app" in the top left leaves it. Desktop only.
2936
+
2937
+ | Left nav group | What is in it |
2938
+ |---|---|
2939
+ | Discover | Store home: community pick, recently added, popular |
2940
+ | Categories | Skills, Agents, Plugins, Spaces, Themes, Web apps |
2941
+ | Manage | Installed, Updates, Submit |
2942
+
2943
+ - Installing: click "Install" on a card or detail page (it reads "Installing…" while it runs). An installed item's button becomes "Reinstall", or "Update" when a newer version exists. A Forsion plugin hot-loads the moment it lands — its views, commands and \`/\` entries work immediately; a bundled Space appears at the top of the ribbon; a plugin with a setup flow pops its card right away.
2944
+ - Uninstalling: the trash button on the card, confirmed with "Uninstall \\"{name}\\"? Its install directory will be deleted." Agents and skills add a warning line: an agent's memory and logs go with it and cannot be recovered; for a skill, your own edits go too.
2945
+ - Updating: the "Updates" page lists everything with a newer version, one click each. An item whose version is not plain numbers is not flagged here.
2946
+ - "Web apps" are web apps other people built with Coding Space. "Open" runs one in the built-in browser, and the hint says AI features spend the visitor's own account quota. With the built-in Browser plugin turned off, it opens in your system browser instead.
2947
+ - "Submit" is only a signpost: "Open submission page" opens the web submission page in your system browser. The search box and sort control are hidden on that page.
2948
+
2949
+ > [!warning] The "Plugins" category mixes Forsion plugins and Tangu engine plugins, and the card does not tell you which is which. The toast after installing does: "Forsion plugin \\"{name}\\" installed and loaded" is an interface plugin, "Plugin installed and enabled" is an engine plugin. They land in the two different sub-tabs of the plugin page.
2950
+
2951
+ ### Where plugins live on disk
2952
+
2953
+ The plugin folder is \`~/.forsion/plugins/\`, one folder per plugin, and market installs land there too. Three buttons under "External plugins" on the plugin page manage it.
2954
+
2955
+ | Button | What it does |
2956
+ |---|---|
2957
+ | Open plugins folder | Opens the plugin folder in your system file manager |
2958
+ | Reload | Rescans the folder and tears down and rebuilds every external plugin |
2959
+ | Create sample plugin | Generates a working sample plugin: one command, one \`/\` entry, one view |
2960
+
2961
+ - When the folder is empty, this section reads "No plugins yet."
2962
+ - A plugin you dropped in by hand does not appear on its own — "Reload" picks it up, and it is also what makes edited plugin code take effect.
2963
+ - A plugin's private data sits next to the plugin folder and travels with the app rather than the vault — switching vaults does not lose it.
2964
+ - What a plugin writes into your vault goes in its working folder (the plugin's name by default; change it on the detail page).
2965
+
2966
+ > [!warning] After you uninstall a plugin that owned its own file suffix, those files stay in your vault and are never rewritten as ordinary notes. You will see that they no longer open — reinstall the plugin and they open again. The files are not damaged.
2967
+
2968
+ > [!note] What you put in the plugin folder must be a complete plugin package (what the market installs has exactly that shape). A folder you made yourself with a few files in it will not appear, however often you click "Reload".
2969
+
2970
+ ### When a plugin misbehaves
2971
+
2972
+ | Symptom | What to do |
2973
+ |---|---|
2974
+ | A plugin you dropped in by hand does not show up | Click "Reload" on the plugin page; if it still does not appear, that folder is not a complete plugin package |
2975
+ | A greyed-out card badged "Requires app version ≥ …" | Update the app, then come back and check the box |
2976
+ | A panel reads "Plugin view failed to load (see console)" | Toggle the plugin off and on again, then check "Updates" in the market for a newer version |
2977
+ | You switched interface language but the plugin's \`/\` entries and command names are still in the old one | Toggle that plugin off and on, or restart the app. Those names are fixed at the moment the plugin is enabled and do not follow a mid-session language switch |
2978
+ | One plugin sends too many notifications | Settings → "Appearance" → "Notifications" → "Plugin notifications", and switch off its row |
2979
+ | An unwanted item in the status bar | Settings → "Appearance" → "Status bar", uncheck it; drag to reorder |
2980
+ | A message reading "… bundled engine plugin(s) failed to toggle along (engine offline?)" | Wait for the engine to come back, then flip that plugin's switch once more |
2981
+ | You uninstalled an engine plugin but its AI tools are still there | Restart the backend; the message says so too |
2982
+ | A rule you turned off in Automation comes back after a plugin reload | That rule was seeded by the plugin. To stop it for good, disable the plugin itself |
2983
+ | You changed a plugin setting and nothing happened | Some plugins pick up the new value on their next refresh; wait a moment, or toggle the plugin off and on |
2984
+
2985
+ > [!note] Once a plugin is disabled it can no longer touch your files — not even through background work it had already started.
2986
+
2987
+ ## 17 · Commands and keyboard shortcuts
2988
+
2989
+ Every action in Amadeus has a name, and the names all live in the command palette. This chapter lists every command in it, the shortcut each one ships with, and the keys that belong to the editor, the canvas and the app as a whole. You do not have to memorize them — press \`⌘/Ctrl + K\` and type.
2990
+
2991
+ ### Command palette
2992
+
2993
+ The command palette is the single entry point for every command. Press \`⌘/Ctrl + K\`, or click the icon at the bottom of the ribbon — its tooltip reads “Command palette (⌘K)”.
2994
+
2995
+ - Type to fuzzy-match; Chinese, English and pinyin aliases all hit.
2996
+ - \`↑\` \`↓\` select, \`↵\` runs, \`Esc\` closes.
2997
+ - The input reads “Run a command…”, the footer shows “{count} commands”, and an empty result shows “No commands”.
2998
+ - At most 40 rows are listed at a time; keep typing to narrow it down.
2999
+
3000
+ > [!warning] With the caret inside note text, \`⌘/Ctrl + K\` does not open the palette — the editor claims that key to add a link (the same action as the toolbar’s “Link” button). Click somewhere outside the text first (the sidebar, a tab, empty page area), then press \`⌘/Ctrl + K\`.
3001
+
3002
+ The shortcut shown on the right of each row is the command's **default** key, not your own rebinding. Once you have rebound something, trust what Settings → Appearance → Shortcuts shows.
3003
+
3004
+ Two overlays that look alike — do not mix them up:
3005
+
3006
+ | Overlay | How to open | What it searches |
3007
+ | --- | --- | --- |
3008
+ | Command palette | \`⌘/Ctrl + K\` | Commands |
3009
+ | Quick find | \`⌘/Ctrl + P\` | Note names, files in the vault, chat sessions; lists “Recent” before you type |
3010
+
3011
+ Both overlays work the same way: \`↑\` \`↓\` select, \`↵\` confirms, \`Esc\` closes. In Quick find, if no note has the name you typed, the last row reads “Create note “{name}””; \`⌘/Ctrl + ↵\` opens in a new tab. In Quick find, press \`→\` past the end of what you have typed to jump up to the category pills — All, Notes, Files, Sessions — then use \`←\` \`→\` to move between them and narrow the results.
3012
+
3013
+ The command list is one flat global list with no Space scoping: the Amadeus commands are added when you enter Amadeus and removed when you leave. So pressing \`⌘/Ctrl + K\` in Tangu or on Home will not find New note. When a command is missing, check which Space you are in first, then check whether a vault is open.
3014
+
3015
+ The palette's own \`⌘/Ctrl + K\` can be rebound too. It sits on the first row of the Shortcuts page, listed as Command palette.
3016
+
3017
+ ### Every Amadeus command
3018
+
3019
+ These commands come from Amadeus. They appear in the palette only in the desktop app and only while Amadeus is the active Space. Most also need an open vault — without one they do not complain, they simply do nothing.
3020
+
3021
+ | Command | Shortcut | What it does |
3022
+ | --- | --- | --- |
3023
+ | New note | \`⌘/Ctrl + N\` | Creates an untitled note at the vault root and opens it |
3024
+ | New whiteboard | — | Creates a drawing board and opens it |
3025
+ | New dashboard | — | Creates a dashboard and opens it |
3026
+ | Search notes (full text) | \`⌘/Ctrl + Shift + F\` | Opens the full-text search panel in the sidebar and searches every note body |
3027
+ | Open the tutorial | — | Writes a demo note into your vault and opens it — a real note you can edit |
3028
+ | Open the user manual | — | Writes and opens this manual, in the language the interface is currently in |
3029
+ | Open today's daily note | — | Opens today’s daily note, creating it and applying the daily template if needed |
3030
+ | Star / unstar current note | — | Toggles the star on the current note; starred notes show in the sidebar under “Starred” |
3031
+ | Toggle source / visual editing | — | Switches between WYSIWYG and raw Markdown; the caret is carried across |
3032
+ | Open vault… | — | Opens the folder picker so you can choose or switch your vault |
3033
+ | Reveal current note in file manager | — | Opens Finder or Explorer with the file selected |
3034
+ | Rebuild full-text index | — | Rebuilds the search index when results look stale or incomplete |
3035
+ | Toggle attachments & databases in wikilink autocomplete | — | Decides whether typing \`[[\` suggests notes only, or attachments, databases and drawing boards too |
3036
+ | Count words | — | Shows a notification with the character and word count of this note |
3037
+
3038
+ > [!note] Star / unstar current note and Reveal current note in file manager may do nothing when run from the palette. The reliable entry points are the ⋮ menu above the note, or a right-click on the note in the sidebar.
3039
+
3040
+ - \`⌘/Ctrl + N\` means New note only inside Amadeus; in every other Space the same key starts a new chat.
3041
+ - Rebuild full-text index has no progress bar and no completion message — it fires and returns.
3042
+ - Neither Open the tutorial nor Open the user manual ever overwrites a copy that already exists, so your edits are safe. The tutorial file keeps a Chinese name in both interface languages, so switching language does not spawn a second copy.
3043
+ - Count words comes from a built-in plugin and can be switched off under Settings → Plugins. It is a global command, findable in every Space; if you switch interface language mid-session its title only follows after a restart.
3044
+
3045
+ ### App-wide commands and shortcuts
3046
+
3047
+ These work in every Space, whether or not a vault is open.
3048
+
3049
+ | Command | Shortcut | What it does |
3050
+ | --- | --- | --- |
3051
+ | Quick find | \`⌘/Ctrl + P\` | Search note names, vault files and chat sessions |
3052
+ | Find in page | \`⌘/Ctrl + F\` | Find text on the current surface; \`↵\` next, \`Shift + ↵\` previous, \`Esc\` closes |
3053
+ | Toggle left sidebar | \`⌘/Ctrl + /\` | Collapse or expand the left sidebar |
3054
+ | Toggle right sidebar | — | Collapse or expand the right sidebar (chat, outline, backlinks, graph) |
3055
+ | Toggle bottom panel | \`⌘/Ctrl + J\` | Open or close the bottom dock |
3056
+ | Back (this tab) | \`⌘/Ctrl + Shift + [\` | Step back in this tab’s own history |
3057
+ | Forward (this tab) | \`⌘/Ctrl + Shift + ]\` | Step forward in this tab’s own history |
3058
+ | Split right | \`⌘/Ctrl + \\\` | Splits the main area and puts a chat in the new pane |
3059
+ | Settings | \`⌘/Ctrl + ,\` | Opens the settings window |
3060
+ | Zoom in | \`⌘/Ctrl + =\` | Scales the whole interface up one step |
3061
+ | Zoom out | \`⌘/Ctrl + -\` | Scales the whole interface down one step |
3062
+ | Reset zoom | \`⌘/Ctrl + 0\` | Returns the interface to the default scale |
3063
+ | Open mini card | \`⌘/Ctrl + Shift + M\` | Pops up the small always-available floating window |
3064
+ | Toggle light/dark mode | — | Swaps between light and dark |
3065
+ | Change accent color | — | Cycles the accent color |
3066
+ | Switch theme style | — | Cycles the design language — not the interface language |
3067
+ | Switch language | — | Swaps the interface between Chinese and English |
3068
+ | Toggle smooth caret | — | The caret glides to its new position in the editor and chat input; off by default |
3069
+ | Reset layout | — | Rebuilds the current Space’s panels from its default arrangement |
3070
+ | Save current layout as a Space | — | Saves the current arrangement as a new Space and adds its icon to the ribbon |
3071
+ | Show chat panel | — | Opens chat in the right sidebar so you can ask about the note you are reading |
3072
+ | Market | — | Install plugins, themes and Spaces |
3073
+ | Achievements | — | View your achievements |
3074
+ | Feedback | — | Report a problem or send a suggestion |
3075
+
3076
+ - The three zoom commands, Toggle bottom panel and Open mini card exist only in the desktop app; mobile has none of them.
3077
+ - \`⌘/Ctrl + Shift + M\` for Open mini card is an operating-system-level shortcut and fires even when Forsion is not in front. If another app already owns that combo the registration fails silently and only the palette entry works; it is also absent from the Shortcuts page, so it cannot be rebound.
3078
+ - Toggle left sidebar uses \`⌘/Ctrl + /\` rather than the more common \`⌘/Ctrl + B\`, because that one is bold inside the note editor.
3079
+ - Reset layout does not ask for confirmation — the tabs and pane sizes in that Space are gone immediately.
3080
+ - Find in page only counts text you can actually see: collapsed sections, and card bodies that have shrunk to titles on a zoomed-out canvas, are skipped. When focus is in the built-in terminal, a code editor or an embedded web page, the key steps aside for their own find bar.
3081
+ - Split right gives you a chat pane, not a second copy of the note. For two notes side by side, right-click a note in the sidebar, choose “Open in new tab”, then drag the tab across.
3082
+
3083
+ ### Editor keys
3084
+
3085
+ These keys belong to the note editor itself. They work only with the caret inside note text and only in visual editing mode. They do not go through the command list, so they are not on the Shortcuts page and cannot be rebound. On touch devices there are no physical keys — select text and use the floating format toolbar that appears above it.
3086
+
3087
+ Inline formatting:
3088
+
3089
+ | Key | What it does |
3090
+ | --- | --- |
3091
+ | \`⌘/Ctrl + B\` | Bold |
3092
+ | \`⌘/Ctrl + I\` | Italic |
3093
+ | \`⌘/Ctrl + U\` | Underline |
3094
+ | \`⌘/Ctrl + Shift + S\` | Strikethrough |
3095
+ | \`⌘/Ctrl + K\` | Link the selection; on an existing link it removes the link; with no selection nothing opens |
3096
+ | \`⌘/Ctrl + L\` | Align left |
3097
+ | \`⌘/Ctrl + R\` | Align right |
3098
+
3099
+ There is no working shortcut for centering; use the center button on the floating toolbar.
3100
+
3101
+ Structure, indent and undo:
3102
+
3103
+ | Key | What it does |
3104
+ | --- | --- |
3105
+ | \`Tab\` / \`Shift + Tab\` | Indent or outdent a paragraph one level, up to 8; in a list it sinks or lifts the item; in a code block it inserts two spaces; in a table it moves to the next cell |
3106
+ | \`⌘/Ctrl + Backspace\` | Back to no indent in one step |
3107
+ | \`Backspace\` at line start | Steps back one rung at a time: un-indent, heading down to text, strip the list or quote wrapper, merge with the block above |
3108
+ | \`←\` or \`Backspace\` at line start | Turns the line-start marker into editable text, so \`###\` can be typed down to \`##\` |
3109
+ | \`↑\` \`↓\` | On a code block, divider, table or embed, selects the whole block instead of entering it |
3110
+ | \`⌘/Ctrl + Z\` | Undo |
3111
+ | \`⌘/Ctrl + Shift + Z\` or \`⌘/Ctrl + Y\` | Redo |
3112
+
3113
+ Type to convert:
3114
+
3115
+ | Type this | Result |
3116
+ | --- | --- |
3117
+ | \`/\` | Opens the block menu — headings, lists, tables, code blocks, cards and more |
3118
+ | \`# \` through \`###### \`, \`- \`, \`1. \`, \`- [ ] \` at line start | Turns the block into a heading, bulleted list, numbered list or to-do on the spot |
3119
+ | Select text, then type \`(\` \`[\` \`{\` \`"\` or a backtick — full-width \`(\` \`【\` \`「\` \`《\` too | Wraps the selection instead of replacing it, and keeps it selected so you can wrap again |
3120
+ | Select text, then paste a URL | Links that text instead of replacing it |
3121
+ | \`【【\` | Becomes \`[[\` automatically and opens note autocomplete |
3122
+
3123
+ > [!warning] Two line-start forms are the reverse of standard Markdown: a pipe character followed by a space gives you a **quote**, and \`>\` followed by a space gives you a **toggle** (a collapsed block).
3124
+
3125
+ Changes arriving from elsewhere — cloud sync, or another program editing the same file — never interrupt the keystroke you are in the middle of. They wait until you stop typing, and wait indefinitely while an input method is composing.
3126
+
3127
+ ### Canvas keys
3128
+
3129
+ Canvas mode spreads one note out as a surface you can arrange freely. Switch with the “Document | Canvas” pill above the note; on touch devices that whole toolbar row is not rendered, and a button in the bottom editing bar, reading “Switch to canvas”, takes its place. There is no palette command for switching to canvas — the pill and the bottom-bar button are the only two entrances.
3130
+
3131
+ Every key below needs focus on the stage — a card selected, rather than you typing inside a card.
3132
+
3133
+ Selecting and entering editing:
3134
+
3135
+ | Action | Result |
3136
+ | --- | --- |
3137
+ | Click a card | Selects it; you can then drag it |
3138
+ | \`Shift\` + click or drag | Takes the whole branch below it — selected and moved together |
3139
+ | \`⌘/Ctrl\` + click | Adds just that one card, without its descendants |
3140
+ | Press and drag on empty space | Marquee-select |
3141
+ | \`Space\` | Enters editing with the caret at the end of the card |
3142
+ | Double-click a card | Enters editing with the caret where you clicked; by default it also smoothly centers and enlarges the card, which can be turned off under Settings → Notes |
3143
+ | \`Esc\` | Steps out one level at a time: close the context menu, cancel the connector in progress, return to the select tool, clear the selection; while editing it returns to selected |
3144
+
3145
+ Building structure and placing things:
3146
+
3147
+ | Key | What it does |
3148
+ | --- | --- |
3149
+ | \`Tab\` | New child card |
3150
+ | \`Enter\` | New sibling card |
3151
+ | \`Enter\` or \`F2\` | With a shape, connector or frame selected, edit its text |
3152
+ | \`Delete\` / \`Backspace\` | Deletes the selection; on a hierarchy line it only detaches the parent-child link, leaving both cards in place |
3153
+ | \`⌘/Ctrl + A\` | Selects every card, the main card and the shapes |
3154
+ | \`←\` \`→\` \`↑\` \`↓\` | Nudge by 8 pixels |
3155
+ | \`Shift\` + arrow | Nudge by 1 pixel, for fine adjustment |
3156
+
3157
+ Clipboard, undo and viewport:
3158
+
3159
+ | Key | What it does |
3160
+ | --- | --- |
3161
+ | \`⌘/Ctrl + C\` / \`X\` / \`V\` | Copy, cut and paste cards; a paste lands at the center of the stage, not at the pointer |
3162
+ | \`⌘/Ctrl + Z\` | Undo |
3163
+ | \`⌘/Ctrl + Shift + Z\` | Redo |
3164
+ | Wheel / \`Shift\` + wheel | Pan vertically / horizontally |
3165
+ | Hold \`Alt\` and drag, or middle-click drag | Pans the canvas, and does not interrupt a card you are editing |
3166
+ | \`⌘/Ctrl\` + wheel | Zooms with the pointer as the anchor, between 25% and 250% |
3167
+
3168
+ - Redo is \`⌘/Ctrl + Shift + Z\` only; there is no \`⌘/Ctrl + Y\` on the canvas.
3169
+ - The arrow steps are the reverse of most apps: a bare arrow moves 8 pixels, and \`Shift\` is the 1-pixel fine adjustment.
3170
+ - The eight tools in the toolbar have no letter shortcuts. \`Esc\` is the only key that returns you to the select tool.
3171
+ - Copy and paste move cards only. Selecting a rectangle and pressing \`⌘/Ctrl + C\` then pasting does not give you a second rectangle; the same goes for connectors and parent-child links.
3172
+ - \`⌘/Ctrl + A\` leaves connectors and hierarchy lines out of the selection.
3173
+ - While you are typing inside a card, \`Tab\` indents the paragraph, \`Enter\` starts a new one and \`Backspace\` belongs to the editor — it will not delete the selected shape by accident.
3174
+ - Touch devices have no marquee selection, no Space-to-edit and no \`⌘/Ctrl + Z\`; select cards one at a time and double-tap to edit.
3175
+
3176
+ ### Rebinding shortcuts
3177
+
3178
+ Every command's shortcut can be changed. Press \`⌘/Ctrl + ,\` to open settings, then Appearance → Shortcuts. The panel is titled “Commands and shortcuts · {count}”.
3179
+
3180
+ - Recording: click the shortcut chip on the right of a row. It turns into “Press keys…”; the combo you press is set, and \`Esc\` cancels. Global dispatch pauses while recording, so you cannot fire something by mistake.
3181
+ - Conflicts: each combo binds to only one command. When you take one that is in use, the old holder is unbound automatically and a notice reads “Unbound this shortcut from "{name}"”.
3182
+ - Resetting: every row has “Reset to default” and “Unbind”; an empty chip reads “Not set”; the top right of the panel has “Reset all to default”.
3183
+ - Finding a row: the search box at the top (“Search commands or shortcuts”) filters by command name or key, and the count on the right reads “Showing {count}”.
3184
+
3185
+ | What you want | How |
3186
+ | --- | --- |
3187
+ | Give Toggle right sidebar a key | It ships with no shortcut; just record one |
3188
+ | Free up a combo that is taken | Find the command holding it and click “Unbind” |
3189
+
3190
+ > [!warning] This list is built from the commands registered **right now**. The 14 Amadeus commands are in it only while you are inside Amadeus — so to rebind New note, switch to Amadeus first and then open settings, or you will conclude it does not exist.
3191
+
3192
+ Two families of keys are absent from this page and cannot be rebound: the editor's and canvas's own keys (bold, italic, link, \`Tab\` indent, \`Space\` to edit, and so on), and \`⌘/Ctrl + Shift + M\` for Open mini card, which is an operating-system-level shortcut.
3193
+
3194
+ Rebindings are remembered — close the app and reopen it and they are still in force. “Reset all to default” discards every change you made and restores each command's shipped key, without asking twice. The first row of the list is the palette itself, Command palette, defaulting to \`⌘/Ctrl + K\`, and it can be moved to another combo.
3195
+
3196
+ One last thing worth remembering: a command with no shortcut is not a command you cannot reach. The palette is already the fastest entry point — three or four letters and \`↵\` beats memorizing a combo. Only the two or three commands you press a dozen times a day are worth a key.
3197
+
3198
+ ## 18 · Settings
3199
+
3200
+ Amadeus settings live across a few pages of the app's settings window, opened with \`⌘/Ctrl + ,\`. This chapter walks them page by page: attachment location, editing and safety, theme and colours, fonts and zoom, startup location, sidebar and status bar, shortcuts — with the default stated for each. All of them are stored on this device, not inside the vault.
3201
+
3202
+ ### Where the settings live
3203
+
3204
+ Press \`⌘/Ctrl + ,\` to open the settings window. You can also click the gear icon "Settings" at the bottom of the ribbon, or run "Settings" from the command palette (\`⌘/Ctrl + K\`). The window is app-level, not tied to a Space; close it and you are back on the tab you left.
3205
+
3206
+ The left-hand nav has five groups: "Workspace", "Appearance", "AI", "Extensions", "System". The pages that affect Amadeus sit in the first two and in "System".
3207
+
3208
+ | Page | Group | What it holds |
3209
+ |---|---|---|
3210
+ | "Notes" | Workspace | Attachment location, daily notes folder, editing and safety |
3211
+ | "Spaces" | Workspace | Which Space the app opens in, the ribbon home slot |
3212
+ | "Sync" | Workspace | "Online sync" and "Vault remote sync" |
3213
+ | "Appearance" | Appearance | Design language, colour scheme, light/dark, fonts |
3214
+ | "Shortcuts" | Appearance | Rebind any command |
3215
+ | "Status bar" | Appearance | What the bottom bar shows |
3216
+ | "Advanced" | System | The "Restore default layout" button |
3217
+
3218
+ - "Notes" and "Sync" appear only in the desktop app; the web client and device pages do not have them.
3219
+ - "Spaces" appears only in the desktop app.
3220
+ - The two sub-pages under "Sync" each need their own capability: "Online sync" needs cloud sync, "Vault remote sync" needs remote sync. With neither present the sub-nav is empty.
3221
+ - Plugin switches are on the "Plugins" page in the "Extensions" group — a separate chapter.
3222
+
3223
+ > [!warning] Everything in this chapter is stored on this device. None of it is written into the vault or carried by note sync. On a second computer you set it up again.
3224
+
3225
+ ### Notes → files and attachments
3226
+
3227
+ Settings → "Notes" → the "Files and attachments" panel. This decides where dragged-in files land on disk, and which folder daily notes are created in.
3228
+
3229
+ | Setting | Options | Default |
3230
+ |---|---|---|
3231
+ | "Attachment location" | "attachments/ folder next to the note" / "Same folder as the note" / "Fixed folder in the vault" | "attachments/ folder next to the note" |
3232
+ | "Vault-relative folder" | A path relative to the vault root | \`assets\` |
3233
+ | "Daily notes folder" | A path relative to the vault root, placeholder "Empty = vault root" | Empty, i.e. the vault root |
3234
+ | "Preview imported files by default" | On / off | On |
3235
+
3236
+ - The "Vault-relative folder" row appears only when "Attachment location" is set to "Fixed folder in the vault"; switch back and it folds away.
3237
+ - With "attachments/ folder next to the note", an \`attachments\` subfolder is created beside the note if there isn't one already.
3238
+ - "Preview imported files by default" on: an \`![[file]]\` preview block is inserted — images inline, other types as a clickable file card. Off: a \`[name](path)\` link is inserted instead.
3239
+ - "Daily notes folder" is where "Open today's daily note" creates \`YYYY-MM-DD.md\`. If the vault has a \`templates/daily.md\`, a new daily note is created from it.
3240
+ - Attachments kept outside the vault cannot be previewed inline; they open as links only.
3241
+
3242
+ > [!warning] "Vault-relative folder" and "Daily notes folder" are text boxes, each with its own "Save" button beside it. Typing alone does **not** persist — you have to click "Save".
3243
+
3244
+ ### Notes → editing and safety
3245
+
3246
+ Settings → "Notes" → the "Editing and safety" panel. Format upgrades, wikilink autocomplete scope, canvas interaction and delete protection all live here.
3247
+
3248
+ | Setting | Options | Default |
3249
+ |---|---|---|
3250
+ | "Upgrade legacy notes to v4 plain Markdown on open" | On / off | On |
3251
+ | "Suggest attachments and databases in [[ ]]" | On / off | On |
3252
+ | "Focus canvas cards on double-click" | On / off | On |
3253
+ | "Zoom that collapses cards to titles" | 25% / 40% / 55% / 70% / 100% | 25% |
3254
+ | "Delete exclusive attachments with the note" | "Ask every time" / "Remembered: delete them" / "Remembered: keep them" | "Ask every time" |
3255
+
3256
+ - The upgrade is written to disk only after you actually edit the note; merely opening it changes nothing. Turn this off temporarily if some device still runs a version older than 2.7.8.
3257
+ - With "Suggest attachments and databases in [[ ]]" on, typing \`[[\` also completes attachments, databases (.db) and drawings; off, it completes notes only. The palette command "Toggle attachments & databases in wikilink autocomplete" is the same switch, and it shows a toast telling you which way it went.
3258
+ - "Focus canvas cards on double-click" on: double-clicking a card enters editing and also glides it to the centre at a readable zoom; off: it edits in place and the viewport stays put. A single click only selects; Space also enters editing.
3259
+ - At or below the chosen zoom, canvas cards show a title summary instead of their body. The default 25% collapses only at the furthest zoom-out; a higher value collapses sooner.
3260
+ - The delete policy only touches attachments referenced by that note alone; anything another note links to is kept whichever option you pick.
3261
+
3262
+ > [!note] The canvas has three more buttons at its bottom right: "Snap to grid", the minimap and the summary toggle, all on by default. The first two share one preference with the dashboard canvas — turn one off in either place and it is off in both.
3263
+
3264
+ ### Appearance → theme, colours and light/dark
3265
+
3266
+ Settings → "Appearance" → "Appearance". "Appearance" is both the group name and the page name, hence the repetition. Amadeus takes its whole look from this page; it has no separate theme settings of its own.
3267
+
3268
+ "Design language" sets structure, radius, typography and overall character:
3269
+
3270
+ | Design language | What it is |
3271
+ |---|---|
3272
+ | \`Genesis\` | The default. Paper feel, charcoal accent, soft shadows instead of rules |
3273
+ | \`Genesis Glass · 琉璃\` | Genesis structure with a native glass shell; body cards stay fully opaque |
3274
+ | \`Soft · 柔影\` | Included on first install; rounded floating panels and a soft stage |
3275
+
3276
+ Two buttons sit at the top right of the panel: "Open themes folder", where third-party themes go, and "Reload themes", which makes a newly added one appear in the list. If the selected theme exposes its own options (Glass has a set for surface opacity, blur and hairlines), an options panel appears under the cards.
3277
+
3278
+ "Color scheme" is two independent axes, "Accent" and "Background", sharing one swatch row: "Classic", "Coral", "Teal", "Lavender", "Clear blue", "Custom". The same id on both = the original combined scheme; "Custom" adds a colour picker.
3279
+
3280
+ | Setting | Options | Default |
3281
+ |---|---|---|
3282
+ | "Accent" | Six swatches | "Classic" |
3283
+ | "Background" | Six swatches | Follows "Accent" |
3284
+ | "Light / dark" | "Light" / "Dark" / "Follow system" | "Light" |
3285
+ | "Shadow" | "Raised" / "Flat" | "Flat" |
3286
+ | "Frosted glass" | "On" / "Off (low-power mode)" | "On" |
3287
+ | "Smooth caret" | On / off | Off |
3288
+
3289
+ The command palette has five switches that skip the settings window: "Toggle light/dark mode", "Change accent color", "Switch theme style", "Switch language", "Toggle smooth caret". Note that "Switch theme style" cycles the design language, not the interface language; the interface language is "Switch language", and the palette is its only entry point.
3290
+
3291
+ > [!warning] While "Genesis Glass · 琉璃" is active, light/dark is locked to the system: the "Light / dark" buttons are greyed out, the moon icon on the ribbon does nothing, and the hint reads "This theme follows the system appearance". Switch to another design language to control it by hand.
3292
+
3293
+ ### Fonts and interface zoom
3294
+
3295
+ Settings → "Appearance" → "Appearance" → the "Typography" panel. Three slots, each a dropdown, all defaulting to "Follow theme" — the current design language's own stack.
3296
+
3297
+ | Slot | Options |
3298
+ |---|---|
3299
+ | "Interface font" | "Follow theme" / "Inter (modern sans)" / "Noto Sans SC" / "LXGW WenKai (reading)" / "System default" |
3300
+ | "Body font" | Same as "Interface font" |
3301
+ | "Monospace font" | "Follow theme" / "JetBrains Mono" / "System default" |
3302
+
3303
+ - Presets only — you cannot type an arbitrary family name. Preset fonts ship with the app rather than relying on what is installed locally, so a vault looks the same on every machine.
3304
+ - "Body font" covers note text, "Interface font" covers the shell (sidebar, tabs), "Monospace font" covers code blocks.
3305
+ - Fonts contributed by plugins appear under a "From plugins" group in the dropdown; disable the plugin and that slot falls back to "Follow theme".
3306
+
3307
+ Interface zoom is a separate thing: it scales the whole interface in 10% steps between 50% and 200%, remembered across launches.
3308
+ The "Display and motion" panel under Settings → Appearance offers Small (80%), Standard (100%) and Large (120%) presets and shows the current zoom percentage.
3309
+
3310
+ | Action | Hotkey | Command |
3311
+ |---|---|---|
3312
+ | Zoom in | \`⌘/Ctrl + =\` | "Zoom in" |
3313
+ | Zoom out | \`⌘/Ctrl + -\` | "Zoom out" |
3314
+ | Reset | \`⌘/Ctrl + 0\` | "Reset zoom" |
3315
+
3316
+ > [!note] The three presets and the hotkeys use the same zoom path, and the hotkeys are bound in the desktop app only. Interface zoom scales the entire shell: sidebar, tabs and note text all move together. It is not a note font-size control.
3317
+
3318
+ ### Startup location and Spaces
3319
+
3320
+ Settings → "Spaces" (desktop app only). This page decides where the app lands at startup and what sits in the centred cell of the ribbon.
3321
+
3322
+ The "Startup location" panel has two rows. The first is "Open the app in":
3323
+
3324
+ | Option | Where you land |
3325
+ |---|---|
3326
+ | "Space in the home slot (default — now “{name}”)" | Whatever Space is in the centred ribbon cell |
3327
+ | "Last Space on exit (with its tabs)" | The Space you were in when you quit, tabs restored |
3328
+ | A specific Space by name (notes is \`Amadeus\`) | Always that one |
3329
+
3330
+ The second row, "Ribbon home slot", changes which Space sits in the slot; right-clicking the centred ribbon cell opens "Space in the home slot" and does the same.
3331
+
3332
+ - The Space placed in the home slot disappears from the group of icons above it, so it never shows twice.
3333
+ - Choosing the home slot or a fixed Space restores *that Space's own* last layout, not the layout of the Space you last quit from.
3334
+ - Below, "Installed Spaces · {count}" lists every Space. Ones badged "Built-in" ship with the app and cannot be removed; ones badged "Custom/Market" have an "Uninstall" button, which deletes their on-disk layout recipe.
3335
+ - To keep the arrangement you have now, run "Save current layout as a Space" from the command palette, give it a name, and it appears at the top of the ribbon straight away.
3336
+
3337
+ > [!warning] A fresh install does **not** open in Amadeus: the default is the home slot, and the home slot holds Home by default. To start in your notes, set "Open the app in" to \`Amadeus\`. This default has changed twice historically, so a long-time user's landing Space may have moved without them touching the setting.
3338
+
3339
+ ### Sidebar, layout and the status bar
3340
+
3341
+ Sidebars and panels have no settings page of their own; they are driven by commands, dragging, and what the app remembers.
3342
+
3343
+ | Action | Hotkey | Command |
3344
+ |---|---|---|
3345
+ | Collapse / expand the left sidebar | \`⌘/Ctrl + /\` | "Toggle left sidebar" |
3346
+ | Collapse / expand the right sidebar | No default | "Toggle right sidebar" |
3347
+ | Open / close the bottom panel | \`⌘/Ctrl + J\` | "Toggle bottom panel" |
3348
+
3349
+ - In Amadeus the left sidebar holds "Notes", "Search" and "Tags"; the right sidebar holds chat, outline, backlinks and graph, and starts collapsed.
3350
+ - The left sidebar uses \`⌘/Ctrl + /\` rather than \`⌘/Ctrl + B\` because the latter is bold in the note editor. The right sidebar has no default key — assign one on the "Shortcuts" page if you want it.
3351
+ - Drag the divider to resize a sidebar or the bottom panel. Widths are remembered per Space; a sidebar you have never dragged sits at the default width.
3352
+ - The blocks above the notes tree — "Pinned", "Cloud sync", "Shared with me", "Starred", "Collections" — can be reordered by dragging their headers. Mouse only: touch and pen will not start the drag, and only the header is a handle — dragging from inside a block drags a note instead.
3353
+ - "Pinned", "Starred" and "Collections" are stored on this device, per vault. Rename or move the vault folder and those blocks come back empty.
3354
+
3355
+ The status bar is at Settings → "Appearance" → "Status bar": the "Display" panel has one master switch, "Show status bar" (on by default), and the "Status bar" panel below is a checkable, drag-to-reorder list holding "Current Space", "Running sessions", "Sync status", "Backlinks", "Word count" and "Inbox unread". Turn the master switch off and the whole bar goes away, giving the height back to the workspace.
3356
+
3357
+ > [!warning] "Backlinks" and "Word count" show up only while the active tab is a note editor. Switch to a whiteboard, dashboard, PDF or database and they disappear — that is by design, not a fault.
3358
+
3359
+ > [!warning] "Reset layout" (from the command palette, or the button of the same name at Settings → "Advanced") has no confirmation. It immediately discards the panel arrangement and open tabs of the current Space, and there is no undo.
3360
+
3361
+ ### Shortcuts
3362
+
3363
+ Settings → "Appearance" → "Shortcuts". The panel is headed "Commands and shortcuts · {count}" and lists the command palette itself plus every currently registered command with the key it currently answers to.
3364
+
3365
+ - Click the shortcut chip on a row to start recording, press the combo to set it, \`Esc\` to cancel. Global dispatch pauses while recording, so nothing you press fires another command by accident.
3366
+ - Each combo binds to only one command. On a collision the older binding is released automatically and a notice names the command that lost it.
3367
+ - Every row has "Reset to default" and "Unbind"; a row with no key shows "Not set". "Reset all to default" at the top of the panel clears every override at once.
3368
+
3369
+ The built-in keys you will use most:
3370
+
3371
+ | Hotkey | What it does |
3372
+ |---|---|
3373
+ | \`⌘/Ctrl + K\` | Open the command palette |
3374
+ | \`⌘/Ctrl + ,\` | Open settings |
3375
+ | \`⌘/Ctrl + P\` | Quick find: notes, files and sessions across Spaces |
3376
+ | \`⌘/Ctrl + F\` | Find in page |
3377
+ | \`⌘/Ctrl + /\` | Collapse / expand the left sidebar |
3378
+ | \`⌘/Ctrl + J\` | Open / close the bottom panel |
3379
+
3380
+ > [!warning] The Amadeus commands appear in this list only while Amadeus is the active Space. To rebind a note-related command, switch to Amadeus first and then open settings, or you will conclude they do not exist.
3381
+
3382
+ > [!note] Both this list and the command palette show each command's **default** key, not your override. To confirm what you bound, trust the combo you pressed while recording.
3383
+
3384
+ > [!warning] With the caret inside note text, \`⌘/Ctrl + K\` does not open the command palette — the editor uses that key for "edit link". Click outside the note body first, then press it.
3385
+
3386
+ ## 19 · When something looks broken
3387
+
3388
+ This chapter is arranged as symptom, cause, and what to do. Most "broken" moments are deliberate trade-offs: a switch that is off, a precondition that is not met, or an action that belongs to a different gesture. Rule out the five things in the next section first, then look up your symptom below.
3389
+
3390
+ ### Rule these five things out first
3391
+
3392
+ Almost every "the feature is gone" report lands in one of these five. Run through them before looking up a specific symptom.
3393
+
3394
+ | Symptom | Why | What to do |
3395
+ |---|---|---|
3396
+ | The note commands are not in the command palette | The whole set is registered only inside the Amadeus Space and withdrawn when you leave | Switch to Amadeus first, then press \`⌘/Ctrl + K\` |
3397
+ | A command does nothing and shows "Open a vault first — the tutorial is created inside it" | No vault is open | Click "Open vault" at the bottom of the sidebar and pick a folder on disk |
3398
+ | To-dos, \`@\` events and \`@remind:\` reminders do not exist at all | They are built from the desktop vault index | Use the desktop app; the web and mobile shells carry the notes themselves only |
3399
+ | No "Calendar" icon in the ribbon, and "To-do list" will not open | The built-in plugin is switched off | Settings (\`⌘/Ctrl + ,\`) → "Plugins" → "Built-in plugins" → tick "Calendar"; the ribbon icon comes back on the next launch |
3400
+ | On a second machine, Starred, Pinned and Collections are all empty | All three are stored on this device only and do not travel with the files | Mark them again on the new machine |
3401
+
3402
+ > [!note]
3403
+ > A few labels still read in Chinese in the English UI: the calendar's column-mapping dialog, the due chip at the end of a to-do row, the paper-size dialog for a new whiteboard, the "新建链接" row in the \`[[\` completion, and the leftmost button on the inline toolbar that shows the current block type. That is how they ship — your language setting is fine.
3404
+
3405
+ ### Nothing responds on the canvas
3406
+
3407
+ Canvas mode keeps the single click for selecting and dragging. This is the most commonly reported "bug" here, and the easiest to explain.
3408
+
3409
+ | Symptom | Why | What to do |
3410
+ |---|---|---|
3411
+ | To-dos inside a card will not tick, \`[[wikilinks]]\` will not open | Outside edit mode a click only selects | Double-click the card, or select it and press \`Space\`; \`Esc\` goes back to selection. The app says so itself: "Double-click a card (or select it and press Space) to edit — then you can tick to-dos and open backlinks" |
3412
+ | Yet \`</>\`, an embed card's "Open ↗", external links and database buttons do work on the same card | Those controls are a deliberate exception | Just click them; no edit mode needed |
3413
+ | Clicking anywhere inside a Frame does nothing | The frame body takes no clicks at all — only its title bar is clickable and draggable | Click the title bar; dragging it moves everything fully inside the frame along with it |
3414
+ | On a touch screen, dragging a card pans the whole canvas instead | A one-finger drag on an unselected card is a pan | Tap to select first, then drag |
3415
+ | An arrow key sends the card flying | A bare arrow key is an 8-pixel step | \`Shift + ←/→/↑/↓\` is the 1-pixel nudge |
3416
+ | No "Document / Canvas" pill in the top bar | It is not rendered in source mode, and legacy notes do not have it | Leave source mode; Settings → "Notes" → turn on "Upgrade legacy notes to v4 plain Markdown on open" |
3417
+ | A message reads "Canvas changes were not saved: the amadeus_canvas line in this note cannot be parsed — check it in source mode." | The line holding the geometry was hand-edited into something unreadable | Switch to source mode and fix that line. Until you do, the original canvas data is kept verbatim rather than wiped |
3418
+
3419
+ > [!warning]
3420
+ > Touch has no marquee selection, no \`Space\` to edit and no \`⌘/Ctrl + Z\`; multi-select is one tap at a time. A note on a phone always opens in doc mode — switching to canvas on the desktop does not make the phone open it as a canvas.
3421
+
3422
+ ### A to-do or an event never shows up
3423
+
3424
+ The time views (Calendar and To-Do List) take exactly two kinds of thing: rows of a database that has been added to the calendar, and lines in a note body that carry an \`@\` time mark. Nothing else.
3425
+
3426
+ | Symptom | Why | What to do |
3427
+ |---|---|---|
3428
+ | You wrote \`- [ ]\` in a note and it is not in the To-Do List | A checkbox with no \`@\` time mark appears in no view — that is a deliberate gate, not an omission | Write \`- [ ] Send the weekly report @2026-09-01\`; typing \`@\` offers suggestions |
3429
+ | You added \`@\` and it still does not appear | \`@\` must be at the start of a line or after a space, the date must be fully written out (\`@2026-09-01\`, \`@2026-09-01T14:30\`), and marks inside code blocks never count | Insert it from the "Schedule" row of the \`@\` suggestion panel — the format is then always right |
3430
+ | The line reached the calendar but not the To-Do List | An \`@\` line with no checkbox is a calendar event, not a to-do | Add \`- [ ] \` at the start of the line |
3431
+ | A to-do dated far ahead is nowhere to be seen | "Later" and "Completed" start collapsed | Click the section header to expand it |
3432
+ | Database rows do not show up in the To-Do List | That database is not a calendar member, or no completion checkbox column is mapped | Right panel → "Add calendar" → "Add database"; for one already added, use the row's ⋯ → "Calendar settings (column mapping)" |
3433
+ | You just edited the note and the list is still stale | The list refreshes on page change, vault switch and structure change — not on every keystroke | Switch pages once |
3434
+ | \`@remind:\` did not fire | Reminders only fire while the app is running, and one more than 24 hours late is dropped rather than replayed | Keep the app running; check Settings → "Notifications" → "Note reminders (@remind:)" is on |
3435
+
3436
+ > [!note]
3437
+ > Ticking a note-backed to-do in the list rewrites that line in the note from \`- [ ]\` to \`- [x]\`. If the line changed since the list loaded, the write is refused rather than guessed: you get "Can't update "{name}" — that line in the note has changed" with an "Open note" button so you can edit it yourself.
3438
+
3439
+ ### Menus and popups that will not open
3440
+
3441
+ Every completion popup shares one rule: once you close it with \`Esc\`, that same trigger character will not bring it back. Knowing that explains half the symptoms below.
3442
+
3443
+ | Symptom | Why | What to do |
3444
+ |---|---|---|
3445
+ | After closing the slash menu with \`Esc\`, the same \`/\` will not reopen it | The dismissal is remembered against that \`/\` position | Delete that \`/\` and type a new one. The \`@\` panel behaves the same way |
3446
+ | Typing \`/\` just leaves a literal slash | \`/\` is always literal inside a code block, and mid-word \`/\` (as in \`TCP/IP\`) never triggers | Type it at the start of a line or after a space |
3447
+ | The menu closes on its own and \`/foo\` stays in the text | A space, a \`]\`, a newline, or a query over 40 characters closes it | Delete those characters and start again |
3448
+ | Moving the caret back into a finished \`[[link]]\` does not reopen the completion | It only reopens when you actually edit — otherwise \`↑\` and \`↓\` would be swallowed and the caret could not leave that line | Type one character |
3449
+ | Pressing \`Enter\` right after pasting a link selects nothing | The "Paste as" menu highlights nothing at first, so \`Enter\` still inserts a line break | Press \`↑\` or \`↓\` to pick a row first, then \`Enter\` |
3450
+ | "Outline", "Backlinks" and "Graph" are nowhere to be found | The right sidebar starts collapsed and has no hotkey | \`⌘/Ctrl + K\` → "Toggle right sidebar" |
3451
+
3452
+ > [!info]
3453
+ > Find in page (\`⌘/Ctrl + F\`) scans what is currently rendered: text inside a collapsed section, or scrolled out of a long virtualised list, is not found. Expand first, then search.
3454
+
3455
+ ### A note does not look the way you left it
3456
+
3457
+ A vault is nothing but plain Markdown files on disk, so "opened in another app" cuts both ways: someone else's vault coming in here, and your notes opened elsewhere.
3458
+
3459
+ Someone else's note opened here:
3460
+
3461
+ | Symptom | Why | What to do |
3462
+ |---|---|---|
3463
+ | The block menu is shorter, has no "Turn into", and there is no "Document / Canvas" pill | This note opened in the legacy format | Settings → "Notes" → turn on "Upgrade legacy notes to v4 plain Markdown on open", then reopen it |
3464
+ | The "Tags" panel is empty | Only inline tags in the body are counted; \`tags:\` written in the file header is not | Write an inline tag such as \`#idea\` in the body |
3465
+ | Double-clicking \`.excalidraw.md\` or \`.dashboard.md\` opens an ordinary note | The compound suffix was broken (a name collision turns it into something like \`x.excalidraw-1.md\`) | Rename the file back to the full suffix |
3466
+ | Clicking \`[[Note#Heading]]\` opens the note but does not scroll to that section | Wikilinks inside a note keep only \`#page=\` for PDFs and \`#t=\` for media | Open it and locate the section with find in page |
3467
+
3468
+ Your note opened in another editor:
3469
+
3470
+ | Symptom | Why | What to do |
3471
+ |---|---|---|
3472
+ | A Toggle block shows up as an ordinary quote | On disk it is \`> [!fold]- Title\`, which other editors render as a quote | Normal. Back here it is still a Toggle |
3473
+ | Comments such as \`<!-- a t1 -->\` appear in the body | Those are the anchors of canvas cards | Leave them. Delete one and that card unwraps back into the body |
3474
+ | One long \`amadeus_canvas\` line sits in the file header | All the canvas coordinates and parent-child links live on that line | Do not hand-edit it. If it breaks, the app says so to your face and keeps what you wrote verbatim |
3475
+ | Text colour became \`<span style=…>\` and image width sits in \`![caption|200](path)\` | Deliberately inline HTML and Obsidian's own convention, so other editors read them too | Normal |
3476
+
3477
+ > [!note]
3478
+ > Code-block wrapping, line numbers and folding, and heading-section folds, are session state only and reset when you reopen the note — deliberately never written into the Markdown, so nothing proprietary lands in your files.
3479
+
3480
+ ### Links and embeds that stop resolving
3481
+
3482
+ Renaming inside the app (tree right-click → "Rename", or editing the name in the title bar) rewrites \`[[…]]\` and \`![[…]]\` across the whole vault. What it does not cover, and the ways an embed refuses to render, are below.
3483
+
3484
+ | Symptom | Why | What to do |
3485
+ |---|---|---|
3486
+ | After a rename some links are broken | The rewrite covers \`[[…]]\` and \`![[…]]\` only; Markdown links like \`[text](x.md)\` and file references like \`[[x.pdf]]\` or \`[[x.excalidraw]]\` are not rewritten | Rename through the app's own "Rename", then fix those three kinds by hand; links that were already broken stay broken |
3487
+ | After a rename, entries vanished from Starred and Pinned | Starred, Pinned and Collections are keyed by path and are not remapped | Mark them again |
3488
+ | PDFs, images and whiteboards have no "Rename" in the tree menu | Only notes, \`.db\` files and plugin file types can be renamed from the tree | Rename in the file manager, then fix the references by hand |
3489
+ | \`![[Note#blockId]]\` renders as a line of ordinary text | Block ids exist only in legacy-format notes | Use \`![[Note]]\` to transclude the whole note |
3490
+ | The embed line shows the \`![[…]]\` source instead of content | That line must contain the embed and nothing else | Move the surrounding text to the line above or below |
3491
+ | Putting the caret on the line turns wikilinks, formulas and images into source | Deliberate: the caret on that line reveals the editable original | Move the caret away and it renders again immediately |
3492
+ | Inside a transcluded note, databases and whiteboards became text | Nested embeds render one level deep only | Click "Edit at the source" and view them in the original note |
3493
+ | A web embed is dead with just a "▶ Wake page" button, and a video link will not become a player | Web embeds are frozen by default and pause again whenever the caret enters that paragraph; inline players cover YouTube and Bilibili only | Click "▶ Wake page"; leave other platforms as bookmark cards and use "Open in browser" |
3494
+
3495
+ > [!warning]
3496
+ > An equation must be the one-line \`$$ … $$\` form. Written across three lines it is parsed as two ordinary paragraphs and never renders. When the syntax itself is wrong you get a "Formula could not be rendered" badge.
3497
+
3498
+ ### Starting over: delete the note, then run the command again
3499
+
3500
+ The built-in tutorial and user manual both follow one rule: create it if it is missing, leave it alone if it is there. They are generated into your own vault — once you have edited them they are your notes, and the command will never overwrite them. So there is exactly one way to start over:
3501
+
3502
+ 1. Find the note in the sidebar, right-click → "Delete". On desktop there is no second confirmation: it goes straight to "Trash" with a "Moved to trash" toast.
3503
+ 2. Switch to the Amadeus Space and press \`⌘/Ctrl + K\`.
3504
+ 3. Search for "tutorial" or "manual" and pick "Open the tutorial" or "Open the user manual". The file is regenerated in your current interface language and opened.
3505
+
3506
+ | What to reset | How | Watch out |
3507
+ |---|---|---|
3508
+ | The tutorial | Delete \`Amadeus 使用教程.md\`, then run "Open the tutorial" | The tutorial's language is fixed at the moment it is generated; after switching interface language you must delete and rerun to get it in the new one |
3509
+ | The user manual | Delete \`Amadeus 使用手册.md\` or \`Amadeus User Manual.md\`, then run "Open the user manual" | Both language versions are generated together, and the command opens the one matching your current interface language |
3510
+ | Search or backlinks look stale | \`⌘/Ctrl + K\` → "Rebuild full-text index" | There is no progress bar and no completion toast; when it is done, it is done |
3511
+ | You deleted the wrong thing | "Trash" at the bottom of the sidebar → find the row → "Restore" | The trash never empties itself and has no age limit — click "Empty" yourself when it grows |
3512
+
3513
+ > [!note]
3514
+ > Both commands live in the command palette only while you are in the Amadeus Space. Run them with no vault open and you get "Open a vault first — the tutorial is created inside it" and nothing is generated.
3515
+ `;export{e as default};