feat: add sticky error-aware key mastery

Persist ranked-only mastery and use it consistently across progression, milestones, counts, and localized UI. Preserve mastery during history rebuilds, replay errors accurately, and generate replay-derived test profiles. Document the follow-up plan to remove the drill history cap.
This commit is contained in:
2026-08-12 01:09:52 -04:00
parent 0f8493eb02
commit 5daa644d3b
47 changed files with 2683 additions and 722 deletions
+17 -6
View File
@@ -319,13 +319,13 @@ milestones:
open_skill_tree: 'Pressione [t] para abrir a Árvore de Habilidades'
branch_complete_msg: 'Você completou o ramo %{branch}!'
all_levels_mastered: 'Todos os %{count} níveis dominados.'
all_keys_confident: 'Cada tecla neste ramo está em confiança máxima.'
all_keys_confident: 'Cada tecla neste ramo foi dominada.'
all_unlocked_msg: 'Você desbloqueou todas as teclas do teclado!'
all_unlocked_desc: 'Cada caractere, símbolo e modificador está disponível nos seus exercícios.'
keep_practicing_mastery: 'Continue praticando para alcançar o domínio — quando cada tecla atingir'
confidence_complete: 'confiança máxima, você terá alcançado o domínio total do teclado!'
keep_practicing_mastery: 'Continue praticando — quando cada tecla for dominada,'
confidence_complete: 'você terá alcançado o domínio total do teclado!'
all_mastered_msg: 'Parabéns — você alcançou o domínio total do teclado!'
all_mastered_desc: 'Cada tecla do teclado está em confiança máxima.'
all_mastered_desc: 'Cada tecla do teclado foi dominada.'
mastery_takes_practice: 'O domínio não é um destino — requer prática contínua.'
keep_drilling: 'Continue praticando para manter seu nível.'
hint_skill_tree_continue: 'Abrir Árvore de Habilidades [Outra tecla] Continuar'
@@ -335,16 +335,24 @@ milestones:
unlock_msg_2: 'Mais uma tecla adicionada ao seu arsenal!'
unlock_msg_3: 'Seu teclado está crescendo! Continue assim.'
unlock_msg_4: 'Um passo mais perto do domínio total!'
mastery_msg_1: 'Esta tecla está em confiança máxima!'
unlock_msg_plural_1: 'Bom trabalho! Continue melhorando suas habilidades.'
unlock_msg_plural_2: 'Mais teclas adicionadas ao seu arsenal!'
unlock_msg_plural_3: 'Seu teclado está crescendo! Continue assim.'
unlock_msg_plural_4: 'Vários passos mais perto do domínio total!'
mastery_msg_1: 'Esta tecla foi dominada.'
mastery_msg_2: 'Você domina esta tecla perfeitamente!'
mastery_msg_3: 'Memória muscular adquirida!'
mastery_msg_4: 'Mais uma tecla conquistada!'
mastery_msg_plural_1: 'Estas teclas foram dominadas.'
mastery_msg_plural_2: 'Você domina estas teclas perfeitamente!'
mastery_msg_plural_3: 'Memória muscular adquirida!'
mastery_msg_plural_4: 'Mais teclas conquistadas!'
# Sobreposição de introdução ao exercício adaptativo
adaptive_intro:
title: ' Bem-vindo ao keydr! '
how_it_works: 'Como funcionam os exercícios adaptativos:'
description: 'Você começa com um pequeno conjunto das letras mais comuns desbloqueadas. O exercício só gera palavras que usam essas letras. À medida que as digita com confiança, novas teclas são gradualmente desbloqueadas até você dominar o teclado completo.'
description: 'Você começa com um pequeno conjunto das letras mais comuns desbloqueadas. O exercício só gera palavras que usam essas letras. À medida que as domina, novas teclas são gradualmente desbloqueadas até você dominar o teclado completo.'
target_wpm_label: 'WPM Alvo:'
target_wpm_desc: 'Isso afeta a velocidade com que as teclas são desbloqueadas — metas mais altas exigem digitação mais rápida. 35 WPM é um bom ponto de partida se não tiver certeza. Você pode sempre alterar isso mais tarde nas configurações.'
hint_adjust: 'Ajustar WPM'
@@ -390,6 +398,9 @@ keyboard:
in_focus_label: 'Em Foco?: '
mastery_label: 'Domínio: '
mastery_locked: 'Bloqueado'
mastery_mastered: 'Dominada'
mastery_in_progress: 'Em progresso'
speed_confidence_label: 'Confiança de velocidade: '
ranked_avg_time: 'Tempo Méd. Classificado: '
ranked_best_time: 'Melhor Tempo Classificado: '
ranked_samples: 'Amostras Classificadas: '