# scripts/ Dev-only utility scripts. These are NOT bundled by `npm run build` — the production `dist/` contains zero `smoke` artifacts (verified by `grep -rn smoke dist/` returning empty post-build). ## Smoke-isolation invariant `smoke.sh` and any future smoke-test harness live ENTIRELY in this directory. Vite's `rollupOptions.input` (vite.config.ts) does NOT reference any path under `scripts/`; the build pipeline cannot include smoke artifacts in `dist/`. RESEARCH §12 verifies no-op condition via `grep -rn 'smoke\|SMOKE\|data:text/html' src/` returning empty. A defensive `__VITE_DEV__` define-token (see `vite.config.ts:define`) is reserved for any future inline smoke-mode check; currently it defaults to `false` so even a misplaced `if (__VITE_DEV__) { ... }` branch is statically tree-shaken out of production by Rollup. Override per-build via env var: ```bash VITE_DEV=1 npm run dev # __VITE_DEV__ === true npm run build # __VITE_DEV__ === false (production default) ``` ## Index | Script | Purpose | |---------------------------|----------------------------------------------------------------------| | `subset-fonts.sh` | One-off font subsetting (Lora + IBM Plex Sans/Mono → Latin+Cyrillic) | | `rasterize-icons.sh` | One-off icon rasterization (mokosh-mark.svg → icons/icon{16,48,128}.png) | | `smoke.sh` (if present) | Local smoke harness — not part of `npm run build` | Re-run conditions: - `subset-fonts.sh`: when upstream Lora-Cyrillic or IBM/plex releases a major bump with bug fixes; or when the UNICODES range needs expansion. See `src/shared/fonts/README.md` for the canonical recipe. - `rasterize-icons.sh`: when `src/shared/brand/mokosh-mark.svg` changes (the source-of-truth for the toolbar icon). ## References - `.planning/phases/01-stabilize-video-pipeline/01-12-PLAN.md` Wave 5 Task 1 — the smoke-isolation contract this README documents - `.planning/phases/01-stabilize-video-pipeline/01-12-RESEARCH.md` §12 — verification rationale - `.planning/intel/brand-decisions-v1.md` D-09 — dev-only smoke shipping decision