Commit Graph
12 Commits
Author SHA1 Message Date
gurix 3a71799823 test(260329-uos): update tests for 16 levels
- levels.test.ts: change length assertion to 16, add newKeys tests for levels 7-16
- levels.test.ts: add Level 16 allKeys completeness test (all QWERTZ keys)
- words.test.ts: extend all loops from 6 to 16 levels, add validateWordList test
- companion.test.ts: fix unknown-letter test to use '@' (z now has a fallback entry)
2026-03-29 22:15:24 +02:00
gurix 1d4c709fb6 feat(260329-uos): add word lists for levels 7-16 and fallback letter intros
- Add German word lists for levels 7-16 (10 words each, max 5 chars)
- All words validated against allowed keys per level
- Level 16 uses short words with period for punctuation practice
- Add 19 new fallback letter introductions (r,u,t,z,w,o,q,p,n,b,v,m,c,x,ä,ü,y,, ,.)
- Update entry count comment to 32 entries (levels 1-16)
2026-03-29 22:14:02 +02:00
gurix 374298be23 feat(260329-uos): extend levels 7-16 with full QWERTZ coverage
- Add levels 7-16 covering r,u,t,z,w,o,q,p,n,b,v,m,c,x,ä,ü,y and punctuation
- Add comma and period to fingerMap (r-mid and r-ring)
- Update keyboard.ts: add ',' and '.' to bottom row in DE and CH layouts
- Add comma and period to fingerColorMap in keyboard.ts
2026-03-29 22:12:46 +02:00
gurixandClaude Opus 4.6 2c0c2f2701 feat(03-02): implement word mode for typing engine
- Add createWordExerciseState() that splits words into letters with boundaries
- Add getCurrentWordIndex() helper for UI word tracking
- Extend TypingExerciseState with mode, words, wordBoundaries fields
- Backwards compatible: createExerciseState sets mode='letters'
- All 85 tests pass

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 13:45:54 +02:00
gurixandClaude Opus 4.6 958f4460a7 test(03-02): add failing tests for word mode typing engine
- Tests for createWordExerciseState, getCurrentWordIndex
- Backwards compatibility test for createExerciseState mode field
- handleKeyPress test with word-mode state

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 13:45:18 +02:00
gurixandClaude Opus 4.6 5a6ba70dab feat(03-01): implement word lists per level with getWordsForLevel
- Static word lists for levels 1-6, 8-10 words each
- Levels 1-2 use letter combos (no real words possible with F/J/D/K)
- Levels 3-6 mix real German words with combos
- All words validated: only use learned letters, max 5 chars
- getWordsForLevel with/without replacement sampling
- All 8 tests pass

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 13:41:20 +02:00
gurixandClaude Opus 4.6 420c0e1a1f test(03-01): add failing tests for word lists per level
- Tests for wordsByLevel entries levels 1-6
- Tests for allKeys-only characters validation
- Tests for max 5 chars per word
- Tests for getWordsForLevel random selection

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 13:40:27 +02:00
gurixandClaude Opus 4.6 5fe66cb315 feat(01-04): implement typing exercise engine with TDD
- generateLetters: random 8-12 letters from level key set
- handleKeyPress: correct/wrong input with adaptive tempo
- Adaptive tempo: 3s start, -200ms after 2x correct, +500ms on error
- Bounds: min 1500ms, max 4000ms
- 18 passing tests covering all behavior

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 11:10:53 +02:00
gurixandClaude Opus 4.6 2f0784fd14 feat(01-03): add QWERTZ keyboard renderer with finger colors and animations
- Full QWERTZ keyboard with DE and CH layout support
- Finger color mapping for all keys per spec section 8.3
- renderKeyboard, highlightKey, pressKey, updateKeyboardForLevel exports
- CSS: pulse animation for target key, press animation on keydown
- Inactive keys grayed at 0.5 opacity, active keys with finger colors

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 11:07:52 +02:00
gurixandClaude Opus 4.6 afae18decc feat(01-03): implement level definitions 1-6 with finger mappings
- 6 levels per spec section 4.1 progression table
- Finger-to-CSS-variable mapping per spec section 8.3
- getLevelByNumber and getKeysUpToLevel helper functions
- All 14 tests passing

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 11:06:22 +02:00
gurixandClaude Opus 4.6 3462a6704e test(01-03): add failing tests for level definitions
- 13 tests covering levels array, key progressions, finger mappings
- Tests for getLevelByNumber and getKeysUpToLevel helpers

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 11:05:56 +02:00
gurixandClaude Opus 4.6 4dc9523044 feat(01-01): scaffold Vite project with CSS design system and project structure
- Vite 6 + TypeScript + Biome + Vitest configured
- All directories from spec section 13 created
- CSS custom properties for full color palette and finger colors
- index.html with 5 screen sections and Google Fonts
- Dev server binds to 0.0.0.0:5173 for VPS access

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 11:01:10 +02:00