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: 'Yetenek Ağacını açmak için [t] basın'
branch_complete_msg: '%{branch} dalını tamamladınız!'
all_levels_mastered: 'Tüm %{count} seviye ustalaşıldı.'
all_keys_confident: 'Bu daldaki her tuş tam güven seviyesinde.'
all_keys_confident: 'Bu daldaki her tuş ustalaşıldı.'
all_unlocked_msg: 'Klavyedeki tüm tuşları açtınız!'
all_unlocked_desc: 'Her karakter, sembol ve değiştirici artık alıştırmalarda mevcut.'
keep_practicing_mastery: 'Ustalık kazanmak için alıştırmaya devam edin — her tuş tam'
confidence_complete: 'güvene ulaştığında, tam klavye ustalığına erişmiş olacaksınız!'
keep_practicing_mastery: 'Alıştırmaya devam edin — her tuş ustalaşıldığında,'
confidence_complete: 'tam klavye ustalığına erişmiş olacaksınız!'
all_mastered_msg: 'Tebrikler — tam klavye ustalığına ulaştınız!'
all_mastered_desc: 'Klavyedeki her tuş maksimum güven seviyesinde.'
all_mastered_desc: 'Klavyedeki her tuş ustalaşıldı.'
mastery_takes_practice: 'Ustalık bir varış noktası değil — sürekli alıştırma gerektirir.'
keep_drilling: 'Avantajınızı korumak için alıştırmaya devam edin.'
hint_skill_tree_continue: 'Yetenek Ağacını Aç [Herhangi bir tuş] Devam'
@@ -335,16 +335,24 @@ milestones:
unlock_msg_2: 'Cephaneliğinize bir tuş daha eklendi!'
unlock_msg_3: 'Klavyeniz büyüyor! Böyle devam edin.'
unlock_msg_4: 'Tam klavye ustalığına bir adım daha yakın!'
mastery_msg_1: 'Bu tuş artık tam güven seviyesinde!'
unlock_msg_plural_1: 'Harika! Yazma becerilerinizi geliştirmeye devam edin.'
unlock_msg_plural_2: 'Cephaneliğinize daha fazla tuş eklendi!'
unlock_msg_plural_3: 'Klavyeniz büyüyor! Böyle devam edin.'
unlock_msg_plural_4: 'Tam klavye ustalığına birkaç adım daha yakın!'
mastery_msg_1: 'Bu tuş artık ustalaşıldı.'
mastery_msg_2: 'Bu tuşu tamamen kavradınız!'
mastery_msg_3: 'Kas hafızası kilitlendi!'
mastery_msg_4: 'Bir tuş daha fethedildi!'
mastery_msg_plural_1: 'Bu tuşlar artık ustalaşıldı.'
mastery_msg_plural_2: 'Bu tuşları tamamen kavradınız!'
mastery_msg_plural_3: 'Kas hafızası kilitlendi!'
mastery_msg_plural_4: 'Daha fazla tuş fethedildi!'
# Uyarlanır alıştırma giriş katmanı
adaptive_intro:
title: ' keydr''e hoş geldiniz! '
how_it_works: 'Uyarlanır alıştırmalar nasıl çalışır:'
description: 'En yaygın harflerin küçük bir kümesiyle başlarsınız. Alıştırma yalnızca bu harfleri kullanan kelimeler üretir. Onları güvenle yazdıkça, tam klavyeye hakim olana kadar yeni tuşlar kademeli olarak açılır.'
description: 'En yaygın harflerin küçük bir kümesiyle başlarsınız. Alıştırma yalnızca bu harfleri kullanan kelimeler üretir. Onları ustalaşıldıkça, tam klavyeye hakim olana kadar yeni tuşlar kademeli olarak açılır.'
target_wpm_label: 'Hedef WPM:'
target_wpm_desc: 'Bu, tuşların ne kadar hızlı açılacağını etkiler — daha yüksek hedefler daha hızlı yazma gerektirir. Emin değilseniz 35 WPM iyi bir başlangıç noktasıdır. Bunu daha sonra ayarlardan her zaman değiştirebilirsiniz.'
hint_adjust: 'WPM Ayarla'
@@ -390,6 +398,9 @@ keyboard:
in_focus_label: 'Odakta mı?: '
mastery_label: 'Ustalık: '
mastery_locked: 'Kilitli'
mastery_mastered: 'Ustalaşıldı'
mastery_in_progress: 'Devam ediyor'
speed_confidence_label: 'Hız güveni: '
ranked_avg_time: 'Sıralı Ort. Süre: '
ranked_best_time: 'Sıralı En İyi Süre: '
ranked_samples: 'Sıralı Örnekler: '