@maniclang/workbench 0.1.11

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 (644) hide show
  1. package/CONTRIBUTING.md +40 -0
  2. package/README.md +155 -0
  3. package/dist/client/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  4. package/dist/client/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  5. package/dist/client/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  6. package/dist/client/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  7. package/dist/client/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  8. package/dist/client/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  9. package/dist/client/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  10. package/dist/client/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  11. package/dist/client/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  12. package/dist/client/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  13. package/dist/client/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  14. package/dist/client/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  15. package/dist/client/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  16. package/dist/client/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  17. package/dist/client/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  18. package/dist/client/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  19. package/dist/client/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  20. package/dist/client/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  21. package/dist/client/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  22. package/dist/client/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  23. package/dist/client/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  24. package/dist/client/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  25. package/dist/client/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  26. package/dist/client/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  27. package/dist/client/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  28. package/dist/client/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  29. package/dist/client/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  30. package/dist/client/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  31. package/dist/client/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  32. package/dist/client/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  33. package/dist/client/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  34. package/dist/client/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  35. package/dist/client/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  36. package/dist/client/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  37. package/dist/client/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  38. package/dist/client/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  39. package/dist/client/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  40. package/dist/client/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  41. package/dist/client/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  42. package/dist/client/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  43. package/dist/client/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  44. package/dist/client/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  45. package/dist/client/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  46. package/dist/client/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  47. package/dist/client/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  48. package/dist/client/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  49. package/dist/client/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  50. package/dist/client/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  51. package/dist/client/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  52. package/dist/client/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  53. package/dist/client/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  54. package/dist/client/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  55. package/dist/client/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  56. package/dist/client/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  57. package/dist/client/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  58. package/dist/client/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  59. package/dist/client/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  60. package/dist/client/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  61. package/dist/client/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  62. package/dist/client/assets/abap-CRCWOmpq.js +1 -0
  63. package/dist/client/assets/apex-DnsZk_dE.js +1 -0
  64. package/dist/client/assets/azcli-1IWB1ccx.js +1 -0
  65. package/dist/client/assets/bat-DPkNLes8.js +1 -0
  66. package/dist/client/assets/bicep-Corcdgou.js +2 -0
  67. package/dist/client/assets/cameligo-CGrWLZr3.js +1 -0
  68. package/dist/client/assets/clojure-D9WOWImG.js +1 -0
  69. package/dist/client/assets/codicon-CgENjH2v.ttf +0 -0
  70. package/dist/client/assets/coffee-B7EJu28W.js +1 -0
  71. package/dist/client/assets/cpp-SEyurbux.js +1 -0
  72. package/dist/client/assets/csharp-BoL64M5l.js +1 -0
  73. package/dist/client/assets/csp-C46ZqvIl.js +1 -0
  74. package/dist/client/assets/css-DQU6DXDx.js +3 -0
  75. package/dist/client/assets/cssMode-CtRONlr8.js +4 -0
  76. package/dist/client/assets/cypher-D84EuPTj.js +1 -0
  77. package/dist/client/assets/dart-D8lhlL1r.js +1 -0
  78. package/dist/client/assets/dockerfile-DLk6rpji.js +1 -0
  79. package/dist/client/assets/ecl-BO6FnfXk.js +1 -0
  80. package/dist/client/assets/editor.worker-CZyr7Ur9.js +26 -0
  81. package/dist/client/assets/elixir-BRjLKONM.js +1 -0
  82. package/dist/client/assets/flow9-Cac8vKd7.js +1 -0
  83. package/dist/client/assets/freemarker2-BTSNJUl8.js +3 -0
  84. package/dist/client/assets/fsharp-fd1GTHhf.js +1 -0
  85. package/dist/client/assets/go-O9LJTZXk.js +1 -0
  86. package/dist/client/assets/graphql-LQdxqEYJ.js +1 -0
  87. package/dist/client/assets/handlebars-qkUBjVg6.js +1 -0
  88. package/dist/client/assets/hcl-DxDQ3s82.js +1 -0
  89. package/dist/client/assets/html-pguqE00h.js +1 -0
  90. package/dist/client/assets/htmlMode-BCCLuk2F.js +4 -0
  91. package/dist/client/assets/index-BFrMLHHu.css +1 -0
  92. package/dist/client/assets/index-CdBC-xgi.js +1250 -0
  93. package/dist/client/assets/ini-BvajGCUy.js +1 -0
  94. package/dist/client/assets/java-SYsfObOQ.js +1 -0
  95. package/dist/client/assets/javascript-ciDUXdez.js +1 -0
  96. package/dist/client/assets/jsonMode-BmkXC0tI.js +10 -0
  97. package/dist/client/assets/julia-DQXNmw_w.js +1 -0
  98. package/dist/client/assets/kotlin-qQ0MG-9I.js +1 -0
  99. package/dist/client/assets/less-GGFNNJHn.js +2 -0
  100. package/dist/client/assets/lexon-Canl7DCW.js +1 -0
  101. package/dist/client/assets/liquid-CwE4UIwf.js +1 -0
  102. package/dist/client/assets/lua-D28Ae8-K.js +1 -0
  103. package/dist/client/assets/m3-DPitgjJI.js +1 -0
  104. package/dist/client/assets/markdown-B811l8j2.js +1 -0
  105. package/dist/client/assets/mdx-K_9Emnjy.js +1 -0
  106. package/dist/client/assets/mips-CdjsipkG.js +1 -0
  107. package/dist/client/assets/msdax-CYqgjx_P.js +1 -0
  108. package/dist/client/assets/mysql-BHd6q0vd.js +1 -0
  109. package/dist/client/assets/objective-c-B1aVtJYH.js +1 -0
  110. package/dist/client/assets/pascal-BhNW15KB.js +1 -0
  111. package/dist/client/assets/pascaligo-5jv8CcQD.js +1 -0
  112. package/dist/client/assets/perl-DlYyT36c.js +1 -0
  113. package/dist/client/assets/pgsql-Dy0bjov7.js +1 -0
  114. package/dist/client/assets/php-120yhfDK.js +1 -0
  115. package/dist/client/assets/pla-CjnFlu4u.js +1 -0
  116. package/dist/client/assets/postiats-CQpG440k.js +1 -0
  117. package/dist/client/assets/powerquery-DdJtto1Z.js +1 -0
  118. package/dist/client/assets/powershell-Bu_VLpJB.js +1 -0
  119. package/dist/client/assets/protobuf-IBS6jZEB.js +2 -0
  120. package/dist/client/assets/pug-kFxLfcjb.js +1 -0
  121. package/dist/client/assets/python-BzIc0EVe.js +1 -0
  122. package/dist/client/assets/qsharp-q7JyzKFN.js +1 -0
  123. package/dist/client/assets/r-BIFz-_sK.js +1 -0
  124. package/dist/client/assets/razor-lXZl6dtu.js +1 -0
  125. package/dist/client/assets/redis-CHOsPHWR.js +1 -0
  126. package/dist/client/assets/redshift-CBifECDb.js +1 -0
  127. package/dist/client/assets/restructuredtext-CghPJEOS.js +1 -0
  128. package/dist/client/assets/ruby-CYWGW-b1.js +1 -0
  129. package/dist/client/assets/rust-DMDD0SHb.js +1 -0
  130. package/dist/client/assets/sb-BYAiYHFx.js +1 -0
  131. package/dist/client/assets/scala-Bqvq8jcR.js +1 -0
  132. package/dist/client/assets/scheme-Dhb-2j9p.js +1 -0
  133. package/dist/client/assets/scss-CTwUZ5N7.js +3 -0
  134. package/dist/client/assets/shell-CsDZo4DB.js +1 -0
  135. package/dist/client/assets/solidity-CME5AdoB.js +1 -0
  136. package/dist/client/assets/sophia-RYC1BQQz.js +1 -0
  137. package/dist/client/assets/sparql-KEyrF7De.js +1 -0
  138. package/dist/client/assets/sql-BdTr02Mf.js +1 -0
  139. package/dist/client/assets/st-C7iG7M4S.js +1 -0
  140. package/dist/client/assets/swift-D7IUmUK8.js +1 -0
  141. package/dist/client/assets/systemverilog-DgMryOEJ.js +1 -0
  142. package/dist/client/assets/tcl-PloMZuKG.js +1 -0
  143. package/dist/client/assets/tsMode-BAXmgo_t.js +11 -0
  144. package/dist/client/assets/twig-BfRIq3la.js +1 -0
  145. package/dist/client/assets/typescript-Cdf8nS1n.js +1 -0
  146. package/dist/client/assets/typespec-CzxlYoT_.js +1 -0
  147. package/dist/client/assets/vb-BwAE3J76.js +1 -0
  148. package/dist/client/assets/wgsl-B_1kOXbF.js +298 -0
  149. package/dist/client/assets/xml-DGyPgYnj.js +1 -0
  150. package/dist/client/assets/yaml-Dqv3HtbL.js +1 -0
  151. package/dist/client/index.html +14 -0
  152. package/dist/client/manic-logo.png +0 -0
  153. package/dist/client/wasm/manic_lang.d.ts +74 -0
  154. package/dist/client/wasm/manic_lang.js +302 -0
  155. package/dist/client/wasm/manic_lang_bg.wasm +0 -0
  156. package/dist/client/wasm/manic_lang_bg.wasm.d.ts +13 -0
  157. package/dist/server/agentProtocol.d.ts +131 -0
  158. package/dist/server/agentProtocol.js +21 -0
  159. package/dist/server/agentProtocol.js.map +1 -0
  160. package/dist/server/agentRuns.d.ts +46 -0
  161. package/dist/server/agentRuns.js +138 -0
  162. package/dist/server/agentRuns.js.map +1 -0
  163. package/dist/server/agentThreads.d.ts +20 -0
  164. package/dist/server/agentThreads.js +205 -0
  165. package/dist/server/agentThreads.js.map +1 -0
  166. package/dist/server/aiSecrets.d.ts +21 -0
  167. package/dist/server/aiSecrets.js +68 -0
  168. package/dist/server/aiSecrets.js.map +1 -0
  169. package/dist/server/app.d.ts +34 -0
  170. package/dist/server/app.js +804 -0
  171. package/dist/server/app.js.map +1 -0
  172. package/dist/server/assets.d.ts +34 -0
  173. package/dist/server/assets.js +659 -0
  174. package/dist/server/assets.js.map +1 -0
  175. package/dist/server/candidateFix.d.ts +28 -0
  176. package/dist/server/candidateFix.js +111 -0
  177. package/dist/server/candidateFix.js.map +1 -0
  178. package/dist/server/cli.d.ts +2 -0
  179. package/dist/server/cli.js +118 -0
  180. package/dist/server/cli.js.map +1 -0
  181. package/dist/server/diagnostics.d.ts +13 -0
  182. package/dist/server/diagnostics.js +73 -0
  183. package/dist/server/diagnostics.js.map +1 -0
  184. package/dist/server/engineCheck.d.ts +7 -0
  185. package/dist/server/engineCheck.js +60 -0
  186. package/dist/server/engineCheck.js.map +1 -0
  187. package/dist/server/engineInstall.d.ts +34 -0
  188. package/dist/server/engineInstall.js +228 -0
  189. package/dist/server/engineInstall.js.map +1 -0
  190. package/dist/server/enginePaths.d.ts +3 -0
  191. package/dist/server/enginePaths.js +76 -0
  192. package/dist/server/enginePaths.js.map +1 -0
  193. package/dist/server/folderPicker.d.ts +1 -0
  194. package/dist/server/folderPicker.js +54 -0
  195. package/dist/server/folderPicker.js.map +1 -0
  196. package/dist/server/manicAgent.d.ts +75 -0
  197. package/dist/server/manicAgent.js +476 -0
  198. package/dist/server/manicAgent.js.map +1 -0
  199. package/dist/server/manicEnv.d.ts +18 -0
  200. package/dist/server/manicEnv.js +64 -0
  201. package/dist/server/manicEnv.js.map +1 -0
  202. package/dist/server/promptStore.d.ts +11 -0
  203. package/dist/server/promptStore.js +85 -0
  204. package/dist/server/promptStore.js.map +1 -0
  205. package/dist/server/renderJobs.d.ts +54 -0
  206. package/dist/server/renderJobs.js +290 -0
  207. package/dist/server/renderJobs.js.map +1 -0
  208. package/dist/server/settings.d.ts +40 -0
  209. package/dist/server/settings.js +262 -0
  210. package/dist/server/settings.js.map +1 -0
  211. package/dist/server/smartDraw.d.ts +7 -0
  212. package/dist/server/smartDraw.js +88 -0
  213. package/dist/server/smartDraw.js.map +1 -0
  214. package/dist/server/workspace.d.ts +27 -0
  215. package/dist/server/workspace.js +172 -0
  216. package/dist/server/workspace.js.map +1 -0
  217. package/examples/.manic-output/40b6f3b9-7638-4c0e-bb4f-570d45d1b225/job.json +26 -0
  218. package/examples/.manic-output/993f3788-f75e-445c-ba45-c401907b3c02/job.json +26 -0
  219. package/examples/.manic-output/993f3788-f75e-445c-ba45-c401907b3c02/markers.json +13 -0
  220. package/examples/.manic-output/993f3788-f75e-445c-ba45-c401907b3c02/out.mp4 +0 -0
  221. package/examples/.manic-workbench-threads/thread_3ce7448a13f64f9e887d1bc8106a97a8.json +45 -0
  222. package/examples/.manic-workbench-threads/thread_d494cda29249477591056234719e4a3a.json +21 -0
  223. package/examples/.manic-workbench-threads/thread_e98ebdc225184ea5b8ddda8b44541f63.json +29 -0
  224. package/examples/README.md +35 -0
  225. package/examples/a-story-1.manic +222 -0
  226. package/examples/a-story.manic +100 -0
  227. package/examples/achromat-cinematic.manic +105 -0
  228. package/examples/achromat.manic +32 -0
  229. package/examples/aes-decrypt.manic +359 -0
  230. package/examples/aes-encrypt.manic +359 -0
  231. package/examples/aes-round.manic +70 -0
  232. package/examples/aes-story.manic +622 -0
  233. package/examples/ai-story.manic +118 -0
  234. package/examples/analysis.manic +53 -0
  235. package/examples/archimedes_pi.manic +89 -0
  236. package/examples/area_under_curve.manic +131 -0
  237. package/examples/art-rakkan.manic +69 -0
  238. package/examples/aspheric-lens.manic +32 -0
  239. package/examples/astronomical-watch.manic +96 -0
  240. package/examples/asymptote-randomwalk3-reference.manic +58 -0
  241. package/examples/asymptote-tiling-reference.manic +65 -0
  242. package/examples/aws-clustered-web-services.manic +186 -0
  243. package/examples/aws-event-processing-clusters-poc.manic +97 -0
  244. package/examples/aws-three-tier-web-application.manic +134 -0
  245. package/examples/band.manic +43 -0
  246. package/examples/banner.manic +37 -0
  247. package/examples/bayes.manic +27 -0
  248. package/examples/bellcurve.manic +41 -0
  249. package/examples/bfs_dfs.manic +35 -0
  250. package/examples/block-tackle.manic +26 -0
  251. package/examples/bloom-scope.manic +172 -0
  252. package/examples/boolean.manic +46 -0
  253. package/examples/boxplot-wave.manic +93 -0
  254. package/examples/boxplot.manic +43 -0
  255. package/examples/brace.manic +46 -0
  256. package/examples/brachistochrone-annotated.manic +51 -0
  257. package/examples/brachistochrone.manic +27 -0
  258. package/examples/bubble_sort.manic +41 -0
  259. package/examples/bullet-block-annotated.manic +48 -0
  260. package/examples/bullet-block.manic +11 -0
  261. package/examples/bullet-impact.manic +65 -0
  262. package/examples/bungee.manic +9 -0
  263. package/examples/c4-internet-banking-components.manic +33 -0
  264. package/examples/c4-internet-banking-containers.manic +29 -0
  265. package/examples/c4-internet-banking.manic +26 -0
  266. package/examples/c4-story.manic +171 -0
  267. package/examples/c4-test.manic +52 -0
  268. package/examples/c4-zoom.manic +69 -0
  269. package/examples/calculus-demo.manic +129 -0
  270. package/examples/calculus-one.manic +288 -0
  271. package/examples/captions.manic +31 -0
  272. package/examples/car-suspension-annotated.manic +57 -0
  273. package/examples/car-suspension.manic +8 -0
  274. package/examples/cart-pendulum.manic +11 -0
  275. package/examples/charts-bar-line.manic +26 -0
  276. package/examples/charts-column-race.manic +19 -0
  277. package/examples/charts-gdp-race.manic +43 -0
  278. package/examples/charts-german-elections.manic +28 -0
  279. package/examples/charts-line-race.manic +21 -0
  280. package/examples/circle-in-three.manic +156 -0
  281. package/examples/circle-thirds-no-triangle.manic +161 -0
  282. package/examples/clip-window.manic +34 -0
  283. package/examples/cloud-feathers.manic +50 -0
  284. package/examples/cloud-jellyfish-v2.manic +87 -0
  285. package/examples/cloud-jellyfish.manic +48 -0
  286. package/examples/cloud-kaleidoscope.manic +48 -0
  287. package/examples/cloud-koi.manic +51 -0
  288. package/examples/cloud-lissajous.manic +23 -0
  289. package/examples/cloud-medusae.manic +46 -0
  290. package/examples/cloud-phoenix.manic +49 -0
  291. package/examples/cloud-plumes.manic +47 -0
  292. package/examples/cloud-pottery.manic +104 -0
  293. package/examples/cloud-shells.manic +50 -0
  294. package/examples/cloud-starfield.manic +23 -0
  295. package/examples/cloud-wave-lattice.manic +23 -0
  296. package/examples/cloud-word.manic +31 -0
  297. package/examples/cloud3-ripple.manic +53 -0
  298. package/examples/cloud3-sphere.manic +26 -0
  299. package/examples/clt.manic +35 -0
  300. package/examples/collide-blocks-annotated.manic +45 -0
  301. package/examples/collide-blocks.manic +11 -0
  302. package/examples/compare-pendulum.manic +11 -0
  303. package/examples/complex-flowchart.manic +196 -0
  304. package/examples/compound-pulley.manic +25 -0
  305. package/examples/conics.manic +46 -0
  306. package/examples/coordinates.manic +52 -0
  307. package/examples/correlation.manic +35 -0
  308. package/examples/covariance.manic +30 -0
  309. package/examples/creator-affine-fern-growth.manic +72 -0
  310. package/examples/creator-bowl-to-saddle.manic +86 -0
  311. package/examples/creator-branch-counting-tree3.manic +77 -0
  312. package/examples/creator-chaos-game-fern.manic +72 -0
  313. package/examples/creator-circle-inversion-chain.manic +61 -0
  314. package/examples/creator-convex-hull-depth.manic +59 -0
  315. package/examples/creator-coordinate-worlds.manic +182 -0
  316. package/examples/creator-ellipse-reflection-property.manic +59 -0
  317. package/examples/creator-free-kicks.manic +261 -0
  318. package/examples/creator-geometry-language-showcase.manic +259 -0
  319. package/examples/creator-geometry-morph-promo.manic +151 -0
  320. package/examples/creator-heightmap-world.manic +130 -0
  321. package/examples/creator-hilbert3-spatial-index.manic +203 -0
  322. package/examples/creator-how-rocket-launch-works.manic +192 -0
  323. package/examples/creator-implicit-surface-parameterized.manic +51 -0
  324. package/examples/creator-incenter-dissection.manic +56 -0
  325. package/examples/creator-lattice-paths.manic +118 -0
  326. package/examples/creator-line-inversion.manic +49 -0
  327. package/examples/creator-lsystem-fractal-curve.manic +121 -0
  328. package/examples/creator-mandelbrot-escape-test.manic +58 -0
  329. package/examples/creator-monty-hall.manic +104 -0
  330. package/examples/creator-noise-story.manic +123 -0
  331. package/examples/creator-one-tile-pattern-story.manic +169 -0
  332. package/examples/creator-pathfinding.manic +82 -0
  333. package/examples/creator-point-to-plane-distance.manic +167 -0
  334. package/examples/creator-race-quiz.manic +76 -0
  335. package/examples/creator-randomwalk3-diffusion.manic +72 -0
  336. package/examples/creator-reflected-ellipse.manic +48 -0
  337. package/examples/creator-rule90-sierpinski.manic +64 -0
  338. package/examples/creator-three-shadows-of-a-curve.manic +48 -0
  339. package/examples/creator-trigonometry-one-angle.manic +307 -0
  340. package/examples/creator-v2-latex-algebra.manic +29 -0
  341. package/examples/creator-v2-latex-calculus.manic +37 -0
  342. package/examples/creator-v2-latex-physics.manic +29 -0
  343. package/examples/creator-v2-olympiad-geometry.manic +92 -0
  344. package/examples/creator-v2-options-socials.manic +21 -0
  345. package/examples/creator-v2-timers.manic +25 -0
  346. package/examples/creator-v2-timing-square.manic +25 -0
  347. package/examples/creator-v2-timing.manic +34 -0
  348. package/examples/creator-v2.manic +36 -0
  349. package/examples/creator-why-rockets-use-stages.manic +198 -0
  350. package/examples/creator-wrap-real-line.manic +51 -0
  351. package/examples/cubic-graphs.manic +432 -0
  352. package/examples/curve-features.manic +41 -0
  353. package/examples/definedmotion-fourier-gallery.manic +171 -0
  354. package/examples/derivative-of-ln-x.manic +194 -0
  355. package/examples/diagonalise.manic +56 -0
  356. package/examples/dijkstra.manic +29 -0
  357. package/examples/dimensions-unfold.manic +211 -0
  358. package/examples/disc-integration.manic +172 -0
  359. package/examples/double-incline.manic +9 -0
  360. package/examples/double-integral3.manic +43 -0
  361. package/examples/double-pendulum.manic +35 -0
  362. package/examples/double-spring.manic +9 -0
  363. package/examples/drop-mass.manic +25 -0
  364. package/examples/eigen3.manic +34 -0
  365. package/examples/equal_cuts.manic +44 -0
  366. package/examples/equation.manic +16 -0
  367. package/examples/equilateral.manic +57 -0
  368. package/examples/euler_line.manic +51 -0
  369. package/examples/exponential-shells.manic +188 -0
  370. package/examples/extrude3.manic +37 -0
  371. package/examples/factorial-flowchart.manic +69 -0
  372. package/examples/fibonacci-sphere.manic +57 -0
  373. package/examples/flow-lorenz.manic +47 -0
  374. package/examples/fourier-series-live-wave.manic +114 -0
  375. package/examples/fourier-square-wave-live.manic +114 -0
  376. package/examples/fractal_tree.manic +39 -0
  377. package/examples/frame3-grid-policies.manic +48 -0
  378. package/examples/ftc.manic +54 -0
  379. package/examples/function_graph.manic +54 -0
  380. package/examples/galton-board-process.manic +150 -0
  381. package/examples/gcp-clustered-web-services.manic +186 -0
  382. package/examples/gcp-message-collecting.manic +139 -0
  383. package/examples/geo-pythagoras-short.manic +119 -0
  384. package/examples/glsl-boxgrid.manic +105 -0
  385. package/examples/glsl-parameter.manic +30 -0
  386. package/examples/glsl-raymarch.manic +59 -0
  387. package/examples/glsl-shapes.manic +122 -0
  388. package/examples/gradient-descent-field.manic +116 -0
  389. package/examples/gradient-fastest-descent-shorts.manic +153 -0
  390. package/examples/gradient-fastest-descent.manic +125 -0
  391. package/examples/gradient-pendulum-shorts.manic +117 -0
  392. package/examples/gradient.manic +74 -0
  393. package/examples/graph.manic +45 -0
  394. package/examples/graph_moving.manic +67 -0
  395. package/examples/grid-astar.manic +15 -0
  396. package/examples/grid-life-soup.manic +31 -0
  397. package/examples/grid-life-zoo.manic +46 -0
  398. package/examples/grid-life.manic +19 -0
  399. package/examples/grid-wfc.manic +13 -0
  400. package/examples/growing-fractal-tree3.manic +58 -0
  401. package/examples/gun-shot.manic +82 -0
  402. package/examples/hashmap.manic +38 -0
  403. package/examples/heightmap3-world.manic +64 -0
  404. package/examples/heightmap3.manic +23 -0
  405. package/examples/hilbert-curve3-space-filling.manic +117 -0
  406. package/examples/hill_run.manic +71 -0
  407. package/examples/histogram.manic +43 -0
  408. package/examples/hotdog-taco.manic +147 -0
  409. package/examples/hue_wave.manic +35 -0
  410. package/examples/hypothesis.manic +32 -0
  411. package/examples/image.manic +29 -0
  412. package/examples/incircle_tangents.manic +64 -0
  413. package/examples/incline-bumper.manic +11 -0
  414. package/examples/incline-pulley.manic +11 -0
  415. package/examples/incline-showcase.manic +55 -0
  416. package/examples/inline-math.manic +16 -0
  417. package/examples/inscribed-angle-short.manic +56 -0
  418. package/examples/integral-sqrt-tanx.manic +255 -0
  419. package/examples/integrals.manic +274 -0
  420. package/examples/inverse-derivatives.manic +94 -0
  421. package/examples/k8s-cluster-components.manic +82 -0
  422. package/examples/k8s-stateful-architecture.manic +134 -0
  423. package/examples/k8s-three-tier.manic +146 -0
  424. package/examples/kapitza.manic +11 -0
  425. package/examples/latex-disintegration.manic +123 -0
  426. package/examples/lens-paper.manic +36 -0
  427. package/examples/lens-prescription.manic +33 -0
  428. package/examples/lens-system.manic +34 -0
  429. package/examples/lens.manic +31 -0
  430. package/examples/limit-infinity.manic +30 -0
  431. package/examples/limit.manic +33 -0
  432. package/examples/linear-algebra-3d.manic +50 -0
  433. package/examples/linear-algebra.manic +115 -0
  434. package/examples/linear-map.manic +39 -0
  435. package/examples/linear-map3.manic +33 -0
  436. package/examples/linear-system.manic +99 -0
  437. package/examples/linear_transform.manic +43 -0
  438. package/examples/linked_list.manic +38 -0
  439. package/examples/lln.manic +31 -0
  440. package/examples/loop-cinematic.manic +41 -0
  441. package/examples/loop-track.manic +11 -0
  442. package/examples/lorenz-attractor.manic +55 -0
  443. package/examples/lorenz-shells.manic +43 -0
  444. package/examples/lost-in-patterns.manic +149 -0
  445. package/examples/lsystem-asymptote-curves.manic +81 -0
  446. package/examples/manic-ml-activation-focus.manic +133 -0
  447. package/examples/manic-ml-cnn-edge-story.manic +102 -0
  448. package/examples/manic-ml-forward-pass.manic +93 -0
  449. package/examples/manic-ml-learning-step.manic +116 -0
  450. package/examples/manic-ml-logits-sampling.manic +112 -0
  451. package/examples/manic-ml-scalar-to-tensor.manic +143 -0
  452. package/examples/manic-ml-token-embedding.manic +110 -0
  453. package/examples/manic-ml-transformer-attention.manic +102 -0
  454. package/examples/manic-ml-transformer-block.manic +116 -0
  455. package/examples/manic-promo.manic +64 -0
  456. package/examples/map-attractor.manic +45 -0
  457. package/examples/mask-lens.manic +33 -0
  458. package/examples/matrix.manic +37 -0
  459. package/examples/matrix3.manic +101 -0
  460. package/examples/matrix_addition.manic +66 -0
  461. package/examples/matrix_addition_plane.manic +91 -0
  462. package/examples/maxwell-boltzmann-effusion-v2.manic +142 -0
  463. package/examples/maxwell-boltzmann-process.manic +86 -0
  464. package/examples/microservices-platform.manic +140 -0
  465. package/examples/molecule.manic +8 -0
  466. package/examples/morph-icons.manic +29 -0
  467. package/examples/morph.manic +29 -0
  468. package/examples/morph3.manic +49 -0
  469. package/examples/motion-flow-foundation.manic +148 -0
  470. package/examples/motion-graphics-v2-story.manic +189 -0
  471. package/examples/motion-graphics-v2.manic +81 -0
  472. package/examples/motion-graphics.manic +81 -0
  473. package/examples/multivariable3.manic +26 -0
  474. package/examples/mystory.manic +9 -0
  475. package/examples/newton.manic +39 -0
  476. package/examples/newtons-cradle.manic +10 -0
  477. package/examples/nine_point.manic +59 -0
  478. package/examples/noise-terrain.manic +16 -0
  479. package/examples/off-axis.manic +32 -0
  480. package/examples/onprem-advanced-web-service-v2.manic +196 -0
  481. package/examples/onprem-advanced-web-service.manic +175 -0
  482. package/examples/orthocenter.manic +63 -0
  483. package/examples/param3.manic +43 -0
  484. package/examples/parameter-journeys.manic +154 -0
  485. package/examples/parameterized-field-advection.manic +57 -0
  486. package/examples/parameterized-generated-families3.manic +83 -0
  487. package/examples/particles-flow.manic +61 -0
  488. package/examples/pascal-triangle.manic +92 -0
  489. package/examples/pendulum-annotated.manic +72 -0
  490. package/examples/pendulum-damped.manic +35 -0
  491. package/examples/pendulum.manic +38 -0
  492. package/examples/perfect-reel.manic +43 -0
  493. package/examples/pie.manic +41 -0
  494. package/examples/pieday.manic +113 -0
  495. package/examples/piston.manic +7 -0
  496. package/examples/popkorn-field.manic +38 -0
  497. package/examples/prism-cinematic.manic +36 -0
  498. package/examples/prism.manic +32 -0
  499. package/examples/probability.manic +57 -0
  500. package/examples/process-branching-dispatch.manic +71 -0
  501. package/examples/process-stream-observe.manic +54 -0
  502. package/examples/projection.manic +57 -0
  503. package/examples/prompt-test-10.manic +257 -0
  504. package/examples/prompt-test-11.manic +168 -0
  505. package/examples/prompt-test-12.manic +177 -0
  506. package/examples/prompt-test-13.manic +228 -0
  507. package/examples/prompt-test-14.manic +319 -0
  508. package/examples/prompt-test-15.manic +325 -0
  509. package/examples/prompt-test-16.manic +252 -0
  510. package/examples/prompt-test-2.manic +239 -0
  511. package/examples/prompt-test-3.manic +336 -0
  512. package/examples/prompt-test-4.manic +195 -0
  513. package/examples/prompt-test-5.manic +223 -0
  514. package/examples/prompt-test-6.manic +222 -0
  515. package/examples/prompt-test-7.manic +156 -0
  516. package/examples/prompt-test-8.manic +266 -0
  517. package/examples/prompt-test-9.manic +171 -0
  518. package/examples/prompt-test.manic +158 -0
  519. package/examples/pulley-annotated.manic +54 -0
  520. package/examples/pulley-paper.manic +52 -0
  521. package/examples/pulley-scale.manic +23 -0
  522. package/examples/pulley.manic +24 -0
  523. package/examples/quadratic-formula-continuity.manic +110 -0
  524. package/examples/quiz-euler.manic +52 -0
  525. package/examples/quiz-geometry-2.manic +107 -0
  526. package/examples/quiz-geometry.manic +108 -0
  527. package/examples/quiz-skins.manic +22 -0
  528. package/examples/raft-cm.manic +24 -0
  529. package/examples/ramp.manic +25 -0
  530. package/examples/ray-fan.manic +27 -0
  531. package/examples/raymarch-alpha.manic +39 -0
  532. package/examples/raymarch-boxgrid.manic +47 -0
  533. package/examples/raymarch-docker-latency.manic +74 -0
  534. package/examples/raymarch-metaballs.manic +37 -0
  535. package/examples/raymarch-sculpture.manic +39 -0
  536. package/examples/raymarch-shapes3.manic +31 -0
  537. package/examples/reactive-integral.manic +172 -0
  538. package/examples/reactive-math-journey.manic +185 -0
  539. package/examples/reactive-math-notation.manic +150 -0
  540. package/examples/reactive-multiformat.manic +130 -0
  541. package/examples/reactive-world.manic +111 -0
  542. package/examples/refraction-paper.manic +40 -0
  543. package/examples/refraction.manic +32 -0
  544. package/examples/resonance.manic +10 -0
  545. package/examples/rewrite-exponential-cubic.manic +141 -0
  546. package/examples/rewrite-integration.manic +199 -0
  547. package/examples/riemann_rainbow.manic +61 -0
  548. package/examples/riemann_readout.manic +61 -0
  549. package/examples/robot-arm.manic +25 -0
  550. package/examples/rref.manic +48 -0
  551. package/examples/second-law-thermodynamics.manic +385 -0
  552. package/examples/series-parallel-springs.manic +8 -0
  553. package/examples/serverless-processing.manic +145 -0
  554. package/examples/shader-cellular.manic +35 -0
  555. package/examples/shader-fractal.manic +45 -0
  556. package/examples/shader-fx.manic +34 -0
  557. package/examples/shader-glitch-grid.manic +55 -0
  558. package/examples/shader-parameter.manic +25 -0
  559. package/examples/shader-patterns.manic +37 -0
  560. package/examples/shader-plasma.manic +43 -0
  561. package/examples/shader-shapes-dsl.manic +46 -0
  562. package/examples/shader-shapes.manic +37 -0
  563. package/examples/shader-warp.manic +22 -0
  564. package/examples/shapes-howto.manic +411 -0
  565. package/examples/sine_wave.manic +42 -0
  566. package/examples/skew.manic +40 -0
  567. package/examples/smoke.rs +57 -0
  568. package/examples/solids3.manic +22 -0
  569. package/examples/some-story.manic +299 -0
  570. package/examples/spinning-cylinder-flow.manic +87 -0
  571. package/examples/spline.manic +21 -0
  572. package/examples/spot-diagram.manic +32 -0
  573. package/examples/spring-annotated.manic +60 -0
  574. package/examples/spring-chain.manic +11 -0
  575. package/examples/spring-damped.manic +33 -0
  576. package/examples/spring-incline.manic +10 -0
  577. package/examples/spring-paper.manic +46 -0
  578. package/examples/spring-pendulum.manic +14 -0
  579. package/examples/spring.manic +33 -0
  580. package/examples/sqrt-tanx.manic +217 -0
  581. package/examples/ssl-handshake-sdf.manic +116 -0
  582. package/examples/stack_queue.manic +53 -0
  583. package/examples/statistics.manic +60 -0
  584. package/examples/story-addressable-asset-cues.manic +71 -0
  585. package/examples/story-dependent-chain-history.manic +56 -0
  586. package/examples/story-living-dependency-cloud.manic +50 -0
  587. package/examples/story-time-varying-field3.manic +57 -0
  588. package/examples/story.manic +4 -0
  589. package/examples/string-art-breath.manic +70 -0
  590. package/examples/string-wave.manic +10 -0
  591. package/examples/summary.manic +48 -0
  592. package/examples/svg-howto.manic +172 -0
  593. package/examples/svg-import.manic +18 -0
  594. package/examples/systems-architecture-poc.manic +92 -0
  595. package/examples/systems-arrow-patterns.manic +151 -0
  596. package/examples/systems-foundation.manic +71 -0
  597. package/examples/systems-rabbitmq-consumers.manic +118 -0
  598. package/examples/table.manic +39 -0
  599. package/examples/table_braces.manic +54 -0
  600. package/examples/tangent-length-short.manic +57 -0
  601. package/examples/tangent.manic +29 -0
  602. package/examples/tangents.manic +54 -0
  603. package/examples/taylor.manic +44 -0
  604. package/examples/terminal_boot.manic +40 -0
  605. package/examples/test.manic +61 -0
  606. package/examples/text-guide.manic +304 -0
  607. package/examples/textbook-coordinate-worlds.manic +129 -0
  608. package/examples/textbook-doubly-list.manic +33 -0
  609. package/examples/textbook-function-to-solid.manic +126 -0
  610. package/examples/textbook-geometry-dimension-reduction.manic +129 -0
  611. package/examples/textbook-incline-fbd.manic +43 -0
  612. package/examples/textbook-length-area-volume.manic +137 -0
  613. package/examples/textbook-matrix-inverses.manic +172 -0
  614. package/examples/textbook-pulley.manic +35 -0
  615. package/examples/textbook-statistical-dimensions.manic +151 -0
  616. package/examples/textbook-tension.manic +39 -0
  617. package/examples/textbook-watermelon-sections.manic +216 -0
  618. package/examples/thales-semicircle-short.manic +53 -0
  619. package/examples/three-d-v2-lab.manic +83 -0
  620. package/examples/three-d-v2-story.manic +106 -0
  621. package/examples/three-d-v2.manic +69 -0
  622. package/examples/three_d.manic +39 -0
  623. package/examples/timing-v2-scene.manic +47 -0
  624. package/examples/trajectory.manic +28 -0
  625. package/examples/transform_copy.manic +35 -0
  626. package/examples/transforms.manic +54 -0
  627. package/examples/trapped-light-dimensions.manic +226 -0
  628. package/examples/tree-of-leaves.manic +215 -0
  629. package/examples/triangle.manic +68 -0
  630. package/examples/two_person_walk.manic +296 -0
  631. package/examples/two_pointer.manic +32 -0
  632. package/examples/type-to-sdf.manic +139 -0
  633. package/examples/typewriter.manic +28 -0
  634. package/examples/vector_field.manic +32 -0
  635. package/examples/vertical-spring.manic +10 -0
  636. package/examples/volume3.manic +21 -0
  637. package/examples/volumes-solid-of-revolution.manic +111 -0
  638. package/examples/walk.manic +154 -0
  639. package/examples/wheel-duo.manic +91 -0
  640. package/examples/wheel-radial.manic +78 -0
  641. package/examples/wheel-square.manic +83 -0
  642. package/examples/wireframe-spheres.manic +37 -0
  643. package/examples/zeroth-law-thermodynamics.manic +269 -0
  644. package/package.json +59 -0
@@ -0,0 +1,196 @@
1
+ title("Deployment Pipeline — Many Decisions & Loops");
2
+ // Stress test: 7 decisions and several back-edges — some loop to an earlier step,
3
+ // one loops all the way back to `start`. `flowchart` still auto-wraps into
4
+ // side-by-side columns; forward edges are clean elbows, backward edges (loops,
5
+ // column wraps) arc as curves. No coordinates.
6
+ canvas("16:9");
7
+ template("mono");
8
+
9
+ let u = (w+h-abs(w-h))/1440;
10
+ watermark(mark, (w*0.15, h*0.04), "Made With Manic");
11
+ text(kicker, (cx, h*0.055), "DIAGRAMS · FLOWCHART · DECISIONS & LOOPS");
12
+ text(headline, (cx, h*0.12), "Seven decisions, five loops, one chart");
13
+ size(kicker, 15*u); color(kicker, dim); bold(kicker);
14
+ size(headline, 23*u); bold(headline); wrap(headline, w*0.86);
15
+
16
+ flowchart(cd, auto, 40);
17
+ node(start, cd, "terminator", "start");
18
+ node(checkout, cd, "io", "checkout");
19
+ node(install, cd, "process", "install deps");
20
+ node(build, cd, "process", "build");
21
+ node(bok, cd, "decision", "build ok?");
22
+ node(fix, cd, "process", "fix build");
23
+ node(unit, cd, "process", "unit tests");
24
+ node(uok, cd, "decision", "tests pass?");
25
+ node(debug, cd, "process", "debug");
26
+ node(integ, cd, "process", "integration");
27
+ node(iok, cd, "decision", "integ ok?");
28
+ node(scan, cd, "process", "security scan");
29
+ node(sok, cd, "decision", "scan clean?");
30
+ node(patch, cd, "process", "patch deps");
31
+ node(stage, cd, "process", "deploy staging");
32
+ node(smoke, cd, "process", "smoke test");
33
+ node(smok, cd, "decision", "smoke ok?");
34
+ node(approve, cd, "decision", "approve prod?");
35
+ node(hold, cd, "terminator", "held");
36
+ node(roll, cd, "process", "rollback");
37
+ node(prod, cd, "process", "deploy prod");
38
+ node(health, cd, "decision", "healthy?");
39
+ node(notify, cd, "process", "notify team");
40
+ node(done, cd, "terminator", "shipped");
41
+
42
+ connect(e1, start, checkout);
43
+ connect(e2, checkout, install);
44
+ connect(e3, install, build);
45
+ connect(e4, build, bok);
46
+ connect(e5, bok, unit); // yes
47
+ connect(e6, bok, fix); // no
48
+ connect(e7, fix, build); // loop -> build
49
+ connect(e8, unit, uok);
50
+ connect(e9, uok, integ); // yes
51
+ connect(e10, uok, debug); // no
52
+ connect(e11, debug, build); // loop -> build
53
+ connect(e12, integ, iok);
54
+ connect(e13, iok, scan); // yes
55
+ connect(e14, iok, debug); // no -> debug (which loops to build)
56
+ connect(e15, scan, sok);
57
+ connect(e16, sok, stage); // yes
58
+ connect(e17, sok, patch); // no
59
+ connect(e18, patch, scan); // loop -> scan
60
+ connect(e19, stage, smoke);
61
+ connect(e20, smoke, smok);
62
+ connect(e21, smok, approve); // yes
63
+ connect(e22, smok, roll); // no
64
+ connect(e23, roll, start); // loop -> start (all the way back)
65
+ connect(e24, approve, prod); // yes
66
+ connect(e25, approve, hold); // no
67
+ connect(e26, prod, health);
68
+ connect(e27, health, notify); // yes
69
+ connect(e28, health, roll); // no -> rollback
70
+ connect(e29, notify, done);
71
+
72
+ // forward = proceed, back-edges = loops/failures
73
+ color(e6, magenta); color(e6.hot, magenta);
74
+ color(e10, magenta); color(e10.hot, magenta);
75
+ color(e14, magenta); color(e14.hot, magenta);
76
+ color(e17, magenta); color(e17.hot, magenta);
77
+ color(e22, magenta); color(e22.hot, magenta);
78
+ color(e28, magenta); color(e28.hot, magenta);
79
+ color(e7, gold); color(e7.hot, gold);
80
+ color(e11, gold); color(e11.hot, gold);
81
+ color(e18, gold); color(e18.hot, gold);
82
+ color(e23, gold); color(e23.hot, gold);
83
+ annotate(e5, "yes"); annotate(e6, "no");
84
+ annotate(e9, "yes"); annotate(e10, "no");
85
+ annotate(e16, "yes"); annotate(e17, "no");
86
+ annotate(e21, "yes"); annotate(e22, "no");
87
+ annotate(e24, "yes"); annotate(e25, "no");
88
+ annotate(e27, "yes"); annotate(e28, "no");
89
+
90
+ text(k1, (w*0.36, h*0.94), "— proceed"); size(k1, 13*u); color(k1, fg); bold(k1);
91
+ text(k2, (w*0.52, h*0.94), "— reject"); size(k2, 13*u); color(k2, magenta); bold(k2);
92
+ text(k3, (w*0.66, h*0.94), "— loop back"); size(k3, 13*u); color(k3, gold); bold(k3);
93
+
94
+ // Two tokens per round, released together — they share the pipeline, then split
95
+ // at a decision and reach different ends. Two rounds, then done.
96
+ request(a1, start, "PR-A"); request(b1, start, "PR-B"); // round 1
97
+ request(a2, start, "PR-C"); request(b2, start, "PR-D"); // round 2
98
+ hidden(cd.nodes);
99
+ untraced(cd.connections); // edges start undrawn — we draw them as we build
100
+ hidden(a1.parts); hidden(b1.parts); hidden(a2.parts); hidden(b2.parts);
101
+
102
+ // Build the chart the way you'd draw it: each box appears in flow order and the
103
+ // edge into it draws first, so you watch the whole pipeline take shape — then the
104
+ // tokens run it. Best way to learn how a flowchart is put together.
105
+ step("build-chart") {
106
+ seq {
107
+ show(start, 0.3);
108
+ draw(e1, 0.14); show(checkout, 0.18);
109
+ draw(e2, 0.14); show(install, 0.18);
110
+ draw(e3, 0.14); show(build, 0.18);
111
+ draw(e4, 0.14); show(bok, 0.18);
112
+ draw(e5, 0.14); show(unit, 0.18);
113
+ draw(e6, 0.14); show(fix, 0.18);
114
+ draw(e8, 0.14); show(uok, 0.18);
115
+ draw(e9, 0.14); show(integ, 0.18);
116
+ draw(e10, 0.14); show(debug, 0.18);
117
+ draw(e12, 0.14); show(iok, 0.18);
118
+ draw(e13, 0.14); show(scan, 0.18);
119
+ draw(e14, 0.14); // iok no → debug (already shown)
120
+ draw(e15, 0.14); show(sok, 0.18);
121
+ draw(e16, 0.14); show(stage, 0.18);
122
+ draw(e17, 0.14); show(patch, 0.18);
123
+ draw(e19, 0.14); show(smoke, 0.18);
124
+ draw(e20, 0.14); show(smok, 0.18);
125
+ draw(e21, 0.14); show(approve, 0.18);
126
+ draw(e22, 0.14); show(roll, 0.18);
127
+ draw(e24, 0.14); show(prod, 0.18);
128
+ draw(e25, 0.14); show(hold, 0.18);
129
+ draw(e26, 0.14); show(health, 0.18);
130
+ draw(e27, 0.14); show(notify, 0.18);
131
+ draw(e28, 0.14); // health no → roll (already shown)
132
+ draw(e29, 0.14); show(done, 0.18);
133
+ // feedback loops complete the picture last
134
+ draw(e7, 0.22); draw(e11, 0.22); draw(e18, 0.22); draw(e23, 0.35);
135
+ }
136
+ }
137
+ wait(0.5);
138
+
139
+ // Round 1 — two PRs race the pipeline in parallel. They ride together until the
140
+ // smoke test, where A ships and B fails and rolls back around to the start.
141
+ step("round-1") {
142
+ par {
143
+ seq {
144
+ show(a1.parts, 0.2);
145
+ route(a1, e1, 0.22, smooth); route(a1, e2, 0.22, smooth); route(a1, e3, 0.22, smooth);
146
+ route(a1, e4, 0.22, smooth); route(a1, e5, 0.22, smooth); route(a1, e8, 0.22, smooth);
147
+ route(a1, e9, 0.22, smooth); route(a1, e12, 0.22, smooth); route(a1, e13, 0.22, smooth);
148
+ route(a1, e15, 0.22, smooth); route(a1, e16, 0.22, smooth); route(a1, e19, 0.22, smooth);
149
+ route(a1, e20, 0.22, smooth); route(a1, e21, 0.22, smooth); route(a1, e24, 0.22, smooth);
150
+ route(a1, e26, 0.22, smooth); route(a1, e27, 0.22, smooth); route(a1, e29, 0.3, smooth);
151
+ }
152
+ seq {
153
+ show(b1.parts, 0.2);
154
+ route(b1, e1, 0.22, smooth); route(b1, e2, 0.22, smooth); route(b1, e3, 0.22, smooth);
155
+ route(b1, e4, 0.22, smooth); route(b1, e5, 0.22, smooth); route(b1, e8, 0.22, smooth);
156
+ route(b1, e9, 0.22, smooth); route(b1, e12, 0.22, smooth); route(b1, e13, 0.22, smooth);
157
+ route(b1, e15, 0.22, smooth); route(b1, e16, 0.22, smooth); route(b1, e19, 0.22, smooth);
158
+ route(b1, e20, 0.22, smooth);
159
+ route(b1, e22, 0.35, smooth); // smoke ok? no → rollback
160
+ route(b1, e23, 0.8, smooth); // rollback → start (around the perimeter)
161
+ }
162
+ }
163
+ }
164
+ wait(0.6);
165
+ step("clear-1") {
166
+ par { fade(a1.parts, 0.3); fade(b1.parts, 0.3); to(cd.hotpaths, trace, 0, 0.4); }
167
+ }
168
+ wait(0.3);
169
+
170
+ // Round 2 — another pair. They split at the unit-test gate: C carries on but is
171
+ // held at approval, while D fails its tests and loops back to rebuild.
172
+ step("round-2") {
173
+ par {
174
+ seq {
175
+ show(a2.parts, 0.2);
176
+ route(a2, e1, 0.22, smooth); route(a2, e2, 0.22, smooth); route(a2, e3, 0.22, smooth);
177
+ route(a2, e4, 0.22, smooth); route(a2, e5, 0.22, smooth); route(a2, e8, 0.22, smooth);
178
+ route(a2, e9, 0.22, smooth); route(a2, e12, 0.22, smooth); route(a2, e13, 0.22, smooth);
179
+ route(a2, e15, 0.22, smooth); route(a2, e16, 0.22, smooth); route(a2, e19, 0.22, smooth);
180
+ route(a2, e20, 0.22, smooth); route(a2, e21, 0.25, smooth);
181
+ route(a2, e25, 0.35, smooth); // approve prod? no → held
182
+ }
183
+ seq {
184
+ show(b2.parts, 0.2);
185
+ route(b2, e1, 0.22, smooth); route(b2, e2, 0.22, smooth); route(b2, e3, 0.22, smooth);
186
+ route(b2, e4, 0.22, smooth); route(b2, e5, 0.22, smooth); route(b2, e8, 0.22, smooth);
187
+ route(b2, e10, 0.35, smooth); // tests pass? no → debug
188
+ route(b2, e11, 0.6, smooth); // debug → build (loop back)
189
+ }
190
+ }
191
+ }
192
+ wait(0.6);
193
+ step("clear-2") {
194
+ par { fade(a2.parts, 0.3); fade(b2.parts, 0.3); to(cd.hotpaths, trace, 0, 0.4); }
195
+ }
196
+ wait(1.0);
@@ -0,0 +1,25 @@
1
+ // ============================================================================
2
+ // compound-pulley.manic — fixed + movable pulley, three masses (physics L1)
3
+ // ----------------------------------------------------------------------------
4
+ // `compoundpulley(id, [center], [mA], [mB], [mC], [unit])` — a fixed top pulley
5
+ // carries mass A on one side and a MOVABLE lower pulley on the other; the movable
6
+ // pulley carries masses B and C. The string constraints link them: a_A = −a_P and
7
+ // a_B + a_C = 2·a_P (the massless movable pulley gives T₁ = 2·T₂). Static exactly
8
+ // when mA = mB + mC. PRE-SIMULATED with RK4; `run(id,[dur])` replays it.
9
+ //
10
+ // TO ADAPT: set mA = mB + mC and it balances; make A heavier and it hauls B, C up.
11
+ // ============================================================================
12
+
13
+ title("Compound pulley — fixed + movable, masses A, B, C");
14
+ canvas("16:9");
15
+
16
+ text(hdr, (cx, 40), "Compound pulley — heavier A hauls B and C upward");
17
+ size(hdr, 23); color(hdr, cyan); bold(hdr); display(hdr);
18
+
19
+ compoundpulley(cp, (470, 120), 5, 2, 2);
20
+ energygraph(cp, (1010, 330), 120);
21
+
22
+ text(cap, (cx, h - 32), "A (5 kg) > B+C (4 kg): A sinks, the movable pulley rises, B and C are pulled up together");
23
+ size(cap, 15); color(cap, dim); display(cap);
24
+
25
+ run(cp, 4);
@@ -0,0 +1,46 @@
1
+ // The Conic Sections — the three curves you get by slicing a cone: the ellipse,
2
+ // the parabola, and the hyperbola. Each is a geo-kit primitive; they reveal one
3
+ // at a time with the defining property.
4
+ //
5
+ // manic examples/conics.manic
6
+ // manic examples/conics.manic --template blueprint
7
+
8
+ title("The Conic Sections");
9
+ canvas("16:9");
10
+
11
+ text(head, (cx, 80), "three curves from slicing a cone");
12
+ display(head); color(head, cyan); size(head, 26); hidden(head);
13
+ text(cap, (cx, 662), ""); color(cap, dim); size(cap, 23);
14
+
15
+ // --- ellipse (left) ---
16
+ ellipse(el, (300, 400), 165, 100); color(el, cyan); stroke(el, 3); untraced(el);
17
+ text(ell, (300, 250), "ellipse"); color(ell, cyan); size(ell, 26); hidden(ell);
18
+
19
+ // --- parabola (centre) ---
20
+ parabola(pa, (660, 540), 150, 270); color(pa, lime); stroke(pa, 3); untraced(pa);
21
+ text(pal, (660, 235), "parabola"); color(pal, lime); size(pal, 26); hidden(pal);
22
+
23
+ // --- hyperbola (right) — two branches, tagged `hy` ---
24
+ hyperbola(hy, (1010, 400), 55, 120); color(hy, magenta); stroke(hy, 3); untraced(hy);
25
+ text(hyl, (1010, 205), "hyperbola"); color(hyl, magenta); size(hyl, 26); hidden(hyl);
26
+
27
+ // --- reveal ---
28
+ show(head, 0.5);
29
+
30
+ section("Ellipse");
31
+ say(cap, "ellipse -- the sum of distances to two foci stays constant");
32
+ draw(el, 0.9);
33
+ show(ell, 0.4);
34
+ wait(0.5);
35
+
36
+ section("Parabola");
37
+ say(cap, "parabola -- every point is equidistant from a focus and a line");
38
+ draw(pa, 0.9);
39
+ show(pal, 0.4);
40
+ wait(0.5);
41
+
42
+ section("Hyperbola");
43
+ say(cap, "hyperbola -- two branches; the difference of distances stays constant");
44
+ draw(hy, 0.9);
45
+ show(hyl, 0.4);
46
+ wait(1.4);
@@ -0,0 +1,52 @@
1
+ // Coordinate Systems — a guided tour of manic's four coordinate frames:
2
+ // Axes (ticks + labels), NumberPlane, PolarPlane, and ComplexPlane. Each frame
3
+ // fades in, holds, then clears before the next — one centre, four lenses.
4
+ //
5
+ // manic examples/coordinates.manic
6
+ // manic examples/coordinates.manic --record out --fps 60
7
+
8
+ title("Coordinate Systems");
9
+ canvas(1280, 720);
10
+
11
+ text(head, (640, 120), "four ways to draw a plane");
12
+ display(head); color(head, cyan); size(head, 28); hidden(head);
13
+ text(cap, (640, 640), ""); color(cap, dim); size(cap, 24);
14
+
15
+ // --- the four systems, all centred; each starts hidden ---
16
+ axes(ax, (640, 384), 540, 210, 45); // + tick marks and integer labels
17
+ plot(wave, (640, 384), 45, 45, sin, 7); // y = sin(x) drawn on the axes
18
+ color(wave, magenta); untraced(wave); hidden(ax);
19
+
20
+ plane(pl, (640, 384), 560, 230, 56); hidden(pl);
21
+ polarplane(pp, (640, 384), 230, 5, 16); hidden(pp);
22
+ complexplane(cp, (640, 384), 560, 230, 56); hidden(cp);
23
+
24
+ // --- 1. Axes ---
25
+ show(head, 0.5);
26
+ section("Axes");
27
+ say(cap, "a numbered cross — tick marks every unit");
28
+ show(ax, 0.7);
29
+ say(cap, "plot y = sin(x) on it");
30
+ draw(wave, 1.1);
31
+ wait(0.9);
32
+ par { fade(ax, 0.4); fade(wave, 0.4); }
33
+
34
+ // --- 2. NumberPlane ---
35
+ section("Number Plane");
36
+ say(cap, "a full cartesian grid");
37
+ show(pl, 0.7);
38
+ wait(1.0);
39
+ fade(pl, 0.4);
40
+
41
+ // --- 3. PolarPlane ---
42
+ section("Polar Plane");
43
+ say(cap, "concentric rings and radial spokes — angle and radius");
44
+ show(pp, 0.7);
45
+ wait(1.0);
46
+ fade(pp, 0.4);
47
+
48
+ // --- 4. ComplexPlane ---
49
+ section("Complex Plane");
50
+ say(cap, "the same grid, read as real and imaginary parts");
51
+ show(cp, 0.7);
52
+ wait(1.4);
@@ -0,0 +1,35 @@
1
+ // ============================================================================
2
+ // correlation.manic — how strongly two variables move together (stats T3)
3
+ // ----------------------------------------------------------------------------
4
+ // `correlation(id, (cx,cy), unit, "x1 y1 x2 y2 …", [color])` scatters the
5
+ // points, fits the best line, and reports the **Pearson correlation r** with a
6
+ // strong/moderate/weak · positive/negative reading. `unit` = pixels per data
7
+ // unit (x and y share it, so use data with comparable ranges). Points
8
+ // `{id}.p{k}` (tagged `{id}.points`), the fit `{id}.line`, and `{id}.r`.
9
+ //
10
+ // TO ADAPT: paste your paired data. r near ±1 = a tight line; near 0 = a blob.
11
+ // ============================================================================
12
+
13
+ title("Correlation: do they move together?");
14
+ canvas("16:9");
15
+
16
+ text(hdr, (cx, 70), "hours studied vs grade (out of 10)");
17
+ size(hdr, 24); color(hdr, cyan); bold(hdr); display(hdr);
18
+
19
+ correlation(co, (cx, cy - 10), 42,
20
+ "1 3 2 4 3 4 4 6 5 6 6 7 7 8 8 8 9 10 10 9");
21
+ hidden(co.points); untraced(co.line); hidden(co.r);
22
+
23
+ text(cap, (cx, h - 46), ""); size(cap, 22); color(cap, dim); display(cap);
24
+
25
+ say(cap, "each dot is one student: hours studied, and the grade they got", 0.5);
26
+ show(co.points, 0.6);
27
+ wait(1.3);
28
+
29
+ say(cap, "the cloud slopes up — more study tends to mean a higher grade", 0.5);
30
+ draw(co.line, 0.9);
31
+ wait(1.3);
32
+
33
+ say(cap, "r measures how tightly the points track that line: near +1 is strong", 0.5);
34
+ show(co.r, 0.4); pulse(co.r);
35
+ wait(1.8);
@@ -0,0 +1,30 @@
1
+ // ============================================================================
2
+ // covariance.manic — covariance as signed area (stats Tier 5)
3
+ // ----------------------------------------------------------------------------
4
+ // `covariance(id, (cx,cy), unit, "x1 y1 x2 y2 …", [color])` — a cross at the
5
+ // means splits the plane into quadrants; each point draws a rectangle to the
6
+ // mean-corner, cyan where (x-x̄)(y-ȳ) > 0 (agreeing) and magenta where negative.
7
+ // Their signed-area balance IS the covariance. `{id}.points`, `{id}.rects`,
8
+ // `{id}.cross`, `{id}.cov`.
9
+ // ============================================================================
10
+
11
+ title("Covariance: signed area about the mean");
12
+ canvas("16:9");
13
+
14
+ covariance(cv, (cx, cy - 10), 34, "1 2 2 1 3 4 4 3 5 6 6 5 7 8 8 7 9 9");
15
+ hidden(cv.points); hidden(cv.rects);
16
+ untraced(cv.crossv); untraced(cv.crossh);
17
+ hidden(cv.cov);
18
+
19
+ text(cap, (cx, h - 46), ""); size(cap, 22); color(cap, dim); display(cap);
20
+
21
+ say(cap, "mark each point, then draw the cross at the mean of x and the mean of y", 0.5);
22
+ show(cv.points, 0.5);
23
+ par { draw(cv.crossv, 0.5); draw(cv.crossh, 0.5); }
24
+ wait(1.4);
25
+ say(cap, "each point makes a rectangle to the centre — cyan if x and y agree", 0.5);
26
+ to(cv.rects, opacity, 0.13, 0.7);
27
+ wait(1.6);
28
+ say(cap, "more agreeing (cyan) area than disagreeing = positive covariance", 0.5);
29
+ show(cv.cov, 0.4);
30
+ wait(1.9);
@@ -0,0 +1,72 @@
1
+ // Existing-Manic treatment of fractales/fig0040.asy.
2
+ // Problem: how can one stem become a fern? Solution: reuse one recursive rule.
3
+
4
+ title("One Rule Grows a Fern");
5
+ canvas("9:16");
6
+ template("black");
7
+ creator(me,"@anish2good name=Manic_Generative tagline=Rules_made_visible yt=zarigatongy x=@anish2good web=8gwifi.org/manic accent=cyan secondary=lime footer=compact cta=Grow_your_own safe=clean");
8
+ socials(me);
9
+ watermark(mark,(w*0.16,h*0.055),"Made With Manic");
10
+ endcard(me,"title=Turn_Rules_Into_Stories cta=8gwifi.org/manic");
11
+
12
+ let u=(w+h-abs(w-h))/1080;
13
+ text(kicker,(cx,h*0.11),"MANIC · RECURSIVE GEOMETRY");
14
+ text(head,(cx,h*0.17),"How can one stem grow a fern?");
15
+ text(caption,(cx,h*0.79),"Start with one segment. At every tip, keep growing and add two leaves.");
16
+ text(rule,(cx,h*0.72),"stem → stem + left leaf + right leaf");
17
+ size(kicker,20*u); bold(kicker); color(kicker,cyan);
18
+ size(head,27*u); bold(head); wrap(head,w*0.76);
19
+ size(caption,20*u); bold(caption); wrap(caption,w*0.74); color(caption,dim);
20
+ size(rule,21*u); bold(rule); wrap(rule,w*0.76); color(rule,gold);
21
+
22
+ def fern(k,x,y,ang,len,depth) {
23
+ if depth > 0 && len > 3 {
24
+ let x2=x+len*cos(ang);
25
+ let y2=y-len*sin(ang);
26
+ line(stem{k},(x,y),(x2,y2));
27
+ stroke(stem{k},1+depth*0.34);
28
+ hue(stem{k},118+depth*7);
29
+ tag(stem{k},fernAll);
30
+ fern(3*k,x2,y2,ang+0.08,len*0.83,depth-1);
31
+ fern(3*k+1,x2,y2,ang+0.92,len*0.43,depth-2);
32
+ fern(3*k+2,x2,y2,ang-0.92,len*0.43,depth-2);
33
+ }
34
+ }
35
+
36
+ fern(1,cx,h*0.67,1.5708,112*u,9);
37
+ untraced(fernAll); hidden(kicker); hidden(head); hidden(rule); hidden(caption);
38
+
39
+ step("pose the problem") {
40
+ par { show(kicker,0.35); show(head,0.45); show(rule,0.45); show(caption,0.40); }
41
+ }
42
+ wait(0.85);
43
+ step("grow the recursive solution") {
44
+ par {
45
+ draw(fernAll,3.2,smooth);
46
+ say(caption,"Each new segment is smaller and slightly turned, so the same rule creates organic detail.",0.45,smooth);
47
+ }
48
+ }
49
+ wait(0.95);
50
+ step("read the repeated structure") {
51
+ par {
52
+ pulse(fernAll,0.90);
53
+ say(caption,"Zoom in anywhere: a branch resembles the whole fern because every generation reuses the same three choices.",0.60,smooth);
54
+ }
55
+ }
56
+ wait(1.0);
57
+ step("connect rule to shape") {
58
+ say(rule,"shorter length + limited turning → a bounded self-similar fern",0.60,smooth);
59
+ }
60
+ wait(0.9);
61
+ step("answer") {
62
+ par {
63
+ say(head,"One local rule creates the whole fern.",0.45,smooth);
64
+ say(caption,"Recursion supplies complexity; Manic keeps the story readable.",0.40,smooth);
65
+ pulse(fernAll,0.85);
66
+ }
67
+ }
68
+ wait(1.25);
69
+ step("cta") {
70
+ par { fade(kicker,0.3); fade(head,0.3); fade(rule,0.3); fade(caption,0.3); fade(fernAll,0.45); fade(me.footer,0.3); show(me.endcard,0.6); }
71
+ }
72
+ wait(2.2);
@@ -0,0 +1,86 @@
1
+ // CREATOR SHORT — a real calculus problem told through one continuously
2
+ // deforming surface. The shape is not replaced between the bowl, threshold,
3
+ // and saddle states.
4
+
5
+ title("When Does a Bowl Become a Saddle?");
6
+ canvas("9:16");
7
+ template("paper");
8
+
9
+ creator(me, "@anish2good name=Manic_Math tagline=Equations_that_move yt=zarigatongy x=@anish2good web=8gwifi.org/manic accent=cyan secondary=magenta footer=signature cta=Create_your_own safe=reels");
10
+ socials(me);
11
+ watermark(mark, (w*0.955-100, h*0.045+24), "Made With Manic");
12
+
13
+ text(kicker, (540, 164), "A 20-SECOND CALCULUS STORY");
14
+ text(headline, (540, 226), "When does a bowl stop being a bowl?");
15
+ text(problem, (540, 292), "Find the exact value of p where one curvature disappears.");
16
+ size(kicker, 21); bold(kicker); color(kicker, cyan); hidden(kicker);
17
+ size(headline, 38); bold(headline); wrap(headline, 880); hidden(headline);
18
+ size(problem, 22); color(problem, dim); wrap(problem, 840); hidden(problem);
19
+
20
+ equation(rule, (540, 378), `z=0.22x^2+0.22(1-2p)y^2`, 39);
21
+ hidden(rule);
22
+
23
+ parameter(mix, (540, 1270), 0, 0, 1, "p", 2);
24
+
25
+ camera3((8.5, -11.5, 7.5), (0, 0, 0), 41);
26
+ surface3(world, "0.22*(x*x+y*y)", (-3,3), (-3,3), 34);
27
+ bind(mix, world, formula, "0.22*x*x + 0.22*(1-2*p)*y*y");
28
+ color(world, cyan);
29
+ finish3(world, "material=glass shading=smooth mesh=0.34 depth=0.34 shadow=0.16");
30
+ hidden(world);
31
+
32
+ text(chapter, (540, 1352), "p = 0 · positive curvature in both directions");
33
+ text(insight, (540, 1422), "Watch the coefficient of y².");
34
+ text(cta, (540, 1398), "Build the transformation, not the keyframes.");
35
+ text(link, (540, 1452), "TRY MANIC → 8gwifi.org/manic");
36
+ size(chapter, 23); bold(chapter); color(chapter, fg); wrap(chapter, 850); hidden(chapter);
37
+ size(insight, 21); color(insight, dim); hidden(insight);
38
+ size(cta, 23); bold(cta); hidden(cta);
39
+ size(link, 20); bold(link); color(link, cyan); hidden(link);
40
+
41
+ step("pose the problem") {
42
+ par {
43
+ show(kicker, 0.35);
44
+ show(headline, 0.50);
45
+ show(problem, 0.45);
46
+ show(rule, 0.55);
47
+ show(world, 0.65);
48
+ show(chapter, 0.40);
49
+ show(insight, 0.40);
50
+ view3(world, "isometric", 0.9, smooth, 1.62);
51
+ }
52
+ }
53
+ wait(0.65);
54
+
55
+ step("reach the turning point") {
56
+ par {
57
+ to(mix, value, 0.5, 2.8, smooth);
58
+ say(chapter, "p = ½ · the y² coefficient becomes zero", 0.45);
59
+ say(insight, "At this instant the bowl becomes a one-directional trough.", 0.45);
60
+ rewrite(rule, `p=\frac12\quad\Longrightarrow\quad z=0.22x^2`, 1.10, smooth);
61
+ orbit3(-45, 28, 16.2, 2.8, smooth);
62
+ }
63
+ }
64
+ wait(0.75);
65
+
66
+ step("cross into a saddle") {
67
+ par {
68
+ to(mix, value, 1, 2.8, smooth);
69
+ say(chapter, "p > ½ · one curvature turns negative", 0.45);
70
+ say(insight, "The same persistent surface is now a saddle.", 0.45);
71
+ rewrite(rule, `p=1\quad\Longrightarrow\quad z=0.22(x^2-y^2)`, 1.10, smooth);
72
+ orbit3(-62, 25, 16.2, 2.8, smooth);
73
+ }
74
+ }
75
+ wait(0.65);
76
+
77
+ step("answer and invite") {
78
+ par {
79
+ say(problem, "Answer: p = ½ is the exact transition.", 0.50);
80
+ fade(chapter, 0.35);
81
+ fade(insight, 0.35);
82
+ show(cta, 0.45);
83
+ show(link, 0.45);
84
+ }
85
+ }
86
+ wait(1.8);
@@ -0,0 +1,77 @@
1
+ // Existing-Manic treatment of animations/fig0140.asy.
2
+ // `tree3` replaces a general 3D grammar with one meaningful creator question.
3
+
4
+ title("Counting a Fractal Tree");
5
+ canvas("9:16");
6
+ template("black");
7
+ creator(me,"@anish2good name=Manic_Generative tagline=Growth_made_visible yt=zarigatongy x=@anish2good web=8gwifi.org/manic accent=lime secondary=cyan footer=compact cta=Grow_the_rule safe=clean");
8
+ socials(me);
9
+ watermark(mark,(w*0.16,h*0.055),"Made With Manic");
10
+ endcard(me,"title=Animate_Recursive_Growth cta=8gwifi.org/manic");
11
+
12
+ let u=(w+h-abs(w-h))/1080;
13
+ text(kicker,(cx,h*0.10),"BINARY GROWTH · DEPTH 10");
14
+ text(head,(cx,h*0.17),"How many branches will appear?");
15
+ text(caption,(cx,h*0.80),"Every branch creates two children. Count generations, not individual lines.");
16
+ equation(eq,(cx,h*0.73),`1+2+4+\cdots+2^9=2^{10}-1`,31*u);
17
+ size(kicker,20*u); bold(kicker); color(kicker,lime);
18
+ size(head,27*u); bold(head); wrap(head,w*0.76);
19
+ size(caption,19*u); bold(caption); wrap(caption,w*0.72); color(caption,dim);
20
+
21
+ tree3(tree,(0,0,-3.0),2.0,27,0.72,10,42);
22
+ for i in 0..10 {
23
+ color(tree.d{i},lime);
24
+ untraced(tree.d{i});
25
+ hidden(tree.d{i});
26
+ }
27
+ color(tree.leaves,cyan); hidden(tree.leaves);
28
+ camera3((9,9,6),(0,0,1.4),42,perspective);
29
+ hidden(kicker); hidden(head); hidden(caption); hidden(eq);
30
+
31
+ step("pose") {
32
+ par {
33
+ show(kicker,0.3); show(head,0.45); show(caption,0.35);
34
+ view3(tree,"isometric",0.75,smooth,1.45);
35
+ }
36
+ }
37
+ wait(0.85);
38
+ step("grow generation by generation") {
39
+ par {
40
+ stagger(0.16) {
41
+ for i in 0..10 {
42
+ par { show(tree.d{i},0.12); draw(tree.d{i},0.52,smooth); }
43
+ }
44
+ }
45
+ seq {
46
+ wait(0.55);
47
+ orbit3(60,24,17,2.8,smooth);
48
+ }
49
+ say(caption,"Each generation appears from the previous one: split, turn, shrink.",0.40);
50
+ }
51
+ }
52
+ wait(0.95);
53
+ step("show the canopy and sum") {
54
+ par {
55
+ show(tree.leaves,0.55);
56
+ show(eq,0.5);
57
+ say(caption,"Now count generations with one geometric series.",0.4);
58
+ }
59
+ }
60
+ wait(0.9);
61
+ step("read the recurrence") {
62
+ par {
63
+ pulse(tree,0.90);
64
+ say(caption,"Generation k contains 2ᵏ branches; adding generations 0 through 9 produces a geometric sum.",0.65,smooth);
65
+ }
66
+ }
67
+ wait(1.0);
68
+ step("solve") { par { rewrite(eq,`\boxed{1023\text{ branches}}`,0.8,smooth); pulse(tree.leaves,0.85); say(head,"Depth 10 produces 1,023 branches.",0.45,smooth); } }
69
+ wait(1.25);
70
+ step("cta") {
71
+ par {
72
+ fade(kicker,0.3); fade(head,0.3); fade(caption,0.3); fade(eq,0.3);
73
+ for i in 0..10 { fade(tree.d{i},0.40); }
74
+ fade(tree.leaves,0.40); fade(me.footer,0.3); show(me.endcard,0.6);
75
+ }
76
+ }
77
+ wait(2.2);