Commit Graph
128 Commits
Author SHA1 Message Date
gurix 4e082afbb3 docs(state): record phase 5 context session 2026-03-29 22:44:37 +02:00
gurix cb3fc8ad45 docs(05): capture phase context (assumptions mode) 2026-03-29 22:44:29 +02:00
gurix bdd88d653e docs: add phase 05 Multi-Wald-System to roadmap 2026-03-29 22:25:10 +02:00
gurix 0bcae7017d docs(quick-260329-uos): Level-Erweiterung für gesamten Tastaturbereich 2026-03-29 22:16:48 +02:00
gurix 5f16fbedd8 docs(260329-uos): complete level-erweiterung plan summary and state update
- Add SUMMARY.md with task results, deviations, and self-check
- Update STATE.md with quick task entry and session continuity
2026-03-29 22:16:22 +02:00
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
gurix 3360ca921b docs(quick-260329-ua1): README.md erstellen (English, Open-Source Standard) 2026-03-29 21:51:44 +02:00
gurix 8024fb4d50 docs(260329-ua1): complete readme-md-erstellen plan
- Create SUMMARY.md for quick task 260329-ua1
- Update STATE.md with quick task entry and session info
2026-03-29 21:51:27 +02:00
gurix 4d95cb68cc docs(260329-ua1): create English open-source README.md
- Full project overview with tagline and concept description
- Features, tech stack, prerequisites, getting started sections
- Available scripts table, project structure tree
- How It Works explanation of the three-phase lesson loop
- Configuration, deployment, contributing, and license sections
2026-03-29 21:50:53 +02:00
gurix cb8971f5d1 docs(quick-260329-u4z): Deutsche Umlaute in UI-Texten und CLAUDE.md Convention 2026-03-29 21:47:15 +02:00
gurix 3d1bfafd51 docs(260329-u4z): complete deutsche-umlaute plan
- Added SUMMARY.md for quick task 260329-u4z
- Updated STATE.md with task completion and session info
2026-03-29 21:46:57 +02:00
gurix 2691d99060 chore(260329-u4z): document German umlaut convention in CLAUDE.md
Added convention rule: always use proper German umlauts in UI texts,
never ae/oe/ue transliterations.
2026-03-29 21:46:10 +02:00
gurix 10849b3146 fix(260329-u4z): replace ae/oe/ue transliterations with proper German umlauts
- index.html: Wähle, übe, Übung, wächst, Nächstes, Übungstage, Häufigste
- src/ui/screens.ts: Nächstes, schöner, üben, Drücke, herunterfällt, Wörter, große, drückst
- src/companion/fallbacks.ts: Früh, schönsten, Schön, Glühwürmchen, wächst, nächstes, Bäumen, Stück, schön, verändert, Spürst, Hügel, große, drückst, drücken, Ö
- src/app.ts: üben, Zurück (in comments)
2026-03-29 21:45:57 +02:00
gurix 21ad236c7b docs(quick-260329-u1d): Kindgerechte Erklärung auf Waldscreen 2026-03-29 21:41:03 +02:00
gurix b19c9ccd0c docs(quick-260329-u1d): complete forest screen intro plan summary and state update 2026-03-29 21:40:44 +02:00
gurix cf21710e2f feat(quick-260329-u1d): add kindgerechte Erklaerung on forest screen
- Added forest__intro paragraph between title and greeting area in index.html
- Added .forest__intro CSS block with Nunito font, centered, pastel-style styling
2026-03-29 21:40:07 +02:00
gurix ef34d6288e docs(quick-260329-tv5): Übungsanleitung dauerhaft statt Titel anzeigen 2026-03-29 21:33:28 +02:00
gurix 6c6050703f docs(quick-260329-tv5): complete Uebungsanleitung dauerhaft statt Titel anzeigen 2026-03-29 21:33:10 +02:00
gurix bbb1edb433 feat(quick-260329-tv5): show instruction text persistently in phase indicator
- setPhase("practice") now shows full instruction instead of "Ueben"
- setPhase("words") now shows full instruction instead of "Woerter"
- Removed 2500ms delay and companion text flicker in runPracticePhase
- Removed 2500ms delay and companion text flicker in runWordsPhase
2026-03-29 21:32:41 +02:00
gurix ed7bc11664 docs(quick-260329-ton): Markdown in Companion-Texten zu HTML rendern 2026-03-29 21:27:18 +02:00
gurix aa84df7d87 docs(quick-260329-ton): complete markdown-in-companion-texts plan
- Add 260329-ton-SUMMARY.md
- Update STATE.md with quick task completion
2026-03-29 21:27:02 +02:00
gurix d038cc3196 feat(quick-260329-ton): replace textContent with innerHTML + renderInlineMarkdown at all AI-text insertion points
- src/app.ts: greeting text now renders inline markdown
- src/ui/screens.ts: letter intro text now renders inline markdown
- src/forest/reward.ts: forest comment now renders inline markdown
- All 3 sites use innerHTML with XSS-safe renderInlineMarkdown
2026-03-29 21:26:04 +02:00
gurix e10bdf88dc feat(quick-260329-ton): implement renderInlineMarkdown utility
- Escapes HTML special chars first (XSS safe)
- Converts **bold** to <strong>, *italic* to <em>
- Standalone asterisks with spaces are left unchanged
- Pure function, no DOM dependency
2026-03-29 21:25:03 +02:00
gurix 860d671985 test(quick-260329-ton): add failing tests for renderInlineMarkdown
- Tests cover plain text, empty string, italic, bold, mixed
- Tests cover XSS escaping and standalone asterisks
2026-03-29 21:24:47 +02:00
gurix 36e71a692b docs(quick-260329-tk2): Üben-Phase kindgerechte Erklärung 2026-03-29 21:20:37 +02:00
gurix 3352f6bbb6 docs(quick-260329-tk2): complete Ueben/Woerter phase instructions plan
- Add 260329-tk2-SUMMARY.md with task results
- Update STATE.md with quick task entry and session info
2026-03-29 21:20:16 +02:00
gurix 4cb5fa6883 feat(quick-260329-tk2): add companion instructions for practice and words phases
- Practice phase shows 'Jetzt kannst du ueben! Druecke die Taste zu dem Buchstaben, der herunterfaellt.' for 2.5s before exercise starts
- Words phase shows 'Jetzt kommen ganze Woerter! Tippe die Buchstaben nacheinander ein.' for 2.5s before exercise starts
- Both functions converted to async/await pattern matching existing discover phase
- Companion text cleared after delay before exercises begin
2026-03-29 21:19:38 +02:00
gurix 7b6309ecfb docs(quick-260329-ten): Leertaste-Symbol in Entdecken-Phase erklären 2026-03-29 21:14:54 +02:00
gurix a7afe065fa docs(quick-260329-ten): complete leertaste symbol in entdecken-phase plan 2026-03-29 21:14:22 +02:00
gurix 869b1e36a9 feat(quick-260329-ten): add space bar discover step in runDiscoverPhase
- Replace 'if (key === " ") continue' with a dedicated space bar step
- Shows ␣ symbol large with 'Leertaste' label underneath
- Companion text explains the symbol in child-friendly German
- Highlights and pulses the space key on the keyboard
- Child must press space bar once to confirm understanding and continue
2026-03-29 21:13:54 +02:00
gurixandClaude Opus 4.6 5f9c35db1e feat: dev shortcut Ctrl+Shift+X to wipe IndexedDB and restart
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 21:03:57 +02:00
gurixandClaude Opus 4.6 7131a3522d fix: align continue button height with mute button (bottom: 70px)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 21:00:01 +02:00
gurixandClaude Opus 4.6 486869b99b fix: sticky continue button at bottom of forest screen
- Continue button uses position: sticky bottom: 1rem so it stays visible
- Mute button moved higher (bottom: 70px) to avoid overlap
- Forest content remains scrollable

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 20:58:38 +02:00
gurix 8af1b61f4a Revert "fix: prevent scrolling — all screens fit within viewport"
This reverts commit 59c3ae681c.
2026-03-29 20:58:03 +02:00
gurixandClaude Opus 4.6 59c3ae681c fix: prevent scrolling — all screens fit within viewport
- html/body: height 100dvh, overflow hidden
- .screen--active: height 100dvh instead of min-height 100vh
- Forest/lesson/reward/welcome: flex: 1 to fill available space
- Forest scene: flex: 1 with min-height: 0 to shrink properly
- Reduced padding and font sizes for better fit
- Continue button and title: flex-shrink: 0 to stay visible

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 20:55:52 +02:00
gurixandClaude Opus 4.6 fabf9211c4 feat: add lightbox for viewing forest and reward images fullscreen
- Click any forest element or reward image to see it large
- Smooth zoom-in animation, click anywhere to close
- Hover effect on clickable images
- Works on both forest grid and reward screen

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 20:50:20 +02:00
gurixandClaude Opus 4.6 f9ae7c45eb fix: replace remaining ASCII umlauts in characters.ts and tests
- vertraeumt → verträumt, Froehlich → Fröhlich, grossmuetterlich → grossmütterlich
- Updated matching test assertions

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 20:48:05 +02:00
gurixandClaude Opus 4.6 50a4e987c7 fix: replace ASCII umlauts with proper German umlauts throughout UI and prompts
- index.html: Wähle, Zurück, Übersicht, zurücksetzen, üben
- screens.ts: Üben, Wörter phase labels
- companion.ts: All Gemini prompts use proper umlauts
- fallbacks.ts: All fallback texts use proper umlauts
- parent.ts: löschen, überschreiben confirmations
- reward.ts: für, grüner, Eichhörnchen
- Tests updated to match

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 20:46:04 +02:00
gurix fa1d87def3 docs(phase-04): evolve PROJECT.md after final phase completion 2026-03-29 18:27:45 +02:00
gurix 5695552060 docs(phase-04): complete phase execution 2026-03-29 18:27:27 +02:00
gurixandClaude Opus 4.6 9306544df6 docs(04-04): complete audio wiring plan
- SUMMARY.md with all task commits and decisions
- STATE.md updated to 100% progress, phase 04 complete
- ROADMAP.md updated with plan progress

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 18:23:45 +02:00
gurixandClaude Opus 4.6 b453efebb4 feat(04-04): wire audio and speech into lesson, reward, forest, and app
- playCorrectSound() on correct keypress in letter and word exercises
- playRewardSound() when reward image appears
- speakText() for companion comment on reward screen
- playForestElementSound() when new forest element renders
- speakText() for companion greeting on forest screen

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 18:22:40 +02:00
gurix a55238f1f9 docs(04-01): complete audio system plan
- Add 04-01-SUMMARY.md with execution results
- Update STATE.md with position, decisions, metrics
- Update ROADMAP.md with plan progress
- Mark AUDI-01 through AUDI-05 complete in REQUIREMENTS.md
2026-03-29 18:20:20 +02:00
gurix 52596c57b0 feat(04-01): add mute button with CSS, wire audio toggle in main.ts
- Add mute-btn element to index.html outside all screen sections
- Add .mute-btn CSS styles (fixed position, bottom-right, circular)
- Wire mute button click handler to toggle audioEnabled in Settings
- Initialize AudioContext on first user interaction (autoplay policy)
- Fix lint issues: import ordering, non-null assertion
2026-03-29 18:18:31 +02:00
gurixandClaude Opus 4.6 370b76725b docs(04-03): complete Export/Import/Reset plan
- SUMMARY.md with plan results and decisions
- STATE.md updated with progress and metrics
- ROADMAP.md and REQUIREMENTS.md updated

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 18:17:50 +02:00
gurix 145c824eaa docs(04-02): complete visual polish plan
- Add 04-02-SUMMARY.md with animation and error handler results
- Update STATE.md with progress, decisions, metrics
- Update ROADMAP.md with plan progress
- Mark PLSH-01 through PLSH-05 complete in REQUIREMENTS.md
2026-03-29 18:17:34 +02:00
gurix c19b7fedc1 feat(04-01): add audio/speech modules and speechEnabled to Settings
- Create src/audio/sounds.ts with playCorrectSound, playRewardSound, playForestElementSound
- Create src/audio/speech.ts with speakText via Web Speech API
- Add speechEnabled field to Settings interface in types.ts
- Add speechEnabled defaults in all Settings initializers (gemini.ts, parent.ts, db.test.ts)
- All sound functions check audioEnabled, speakText checks speechEnabled
- AudioContext lazy initialization for autoplay policy compliance
2026-03-29 18:16:53 +02:00
gurixandClaude Opus 4.6 7931f7ec39 feat(04-03): implement Export/Import/Reset data logic in parent area
- exportData: downloads progress+settings as zauberwald-backup.json
- importData: validates JSON structure, confirms overwrite, saves and reloads
- resetAllData: double confirmation, clears all 5 IndexedDB stores, reloads
- Buttons wired in loadParentData after code entry

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