diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e5cada..2f0d9a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -57,11 +57,12 @@ version heading for the full notes. base-level sliders and a single play/pause button, so a reader can watch the long profile adjust in real time -- Lane's balance, played out dynamically. It runs GRLP entirely in the browser via Pyodide (WebAssembly) -- no install, no - server -- and is compiled from `interactive_demo/grlp_panel.py` with Panel - (`panel convert`) at documentation build time, self-hosting the wheels it needs - beside the app (referenced by relative URLs) so it depends on no external - services at run time. A Jupyter-notebook version of the same demo is kept in - `interactive_demo/` for classroom or notebook use. + server -- and is compiled from `interactive_demo/grlp_panel.py` by + [artesian](https://github.com/MNiMORPH/artesian) at documentation build time. + The grlp, panel and bokeh wheels are self-hosted beside the app and referenced + by relative URLs, so no wheel CDN is needed at run time; the Pyodide runtime + itself is still fetched from a CDN on first load. A Jupyter-notebook version of + the same demo is kept in `interactive_demo/` for classroom or notebook use. - **Second-order-in-time integration (BDF2)** -- now the **default** (see *Changed*). `set_time_integration(1)` selects the previous first-order backward Euler. BDF2 makes the final-profile error scale like Δt² rather than Δt, so diff --git a/docs/conf.py b/docs/conf.py index b258a44..9b2e791 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -8,9 +8,7 @@ environment first. """ -import glob import os -import subprocess import sys # Make the package importable for autodoc when GRLP is not pip-installed @@ -36,48 +34,13 @@ shutil.copyfile(os.path.join(_here, "..", "examples", _nb), os.path.join(_tutorial_dst, _nb)) -# Build the interactive browser demo (docs/interactive.md). `panel convert` -# compiles interactive_demo/grlp_panel.py into a standalone WebAssembly app that -# runs GRLP entirely in the reader's browser via Pyodide. The app and the wheels -# it loads (grlp, built fresh here; panel + bokeh, self-hosted from PyPI) live -# together in _static/interactive/ and are referenced by *relative* URLs, so the -# demo works wherever the docs are served with no external CDN. interactive.md +# The interactive browser demo (docs/interactive.md) is built by artesian, +# which compiles interactive_demo/grlp_panel.py into a standalone WebAssembly +# app running GRLP entirely in the reader's browser via Pyodide. It wheels +# grlp fresh from this source tree, self-hosts the panel and bokeh wheels +# beside the app, and rewrites their CDN URLs to those local copies (the +# holoviz CDN's bokeh wheel 403s). See artesian_apps below; interactive.md # embeds _static/interactive/grlp_panel.html in an