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: 'Paina [t] avataksesi taitopuun nyt'
branch_complete_msg: 'Olet suorittanut haaran %{branch}!'
all_levels_mastered: 'Kaikki %{count} tasoa hallittu.'
all_keys_confident: 'Jokainen näppäin tässä haarassa on täydellä varmuudella.'
all_keys_confident: 'Jokainen näppäin tässä haarassa on hallittu.'
all_unlocked_msg: 'Olet avannut jokaisen näppäimen näppäimistöllä!'
all_unlocked_desc: 'Jokainen merkki, symboli ja muokkain on nyt käytettävissä harjoituksissasi.'
keep_practicing_mastery: 'Jatka harjoittelua hallinnan rakentamiseksi — kun jokainen näppäin saavuttaa täyden'
confidence_complete: 'varmuuden, olet saavuttanut täydellisen näppäimistöhallinnan!'
keep_practicing_mastery: 'Jatka harjoittelua — kun jokainen näppäin on hallittu,'
confidence_complete: 'olet saavuttanut täydellisen näppäimistöhallinnan!'
all_mastered_msg: 'Onnittelut — olet saavuttanut täyden näppäimistöhallinnan!'
all_mastered_desc: 'Jokainen näppäin näppäimistöllä on maksimivarmuudella.'
all_mastered_desc: 'Jokainen näppäin näppäimistöllä on hallittu.'
mastery_takes_practice: 'Hallinta ei ole päämäärä — se vaatii jatkuvaa harjoittelua.'
keep_drilling: 'Jatka harjoittelua säilyttääksesi taitosi.'
hint_skill_tree_continue: 'Avaa taitopuu [Muu näppäin] Jatka'
@@ -335,16 +335,24 @@ milestones:
unlock_msg_2: 'Taas yksi näppäin arsenaalissasi!'
unlock_msg_3: 'Näppäimistösi kasvaa! Jatka samaan malliin.'
unlock_msg_4: 'Askel lähempänä täyttä näppäimistöhallintaa!'
mastery_msg_1: 'Tämä näppäin on nyt täydellä varmuudella!'
unlock_msg_plural_1: 'Hienoa! Jatka kirjoitustaitojesi kehittämistä.'
unlock_msg_plural_2: 'Lisää näppäimiä arsenaalissasi!'
unlock_msg_plural_3: 'Näppäimistösi kasvaa! Jatka samaan malliin.'
unlock_msg_plural_4: 'Muutama askel lähempänä täyttä näppäimistöhallintaa!'
mastery_msg_1: 'Tämä näppäin on nyt hallittu.'
mastery_msg_2: 'Tämä näppäin on hallussa!'
mastery_msg_3: 'Lihasmuisti lukittuna!'
mastery_msg_4: 'Taas yksi näppäin valloitettu!'
mastery_msg_plural_1: 'Nämä näppäimet ovat nyt hallittuja.'
mastery_msg_plural_2: 'Nämä näppäimet ovat hallussa!'
mastery_msg_plural_3: 'Lihasmuisti lukittuna!'
mastery_msg_plural_4: 'Lisää näppäimiä valloitettu!'
# Adaptive drill intro overlay
adaptive_intro:
title: ' Tervetuloa keydriin! '
how_it_works: 'Miten mukautuvat harjoitukset toimivat:'
description: 'Aloitat pienellä joukolla yleisimpiä kirjaimia avattuna. Harjoitus tuottaa vain sanoja, jotka käyttävät näitä kirjaimia. Kun kirjoitat niitä varmasti, uusia näppäimiä avataan vähitellen, kunnes olet hallinnut koko näppäimistön.'
description: 'Aloitat pienellä joukolla yleisimpiä kirjaimia avattuna. Harjoitus tuottaa vain sanoja, jotka käyttävät näitä kirjaimia. Kun hallitset ne, uusia näppäimiä avataan vähitellen, kunnes olet hallinnut koko näppäimistön.'
target_wpm_label: 'Tavoite-WPM:'
target_wpm_desc: 'Tämä vaikuttaa näppäinten avausnopeuteen — korkeammat tavoitteet vaativat nopeampaa kirjoittamista. 35 WPM on hyvä lähtökohta, jos et ole varma. Voit aina muuttaa tätä myöhemmin asetuksissa.'
hint_adjust: 'Säädä WPM'
@@ -390,6 +398,9 @@ keyboard:
in_focus_label: 'Fokuksessa?: '
mastery_label: 'Hallinta: '
mastery_locked: 'Lukittu'
mastery_mastered: 'Hallittu'
mastery_in_progress: 'Käynnissä'
speed_confidence_label: 'Nopeusvarmuus: '
ranked_avg_time: 'Sijoitettu ka aika: '
ranked_best_time: 'Sijoitettu paras aika: '
ranked_samples: 'Sijoitetut näytteet: '