manim-simplex 0.2.2__tar.gz → 0.3.0__tar.gz

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 (222) hide show
  1. manim_simplex-0.3.0/.gitattributes +1 -0
  2. manim_simplex-0.3.0/.gitignore +43 -0
  3. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/.pre-commit-config.yaml +8 -2
  4. manim_simplex-0.3.0/.release-please-manifest.json +3 -0
  5. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/CHANGELOG.md +42 -1
  6. manim_simplex-0.3.0/PKG-INFO +273 -0
  7. manim_simplex-0.3.0/README.md +226 -0
  8. manim_simplex-0.3.0/decks/README.md +37 -0
  9. manim_simplex-0.3.0/decks/showcase/deck.toml +30 -0
  10. manim_simplex-0.3.0/decks/showcase/notes.md +72 -0
  11. manim_simplex-0.3.0/decks/showcase/slides/__init__.py +7 -0
  12. manim_simplex-0.3.0/decks/showcase/slides/paper_showcase.py +55 -0
  13. manim_simplex-0.3.0/decks/showcase/slides/scenes.py +667 -0
  14. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/examples/hello_slide.py +2 -3
  15. manim_simplex-0.3.0/examples/manim.cfg +3 -0
  16. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/examples/outline_slide.py +1 -2
  17. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/examples/theme_demo.py +2 -3
  18. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/pyproject.toml +52 -6
  19. manim_simplex-0.3.0/release-please-config.json +10 -0
  20. manim_simplex-0.3.0/renovate.json +23 -0
  21. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/ruff.toml +7 -1
  22. manim_simplex-0.3.0/site.toml +15 -0
  23. manim_simplex-0.3.0/src/simplex/README.md +35 -0
  24. manim_simplex-0.3.0/src/simplex/__init__.py +137 -0
  25. manim_simplex-0.3.0/src/simplex/cli/README.md +13 -0
  26. manim_simplex-0.3.0/src/simplex/cli/__init__.py +5 -0
  27. manim_simplex-0.3.0/src/simplex/cli/commands.py +392 -0
  28. manim_simplex-0.3.0/src/simplex/deck/README.md +19 -0
  29. manim_simplex-0.3.0/src/simplex/deck/__init__.py +7 -0
  30. manim_simplex-0.3.0/src/simplex/deck/_template/deck.toml +13 -0
  31. manim_simplex-0.3.0/src/simplex/deck/_template/manim.cfg +3 -0
  32. manim_simplex-0.3.0/src/simplex/deck/_template/notes.md +27 -0
  33. manim_simplex-0.3.0/src/simplex/deck/_template/refs.bib +12 -0
  34. manim_simplex-0.3.0/src/simplex/deck/_template/slides/__init__.py +7 -0
  35. manim_simplex-0.3.0/src/simplex/deck/_template/slides/intro.py +35 -0
  36. manim_simplex-0.3.0/src/simplex/deck/config.py +217 -0
  37. manim_simplex-0.3.0/src/simplex/deck/registry.py +110 -0
  38. manim_simplex-0.3.0/src/simplex/deck/scaffold.py +86 -0
  39. manim_simplex-0.3.0/src/simplex/deck/section.py +40 -0
  40. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/engine/code.py +21 -10
  41. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/manifest.py +4 -5
  42. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/mobjects/array.py +1 -1
  43. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/mobjects/graph.py +1 -1
  44. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/plugin.py +5 -5
  45. manim_simplex-0.3.0/src/simplex/render/README.md +50 -0
  46. manim_simplex-0.3.0/src/simplex/render/__init__.py +5 -0
  47. manim_simplex-0.3.0/src/simplex/render/filenames.py +17 -0
  48. manim_simplex-0.3.0/src/simplex/render/html.py +132 -0
  49. manim_simplex-0.3.0/src/simplex/render/notes_pdf.py +522 -0
  50. manim_simplex-0.3.0/src/simplex/render/pdf.py +33 -0
  51. manim_simplex-0.3.0/src/simplex/render/pptx.py +32 -0
  52. manim_simplex-0.3.0/src/simplex/render/reconcile.py +349 -0
  53. manim_simplex-0.3.0/src/simplex/render/runner.py +121 -0
  54. manim_simplex-0.3.0/src/simplex/render/thumbnail.py +374 -0
  55. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/theme/README.md +2 -2
  56. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/theme/__init__.py +12 -0
  57. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/theme/context.py +3 -3
  58. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/theme/presets.py +8 -4
  59. manim_simplex-0.3.0/src/simplex/theme/pygments_style.py +64 -0
  60. manim_simplex-0.3.0/src/simplex/theme/styles/README.md +10 -0
  61. manim_simplex-0.3.0/src/simplex/theme/styles/__init__.py +20 -0
  62. manim_simplex-0.3.0/src/simplex/theme/styles/simplex_pycharm.py +75 -0
  63. manim_simplex-0.3.0/src/simplex/theme/styles/simplex_solarized_light.py +79 -0
  64. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/theme/tokens.py +10 -1
  65. manim_simplex-0.3.0/src/simplex/theme/web_css.py +82 -0
  66. manim_simplex-0.3.0/src/simplex/web/README.md +34 -0
  67. manim_simplex-0.3.0/src/simplex/web/__init__.py +1 -0
  68. manim_simplex-0.3.0/src/simplex/web/bibliography.py +248 -0
  69. manim_simplex-0.3.0/src/simplex/web/bibtex.py +129 -0
  70. manim_simplex-0.3.0/src/simplex/web/builder.py +400 -0
  71. manim_simplex-0.3.0/src/simplex/web/callouts.py +163 -0
  72. manim_simplex-0.3.0/src/simplex/web/citations.py +118 -0
  73. manim_simplex-0.3.0/src/simplex/web/equations.py +79 -0
  74. manim_simplex-0.3.0/src/simplex/web/notes.py +151 -0
  75. manim_simplex-0.3.0/src/simplex/web/refs.py +61 -0
  76. manim_simplex-0.3.0/src/simplex/web/sidenotes.py +79 -0
  77. manim_simplex-0.3.0/src/simplex/web/site_config.py +83 -0
  78. manim_simplex-0.3.0/src/simplex/web/slide_ref.py +90 -0
  79. manim_simplex-0.3.0/src/simplex/web/static/README.md +28 -0
  80. manim_simplex-0.3.0/src/simplex/web/static/fonts/lato/lato-latin-400-italic.woff2 +0 -0
  81. manim_simplex-0.3.0/src/simplex/web/static/fonts/lato/lato-latin-400-normal.woff2 +0 -0
  82. manim_simplex-0.3.0/src/simplex/web/static/fonts/lato/lato-latin-700-italic.woff2 +0 -0
  83. manim_simplex-0.3.0/src/simplex/web/static/fonts/lato/lato-latin-700-normal.woff2 +0 -0
  84. manim_simplex-0.3.0/src/simplex/web/static/fonts/lato/lato-latin-900-normal.woff2 +0 -0
  85. manim_simplex-0.3.0/src/simplex/web/static/fonts/merriweather/merriweather-latin-400-italic.woff2 +0 -0
  86. manim_simplex-0.3.0/src/simplex/web/static/fonts/merriweather/merriweather-latin-400-normal.woff2 +0 -0
  87. manim_simplex-0.3.0/src/simplex/web/static/fonts/merriweather/merriweather-latin-700-italic.woff2 +0 -0
  88. manim_simplex-0.3.0/src/simplex/web/static/fonts/merriweather/merriweather-latin-700-normal.woff2 +0 -0
  89. manim_simplex-0.3.0/src/simplex/web/static/fonts/merriweather/merriweather-latin-900-normal.woff2 +0 -0
  90. manim_simplex-0.3.0/src/simplex/web/static/htmx.min.js +1 -0
  91. manim_simplex-0.3.0/src/simplex/web/static/katex/auto-render.min.js +1 -0
  92. manim_simplex-0.3.0/src/simplex/web/static/katex/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  93. manim_simplex-0.3.0/src/simplex/web/static/katex/fonts/KaTeX_Main-Bold.woff2 +0 -0
  94. manim_simplex-0.3.0/src/simplex/web/static/katex/fonts/KaTeX_Main-Regular.woff2 +0 -0
  95. manim_simplex-0.3.0/src/simplex/web/static/katex/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  96. manim_simplex-0.3.0/src/simplex/web/static/katex/fonts/KaTeX_Math-Italic.woff2 +0 -0
  97. manim_simplex-0.3.0/src/simplex/web/static/katex/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  98. manim_simplex-0.3.0/src/simplex/web/static/katex/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  99. manim_simplex-0.3.0/src/simplex/web/static/katex/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  100. manim_simplex-0.3.0/src/simplex/web/static/katex/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  101. manim_simplex-0.3.0/src/simplex/web/static/katex/katex.min.css +1 -0
  102. manim_simplex-0.3.0/src/simplex/web/static/katex/katex.min.js +1 -0
  103. manim_simplex-0.3.0/src/simplex/web/static/lucide/README.md +7 -0
  104. manim_simplex-0.3.0/src/simplex/web/static/lucide/lucide.min.js +12 -0
  105. manim_simplex-0.3.0/src/simplex/web/static/notes.js +189 -0
  106. manim_simplex-0.3.0/src/simplex/web/static/reveal.js/reset.css +30 -0
  107. manim_simplex-0.3.0/src/simplex/web/static/reveal.js/reveal.css +8 -0
  108. manim_simplex-0.3.0/src/simplex/web/static/reveal.js/reveal.js +9 -0
  109. manim_simplex-0.3.0/src/simplex/web/static/simplex.css +2109 -0
  110. manim_simplex-0.3.0/src/simplex/web/static/tailwind.css +2 -0
  111. manim_simplex-0.3.0/src/simplex/web/static/tailwind.input.css +16 -0
  112. manim_simplex-0.3.0/src/simplex/web/static/viewer.js +497 -0
  113. manim_simplex-0.3.0/src/simplex/web/templates/README.md +19 -0
  114. manim_simplex-0.3.0/src/simplex/web/templates/_carousel.html +117 -0
  115. manim_simplex-0.3.0/src/simplex/web/templates/base.html +128 -0
  116. manim_simplex-0.3.0/src/simplex/web/templates/deck.html +169 -0
  117. manim_simplex-0.3.0/src/simplex/web/templates/index.html +20 -0
  118. manim_simplex-0.3.0/src/simplex/web/templates/revealjs.html.j2 +379 -0
  119. manim_simplex-0.3.0/src/simplex/web/templates/section.html +74 -0
  120. manim_simplex-0.3.0/src/simplex/web/vendor.py +247 -0
  121. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/tests/README.md +9 -4
  122. manim_simplex-0.3.0/tests/cli/README.md +15 -0
  123. manim_simplex-0.3.0/tests/cli/__init__.py +0 -0
  124. manim_simplex-0.3.0/tests/cli/test_help.py +12 -0
  125. manim_simplex-0.3.0/tests/cli/test_new.py +42 -0
  126. manim_simplex-0.3.0/tests/cli/test_render.py +108 -0
  127. manim_simplex-0.3.0/tests/deck/README.md +8 -0
  128. manim_simplex-0.3.0/tests/deck/__init__.py +0 -0
  129. manim_simplex-0.3.0/tests/deck/test_config.py +72 -0
  130. manim_simplex-0.3.0/tests/deck/test_registry.py +76 -0
  131. manim_simplex-0.3.0/tests/deck/test_scaffold.py +74 -0
  132. manim_simplex-0.3.0/tests/deck/test_section.py +32 -0
  133. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/tests/engine/README.md +1 -1
  134. manim_simplex-0.3.0/tests/engine/__init__.py +0 -0
  135. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/tests/engine/test_code.py +28 -12
  136. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/tests/engine/test_text.py +7 -7
  137. manim_simplex-0.3.0/tests/mobjects/__init__.py +0 -0
  138. manim_simplex-0.3.0/tests/render/README.md +7 -0
  139. manim_simplex-0.3.0/tests/render/__init__.py +0 -0
  140. manim_simplex-0.3.0/tests/render/test_html.py +96 -0
  141. manim_simplex-0.3.0/tests/render/test_notes_pdf.py +84 -0
  142. manim_simplex-0.3.0/tests/render/test_reconcile.py +177 -0
  143. manim_simplex-0.3.0/tests/render/test_runner.py +101 -0
  144. manim_simplex-0.3.0/tests/render/test_thumbnail.py +226 -0
  145. manim_simplex-0.3.0/tests/slides/__init__.py +0 -0
  146. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/tests/slides/test_chrome.py +8 -8
  147. manim_simplex-0.3.0/tests/test_public_api.py +13 -0
  148. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/tests/theme/README.md +1 -1
  149. manim_simplex-0.3.0/tests/theme/__init__.py +0 -0
  150. manim_simplex-0.3.0/tests/theme/test_tokens.py +83 -0
  151. manim_simplex-0.3.0/tests/theme/test_web_css.py +39 -0
  152. manim_simplex-0.3.0/tests/web/README.md +18 -0
  153. manim_simplex-0.3.0/tests/web/__init__.py +0 -0
  154. manim_simplex-0.3.0/tests/web/test_bibliography.py +170 -0
  155. manim_simplex-0.3.0/tests/web/test_builder.py +186 -0
  156. manim_simplex-0.3.0/tests/web/test_callouts.py +130 -0
  157. manim_simplex-0.3.0/tests/web/test_citations.py +72 -0
  158. manim_simplex-0.3.0/tests/web/test_equations.py +74 -0
  159. manim_simplex-0.3.0/tests/web/test_notes.py +38 -0
  160. manim_simplex-0.3.0/tests/web/test_sidenotes.py +60 -0
  161. manim_simplex-0.3.0/tests/web/test_site_config.py +70 -0
  162. manim_simplex-0.3.0/tests/web/test_slide_ref.py +27 -0
  163. manim_simplex-0.3.0/tools/check_readmes.py +54 -0
  164. manim_simplex-0.3.0/tools/vendor_web_assets.py +36 -0
  165. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/uv.lock +219 -1
  166. manim_simplex-0.2.2/.gitignore +0 -30
  167. manim_simplex-0.2.2/PKG-INFO +0 -288
  168. manim_simplex-0.2.2/README.md +0 -255
  169. manim_simplex-0.2.2/src/simplex/theme/pygments_style.py +0 -79
  170. manim_simplex-0.2.2/src/simplex/theme/web_css.py +0 -33
  171. manim_simplex-0.2.2/tests/theme/test_tokens.py +0 -52
  172. manim_simplex-0.2.2/tests/theme/test_web_css.py +0 -18
  173. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/.python-version +0 -0
  174. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/LICENSE +0 -0
  175. {manim_simplex-0.2.2/examples → manim_simplex-0.3.0/decks/showcase}/manim.cfg +0 -0
  176. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/examples/README.md +0 -0
  177. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/examples/glyph_map_demo.py +0 -0
  178. /manim_simplex-0.2.2/src/simplex/py.typed → /manim_simplex-0.3.0/src/simplex/deck/_template/assets/.gitkeep +0 -0
  179. /manim_simplex-0.2.2/tests/__init__.py → /manim_simplex-0.3.0/src/simplex/deck/_template/assets/code/.gitkeep +0 -0
  180. /manim_simplex-0.2.2/tests/engine/__init__.py → /manim_simplex-0.3.0/src/simplex/deck/_template/assets/figures/.gitkeep +0 -0
  181. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/engine/README.md +0 -0
  182. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/engine/__init__.py +0 -0
  183. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/engine/animations.py +0 -0
  184. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/engine/debug.py +0 -0
  185. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/engine/defaults.py +0 -0
  186. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/engine/dynamics.py +0 -0
  187. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/engine/geometry.py +0 -0
  188. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/engine/ghost_fade.py +0 -0
  189. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/engine/glyph_map.py +0 -0
  190. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/engine/region.py +0 -0
  191. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/engine/scaling.py +0 -0
  192. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/engine/text.py +0 -0
  193. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/mobjects/README.md +0 -0
  194. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/mobjects/__init__.py +0 -0
  195. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/mobjects/outline.py +0 -0
  196. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/mobjects/paper.py +0 -0
  197. /manim_simplex-0.2.2/tests/mobjects/__init__.py → /manim_simplex-0.3.0/src/simplex/py.typed +0 -0
  198. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/section.py +0 -0
  199. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/slides/README.md +0 -0
  200. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/slides/__init__.py +0 -0
  201. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/slides/base.py +0 -0
  202. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/slides/chrome.py +0 -0
  203. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/src/simplex/slides/outline.py +0 -0
  204. /manim_simplex-0.2.2/tests/slides/__init__.py → /manim_simplex-0.3.0/src/simplex/web/static/.gitkeep +0 -0
  205. {manim_simplex-0.2.2/tests/theme → manim_simplex-0.3.0/tests}/__init__.py +0 -0
  206. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/tests/engine/test_animations.py +0 -0
  207. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/tests/engine/test_debug.py +0 -0
  208. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/tests/engine/test_dynamics.py +0 -0
  209. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/tests/engine/test_geometry.py +0 -0
  210. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/tests/engine/test_ghost_fade.py +0 -0
  211. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/tests/engine/test_glyph_map.py +0 -0
  212. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/tests/engine/test_region.py +0 -0
  213. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/tests/engine/test_scaling.py +0 -0
  214. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/tests/mobjects/README.md +0 -0
  215. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/tests/mobjects/test_graph.py +0 -0
  216. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/tests/mobjects/test_outline.py +0 -0
  217. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/tests/mobjects/test_paper.py +0 -0
  218. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/tests/slides/README.md +0 -0
  219. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/tests/slides/test_base.py +0 -0
  220. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/tests/slides/test_outline.py +0 -0
  221. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/tests/test_manifest.py +0 -0
  222. {manim_simplex-0.2.2 → manim_simplex-0.3.0}/tests/test_section.py +0 -0
@@ -0,0 +1 @@
1
+ *.sh text eol=lf
@@ -0,0 +1,43 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *$py.class
4
+ *.so
5
+
6
+ # Build artifacts
7
+ build/
8
+ dist/
9
+ *.egg-info/
10
+ .eggs/
11
+
12
+ # uv
13
+ .venv/
14
+
15
+ # Tool caches
16
+ .ruff_cache/
17
+ .pytest_cache/
18
+ .basedpyright/
19
+ .simplex_cache/
20
+ .mypy_cache/
21
+
22
+ # Manim output
23
+ media/
24
+ # manim-slides output (rooted, so tests/slides/ stays tracked)
25
+ /slides/
26
+ decks/**/slides/*.json
27
+ decks/**/slides/files/
28
+
29
+ # Generated site
30
+ site/
31
+
32
+ # Vendored web runtime assets (fetched/compiled on demand by simplex.web.vendor)
33
+ src/simplex/web/static/tailwind.css
34
+ src/simplex/web/static/htmx.min.js
35
+ src/simplex/web/static/katex/
36
+ src/simplex/web/static/reveal.js/
37
+ src/simplex/web/static/fonts/
38
+
39
+ # Editors
40
+ .idea/
41
+ .vscode/
42
+ *.swp
43
+ .DS_Store
@@ -53,11 +53,17 @@ repos:
53
53
  - id: codespell
54
54
  additional_dependencies:
55
55
  - tomli
56
- args: [--ignore-words-list=manim, mobjects, mobject]
57
- exclude: ^(uv\.lock|.*\.svg)$
56
+ args: [--ignore-words-list=manim, mobjects, mobject, pres]
57
+ exclude: ^(uv\.lock|.*\.svg|.*\.bib)$
58
58
 
59
59
  - repo: local
60
60
  hooks:
61
+ - id: check-readmes
62
+ name: Every package directory has a README <= 100 lines
63
+ entry: python tools/check_readmes.py
64
+ language: system
65
+ pass_filenames: false
66
+ always_run: true
61
67
  - id: github-issues
62
68
  name: GitHub issues link check
63
69
  description: Check issues (and PR) links are matching number.
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.3.0"
3
+ }
@@ -4,8 +4,49 @@ All notable changes to `manim-simplex` are documented here.
4
4
  The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/);
5
5
  this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [0.3.0](https://github.com/shlomi-perles/simplex/compare/manim-simplex-v0.2.3...manim-simplex-v0.3.0) (2026-05-25)
8
+
9
+
10
+ ### Features
11
+
12
+ * consolidate Simplex package ([7e1aedb](https://github.com/shlomi-perles/simplex/commit/7e1aedbf646e9d90ffb2fc22a852e5a5d3042e75))
13
+ * enhance media handling and presentation features ([9dff7cc](https://github.com/shlomi-perles/simplex/commit/9dff7ccfc4bfbe79f5bffd1c01d0bac090207399))
14
+
15
+
16
+ ### Bug Fixes
17
+
18
+ * handle string duration in _row_duration and update tests for consistency ([612fd3c](https://github.com/shlomi-perles/simplex/commit/612fd3c24e1c9c3ee7dbbe1a42080211ba6c927d))
19
+
7
20
  ## [Unreleased]
8
21
 
22
+ ### Added
23
+
24
+ - `simplex` CLI, deck discovery/scaffolding, render orchestration, static web
25
+ portal builder, notes/citation rendering, and bundled deck template now ship
26
+ inside `manim-simplex`.
27
+ - Release Please configuration and release workflow for uv builds, PyPI
28
+ Trusted Publishing, and template update dispatch.
29
+ - Renovate configuration for dependency and lockfile maintenance.
30
+
31
+ ### Changed
32
+
33
+ - **BREAKING:** `manim-simplex` is now the only PyPI distribution that owns the
34
+ `simplex` package namespace. The former `simplex-web` package is folded into
35
+ this distribution.
36
+ - CI now checks the CLI/web stack, vendors web assets before wheel builds, and
37
+ smoke-renders the bundled showcase deck.
38
+
39
+ ## [0.2.3] - 2026-05-25
40
+
41
+ ### Added
42
+
43
+ - Top-level authoring imports such as `from simplex import BaseSlide, Caption`.
44
+
45
+ ### Changed
46
+
47
+ - Rename the default theme from `dastimator_dark` / `DASTIMATOR_DARK` to
48
+ `simplex_dark` / `SIMPLEX_DARK`.
49
+
9
50
  ## [0.2.1] - 2026-05-24
10
51
 
11
52
  ### Changed
@@ -111,7 +152,7 @@ this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
111
152
  - ``make_chrome(..., page=…)`` parameter and the corresponding ``page``
112
153
  entry in ``Chrome.mobjects``. Slide numbering moves to the web layer.
113
154
  - ``LatexProfile.environments["definition"]`` entries from
114
- ``DASTIMATOR_DARK`` and ``ACADEMIC_LIGHT``: ``TexPage`` is now the
155
+ ``SIMPLEX_DARK`` and ``ACADEMIC_LIGHT``: ``TexPage`` is now the
115
156
  single owner of the ``{minipage}{<width>cm}`` literal.
116
157
  - `simplex.engine.section_types` module (replaced by `simplex.section`).
117
158
  - `simplex.slides.components` subpackage (replaced by `simplex.mobjects`).
@@ -0,0 +1,273 @@
1
+ Metadata-Version: 2.4
2
+ Name: manim-simplex
3
+ Version: 0.3.0
4
+ Summary: Manim plugin and lecture-site CLI for Simplex presentations.
5
+ Project-URL: Changelog, https://github.com/shlomi-perles/simplex/blob/main/CHANGELOG.md
6
+ Project-URL: Homepage, https://github.com/shlomi-perles/simplex
7
+ Project-URL: Issues, https://github.com/shlomi-perles/simplex/issues
8
+ Project-URL: Repository, https://github.com/shlomi-perles/simplex
9
+ Author: Shlomi Perles
10
+ License-Expression: MIT
11
+ License-File: LICENSE
12
+ Keywords: animation,computer-science,education,lecture,manim,manim-slides,math,presentation,static-site
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Environment :: Console
15
+ Classifier: Intended Audience :: Education
16
+ Classifier: Intended Audience :: Science/Research
17
+ Classifier: License :: OSI Approved :: MIT License
18
+ Classifier: Operating System :: OS Independent
19
+ Classifier: Programming Language :: Python :: 3
20
+ Classifier: Programming Language :: Python :: 3 :: Only
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Topic :: Education
23
+ Classifier: Topic :: Internet :: WWW/HTTP :: Site Management
24
+ Classifier: Topic :: Multimedia :: Graphics
25
+ Classifier: Topic :: Multimedia :: Video
26
+ Classifier: Topic :: Scientific/Engineering :: Visualization
27
+ Classifier: Typing :: Typed
28
+ Requires-Python: >=3.13
29
+ Requires-Dist: av>=15.0
30
+ Requires-Dist: jinja2>=3.1
31
+ Requires-Dist: manim-slides>=5.1.7
32
+ Requires-Dist: manim>=0.20.1
33
+ Requires-Dist: markdown-it-py>=3.0
34
+ Requires-Dist: mdit-py-plugins>=0.4
35
+ Requires-Dist: pillow>=11.0
36
+ Requires-Dist: platformdirs>=4.2
37
+ Requires-Dist: pydantic-settings>=2.3
38
+ Requires-Dist: pydantic>=2.7
39
+ Requires-Dist: pygments>=2.18
40
+ Requires-Dist: pymupdf>=1.27.2.3
41
+ Requires-Dist: rich>=13.7
42
+ Requires-Dist: structlog>=24.1
43
+ Requires-Dist: tomli-w>=1.0
44
+ Requires-Dist: typer>=0.12
45
+ Requires-Dist: watchfiles>=0.24
46
+ Description-Content-Type: text/markdown
47
+
48
+ # Simplex
49
+
50
+ [![PyPI version](https://img.shields.io/pypi/v/manim-simplex.svg)](https://pypi.org/project/manim-simplex/)
51
+ [![Python](https://img.shields.io/pypi/pyversions/manim-simplex.svg)](https://pypi.org/project/manim-simplex/)
52
+ [![CI](https://github.com/shlomi-perles/simplex/actions/workflows/ci.yml/badge.svg)](https://github.com/shlomi-perles/simplex/actions/workflows/ci.yml)
53
+ [![License](https://img.shields.io/github/license/shlomi-perles/simplex.svg)](https://github.com/shlomi-perles/simplex/blob/main/LICENSE)
54
+
55
+ Simplex is a toolkit for Manim lecture projects. The repository is named
56
+ `simplex`, and the PyPI distribution is named `manim-simplex` because the bare
57
+ `simplex` package name is already taken on PyPI. It ships one Python package
58
+ namespace, `simplex`, with:
59
+
60
+ - a Manim plugin (`plugins = simplex`);
61
+ - theme tokens, mobjects, layout regions, slide bases, and animation helpers;
62
+ - a deck manifest schema and render reconciliation pipeline;
63
+ - the `simplex` CLI for deck scaffolding, rendering, site building, serving,
64
+ testing, and diagnostics;
65
+ - a static lecture portal with notes, citations, math rendering, thumbnails,
66
+ RevealJS playback, and GitHub Pages-friendly output.
67
+
68
+ The CLI and plugin intentionally live in one distribution so consumers only
69
+ depend on `manim-simplex`.
70
+
71
+ ## Requirements
72
+
73
+ - Python 3.13+
74
+ - Manim Community 0.20.1+
75
+ - manim-slides 5.1.7+
76
+ - FFmpeg, Cairo, Pango, and a TeX distribution when rendering TeX. See the
77
+ Manim installation guide: https://docs.manim.community/en/stable/installation.html
78
+
79
+ Typical system packages:
80
+
81
+ ```bash
82
+ sudo apt-get install texlive-latex-extra texlive-fonts-recommended ffmpeg \
83
+ libcairo2-dev libpango1.0-dev
84
+ ```
85
+
86
+ ```powershell
87
+ winget install MiKTeX.MiKTeX
88
+ winget install Gyan.FFmpeg
89
+ ```
90
+
91
+ ## Install
92
+
93
+ ```bash
94
+ pip install manim-simplex
95
+ ```
96
+
97
+ With uv:
98
+
99
+ ```bash
100
+ uv add manim-simplex
101
+ ```
102
+
103
+ Verify that Manim can discover the plugin:
104
+
105
+ ```bash
106
+ python -m manim plugins -l
107
+ ```
108
+
109
+ The output should include `simplex`.
110
+
111
+ ## Configure Manim
112
+
113
+ Enable the plugin in the `manim.cfg` next to your scenes or deck:
114
+
115
+ ```ini
116
+ [CLI]
117
+ plugins = simplex
118
+ save_sections = True
119
+ ```
120
+
121
+ Manim imports `simplex.plugin` through the `manim.plugins` entry point. The
122
+ plugin applies the active Simplex theme to Manim defaults, registers Pygments
123
+ styles, sets the TeX template, sets the background color, and enables section
124
+ JSON output.
125
+
126
+ ## Quick Start
127
+
128
+ ```python
129
+ from manim import ORIGIN, MathTex, Write
130
+
131
+ from simplex import BaseSlide, make_chrome, presets
132
+
133
+
134
+ class HelloSlide(BaseSlide):
135
+ def setup(self) -> None:
136
+ super().setup()
137
+ chrome = make_chrome(
138
+ presets.SIMPLEX_DARK,
139
+ self.region,
140
+ header="Hello, Simplex",
141
+ )
142
+ self.add_to_canvas(**chrome.mobjects)
143
+ self.region = chrome.body_region
144
+
145
+ def construct(self) -> None:
146
+ eq = MathTex(r"e^{i\pi} + 1 = 0")
147
+ self.region.place(eq, ORIGIN)
148
+ self.play(Write(eq))
149
+ self.next_slide()
150
+ ```
151
+
152
+ Render as a slide deck:
153
+
154
+ ```bash
155
+ uv run manim-slides render path/to/scene.py HelloSlide
156
+ uv run manim-slides present HelloSlide
157
+ ```
158
+
159
+ Or create a lecture-site deck and build the portal:
160
+
161
+ ```bash
162
+ uv run simplex new algorithms/hash-tables
163
+ uv run simplex render hash-tables
164
+ uv run simplex build
165
+ uv run simplex serve
166
+ ```
167
+
168
+ ## Public Surface
169
+
170
+ | Module | Public surface |
171
+ | --- | --- |
172
+ | `simplex.plugin` | `activate()` entry point used by Manim. |
173
+ | `simplex.slides` | `BaseSlide`, `OutlineScene`, `OutlinePart`, `Chrome`, `make_chrome`. |
174
+ | `simplex.engine` | `Region`, `Remove`, `clear_scene`, `exit_for`, `register_exit`, `set_exit_animation`, `HighlightResult`, `apply_theme_defaults`. |
175
+ | `simplex.mobjects` | `Node`, `Edge`, `ArrayMob`, `ArrayEntry`, `ArrayPointer`, `OutlineProgressBar`, `Paper`, `ShowPaper`, `DismissPaper`, `PickPage`. |
176
+ | `simplex.theme` | `Theme`, `Palette`, `Typography`, `Spacing`, `Motion`, `LatexProfile`, `WebPalette`, `active_theme`, `get_active_theme`, `presets`, `render_web_css`. |
177
+ | `simplex.manifest` | `DeckManifest`, `MainSlide`, `Subsection`, the manifest schema written by the render pipeline. |
178
+ | `simplex.deck` | `DeckConfig`, `discover`, `scaffold`, section metadata, bundled deck template. |
179
+ | `simplex.render` | Manim runner, manifest reconciliation, thumbnails, HTML, PDF, PPTX, notes PDF, filenames. |
180
+ | `simplex.web` | Portal builder, notes renderer, citations, refs, templates, static assets, live reload. |
181
+ | `simplex.cli` | Typer application installed as the `simplex` command. |
182
+
183
+ ## CLI
184
+
185
+ | Command | Purpose |
186
+ | --- | --- |
187
+ | `simplex new <slug>` | Create `decks/<slug>/` from the bundled template. |
188
+ | `simplex new <section>/<slug>` | Create a deck inside a named section. |
189
+ | `simplex init [dir]` | Create a lectures repo from the GitHub template. |
190
+ | `simplex render <slug>` | Render one deck into `site/decks/<slug>/`. |
191
+ | `simplex render <slug>::<Scene>` | Render one scene from a deck. |
192
+ | `simplex build` | Render decks and build the static portal under `site/`. |
193
+ | `simplex build --no-render` | Rebuild portal HTML from existing render output. |
194
+ | `simplex serve [--watch]` | Serve `site/` locally, optionally with live reload. |
195
+ | `simplex test` | Smoke-render decks by rendering only the first animation. |
196
+ | `simplex clean` | Remove generated `site/` and `media/` output. |
197
+ | `simplex doctor` | Check required binaries on `PATH`. |
198
+
199
+ ## Deck Layout
200
+
201
+ `simplex new hash-tables` creates:
202
+
203
+ ```text
204
+ decks/hash-tables/
205
+ |-- deck.toml
206
+ |-- manim.cfg
207
+ |-- notes.md
208
+ |-- refs.bib
209
+ |-- assets/
210
+ `-- slides/
211
+ |-- __init__.py
212
+ `-- intro.py
213
+ ```
214
+
215
+ The important fields in `deck.toml` are:
216
+
217
+ ```toml
218
+ slug = "hash-tables"
219
+ title = "Hash Tables"
220
+ summary = "A one-line deck summary."
221
+ theme = "simplex_dark"
222
+ quality = "high_quality"
223
+ entrypoints = ["slides.intro:Intro", "slides.intro:KeyIdea"]
224
+
225
+ [slides."Key Idea"]
226
+ notes_anchor = "key-idea"
227
+ ```
228
+
229
+ ## Development
230
+
231
+ ```bash
232
+ git clone https://github.com/shlomi-perles/simplex.git
233
+ cd simplex
234
+ uv sync --all-extras
235
+ uv run pre-commit install
236
+ ```
237
+
238
+ Useful checks:
239
+
240
+ ```bash
241
+ python tools/check_readmes.py
242
+ uv run ruff check .
243
+ uv run ruff format --check .
244
+ uv run basedpyright
245
+ uv run pytest -q
246
+ uv run python tools/vendor_web_assets.py
247
+ uv build --no-sources
248
+ uvx twine check dist/*
249
+ ```
250
+
251
+ Run smoke tests locally:
252
+
253
+ ```bash
254
+ uv run python -c "import simplex.plugin; simplex.plugin.activate(); print('ok')"
255
+ uv run manim plugins -l
256
+ uv run simplex --help
257
+ uv run simplex test --only showcase
258
+ ```
259
+
260
+ ## Release
261
+
262
+ Releases are automated through Release Please and PyPI Trusted Publishing.
263
+ Commit changes using Conventional Commits (`feat:`, `fix:`, `chore:`). When
264
+ changes land on `main`, Release Please opens or updates a release PR. Merging
265
+ that PR creates the GitHub release, builds the package with uv, publishes
266
+ `manim-simplex` to PyPI via OIDC, and dispatches a template update workflow.
267
+
268
+ Manual version bumps and chained `simplex-web` releases are no longer part of
269
+ the release process.
270
+
271
+ ## License
272
+
273
+ MIT. See [LICENSE](LICENSE).
@@ -0,0 +1,226 @@
1
+ # Simplex
2
+
3
+ [![PyPI version](https://img.shields.io/pypi/v/manim-simplex.svg)](https://pypi.org/project/manim-simplex/)
4
+ [![Python](https://img.shields.io/pypi/pyversions/manim-simplex.svg)](https://pypi.org/project/manim-simplex/)
5
+ [![CI](https://github.com/shlomi-perles/simplex/actions/workflows/ci.yml/badge.svg)](https://github.com/shlomi-perles/simplex/actions/workflows/ci.yml)
6
+ [![License](https://img.shields.io/github/license/shlomi-perles/simplex.svg)](https://github.com/shlomi-perles/simplex/blob/main/LICENSE)
7
+
8
+ Simplex is a toolkit for Manim lecture projects. The repository is named
9
+ `simplex`, and the PyPI distribution is named `manim-simplex` because the bare
10
+ `simplex` package name is already taken on PyPI. It ships one Python package
11
+ namespace, `simplex`, with:
12
+
13
+ - a Manim plugin (`plugins = simplex`);
14
+ - theme tokens, mobjects, layout regions, slide bases, and animation helpers;
15
+ - a deck manifest schema and render reconciliation pipeline;
16
+ - the `simplex` CLI for deck scaffolding, rendering, site building, serving,
17
+ testing, and diagnostics;
18
+ - a static lecture portal with notes, citations, math rendering, thumbnails,
19
+ RevealJS playback, and GitHub Pages-friendly output.
20
+
21
+ The CLI and plugin intentionally live in one distribution so consumers only
22
+ depend on `manim-simplex`.
23
+
24
+ ## Requirements
25
+
26
+ - Python 3.13+
27
+ - Manim Community 0.20.1+
28
+ - manim-slides 5.1.7+
29
+ - FFmpeg, Cairo, Pango, and a TeX distribution when rendering TeX. See the
30
+ Manim installation guide: https://docs.manim.community/en/stable/installation.html
31
+
32
+ Typical system packages:
33
+
34
+ ```bash
35
+ sudo apt-get install texlive-latex-extra texlive-fonts-recommended ffmpeg \
36
+ libcairo2-dev libpango1.0-dev
37
+ ```
38
+
39
+ ```powershell
40
+ winget install MiKTeX.MiKTeX
41
+ winget install Gyan.FFmpeg
42
+ ```
43
+
44
+ ## Install
45
+
46
+ ```bash
47
+ pip install manim-simplex
48
+ ```
49
+
50
+ With uv:
51
+
52
+ ```bash
53
+ uv add manim-simplex
54
+ ```
55
+
56
+ Verify that Manim can discover the plugin:
57
+
58
+ ```bash
59
+ python -m manim plugins -l
60
+ ```
61
+
62
+ The output should include `simplex`.
63
+
64
+ ## Configure Manim
65
+
66
+ Enable the plugin in the `manim.cfg` next to your scenes or deck:
67
+
68
+ ```ini
69
+ [CLI]
70
+ plugins = simplex
71
+ save_sections = True
72
+ ```
73
+
74
+ Manim imports `simplex.plugin` through the `manim.plugins` entry point. The
75
+ plugin applies the active Simplex theme to Manim defaults, registers Pygments
76
+ styles, sets the TeX template, sets the background color, and enables section
77
+ JSON output.
78
+
79
+ ## Quick Start
80
+
81
+ ```python
82
+ from manim import ORIGIN, MathTex, Write
83
+
84
+ from simplex import BaseSlide, make_chrome, presets
85
+
86
+
87
+ class HelloSlide(BaseSlide):
88
+ def setup(self) -> None:
89
+ super().setup()
90
+ chrome = make_chrome(
91
+ presets.SIMPLEX_DARK,
92
+ self.region,
93
+ header="Hello, Simplex",
94
+ )
95
+ self.add_to_canvas(**chrome.mobjects)
96
+ self.region = chrome.body_region
97
+
98
+ def construct(self) -> None:
99
+ eq = MathTex(r"e^{i\pi} + 1 = 0")
100
+ self.region.place(eq, ORIGIN)
101
+ self.play(Write(eq))
102
+ self.next_slide()
103
+ ```
104
+
105
+ Render as a slide deck:
106
+
107
+ ```bash
108
+ uv run manim-slides render path/to/scene.py HelloSlide
109
+ uv run manim-slides present HelloSlide
110
+ ```
111
+
112
+ Or create a lecture-site deck and build the portal:
113
+
114
+ ```bash
115
+ uv run simplex new algorithms/hash-tables
116
+ uv run simplex render hash-tables
117
+ uv run simplex build
118
+ uv run simplex serve
119
+ ```
120
+
121
+ ## Public Surface
122
+
123
+ | Module | Public surface |
124
+ | --- | --- |
125
+ | `simplex.plugin` | `activate()` entry point used by Manim. |
126
+ | `simplex.slides` | `BaseSlide`, `OutlineScene`, `OutlinePart`, `Chrome`, `make_chrome`. |
127
+ | `simplex.engine` | `Region`, `Remove`, `clear_scene`, `exit_for`, `register_exit`, `set_exit_animation`, `HighlightResult`, `apply_theme_defaults`. |
128
+ | `simplex.mobjects` | `Node`, `Edge`, `ArrayMob`, `ArrayEntry`, `ArrayPointer`, `OutlineProgressBar`, `Paper`, `ShowPaper`, `DismissPaper`, `PickPage`. |
129
+ | `simplex.theme` | `Theme`, `Palette`, `Typography`, `Spacing`, `Motion`, `LatexProfile`, `WebPalette`, `active_theme`, `get_active_theme`, `presets`, `render_web_css`. |
130
+ | `simplex.manifest` | `DeckManifest`, `MainSlide`, `Subsection`, the manifest schema written by the render pipeline. |
131
+ | `simplex.deck` | `DeckConfig`, `discover`, `scaffold`, section metadata, bundled deck template. |
132
+ | `simplex.render` | Manim runner, manifest reconciliation, thumbnails, HTML, PDF, PPTX, notes PDF, filenames. |
133
+ | `simplex.web` | Portal builder, notes renderer, citations, refs, templates, static assets, live reload. |
134
+ | `simplex.cli` | Typer application installed as the `simplex` command. |
135
+
136
+ ## CLI
137
+
138
+ | Command | Purpose |
139
+ | --- | --- |
140
+ | `simplex new <slug>` | Create `decks/<slug>/` from the bundled template. |
141
+ | `simplex new <section>/<slug>` | Create a deck inside a named section. |
142
+ | `simplex init [dir]` | Create a lectures repo from the GitHub template. |
143
+ | `simplex render <slug>` | Render one deck into `site/decks/<slug>/`. |
144
+ | `simplex render <slug>::<Scene>` | Render one scene from a deck. |
145
+ | `simplex build` | Render decks and build the static portal under `site/`. |
146
+ | `simplex build --no-render` | Rebuild portal HTML from existing render output. |
147
+ | `simplex serve [--watch]` | Serve `site/` locally, optionally with live reload. |
148
+ | `simplex test` | Smoke-render decks by rendering only the first animation. |
149
+ | `simplex clean` | Remove generated `site/` and `media/` output. |
150
+ | `simplex doctor` | Check required binaries on `PATH`. |
151
+
152
+ ## Deck Layout
153
+
154
+ `simplex new hash-tables` creates:
155
+
156
+ ```text
157
+ decks/hash-tables/
158
+ |-- deck.toml
159
+ |-- manim.cfg
160
+ |-- notes.md
161
+ |-- refs.bib
162
+ |-- assets/
163
+ `-- slides/
164
+ |-- __init__.py
165
+ `-- intro.py
166
+ ```
167
+
168
+ The important fields in `deck.toml` are:
169
+
170
+ ```toml
171
+ slug = "hash-tables"
172
+ title = "Hash Tables"
173
+ summary = "A one-line deck summary."
174
+ theme = "simplex_dark"
175
+ quality = "high_quality"
176
+ entrypoints = ["slides.intro:Intro", "slides.intro:KeyIdea"]
177
+
178
+ [slides."Key Idea"]
179
+ notes_anchor = "key-idea"
180
+ ```
181
+
182
+ ## Development
183
+
184
+ ```bash
185
+ git clone https://github.com/shlomi-perles/simplex.git
186
+ cd simplex
187
+ uv sync --all-extras
188
+ uv run pre-commit install
189
+ ```
190
+
191
+ Useful checks:
192
+
193
+ ```bash
194
+ python tools/check_readmes.py
195
+ uv run ruff check .
196
+ uv run ruff format --check .
197
+ uv run basedpyright
198
+ uv run pytest -q
199
+ uv run python tools/vendor_web_assets.py
200
+ uv build --no-sources
201
+ uvx twine check dist/*
202
+ ```
203
+
204
+ Run smoke tests locally:
205
+
206
+ ```bash
207
+ uv run python -c "import simplex.plugin; simplex.plugin.activate(); print('ok')"
208
+ uv run manim plugins -l
209
+ uv run simplex --help
210
+ uv run simplex test --only showcase
211
+ ```
212
+
213
+ ## Release
214
+
215
+ Releases are automated through Release Please and PyPI Trusted Publishing.
216
+ Commit changes using Conventional Commits (`feat:`, `fix:`, `chore:`). When
217
+ changes land on `main`, Release Please opens or updates a release PR. Merging
218
+ that PR creates the GitHub release, builds the package with uv, publishes
219
+ `manim-simplex` to PyPI via OIDC, and dispatches a template update workflow.
220
+
221
+ Manual version bumps and chained `simplex-web` releases are no longer part of
222
+ the release process.
223
+
224
+ ## License
225
+
226
+ MIT. See [LICENSE](LICENSE).
@@ -0,0 +1,37 @@
1
+ # decks/
2
+
3
+ Author content lives here, one directory per deck.
4
+
5
+ Each deck contains:
6
+ - `deck.toml` -- DeckConfig fields (slug, title, summary, tags, theme, scenes, quality)
7
+ - `slides.py` -- vanilla Manim subclassing `simplex.slides.*`
8
+ - `notes.md` -- academic-style notes (KaTeX math, `^[sidenotes]`,
9
+ `[slide:N]` jump links, `\cite{key}` citations)
10
+ - `refs.bib` -- optional BibTeX bibliography; cited entries appear as
11
+ alpha-style `[Auth23]` tags + an auto-rendered References section
12
+ - `assets/` -- optional images / data
13
+
14
+ Scaffold a new deck with:
15
+
16
+ uv run simplex new my-slug
17
+
18
+ Directories whose name starts with `_` (e.g. `_template/`) are skipped by `discover()`.
19
+
20
+ Force a re-render or re-render only a few scenes:
21
+
22
+ uv run simplex render my-slug --force
23
+ uv run simplex render my-slug --scene SceneA --scene SceneB
24
+
25
+ See `src/simplex/render/README.md` for the full cache + re-render semantics.
26
+
27
+ ## Bundled decks
28
+
29
+ - `_template/` -- starter copied by `simplex new` (skipped by `discover()`).
30
+ - `showcase/` -- canonical demo of every Simplex-specific helper:
31
+ - `engine.text`: `Caption`, `TexPage` (fixed-width minipage), `color_tex`
32
+ - `engine.code`: `code_block` + `highlight_code_lines` + `code_explain` + `transform_code_lines`
33
+ - `engine.geometry`: convex hull + surrounding rectangle
34
+ - `engine.region`: direction anchors + `shrink` + `reset` + `split(axis, k)`
35
+ - `engine.animations`: `set_exit_animation` + `register_exit` + `clear_scene(exclude=...)`
36
+ - `engine.scaling`: `scale_to_fit(len_x, len_y, buff)`
37
+ - `mobjects.graph` / `mobjects.array`: `Node`, `Edge`, `ArrayMob`, `ArrayPointer`
@@ -0,0 +1,30 @@
1
+ slug = "showcase"
2
+ title = "Simplex showcase"
3
+ summary = "Demonstrates every helper Simplex adds on top of vanilla Manim."
4
+ tags = ["reference", "showcase"]
5
+ theme = "simplex_dark"
6
+ quality = "medium_quality"
7
+ category = "Reference"
8
+ order = 0
9
+ entrypoints = [
10
+ "slides.scenes:TextHelpers",
11
+ "slides.scenes:CodeHelpers",
12
+ "slides.scenes:CodeWithMath",
13
+ "slides.scenes:GraphAndArray",
14
+ "slides.scenes:RegionAnchors",
15
+ "slides.scenes:OutlineHelpers",
16
+ "slides.scenes:ExitAnimations",
17
+ "slides.scenes:GeometryHelpers",
18
+ "slides.scenes:GlyphMapTransform",
19
+ "slides.scenes:TrackingHelpers",
20
+ "slides.scenes:ShapeAndDebug",
21
+ "slides.scenes:ScalingHelpers",
22
+ "slides.paper_showcase:PaperShowcase",
23
+ ]
24
+ voiceover = false
25
+
26
+ # Slide chrome lives in the RevealJS host, not the rendered frames.
27
+ # Toggling these on costs nothing -- no re-render needed.
28
+ [web]
29
+ show_slide_number = true
30
+ show_clock = true