Appearance
Tailwind #62 — Drop Bulma + enable preflight
| Field | Value |
|---|---|
| GitLab | sourcecontrollers/safecall#62 |
| Parent | #52 |
| Roadmap | tailwind-roadmap.md |
| Depends on | #61 (closed); user surfaces #56 closed |
| Workflow | closed |
Goal
Remove Bulma entirely, enable Tailwind preflight, clean coexistence aliases, update embeds/selftests/E2E, and replace agent theming guidance so umbrella #52 can close.
Acceptance criteria
- [x]
bulmaremoved fromweb/package.json/ lockfile;bulma.min.cssno longer shipped or embedded - [x] Tailwind preflight enabled in
app.css - [x] Coexistence aliases removed (
.is-hidden→.hiddenonly; Bulma class shims gone) - [x] Grep gate clean: no
bulmadep, no--bulma-*, no bareis-lightchip pattern as sole color - [x] Embeds / static selftests updated for CSS asset paths
- [x] E2E specs updated off Bulma selectors
- [x] Agent docs: add
.cursor/rules/tailwind-theming.mdc+tailwind-uiskill (Pythia-shaped); updatedocs/web/index.md,docs/web/build.md, roadmap checklist - [x] Umbrella #52 closable after verify
Implementation notes
Phase A — leftover sweep
Migrate any deferred leftovers from #61 inventory; fix E2E assertions.
Phase B — cutover
- Drop Bulma from build concat /
index.htmllinks / embeds. - Enable preflight; fix any reset fallout in catalog components.
- Remove obsolete Bulma patch CSS.
- Ensure
data-theme="dark"is the sole theme root API (notheme-darkclass).
Phase C — agent + docs
- New always-on theming rule: tokens, soft vs solid, verify dark (and light tokens if exercised).
- Skill with component catalog examples.
- Update web docs tech stack bullets (Bulma → Tailwind).
- Mark checklist items done in
tailwind-roadmap.md.
Out of scope
| Work | Notes |
|---|---|
| Light-mode product toggle | Optional follow-up |
Brand.primary_color injection | Optional follow-up |
| Font Awesome replacement | Out of program |
| Mobile / VitePress theming | Out of program |
Key paths
web/package.json,web/build.ts,web/build/index.htmlweb/src/css/app.cssscripts/build/generators/embeds.ts,server/src/static_embeds.ts(generated).cursor/rules/,.cursor/skills/docs/web/index.md,docs/web/build.md,docs/ai/tailwind-roadmap.md- E2E specs under project test config
Verification
- Full web build without Bulma.
- Smoke: login, shell, one user surface, one admin CRUD, one spatial page, one tool.
cd web && bun run typecheck;bun test:e2efor web; server selftest if CSS embeds asserted.- Grep gate as in acceptance criteria.
- Close #62 then umbrella #52.
Done when / handoff
- Operator verifies → commit with
Closes #62(and note #52) → pushgitlab. - Close umbrella #52.
- Subsequent UI work uses Tailwind catalog only (freeze permanent).