[Feature]: Apply the saved UI theme before the WASM bundle boots
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 83/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- javascript, rust, wasm
- Ambito
- frontend
Direzione di ricerca
La issue indica index.html, crates/app/src/main.rs:36-44, vercel.json e SECURITY.md. Leggi la discussione attuale sull’effetto del tema e sull’eccezione CSP, poi verifica come viene memorizzato il valore codeframe-ui-theme e quali valori di tema accetta. Il lavoro è completato quando il tema salvato imposta data-theme su html prima del primo rendering, la discussione su CSP documenta lo script inline e l’effetto successivo all’avvio rimane la fonte di verità.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
The saved UI theme is applied by a Leptos Effect that runs after the WASM bundle boots (crates/app/src/main.rs:36-44). Users who selected dark or sepia see a flash of the light theme on every page load, which is most noticeable on slow connections and on the installed PWA.
Proposed solution
Apply the persisted theme before the first paint. The simplest approach is a tiny inline script in index.html that reads the codeframe-ui-theme key from localStorage and sets data-theme on <html>. The CSP in vercel.json already allows script-src 'unsafe-inline' (documented in SECURITY.md as a Trunk bootstrap requirement), so no CSP change is needed, but the script must be added to the same exception discussion to stay auditable.
The Leptos effect can stay as the source of truth after boot; the inline script only prevents the first-paint flash.
Alternatives considered
- CSS-only solution with
prefers-color-scheme: only covers light/dark system preference, not the app's three-way theme or the user's explicit choice. - Accept the flash: it is small but visible on every load and works against the "quiet, instant" positioning.
Project constraints
- This keeps everything client-side (no backend, no server-side processing; code never leaves the browser).
- This does not introduce a DOM-screenshot library (html2canvas, dom-to-image); rendering stays on Canvas2D/SVG.
- This respects resolution honesty: the export canvas is drawn at true scale and never upscaled after the fact.
- Lingua principale
- Rust
- Stelle
- 1
- Fork
- 0
- Merge medio
- 1g 7h
- PR unite (30g)
- 5
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di suradet-ps/codeframe
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
suradet-ps/codeframe#35 ·
I maintainer di solito rispondono entro 1 giorno
-
documentation good first issue
Difficoltà 1/5 1-3 ore Idoneità per principianti 88/100
suradet-ps/codeframe#36 ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: Target width input clamps the value on every keystrokeForse già presa @AnushreeKasturi l’ha presa 4 giorni fa. Apertabug good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
suradet-ps/codeframe#37 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
suradet-ps/codeframe#38 ·
I maintainer di solito rispondono entro 1 giorno
-
bug good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
suradet-ps/codeframe#30 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di suradet-ps/codeframe
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
pedrovgs/UseCaseCoverage#23 ·
-
priority: low
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
storytold/photocraft#8687 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
THREAD: operation failedApertaarea:kernel bug kernel-paused needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
bherbruck/solvecraft#5055 · 2 commenti ·
-
bug cli p3
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 3 giorni
-
documentation good first issue help wanted
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno