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: 'Pritisnite [t] za odprtje drevesa veščin'
branch_complete_msg: 'Dokončali ste vejo %{branch}!'
all_levels_mastered: 'Vseh %{count} ravni osvojenih.'
all_keys_confident: 'Vse tipke v tej veji so na polnem zaupanju.'
all_keys_confident: 'Vse tipke v tej veji so osvojene.'
all_unlocked_msg: 'Odklenili ste vse tipke na tipkovnici!'
all_unlocked_desc: 'Vsak znak, simbol in modifikator je zdaj na voljo v vajah.'
keep_practicing_mastery: 'Nadaljujte z vadbo za gradnjo osvojitve — ko vsaka tipka doseže polno'
confidence_complete: 'zaupanje, boste dosegli popolno osvojitev tipkovnice!'
keep_practicing_mastery: 'Nadaljujte z vadbo — ko bo vsaka tipka osvojena,'
confidence_complete: 'boste dosegli popolno osvojitev tipkovnice!'
all_mastered_msg: 'Čestitke — dosegli ste popolno osvojitev tipkovnice!'
all_mastered_desc: 'Vsaka tipka na tipkovnici je na maksimalnem zaupanju.'
all_mastered_desc: 'Vsaka tipka na tipkovnici je osvojena.'
mastery_takes_practice: 'Osvojitev ni cilj — zahteva stalno vadbo.'
keep_drilling: 'Nadaljujte z vajami, da ohranite prednost.'
hint_skill_tree_continue: 'Odpri drevo veščin [Katerakoli tipka] Nadaljuj'
@@ -335,16 +335,24 @@ milestones:
unlock_msg_2: 'Še ena tipka dodana v vaš arzenal!'
unlock_msg_3: 'Vaša tipkovnica raste! Kar tako naprej.'
unlock_msg_4: 'En korak bližje popolni osvojitvi tipkovnice!'
mastery_msg_1: 'Ta tipka je zdaj na polnem zaupanju!'
unlock_msg_plural_1: 'Odlično! Nadaljujte z gradenjem veščin tipkanja.'
unlock_msg_plural_2: 'Še nekaj tipk dodanih v vaš arzenal!'
unlock_msg_plural_3: 'Vaša tipkovnica raste! Kar tako naprej.'
unlock_msg_plural_4: 'Nekaj korakov bližje popolni osvojitvi tipkovnice!'
mastery_msg_1: 'Ta tipka je zdaj osvojena.'
mastery_msg_2: 'To tipko obvladate v celoti!'
mastery_msg_3: 'Mišični spomin zaklenjen!'
mastery_msg_4: 'Še ena tipka osvojena!'
mastery_msg_plural_1: 'Te tipke so zdaj osvojene.'
mastery_msg_plural_2: 'Te tipke obvladate v celoti!'
mastery_msg_plural_3: 'Mišični spomin zaklenjen!'
mastery_msg_plural_4: 'Še nekaj tipk osvojenih!'
# Uvodni prekrivnik prilagodljive vaje
adaptive_intro:
title: ' Dobrodošli v keydr! '
how_it_works: 'Kako delujejo prilagodljive vaje:'
description: 'Začnete z majhnim naborom najpogostejših odkljenjenih črk. Vaja ustvarja samo besede, ki uporabljajo te črke. Ko jih tipkate samozavestno, se nove tipke postopoma odklenejo, dokler ne obvladate celotne tipkovnice.'
description: 'Začnete z majhnim naborom najpogostejših odkljenjenih črk. Vaja ustvarja samo besede, ki uporabljajo te črke. Ko jih osvojite, se nove tipke postopoma odklenejo, dokler ne obvladate celotne tipkovnice.'
target_wpm_label: 'Ciljni WPM:'
target_wpm_desc: 'To vpliva na hitrost odklepanja tipk — višji cilji zahtevajo hitrejše tipkanje. 35 WPM je dobro izhodišče, če niste prepričani. To lahko vedno spremenite kasneje v nastavitvah.'
hint_adjust: 'Prilagodi WPM'
@@ -390,6 +398,9 @@ keyboard:
in_focus_label: 'V fokusu?: '
mastery_label: 'Osvojitev: '
mastery_locked: 'Zaklenjeno'
mastery_mastered: 'Osvojena'
mastery_in_progress: 'Poteka'
speed_confidence_label: 'Zaupanje hitrosti: '
ranked_avg_time: 'Ocenjeni povpr. čas: '
ranked_best_time: 'Ocenjeni najb. čas: '
ranked_samples: 'Ocenjeni vzorci: '