--theme flag and does not load arbitrary theme files. show, local view, and static export consume the same ReportExecution. NiceEval’s exporter supplies the web shell completely through its built-in runtime, base styles, and fonts.
What a Report can control
A Report uses a structuredReportPageModel to choose its title, content, tables, chart data, status prompts, and text alternative. It can organize information and choose appropriate built-in components, but it cannot return scripts, CSS, fonts, workers, WASM, network URLs, or local file paths.
Color and interaction can only enhance existing meaning. Partial, unavailable, unsupported, and invalid states must also have text or table representations; color alone cannot distinguish them.
Why arbitrary theme injection is excluded
A static Report promises to be self-contained, preflightable, and available offline. If a Report or CLI could load arbitrary CSS, scripts, or fonts, export would need to deal again with code execution, resource closure, network URLs, path escapes, and version drift. Sharing a fixed result would become another plugin and build system. A fixed host lets the exporter enumerate every asset before writing files, keep the manifest and ordinary files one-to-one, and give local and static pages the same interpretation even when an external theme package changes.Branding later
The current choice is to design branding as a future host capability rather than let users inject arbitrary resources. Any future capability must still:- Change appearance only, not a Calculation, denominator, or state.
- Allow the asset set to be verified exhaustively before export.
- Avoid network and arbitrary user paths.
- Keep terminal text and web semantics equivalent for the same
ReportExecution. - Preserve the static site’s offline and content-security boundaries.