You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Onboarding: dificuldade nasce em "Médio" e atropela o Iniciante — primeira sala deveria nascer no Fácil (§0.3) #16
Origem: feedback da persona O Iniciante (Discussion #14, fricção nº1) — jogou a produção de verdade e caiu no Médio sem querer.
Problema
A dificuldade da sala nasce em Médio por padrão — useState<Difficulty>("medium") em src/components/HomeView.tsx:49 (modal de criação nas linhas 410–431). Quem está começando clica em Criar sala sem mexer e cai num snippet de ~10 linhas com recursão/reduce — o oposto do "Snippets curtos, sintaxe básica" que o próprio card do Fácil promete.
Isso contraria diretamente docs/UI-AAA-OVERHAUL.md§0.3, que lista "dificuldade fácil generosa" como o que conquista a persona Iniciante. Hoje o default empurra o novato para a fricção máxima logo na primeira partida.
Acceptance criteria
Na primeira criação de sala (sem histórico local de sala criada), a dificuldade pré-selecionada é Fácil — ou há um empurrão visível ("primeira vez? começa no Fácil") sem travar a escolha.
Usuário que já criou salas antes mantém sua escolha/last-used (não regredir quem já sabe o que quer).
Nenhuma mudança no pool de snippets nem na lógica da corrida (só o estado inicial do seletor).
pnpm typecheck + pnpm build verdes.
Dica de abordagem
Trocar o valor inicial de difficulty no HomeView.tsx:49 por "easy" é a fatia mínima e resolve 90% do caso. Se quiser preservar o "last-used", persistir a última dificuldade em localStorage e cair em "easy" quando não houver registro. Manter os descritivos do modal (a persona os elogiou — não mexer).
Estado inicial do seletor de dificuldade passa a ser "easy" (primeira sala nasce no Fácil, §0.3) e um useEffect recupera o last-used de localStorage (coderacer:difficulty, com type guard) para não regredir quem já criou salas; handleCreate persiste a escolha. Só o estado do seletor — sem mexer no pool de snippets nem na corrida. Gate: typecheck ✓, build ✓, validate-persistence 33/33 ✓, validate-metrics 24/24 ✓. Normal (§7.3).
Activity
caioross commentedon Jul 10, 2026
🔧 Resolvido em PR #21.
Estado inicial do seletor de dificuldade passa a ser
"easy"(primeira sala nasce no Fácil, §0.3) e umuseEffectrecupera o last-used delocalStorage(coderacer:difficulty, com type guard) para não regredir quem já criou salas;handleCreatepersiste a escolha. Só o estado do seletor — sem mexer no pool de snippets nem na corrida. Gate: typecheck ✓, build ✓, validate-persistence 33/33 ✓, validate-metrics 24/24 ✓. Normal (§7.3).fix(ui): primeira sala nasce no Fácil e lembra a última dificuldade (#16