CDN + offline HTML delivery modes — the standalone HTML export now serves
the viewer runtime as a pinned jsDelivr bundle by default, with
delivery="inline" and delivery="offline" options. "offline" downloads
three.js/marked/KaTeX/html2canvas and bundles them with esbuild at export
time (requires Node.js + esbuild), producing a fully self-contained file.
column table column type — a column whose dropdown lists the de-duped
values of another column (e.g. a preferences column seeded from a names
column), selectable from the header context menu's "From column…" submenu.
custom table column type — a backend-only enum whose dropdown is
populated at edit time by a registered on_enum_options handler
(TableView(..., on_enum_options=handler)); it cannot be selected or changed
from the frontend.
Per-control DOM factories moved to controls/*.js — the create* control
factories previously in templates/controls-panel.js now live one-per-control
under templates/controls/ (analogous to controls/table.js), leaving
controls-panel.js as the shared core (registry, event dispatch, icons,
helpers); the orphaned createFileChooser was removed.