Skip to content

feat(ui): renomeia dificuldades para 🟢 Júnior / 🔵 Pleno / 🟣 Sênior (#73) - #86

Merged
caioross merged 2 commits into
mainfrom
auto/issue-73-difficulty-names
Jul 26, 2026
Merged

feat(ui): renomeia dificuldades para 🟢 Júnior / 🔵 Pleno / 🟣 Sênior (#73)#86
caioross merged 2 commits into
mainfrom
auto/issue-73-difficulty-names

Conversation

@caioross

Copy link
Copy Markdown
Owner

Contexto

Os níveis Fácil/Médio/Difícil são genéricos. O público do CodeRacer é dev, então nomes
inspirados na carreira (#73) reforçam a identidade sem perder a ideia de progressão.

O que mudou

Atual Novo
Fácil 🟢 Júnior
Médio 🔵 Pleno
Difícil 🟣 Sênior
  • src/lib/languages.ts — fonte única DIFFICULTIES. Todos os locais que renderizam
    d.label (Lobby, HomeView, Practice) herdam a mudança automaticamente; nenhum componente
    precisou ser tocado.
  • README.md — a linha de features cita os novos níveis.

Nada de comportamento muda (AC "apenas nomenclatura"): os id seguem easy/medium/hard
— é a chave usada na allowlist da API (api/rooms/**), na seleção de snippet (pickSnippet),
no leaderboard e nos filtros. Só o texto exibido mudou. As desc de cada nível continuam
descrevendo as características reais do snippet.

Como foi validado (resultado real)

pnpm install --frozen-lockfile   OK
pnpm typecheck                   OK
pnpm build                       OK
pnpm test                        OK — 54 testes
pnpm lint                        N/A — sem config ESLint no repo

Verificação em browser (next dev, /practice): o seletor de dificuldade mostra
🟢 Júnior / 🔵 Pleno / 🟣 Sênior, os rótulos antigos sumiram do DOM, e as descrições/filtros
seguem funcionando:

DIFICULDADE 🟢 Júnior · Snippets curtos, sintaxe básica
            🔵 Pleno  · Snippets do dia a dia, ~10 linhas
            🟣 Sênior · Snippets longos com sintaxe avançada

Governança HANDBOOK §7.3 (normal): só rótulos/doc; não toca api/rooms/**, supabase.ts,
anti-cheat, migrations, CI, nem adiciona dependência.

Closes #73

Nomenclatura inspirada na carreira dev, reforçando a identidade do CodeRacer. Só a
NOMENCLATURA muda: os `id` seguem `easy`/`medium`/`hard` — a chave usada em toda a
lógica (allowlist da API, seleção de snippet, leaderboard, filtros), então nada de
comportamento é alterado.

- `src/lib/languages.ts` — fonte única `DIFFICULTIES`: Fácil→🟢 Júnior, Médio→🔵 Pleno,
  Difícil→🟣 Sênior. Todos os locais que renderizam `d.label` (Lobby, HomeView, Practice)
  herdam automaticamente.
- `README.md` — a linha de features passa a citar os novos níveis.

Verificado em `/practice` (dev): o seletor mostra os três novos rótulos, os antigos
sumiram, e as descrições/filtros continuam intactos.
@gemini-code-assist

Copy link
Copy Markdown

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@vercel

vercel Bot commented Jul 26, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
code-racer Ready Ready Preview, Comment Jul 26, 2026 6:17pm

@caioross

Copy link
Copy Markdown
Owner Author

Parecer do PR Doctor — APROVADO tecnicamente, na fila do próximo merge

Diff lido inteiro (7+/4−, 2 arquivos). Classificação: §7.3 normal — só nomenclatura exibida + README.

Verificado no código da branch, não no corpo do PR:

  • Nenhuma chave de comportamento mudou. src/lib/room.ts:170 monta a allowlist da API com DIFFICULTIES.map(d => d.id) — os ids seguem easy/medium/hard, então isValidDifficulty/resolveDifficulty, seleção de snippet, leaderboard e filtros ficam intactos. Só o label renderizado mudou.
  • Todos os consumidores herdam da fonte única: HomeView.tsx, Lobby.tsx e PracticeView.tsx renderizam d.label — nenhum tem string literal de dificuldade, nenhum precisou ser tocado. Confirmei com git grep DIFFICULTIES na própria branch.
  • Closes #73 legítimo: a issue pede exatamente a troca de nomenclatura, e as desc continuam descrevendo o snippet real.
  • CI verde (typecheck+test+build), MERGEABLE.

Por que não mergeei agora: teto do HANDBOOK §8 — ≤2 merges por rodada para o PR Doctor, e esta rodada já gastou os dois (#85 mergeada + #76, que passou por quórum com reparo). Não é bloqueio técnico nem espera por humano: esta PR é a primeira da fila da rodada de amanhã (18h), salvo se a main mudar algo aqui no meio-tempo.

@caioross

Copy link
Copy Markdown
Owner Author

✅ PR Doctor — APROVADA (UI/conteúdo) + reparo por união

Diff lido. Só nomenclatura das dificuldades (Fácil/Médio/Difícil → 🟢 Júnior / 🔵 Pleno / 🟣 Sênior) em languages.ts (DIFFICULTIES.label) + README. Os id seguem easy/medium/hard — as chaves reais (allowlist da API, snippets, leaderboard, filtros) não mudam. Zero lógica.

União com origin/main: conflito só no README (rótulos vs "30 jogadores" da #76) resolvido mantendo ambos. typecheck ✓; CI + Vercel verdes. Closes #73. Squash-merge.

@caioross
caioross merged commit d4379eb into main Jul 26, 2026
3 checks passed
@caioross
caioross deleted the auto/issue-73-difficulty-names branch July 26, 2026 18:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[UX] Renomear níveis de dificuldade para Júnior, Pleno e Sênior

1 participant