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 otvaranje stabla vještina'
branch_complete_msg: 'Završili ste granu %{branch}!'
all_levels_mastered: 'Svih %{count} razina savladano.'
all_keys_confident: 'Svaka tipka u ovoj grani je na punoj razini pouzdanosti.'
all_keys_confident: 'Svaka tipka u ovoj grani je savladana.'
all_unlocked_msg: 'Otključali ste svaku tipku na tipkovnici!'
all_unlocked_desc: 'Svaki znak, simbol i modifikator je sada dostupan u vašim vježbama.'
keep_practicing_mastery: 'Nastavite vježbati za izgradnju majstorstva — kada svaka tipka dosegne punu'
confidence_complete: 'razinu pouzdanosti, postigli ste potpuno vladanje tipkovnicom!'
keep_practicing_mastery: 'Nastavite vježbati — kada svaka tipka bude savladana,'
confidence_complete: 'postigli ste potpuno vladanje tipkovnicom!'
all_mastered_msg: 'Čestitamo — postigli ste potpuno vladanje tipkovnicom!'
all_mastered_desc: 'Svaka tipka na tipkovnici je na maksimalnoj razini pouzdanosti.'
all_mastered_desc: 'Svaka tipka na tipkovnici je savladana.'
mastery_takes_practice: 'Majstorstvo nije odredište — zahtijeva stalnu vježbu.'
keep_drilling: 'Nastavite vježbati kako biste održali formu.'
hint_skill_tree_continue: 'Otvori stablo vještina [Bilo koja tipka] Nastavi'
@@ -335,16 +335,24 @@ milestones:
unlock_msg_2: 'Još jedna tipka dodana u vaš arsenal!'
unlock_msg_3: 'Vaša tipkovnica raste! Samo naprijed.'
unlock_msg_4: 'Korak bliže potpunom vladanju tipkovnicom!'
mastery_msg_1: 'Ova tipka je sada na punoj razini pouzdanosti!'
unlock_msg_plural_1: 'Odličan posao! Nastavite graditi vještine tipkanja.'
unlock_msg_plural_2: 'Još nekoliko tipki dodano u vaš arsenal!'
unlock_msg_plural_3: 'Vaša tipkovnica raste! Samo naprijed.'
unlock_msg_plural_4: 'Nekoliko koraka bliže potpunom vladanju tipkovnicom!'
mastery_msg_1: 'Ova tipka je sada savladana.'
mastery_msg_2: 'Ovu tipku imate u malom prstu!'
mastery_msg_3: 'Mišićna memorija zaključana!'
mastery_msg_4: 'Još jedna tipka osvojena!'
mastery_msg_plural_1: 'Ove tipke su sada savladane.'
mastery_msg_plural_2: 'Ove tipke imate u malom prstu!'
mastery_msg_plural_3: 'Mišićna memorija zaključana!'
mastery_msg_plural_4: 'Još nekoliko tipki osvojeno!'
# Uvodni prekrivač prilagodljive vježbe
adaptive_intro:
title: ' Dobrodošli u keydr! '
how_it_works: 'Kako funkcioniraju prilagodljive vježbe:'
description: 'Počinjete s malim skupom najčešćih slova koja su otključana. Vježba generira samo riječi koje koriste ta slova. Kako ih tipkate s pouzdanošću, nove tipke se postupno otključavaju dok ne savladate cijelu tipkovnicu.'
description: 'Počinjete s malim skupom najčešćih slova koja su otključana. Vježba generira samo riječi koje koriste ta slova. Kako ih savladavate, nove tipke se postupno otključavaju dok ne savladate cijelu tipkovnicu.'
target_wpm_label: 'Ciljni WPM:'
target_wpm_desc: 'Ovo utječe na brzinu otključavanja tipki — viši ciljevi zahtijevaju brže tipkanje. 35 WPM je dobro polazište ako niste sigurni. To uvijek možete promijeniti kasnije u postavkama.'
hint_adjust: 'Podesi WPM'
@@ -390,6 +398,9 @@ keyboard:
in_focus_label: 'U fokusu?: '
mastery_label: 'Majstorstvo: '
mastery_locked: 'Zaključano'
mastery_mastered: 'Savladana'
mastery_in_progress: 'U tijeku'
speed_confidence_label: 'Pouzdanost brzine: '
ranked_avg_time: 'Ocj. prosj. vrijeme: '
ranked_best_time: 'Ocj. najbolje vrijeme: '
ranked_samples: 'Ocj. uzoraka: '