Add Stratos Theme Builder (stb): build-time CSS theming tool - #5396
Merged
Conversation
The README promises npm run lint works, but it surfaced 42 pre-existing errors after the MVP commits landed. Two gaps in eslint.config.mjs: - Missing browser globals (Blob, fetch, setTimeout, clearTimeout, confirm, prompt, HTMLButtonElement, HTMLSelectElement, MouseEvent, Node) — 33 of the 42 errors. - Base no-unused-vars rule flags interface-signature parameters as unused even though they're documentation in the type declaration. Switched to @typescript-eslint/no-unused-vars which understands TS contexts. Also removed the unused vi import from tests/state/presets.test.ts (inherited verbatim from the plan but never actually used). npm run typecheck, lint, test (46/46), build all clean.
Develop retooled to vitest 4 / jsdom 27 / Node 26 / bun; stb was on vitest 2.1.9, whose jsdom adapter left localStorage undefined under Node 26 (native localStorage is gated behind --localstorage-file). - Bump vitest 2.1.9 -> 4.1.7, vite 5 -> 7, playwright 1.48 -> 1.60; add @vitest/browser-playwright and declare jsdom explicitly so the DOM env no longer depends on monorepo hoisting. - Convert vitest.workspace.ts -> test.projects (defineWorkspace removed in v4); browser provider string -> playwright() factory; browser.name -> browser.instances. - Add tests/setup.ts localStorage/sessionStorage polyfill, mirroring src/frontend/vitest.workspace.setup.ts. - Switch package manager npm -> bun (package-lock.json -> bun.lock). 46/46 tests pass; typecheck, lint, build clean.
nabramovitz
marked this pull request as ready for review
May 30, 2026 16:18
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds
tools/stb— the Stratos Theme Builder, a standalone build-time CSS theming tool for operators. Independent SPA (Vite + TypeScript + Oat UI + @preact/signals-core + CodeMirror 6 + JSZip) that edits theme tokens with live light/dark preview and exports a zip bundle (preset.json + theme.css + assets/) for stratos to consume.All changes are confined to
tools/stb/; nothing else in the repo is touched.Contents (29 commits)
src/frontend/vitest.workspace.setup.ts.Verification