Skip to content

v2.4.0

Latest

Choose a tag to compare

@dlip dlip released this 06 Oct 02:52
  • Add an explicit pinned column to chords.csv, keeping manual chord
    reservations independent from source frequency. Legacy blank-frequency
    pins remain compatible and migrate to explicit values on the next write.
  • Recover orphaned alt forms when their base receives no chord; retain
    alt definitions across reruns and report only actual reachable coverage.
  • Correct the standard keyboard's sixth column to the left hand so scissor
    scoring agrees with finger assignments and the displayed hand split.
  • Measure learn timing from prompt activation, add isolated learn --recall
    practice with separate unassisted latency/speed histories, and migrate
    legacy progress without losing cards or daily quotas.
  • Track learned mapping identity, preview generation with --dry-run, reserve
    learned mappings with --preserve-learned, and confirm intentional changes
    before retiring affected cards. Legacy cards bind once to current mappings.
  • Weight chord assignments by uniquely served word families, summing each
    represented form's existing utility without changing source frequencies.
  • Teach alt forms after their bases with independent FSRS cards and explicit
    modifier hints; drill/book now require each form's own demonstrated mastery.
  • Add local, read-only analyze reports for personal-text coverage, family-aware
    learning recommendations, and observed recall versus an optional typing-speed
    estimate; document a separate manual mixed-typing passage comparison.
  • Add read-only check diagnostics for dictionary/layout conflicts, configured
    export coverage and bindings, stale learning identities, and chord comfort.
  • Add read-only difficult reports for lapses, longest unassisted recalls,
    and alt-slot evidence on verified current mappings. Diagnostic config
    validation no longer creates a missing dictionary directory.
  • Removed dead find_all_combinations helper from utils.py and
    corrected the find_combinations docstring (results are ordered
    longest-first, not shortest-first).
  • Cleaned up a variable-shadowing bug and an unused loop index in the
    Kanata output emitter.
  • Added unit tests for find_combinations, validate_chords,
    TrainingOutput, the QMK/Kanata key-translation error paths, and the
    assigner's _split_into_tiers / _parse_freq helpers.
  • Added gen.ignore_words config option. Words in this list stay in
    chords.csv but are skipped during chordgen gen scoring and chord
    assignment, so they won't consume chord keys or produce "unable to
    find options" warnings. Matching is case-insensitive.