@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,149 @@
1
+ // lost-in-patterns — a fractal odyssey in four movements, each a different KIND
2
+ // of infinity, each with the RULE that generates it shown on screen (manic's
3
+ // thesis: the diagram is true, so the maths is visible):
4
+ // I ∞ by ZOOM the Mandelbrot set — z→z²+c, a x500 dive into seahorse valley
5
+ // II ∞ by PARAMETER the Julia family — SAME rule, but now c is the knob
6
+ // (the Mandelbrot set is the MAP of which c give a connected Julia — the
7
+ // bridge between movements I and II)
8
+ // III ∞ by ITERATION a Clifford strange attractor — no shape-formula, one rule fed
9
+ // its own output 6,000× (cloud … from map)
10
+ // IV ∞ by RECURSION the Koch snowflake — F→F+F--F+F, closing on the paradox:
11
+ // infinite perimeter, finite area.
12
+ title("Lost in Infinite Patterns");
13
+ canvas("16:9");
14
+ template("black");
15
+
16
+ // ---------- HUD ----------
17
+ text(head, (cx, 60), "Lost in Infinite Patterns"); display(head); cursor(head); sticky(head);
18
+ text(cap, (cx, h - 42), ""); size(cap, 26); sticky(cap);
19
+ counter(mag, (w - 170, 120), 1, 0, "zoom x", ""); color(mag, gold); hidden(mag);
20
+
21
+ // a dark card so the teaching panel stays legible over the bright fractals
22
+ polygon(panel, (230, 92), (768, 92), (768, 250), (230, 250), #05070d);
23
+ opacity(panel, 0.5); sticky(panel); hidden(panel);
24
+
25
+ // the "kind of infinity" chip — one per movement (show/hide, no narration)
26
+ text(kind1, (499, 122), "∞ by ZOOM"); size(kind1, 30); color(kind1, cyan); sticky(kind1); hidden(kind1);
27
+ text(kind2, (499, 122), "∞ by PARAMETER"); size(kind2, 30); color(kind2, magenta); sticky(kind2); hidden(kind2);
28
+ text(kind3, (499, 122), "∞ by ITERATION"); size(kind3, 30); color(kind3, gold); sticky(kind3); hidden(kind3);
29
+ text(kind4, (499, 122), "∞ by RECURSION"); size(kind4, 30); color(kind4, lime); sticky(kind4); hidden(kind4);
30
+
31
+ // the generating rule of each movement — the maths made visible
32
+ equation(eqIter, (499, 190), `z_{n+1} = z_n^{2} + c`, 34); sticky(eqIter); hidden(eqIter);
33
+ equation(eqC, (499, 236), `c = 0.7885\,e^{i\theta}`, 26); sticky(eqC); hidden(eqC);
34
+ equation(eqCliff,(499, 196), `\begin{cases} x' = \sin(ay)+c\cos(ax) \\ y' = \sin(bx)+d\cos(by) \end{cases}`, 24); sticky(eqCliff); hidden(eqCliff);
35
+ equation(eqKoch, (499, 188), `F \to F\,{+}\,F\,{-}{-}\,F\,{+}\,F`, 30); sticky(eqKoch); hidden(eqKoch);
36
+ // the closing paradox — the one genuine gasp
37
+ equation(eqPar, (cx, h - 120), `\text{perimeter } 3\left(\tfrac{4}{3}\right)^{n}\!\to\infty \qquad \text{area}\to \tfrac{8}{5}A_0`, 34); sticky(eqPar); hidden(eqPar);
38
+
39
+ // hidden journey axes (the sliders stay backstage — the dive/angle drive the shaders)
40
+ parameter(dive, (w - 180, 660), 0, 0, 1, "dive", 2); hidden(dive);
41
+ parameter(ang, (w - 180, 690), 0, 0, 6.283, "angle", 2); hidden(ang);
42
+
43
+ // ---------- I. the Mandelbrot coastline ----------
44
+ shader(mset) {
45
+ let sc = 3.2 * exp(-6.2 * dive);
46
+ let x = -0.743644 + (u - 0.5) * asp * sc;
47
+ let y = 0.131826 + (v - 0.5) * sc;
48
+ let m = mandelbrot(x, y);
49
+ let band = m^0.35;
50
+ let hue = 205 + 140 * band + 25 * sin(0.3 * t);
51
+ let sat = 0.75;
52
+ let val = (1 - step(0.999, m)) * (0.12 + 0.88 * band);
53
+ }
54
+
55
+ // ---------- II. the Julia bloom ----------
56
+ shader(jul) {
57
+ let x = (u - 0.5) * asp * 2.9;
58
+ let y = (v - 0.5) * 2.9;
59
+ let cr = 0.7885 * cos(ang);
60
+ let ci = 0.7885 * sin(ang);
61
+ let j = julia(x, y, cr, ci);
62
+ let band = j^0.4;
63
+ let hue = 290 + 120 * band + 15 * sin(0.4 * t);
64
+ let sat = 0.8;
65
+ let val = (1 - step(0.999, j)) * (0.1 + 0.9 * band);
66
+ }
67
+ hidden(jul);
68
+
69
+ // ---------- III. the strange attractor (Clifford, a=-1.4 b=1.6 c=1 d=0.7) ----
70
+ cloud(att, 6000, #ffffff, 0.85) from map("sin(-1.4*y)+cos(-1.4*x)", "sin(1.6*x)+0.7*cos(1.6*y)", (0.1, 0.1)) {
71
+ let wsp = 0.12 * t;
72
+ let px = hx * cos(wsp) - hy * sin(wsp);
73
+ let py = hx * sin(wsp) + hy * cos(wsp);
74
+ let x = 640 + 225 * px; // cloud formulas can't see cx/cy — hardcode the 16:9 centre
75
+ let y = 360 + 15 + 165 * py;
76
+ let r = 1.1 + 0.8 * mod(abs(sin(i * 12.9898) * 43758.55), 1);
77
+ let hue = 150 + 60 * hypot(hx, hy) + 25 * sin(0.4 * t + 0.002 * i);
78
+ }
79
+ hidden(att);
80
+
81
+ // ---------- IV. the snowflake (Koch, one closed stroke) ----------
82
+ lsystem(koch, (cx, cy + 20), 560, "F--F--F", "F=F+F--F+F", "angle=60 iterations=4 closed=true");
83
+ untraced(koch); stroke(koch, 3); gradient(koch, cyan, magenta, gold);
84
+
85
+ // the four fullscreen visuals sit BEHIND the HUD (all default to z=0, so without
86
+ // this the later-declared shader would paint over the teaching panel + captions)
87
+ z(mset, -3); z(jul, -3); z(att, -3); z(koch, -2);
88
+
89
+ // ================= timeline =================
90
+
91
+ // ---- I: ∞ by ZOOM — the Mandelbrot dive
92
+ type(head, 1.2);
93
+ par { show(panel, 0.4); show(kind1, 0.4); show(mag, 0.3); }
94
+ show(eqIter, 0.6);
95
+ par {
96
+ to(dive, value, 1, 12, smooth);
97
+ to(mag, value, 500, 12, smooth);
98
+ seq {
99
+ say(cap, "the Mandelbrot set: keep the points where z → z² + c never flies to infinity", 0.6);
100
+ wait(4.6);
101
+ say(cap, "zoom 500x and the coastline keeps unfolding — new seahorses, never one exact repeat", 0.5);
102
+ wait(4.2);
103
+ }
104
+ }
105
+ cue(whoosh);
106
+
107
+ // ---- bridge: the Mandelbrot set IS the map of Julia sets
108
+ say(cap, "here is the secret: every point c in that black island grows its OWN fractal...", 0.5);
109
+ wait(3.2);
110
+
111
+ // ---- II: ∞ by PARAMETER — same rule, c is the knob
112
+ par { fade(mset, 1.2); fade(mag, 0.6); fade(kind1, 0.3); show(jul, 1.2); show(kind2, 0.4); }
113
+ show(eqC, 0.5); // eqIter STAYS on screen — same rule, bridging I and II
114
+ par {
115
+ to(ang, value, 6.283, 12, linear);
116
+ seq {
117
+ say(cap, "...a Julia set. Freeze z's rule, make c the knob: c inside the set → connected, outside → dust", 0.5);
118
+ wait(5.0);
119
+ say(cap, "slide c around a circle and every value is a different universe — same equation, new world", 0.5);
120
+ wait(4.6);
121
+ }
122
+ }
123
+ cue(whoosh);
124
+
125
+ // ---- III: ∞ by ITERATION — a rule fed its own output
126
+ par { fade(jul, 1.4); fade(kind2, 0.3); fade(eqIter, 0.3); fade(eqC, 0.3); show(att, 1.6); show(kind3, 0.4); }
127
+ show(eqCliff, 0.5);
128
+ say(cap, "no formula draws this shape — just this rule, fed its own output six thousand times", 0.5);
129
+ wait(4.0);
130
+ say(cap, "nudge one constant and it's a whole new creature: that sensitivity IS chaos", 0.5);
131
+ wait(3.4);
132
+ cue(whoosh);
133
+
134
+ // ---- IV: ∞ by RECURSION — the snowflake, and the paradox
135
+ par { fade(att, 1.2); fade(kind3, 0.3); fade(eqCliff, 0.3); show(kind4, 0.4); }
136
+ show(eqKoch, 0.5);
137
+ say(cap, "some infinities you draw with one stroke: replace every edge with four, forever", 0.5);
138
+ draw(koch, 6.0);
139
+ par { cam((cx + 215, cy - 100), 1.6, smooth); zoom(2.8, 1.6, smooth); }
140
+ say(cap, "look closer — the edge is made of smaller edges, at every scale", 0.5);
141
+ wait(2.6);
142
+ par { cam((cx, cy), 1.5, smooth); zoom(1, 1.5, smooth); }
143
+ // the payoff: infinite perimeter, finite area
144
+ show(eqPar, 0.8);
145
+ say(cap, "the perimeter grows x4/3 every step — to INFINITY — yet the whole shape fits in a circle", 0.6);
146
+ wait(3.4);
147
+ cue(chime);
148
+ say(cap, "four rules, four infinities — and you are never done looking", 0.7);
149
+ wait(3.2);
@@ -0,0 +1,81 @@
1
+ // Four classic deterministic curves from the Asymptote example corpus.
2
+ // Each figure is one fitted, traceable Manic entity—even the 9,604-segment curve.
3
+
4
+ title("Four Rules, Four Infinite-Looking Curves");
5
+ canvas("16:9");
6
+ template("mono");
7
+
8
+ watermark(mark, (w*0.105, h*0.08), "Made With Manic");
9
+ text(kicker, (cx, h*0.075), "GENERATIVE GEOMETRY · L-SYSTEMS");
10
+ text(headline, (cx, h*0.135), "A tiny rewriting rule becomes a continuous path");
11
+ text(caption, (cx, h*0.92), "One path per curve · auto-fitted · continuously drawable");
12
+ size(kicker, 20); bold(kicker); color(kicker, dim);
13
+ size(headline, 34); bold(headline);
14
+ size(caption, 20); color(caption, dim);
15
+
16
+ let left = w*0.275;
17
+ let right = w*0.725;
18
+ let upper = h*0.37;
19
+ let lower = h*0.70;
20
+ let cell = h*0.27;
21
+
22
+ lsystem(sierpinski, (left, upper), cell,
23
+ "YF", "X=YF+XF+Y;Y=XF-YF-X",
24
+ "angle=60 heading=0 iterations=7");
25
+ color(sierpinski, cyan); stroke(sierpinski, 2.5); untraced(sierpinski);
26
+
27
+ lsystem(gosper, (right, upper), cell,
28
+ "FX", "X=X+YF++YF-FX--FXFX-YF+;Y=-FX+YFYF++YF+FX--FX-Y",
29
+ "angle=60 heading=0 iterations=4");
30
+ color(gosper, magenta); stroke(gosper, 2.5); untraced(gosper);
31
+
32
+ lsystem(squareCurve, (left, lower), cell,
33
+ "F+XF+F+XF", "X=XF-F+F-XF+F+XF-F+F-X",
34
+ "angle=90 heading=45 iterations=5 closed=true fill=true");
35
+ color(squareCurve, gold); opacity(squareCurve, 0.70); stroke(squareCurve, 2.0); untraced(squareCurve);
36
+
37
+ lsystem(carpet, (right, lower), cell,
38
+ "F+F+F+F", "F=FF+F+F+F+FF",
39
+ "angle=90 heading=0 iterations=4");
40
+ color(carpet, lime); stroke(carpet, 2.0); untraced(carpet);
41
+
42
+ text(l1, (left, h*0.205), "SIERPINSKI CURVE · 2,187 SEGMENTS");
43
+ text(l2, (right, h*0.205), "PEANO–GOSPER · 2,401 SEGMENTS");
44
+ text(l3, (left, h*0.535), "SQUARE CURVE · 5,460 SEGMENTS");
45
+ text(l4, (right, h*0.535), "CARPET CURVE · 9,604 SEGMENTS");
46
+ size(l1, 18); size(l2, 18); size(l3, 18); size(l4, 18);
47
+ bold(l1); bold(l2); bold(l3); bold(l4);
48
+ color(l1, cyan); color(l2, magenta); color(l3, gold); color(l4, lime);
49
+ hidden(l1); hidden(l2); hidden(l3); hidden(l4);
50
+
51
+ step("one rule becomes a curve") {
52
+ par {
53
+ show(l1, 0.35);
54
+ draw(sierpinski, 1.8, smooth);
55
+ }
56
+ }
57
+ wait(0.30);
58
+
59
+ step("change the grammar") {
60
+ par {
61
+ show(l2, 0.35);
62
+ draw(gosper, 1.8, smooth);
63
+ }
64
+ }
65
+ wait(0.30);
66
+
67
+ step("close and fill the boundary") {
68
+ par {
69
+ show(l3, 0.35);
70
+ draw(squareCurve, 1.8, smooth);
71
+ }
72
+ }
73
+ wait(0.30);
74
+
75
+ step("thousands of segments stay one path") {
76
+ par {
77
+ show(l4, 0.35);
78
+ draw(carpet, 2.2, smooth);
79
+ }
80
+ }
81
+ wait(1.20);
@@ -0,0 +1,133 @@
1
+ // manic-ml-activation-focus.manic — one ML noun, one complete lesson
2
+ // `activation` supplies the truthful ReLU curve. Core Manic supplies the
3
+ // question, equation, input probes, local emphasis, timing, and takeaway.
4
+
5
+ title("Manic ML — Why ReLU Changes a Neuron");
6
+ canvas("16:9");
7
+ template("mono");
8
+
9
+ creator(me, "@anish2good name=Manic_ML tagline=Models_made_visible yt=zarigatongy x=@anish2good web=8gwifi.org/manic accent=cyan secondary=magenta footer=compact cta=See_the_rule safe=clean");
10
+ socials(me);
11
+
12
+ let u = (w+h-abs(w-h))/1440;
13
+
14
+ if h > 1.45*w {
15
+ watermark(manicMark, (w*0.15, h*0.06), "Made With Manic");
16
+ text(kicker, (cx, h*0.065), "MANIC ML · ACTIVATION");
17
+ text(headline, (cx, h*0.11), "Why does a neuron need ReLU?");
18
+ text(caption, (cx, h*0.79), "A neuron first receives an unrestricted number.");
19
+ equation(rule, (cx, h*0.60), `\operatorname{ReLU}(x)=\max(0,x)`, 35*u);
20
+
21
+ activation(reluView, (cx, h*0.38), relu, w*0.74, h*0.22);
22
+ line(negativePath, (w*0.13, h*0.466), (cx, h*0.466));
23
+ line(positivePath, (cx, h*0.466), (w*0.87, h*0.27));
24
+ line(positiveGuide, (w*0.685, h*0.466), (w*0.685, h*0.368));
25
+ circle(negativeProbe, (w*0.315, h*0.466), 8*u);
26
+ circle(positiveProbe, (w*0.685, h*0.368), 8*u);
27
+ text(negativeNote, (w*0.27, h*0.525), "x = −2 → 0");
28
+ text(positiveNote, (w*0.73, h*0.525), "x = 2 → 2");
29
+ }
30
+ else if w > 1.25*h {
31
+ watermark(manicMark, (w*0.17, h*0.09), "Made With Manic");
32
+ text(kicker, (cx, h*0.075), "MANIC ML · ACTIVATION");
33
+ text(headline, (cx, h*0.14), "Why does a neuron need ReLU?");
34
+ text(caption, (cx, h*0.82), "A neuron first receives an unrestricted number.");
35
+ equation(rule, (w*0.79, h*0.36), `\operatorname{ReLU}(x)=\max(0,x)`, 34*u);
36
+
37
+ activation(reluView, (w*0.38, h*0.49), relu, w*0.52, h*0.48);
38
+ line(negativePath, (w*0.12, h*0.677), (w*0.38, h*0.677));
39
+ line(positivePath, (w*0.38, h*0.677), (w*0.64, h*0.25));
40
+ line(positiveGuide, (w*0.51, h*0.677), (w*0.51, h*0.463));
41
+ circle(negativeProbe, (w*0.25, h*0.677), 8*u);
42
+ circle(positiveProbe, (w*0.51, h*0.463), 8*u);
43
+ text(negativeNote, (w*0.79, h*0.50), "x = −2 → 0");
44
+ text(positiveNote, (w*0.79, h*0.59), "x = 2 → 2");
45
+ }
46
+ else {
47
+ watermark(manicMark, (w*0.18, h*0.08), "Made With Manic");
48
+ text(kicker, (cx, h*0.06), "MANIC ML · ACTIVATION");
49
+ text(headline, (cx, h*0.145), "Why does a neuron need ReLU?");
50
+ text(caption, (cx, h*0.82), "A neuron first receives an unrestricted number.");
51
+ equation(rule, (cx, h*0.67), `\operatorname{ReLU}(x)=\max(0,x)`, 34*u);
52
+
53
+ activation(reluView, (cx, h*0.40), relu, w*0.72, h*0.28);
54
+ line(negativePath, (w*0.14, h*0.509), (cx, h*0.509));
55
+ line(positivePath, (cx, h*0.509), (w*0.86, h*0.26));
56
+ line(positiveGuide, (w*0.68, h*0.509), (w*0.68, h*0.384));
57
+ circle(negativeProbe, (w*0.32, h*0.509), 8*u);
58
+ circle(positiveProbe, (w*0.68, h*0.384), 8*u);
59
+ text(negativeNote, (w*0.27, h*0.58), "x = −2 → 0");
60
+ text(positiveNote, (w*0.73, h*0.58), "x = 2 → 2");
61
+ }
62
+
63
+ size(kicker, 19*u); color(kicker, dim); bold(kicker); hidden(kicker);
64
+ size(headline, 34*u); bold(headline); wrap(headline, w*0.82); hidden(headline);
65
+ size(caption, 21*u); color(caption, dim); wrap(caption, w*0.78); hidden(caption);
66
+ hidden(rule);
67
+
68
+ color(negativePath, magenta); stroke(negativePath, 5*u); glow(negativePath, 0.35); untraced(negativePath);
69
+ color(positivePath, cyan); stroke(positivePath, 5*u); glow(positivePath, 0.35); untraced(positivePath);
70
+ color(positiveGuide, dim); stroke(positiveGuide, 2*u); dashed(positiveGuide, 9*u, 7*u); untraced(positiveGuide);
71
+
72
+ color(negativeProbe, magenta); filled(negativeProbe); glow(negativeProbe, 0.55); hidden(negativeProbe);
73
+ color(positiveProbe, cyan); filled(positiveProbe); glow(positiveProbe, 0.55); hidden(positiveProbe);
74
+ size(negativeNote, 18*u); color(negativeNote, magenta); bold(negativeNote); hidden(negativeNote);
75
+ size(positiveNote, 18*u); color(positiveNote, cyan); bold(positiveNote); hidden(positiveNote);
76
+
77
+ untraced(reluView.axes);
78
+ untraced(reluView.curve);
79
+ hidden(reluView.label);
80
+
81
+ step("question") {
82
+ show(kicker, 0.35);
83
+ show(headline, 0.45);
84
+ show(caption, 0.40);
85
+ draw(reluView.axes, 0.75);
86
+ }
87
+ wait(0.55);
88
+
89
+ step("rule") {
90
+ show(rule, 0.55);
91
+ say(caption, "ReLU makes one transparent promise: return the larger of zero and x.", 0.40);
92
+ }
93
+ wait(0.55);
94
+
95
+ step("negative-input") {
96
+ par {
97
+ draw(negativePath, 0.75);
98
+ show(negativeProbe, 0.35);
99
+ show(negativeNote, 0.35);
100
+ say(caption, "Negative input is muted at zero; it cannot send negative evidence onward.", 0.40);
101
+ }
102
+ }
103
+ wait(0.65);
104
+
105
+ step("positive-input") {
106
+ par {
107
+ draw(positivePath, 0.85);
108
+ draw(positiveGuide, 0.55);
109
+ show(positiveProbe, 0.35);
110
+ show(positiveNote, 0.35);
111
+ say(caption, "Positive input passes through unchanged, preserving its strength.", 0.40);
112
+ }
113
+ }
114
+ wait(0.70);
115
+
116
+ step("activation") {
117
+ par {
118
+ draw(reluView.curve, 1.10);
119
+ show(reluView.label, 0.35);
120
+ say(caption, "That small bend gives a network a nonlinear decision boundary.", 0.40);
121
+ par { cam((cx, h*0.47), 0.70, smooth); zoom(1.10, 0.70, smooth); }
122
+ }
123
+ }
124
+ wait(0.75);
125
+
126
+ step("takeaway") {
127
+ par {
128
+ pulse(reluView.curve, 0.75);
129
+ say(caption, "ReLU does not invent a signal: it gates what the neuron already computed.", 0.45);
130
+ par { cam((cx, cy), 0.70, smooth); zoom(1.0, 0.70, smooth); }
131
+ }
132
+ }
133
+ wait(1.50);
@@ -0,0 +1,102 @@
1
+ // manic-ml-cnn-edge-story.manic — ML3 creator proof
2
+ // A tiny image becomes a feature map and then a pooled summary. Every number is
3
+ // computed by Manic; scan coordinates the receptive field and destination.
4
+
5
+ title("Manic ML — How a CNN Finds an Edge");
6
+ canvas("16:9");
7
+ template("mono");
8
+
9
+ creator(me, "@anish2good name=Manic_ML tagline=Models_made_visible yt=zarigatongy x=@anish2good web=8gwifi.org/manic accent=cyan secondary=magenta footer=compact cta=See_the_feature safe=clean");
10
+ socials(me);
11
+
12
+ let u = (w+h-abs(w-h))/1440;
13
+ let cell = 48*u;
14
+
15
+ if h > 1.45*w {
16
+ watermark(manicMark, (w*0.13, h*0.075), "Made With Manic");
17
+ text(kicker, (cx, h*0.08), "MANIC ML · CONVOLUTION");
18
+ text(headline, (cx, h*0.13), "How does a CNN see edges?");
19
+ text(caption, (cx, h*0.72), "Start with a tiny image: bright cells form a simple shape.");
20
+ tensor(image, (w*0.28, h*0.35), "0 0 0 0 0; 0 0 1 1 0; 0 1 1 1 0; 0 0 1 1 0; 0 0 0 0 0", cell, cyan);
21
+ kernel(edge, (w*0.72, h*0.35), "-1 0 1; -2 0 2; -1 0 1", cell, magenta);
22
+ convolve(feature, image, edge, (w*0.34, h*0.54), 1, 0, 0, relu, cell);
23
+ pool(pooled, feature, (w*0.72, h*0.54), max, 2, 1, 0, cell);
24
+ }
25
+ else if w > 1.25*h {
26
+ watermark(manicMark, (w*0.18, h*0.10), "Made With Manic");
27
+ text(kicker, (cx, h*0.075), "MANIC ML · CONVOLUTION");
28
+ text(headline, (cx, h*0.14), "How does a CNN see edges?");
29
+ text(caption, (cx, h*0.82), "Start with a tiny image: bright cells form a simple shape.");
30
+ tensor(image, (w*0.17, h*0.47), "0 0 0 0 0; 0 0 1 1 0; 0 1 1 1 0; 0 0 1 1 0; 0 0 0 0 0", cell, cyan);
31
+ kernel(edge, (w*0.42, h*0.47), "-1 0 1; -2 0 2; -1 0 1", cell, magenta);
32
+ convolve(feature, image, edge, (w*0.68, h*0.47), 1, 0, 0, relu, cell);
33
+ pool(pooled, feature, (w*0.89, h*0.47), max, 2, 1, 0, cell);
34
+ }
35
+ else {
36
+ watermark(manicMark, (w*0.18, h*0.08), "Made With Manic");
37
+ text(kicker, (cx, h*0.07), "MANIC ML · CONVOLUTION");
38
+ text(headline, (cx, h*0.13), "How does a CNN see edges?");
39
+ text(caption, (cx, h*0.82), "Start with a tiny image: bright cells form a simple shape.");
40
+ tensor(image, (w*0.18, h*0.44), "0 0 0 0 0; 0 0 1 1 0; 0 1 1 1 0; 0 0 1 1 0; 0 0 0 0 0", cell, cyan);
41
+ kernel(edge, (w*0.45, h*0.44), "-1 0 1; -2 0 2; -1 0 1", cell, magenta);
42
+ convolve(feature, image, edge, (w*0.70, h*0.44), 1, 0, 0, relu, cell);
43
+ pool(pooled, feature, (w*0.89, h*0.44), max, 2, 1, 0, cell);
44
+ }
45
+
46
+ size(kicker, 20*u); color(kicker, dim); bold(kicker); hidden(kicker);
47
+ size(headline, 35*u); bold(headline); wrap(headline, w*0.82); hidden(headline);
48
+ size(caption, 22*u); color(caption, dim); wrap(caption, w*0.78); hidden(caption);
49
+ hidden(image); hidden(edge); hidden(feature); hidden(pooled);
50
+
51
+ step("pixels") {
52
+ show(kicker, 0.35);
53
+ show(headline, 0.45);
54
+ show(caption, 0.40);
55
+ show(image, 0.65);
56
+ }
57
+ wait(0.55);
58
+
59
+ step("edge-detector") {
60
+ show(edge, 0.55);
61
+ say(caption, "This 3×3 kernel compares the left side of each patch with the right.", 0.40);
62
+ }
63
+ wait(0.55);
64
+
65
+ step("feature-map") {
66
+ show(feature, 0.50);
67
+ say(caption, "The feature map begins quiet; each destination waits for one receptive field.", 0.40);
68
+ }
69
+ wait(0.35);
70
+
71
+ step("convolution-scan") {
72
+ par {
73
+ scan(feature, 4.80, smooth);
74
+ say(caption, "The same kernel slides, multiplies, sums, applies ReLU, and writes one cell.", 0.40);
75
+ seq {
76
+ par { cam((w*0.38, h*0.45), 0.75, smooth); zoom(1.10, 0.75, smooth); }
77
+ wait(2.95);
78
+ par { cam((cx, cy), 0.85, smooth); zoom(1.0, 0.85, smooth); }
79
+ }
80
+ }
81
+ }
82
+ wait(0.60);
83
+
84
+ step("pooling-map") {
85
+ show(pooled, 0.50);
86
+ say(caption, "Max pooling asks a simpler question: where is the strongest local evidence?", 0.40);
87
+ }
88
+ wait(0.40);
89
+
90
+ step("pooling-scan") {
91
+ par {
92
+ scan(pooled, 3.40, smooth);
93
+ say(caption, "Each 2×2 window keeps its first maximum; ties are deterministic.", 0.40);
94
+ }
95
+ }
96
+ wait(0.70);
97
+
98
+ step("takeaway") {
99
+ pulse(pooled.cells, 0.75);
100
+ say(caption, "A CNN builds meaning locally: pixels → feature responses → compact evidence.", 0.45);
101
+ }
102
+ wait(1.50);
@@ -0,0 +1,93 @@
1
+ // manic-ml-forward-pass.manic — ML1 creator proof
2
+ // A real deterministic network computes one prediction. The story keeps the
3
+ // model persistent and reveals only the active computation instead of flashing
4
+ // every connection at once.
5
+
6
+ title("Manic ML — A Forward Pass You Can Follow");
7
+ canvas("16:9");
8
+ template("mono");
9
+
10
+ creator(me, "@anish2good name=Manic_ML tagline=Models_made_visible yt=zarigatongy x=@anish2good web=8gwifi.org/manic accent=cyan secondary=magenta footer=compact cta=See_the_computation safe=clean");
11
+ socials(me);
12
+
13
+ let u = (w+h-abs(w-h))/1440;
14
+
15
+ // One story reflows to portrait, feed, square, and landscape. The portrait
16
+ // network narrows to reserve a clean probability lane at the right.
17
+ if h > 1.45*w {
18
+ watermark(manicMark, (w*0.18, h*0.075), "Made With Manic");
19
+ text(kicker, (cx, h*0.08), "MANIC ML · FORWARD PASS");
20
+ text(headline, (cx, h*0.13), "How does a network choose?");
21
+ text(caption, (cx, h*0.72), "First, a neuron keeps positive evidence and removes negative evidence.");
22
+ activation(reluView, (cx, h*0.40), relu, w*0.72, h*0.24);
23
+ network(model, (cx, h*0.42), "3 6 4 3", "relu tanh softmax", w*0.55, h*0.32, 21);
24
+ }
25
+ else if w > 1.25*h {
26
+ watermark(manicMark, (w*0.18, h*0.10), "Made With Manic");
27
+ text(kicker, (cx, h*0.075), "MANIC ML · FORWARD PASS");
28
+ text(headline, (cx, h*0.14), "How does a network choose?");
29
+ text(caption, (cx, h*0.83), "First, a neuron keeps positive evidence and removes negative evidence.");
30
+ activation(reluView, (cx, h*0.49), relu, w*0.42, h*0.36);
31
+ network(model, (cx, h*0.47), "3 6 4 3", "relu tanh softmax", w*0.64, h*0.39, 21);
32
+ }
33
+ else {
34
+ watermark(manicMark, (w*0.18, h*0.08), "Made With Manic");
35
+ text(kicker, (cx, h*0.07), "MANIC ML · FORWARD PASS");
36
+ text(headline, (cx, h*0.13), "How does a network choose?");
37
+ text(caption, (cx, h*0.82), "First, a neuron keeps positive evidence and removes negative evidence.");
38
+ activation(reluView, (cx, h*0.43), relu, w*0.68, h*0.30);
39
+ network(model, (cx, h*0.45), "3 6 4 3", "relu tanh softmax", w*0.64, h*0.40, 21);
40
+ }
41
+
42
+ size(kicker, 20*u); color(kicker, dim); bold(kicker); hidden(kicker);
43
+ size(headline, 36*u); bold(headline); hidden(headline);
44
+ size(caption, 22*u); color(caption, dim); wrap(caption, w*0.78); hidden(caption);
45
+
46
+ // A truthful ReLU curve introduces the operation used by the hidden layer.
47
+ hidden(reluView);
48
+ untraced(reluView.axes);
49
+ untraced(reluView.curve);
50
+
51
+ // 3 inputs → 6 ReLU units → 4 tanh units → 3 softmax probabilities.
52
+ // Seed 21 makes the educational model reproducible across every render.
53
+ hidden(model);
54
+
55
+ step("activation") {
56
+ show(kicker, 0.35);
57
+ show(headline, 0.45);
58
+ show(caption, 0.40);
59
+ show(reluView, 0.55);
60
+ draw(reluView.axes, 0.70);
61
+ draw(reluView.curve, 1.20);
62
+ }
63
+ wait(0.75);
64
+
65
+ step("meet-the-network") {
66
+ fade(reluView, 0.45);
67
+ show(model, 0.65);
68
+ say(caption, "The same operation now lives inside a small, deterministic network.", 0.45);
69
+ }
70
+ wait(0.65);
71
+
72
+ step("forward-pass") {
73
+ par {
74
+ forward(model, "0.15 0.92 0.38", 4.20, smooth);
75
+ say(caption, "Follow the bright path: inputs become evidence, then probabilities.", 0.45);
76
+ seq {
77
+ par { cam((w*0.24, h*0.47), 0.55, smooth); zoom(1.06, 0.55, smooth); }
78
+ wait(0.55);
79
+ cam((cx, h*0.47), 0.80, smooth);
80
+ wait(0.55);
81
+ cam((w*0.76, h*0.47), 0.80, smooth);
82
+ wait(0.40);
83
+ par { cam((cx, cy), 0.55, smooth); zoom(1.0, 0.55, smooth); }
84
+ }
85
+ }
86
+ }
87
+ wait(0.90);
88
+
89
+ step("takeaway") {
90
+ pulse(model.output, 0.75);
91
+ say(caption, "The picture is driven by the computed values—not a decorative animation.", 0.45);
92
+ }
93
+ wait(1.60);
@@ -0,0 +1,116 @@
1
+ // manic-ml-learning-step.manic — ML2 creator proof
2
+ // One persistent network predicts, measures its mistake, sends exact gradients
3
+ // backward, changes its parameters, then rolls that one saved change back.
4
+ // No layer is cleared and redrawn; rollback is not claimed as full unlearning.
5
+
6
+ title("Manic ML — How One Mistake Becomes Learning");
7
+ canvas("16:9");
8
+ template("mono");
9
+
10
+ creator(me, "@anish2good name=Manic_ML tagline=Models_made_visible yt=zarigatongy x=@anish2good web=8gwifi.org/manic accent=cyan secondary=magenta footer=compact cta=See_the_learning safe=clean");
11
+ socials(me);
12
+
13
+ let u = (w+h-abs(w-h))/1440;
14
+
15
+ if h > 1.45*w {
16
+ watermark(manicMark, (w*0.13, h*0.075), "Made With Manic");
17
+ text(kicker, (cx, h*0.08), "MANIC ML · ONE LEARNING STEP");
18
+ text(headline, (cx, h*0.13), "How does a model learn?");
19
+ text(caption, (cx, h*0.72), "First the network predicts from the current weights.");
20
+ network(model, (cx, h*0.42), "3 6 4 3", "relu tanh softmax", w*0.55, h*0.32, 21);
21
+ }
22
+ else if w > 1.25*h {
23
+ watermark(manicMark, (w*0.18, h*0.10), "Made With Manic");
24
+ text(kicker, (cx, h*0.075), "MANIC ML · ONE LEARNING STEP");
25
+ text(headline, (cx, h*0.14), "How does a model learn?");
26
+ text(caption, (cx, h*0.83), "First the network predicts from the current weights.");
27
+ network(model, (cx, h*0.47), "3 6 4 3", "relu tanh softmax", w*0.64, h*0.39, 21);
28
+ }
29
+ else {
30
+ watermark(manicMark, (w*0.18, h*0.08), "Made With Manic");
31
+ text(kicker, (cx, h*0.07), "MANIC ML · ONE LEARNING STEP");
32
+ text(headline, (cx, h*0.13), "How does a model learn?");
33
+ text(caption, (cx, h*0.82), "First the network predicts from the current weights.");
34
+ network(model, (cx, h*0.45), "3 6 4 3", "relu tanh softmax", w*0.64, h*0.40, 21);
35
+ }
36
+
37
+ size(kicker, 20*u); color(kicker, dim); bold(kicker); hidden(kicker);
38
+ size(headline, 35*u); bold(headline); wrap(headline, w*0.82); hidden(headline);
39
+ size(caption, 22*u); color(caption, dim); wrap(caption, w*0.78); hidden(caption);
40
+ hidden(model);
41
+
42
+ step("question") {
43
+ show(kicker, 0.35);
44
+ show(headline, 0.45);
45
+ show(caption, 0.40);
46
+ show(model, 0.65);
47
+ }
48
+ wait(0.55);
49
+
50
+ step("predict") {
51
+ par {
52
+ forward(model, "0.15 0.92 0.38", 3.20, smooth);
53
+ say(caption, "A forward pass turns the input into three probabilities.", 0.40);
54
+ }
55
+ }
56
+ wait(0.55);
57
+
58
+ step("measure-the-mistake") {
59
+ par {
60
+ loss(model, "1 0 0", crossentropy, 1.50, smooth);
61
+ say(caption, "The correct answer is class 1. Cross-entropy measures the mismatch.", 0.40);
62
+ }
63
+ }
64
+ wait(0.55);
65
+
66
+ step("send-credit-backward") {
67
+ par {
68
+ backward(model, 3.20, smooth);
69
+ say(caption, "The gradient carries responsibility backward through the same connections.", 0.40);
70
+ seq {
71
+ par { cam((w*0.76, h*0.47), 0.40, smooth); zoom(1.08, 0.40, smooth); }
72
+ wait(0.30);
73
+ cam((cx, h*0.47), 0.55, smooth);
74
+ wait(0.25);
75
+ cam((w*0.24, h*0.47), 0.55, smooth);
76
+ wait(0.25);
77
+ par { cam((cx, cy), 0.45, smooth); zoom(1.0, 0.45, smooth); }
78
+ }
79
+ }
80
+ }
81
+ wait(0.55);
82
+
83
+ // A zero-duration authored checkpoint captures the exact pre-update weights,
84
+ // prediction, target, and loss. It does not add a hidden runtime state.
85
+ checkpoint(beforeUpdate, model);
86
+
87
+ step("learn") {
88
+ par {
89
+ update(model, 0.18, 2.30, smooth);
90
+ say(caption, "Each parameter moves opposite its gradient; the same input is computed again.", 0.40);
91
+ }
92
+ }
93
+ wait(0.70);
94
+
95
+ step("unlearn") {
96
+ par {
97
+ restore(model, beforeUpdate, 2.30, smooth);
98
+ say(caption, "Exact rollback restores the saved parameters and their earlier prediction.", 0.40);
99
+ seq {
100
+ par { cam((w*0.24, h*0.47), 0.40, smooth); zoom(1.08, 0.40, smooth); }
101
+ wait(0.30);
102
+ cam((cx, h*0.47), 0.55, smooth);
103
+ wait(0.25);
104
+ cam((w*0.76, h*0.47), 0.55, smooth);
105
+ wait(0.25);
106
+ par { cam((cx, cy), 0.45, smooth); zoom(1.0, 0.45, smooth); }
107
+ }
108
+ }
109
+ }
110
+ wait(0.70);
111
+
112
+ step("takeaway") {
113
+ pulse(model.output, 0.75);
114
+ say(caption, "This undoes one saved update. Dataset-level unlearning is a different process.", 0.45);
115
+ }
116
+ wait(1.50);