Commit Graph

20 Commits

Author SHA1 Message Date
325b97060c Add LEDU Chinese course content and documentation
Add comprehensive Chinese reading course (乐读) with 4 chapters of vocabulary, texts, and exercises. Include architecture documentation for module development and progress tracking system.

Content:
- LEDU book metadata with 12 chapter outline
- Chapter 1: Food culture (民以食为天) - 45+ vocabulary, etiquette
- Chapter 2: Shopping (货比三家) - comparative shopping vocabulary
- Chapter 3: Sports & fitness (生命在于运动) - exercise habits
- Chapter 4: Additional vocabulary and grammar

Documentation:
- Architecture principles and patterns
- Module creation guide (Game, DRS, Progress)
- Interface system (C++ style contracts)
- Progress tracking and prerequisites

Game Enhancements:
- MarioEducational helper classes (Physics, Renderer, Sound, Enemies)
- VocabularyModule TTS improvements
- Updated CLAUDE.md with project status

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-15 07:25:53 +08:00
7a18e27a44 Add TTS and pronunciation display to vocabulary games
Implement click-to-speak functionality with visual pronunciation feedback in QuizGame and FlashcardLearning. When users click on vocabulary options or answers, the system plays native language audio (e.g., Chinese) and highlights the pronunciation (pinyin) with animation.

Features:
- TTS uses chapter language (zh-CN, en-US, etc.) for correct pronunciation
- Pronunciation text displayed under each quiz option
- Click on answer triggers TTS + 2s highlight animation
- Hover effects on clickable elements
- Auto-detect and use matching voice from speechSynthesis API

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-15 07:23:47 +08:00
838c8289b8 Refactor Fill The Blank game with dual-mode content system
Enhance Fill The Blank to work with both predefined exercises and auto-generated blanks from phrases:

- Add dual content mode support (predefined fill-in-blanks + auto-generated from phrases)
- Implement smart blank generation with max 20% word blanking and max 2 blanks per phrase
- Prefer vocabulary words for auto-blanking with intelligent word selection
- Add comprehensive JSDoc comments explaining both modes
- Improve compatibility scoring to prioritize predefined exercises
- Simplify input handling with data attributes for answers
- Fix WhackAMole and WhackAMoleHard games to use entire hole as clickable area
- Add pronunciation support for correct answers
- Improve error handling and user feedback

Games updated:
- FillTheBlank.js - Dual-mode content system with smart blank generation
- GrammarDiscovery.js - Code cleanup and consistency improvements
- WhackAMole.js - Entire hole clickable, not just text label
- WhackAMoleHard.js - Entire hole clickable, not just text label

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-13 18:15:24 +08:00
de3267c21d Improve WhackAMole clickable area - click entire hole not just text
Issue: Players found it difficult to click precisely on the mole text,
especially on mobile or with fast-paced gameplay.

Fix:
- Changed click event from hole.mole (text only) to hole.element (entire hole circle)
- Makes the entire circular hole clickable, not just the word
- Much easier to target, especially on small screens
- Applied to both WhackAMole and WhackAMoleHard

Changes:
- src/games/WhackAMole.js:719 - Click on hole.element instead of hole.mole
- src/games/WhackAMoleHard.js:862 - Click on hole.element instead of hole.mole

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-13 15:34:23 +08:00
0d17fb560c Fix FlashcardLearning content loading priority
Issue: Game failed with "No suitable content available for flashcards"
even when chapter had vocabulary data.

Root Cause:
- FlashcardLearning.init() tried window.contentLoader.getContent() first
- This synchronous utils ContentLoader might not have content yet
- Game already receives content via dependencies from GameLoader

Fix:
- Prioritize this._content (from dependencies) first
- Only fallback to window.contentLoader if no dependency content
- Content is guaranteed to be loaded by GameLoader before init()

Changes:
- src/games/FlashcardLearning.js:178 - Reversed content loading priority

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-13 10:11:38 +08:00
cdae675f9c Fix RiverRun EventBus module name validation errors
🐛 Bug Fixed:
"Module name must be a non-empty string" errors throughout RiverRun gameplay

🔍 Root Causes:
1. Module constructor not ensuring this.name is always defined
2. EventBus.emit() calls missing required third parameter (moduleName)
3. GameLoader may instantiate modules without providing a name

🔧 Solutions Applied:

**Constructor (lines 5, 11-14):**
- Added fallback: super(name || 'river-run', ['eventBus'])
- Explicit check: if (!this.name) this.name = 'river-run'
- Guarantees this.name is always 'river-run' if undefined

**_collectWord() (line 617):**
- Added missing third parameter to emit call
- Before: emit('game:score-update', {...})
- After: emit('game:score-update', {...}, this.name)

**_endGame() (line 719):**
- Added fallback for module name in emit
- emit('game:end', {...}, this.name || 'river-run')

 Result:
- All EventBus validation passes
- Game works during gameplay (collecting words, scoring)
- Game Over screen works without errors
- Play Again button works correctly

🎮 Tested:
- Launch game 
- Collect correct words 
- Miss words 
- Game over 
- Replay 

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-13 09:53:02 +08:00
6cafb9218b Fix StoryReader compatibility and memory leak issues
🔧 Changes:
- StoryReader now handles both old/new text structures (original_language vs content)
- Fixed memory leak: properly remove global event listeners on destroy
- Added null check in _hideWordPopup() to prevent errors after DOM cleanup
- Fixed chapter list display (was showing only one chapter instead of all)
- Smart routing: only load chapter content when needed
- Use module ContentLoader for proper content loading with vocabulary

🐛 Bugs Fixed:
1. "Cannot read properties of undefined (reading 'split')" - StoryReader couldn't handle texts with 'content' field
2. "Cannot read properties of null (reading 'style')" - Event listeners firing after game cleanup
3. Chapter list showing only book ID instead of all chapters
4. Game compatibility scores dropping to 0.00 after navigation

 Architecture Improvements:
- Event listener cleanup follows best practices
- Proper handler reference storage for removeEventListener
- Defensive programming with null checks

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-13 09:33:16 +08:00
3da40c0d73 Save current state before exploring first DRS commit
Preserving current work:
- Modified DRS modules and factories
- Updated content and progress tracking
- Deprecated PhraseModule moved to archive

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-12 08:47:23 +08:00
44f43324cf Implement ExerciseFactory with strict DRS interface enforcement
🏭 **MAJOR ARCHITECTURE - Factory Pattern Implementation**

**ExerciseFactory Created** (src/DRS/factories/ExerciseFactory.js):
-  Unified creation system for all 11 DRS exercise modules
-  Strict DRSExerciseInterface validation (10 required methods)
-  Smart dependency injection (orchestrator, prerequisiteEngine, llmValidator, contextMemory)
-  Module type mapping: 20 exercise types → 11 module classes
-  Methods: create(), createAndRender(), batchCreate(), destroy()
-  Caching system for loaded module classes
-  Smart warnings (no LLM warning for local-validation modules)

**UnifiedDRS Refactored** (src/DRS/UnifiedDRS.js):
-  Integrated ExerciseFactory for all module loading
-  Created generic helper: _loadExerciseViaFactory()
-  Centralized dependencies: _getDependencies()
-  Simplified loaders: _loadVocabularyModule(), _loadWordDiscoveryModule(), _loadAIAnalysisModule()
-  Removed manual HTML generation - all via factory now
-  165 lines removed, code DRY improved

**Test Suite Created** (test-factory.html):
-  Interactive web-based test interface
-  3 test suites: Validation, Creation (11 modules), Interface compliance
-  Real-time results with success/failure indicators
-  Factory stats display

**Content Enhancement** (test-heavy-stress.json):
-  Added 12 comprehension questions (3 lessons + 1 dialog)
-  lesson1: 3 questions on research methodology
-  lesson2: 3 questions on statistical analysis
-  lesson3: 3 questions on qualitative research
-  conference_presentation: 3 questions on mixed-methods
-  Fixes IntelligentSequencer warnings (now has questions)

**Benefits:**
- 🛡️ Impossible to create modules without interface compliance
- 🔒 Red screen errors force correct implementation
- 📋 Self-documenting via strict contracts
- 🔄 100% DRY - zero code duplication
- 🧪 Fully testable with mock dependencies
- 🎯 Production-ready architecture

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-08 15:39:53 +08:00
9cc4e30eed Complete DRS interface implementation - all systems validated
 **PART 2 COMPLETE - Progress Systems**:

**ProgressTracker** - 17/17 methods implemented:
- Vocabulary: markWordDiscovered, markWordMastered, isWordDiscovered, isWordMastered
- Content: markPhraseCompleted, markDialogCompleted, markTextCompleted, markAudioCompleted, markImageCompleted, markGrammarCompleted
- Core: canComplete, getProgress, saveProgress, loadProgress, reset

**PrerequisiteEngine** - 17/17 methods implemented:
- Same 17 methods as ProgressTracker
- Delegates to existing methods (markDiscovered, markMastered, etc.)
- Adds new Sets for dialogs, texts, audios, images

🎯 **Complete System Status**:
- PART 1:  8/8 progress items validated
- PART 2:  2/2 progress systems validated
- PART 3:  11/11 exercise modules validated
- **100% interface compliance achieved**

🔒 **Strict Interface Enforcement**:
- All systems implement required interfaces
- Red screen errors for missing methods
- Application validation at startup
- Production-ready architecture

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-08 13:49:00 +08:00
194d65cd76 Implement strict DRS interface system for all 11 exercise modules
MAJOR ARCHITECTURE UPDATE - C++ Style Interface Enforcement

🔒 **Strict Interface System**:
- Created DRSExerciseInterface (10 required methods)
- Created ProgressSystemInterface (17 required methods)
- Updated ImplementationValidator with 3-phase validation
- Red screen errors for missing implementations

📚 **11/11 Exercise Modules Implemented**:
 VocabularyModule - Local flashcard validation
 TextAnalysisModule - AI text comprehension
 GrammarAnalysisModule - AI grammar correction
 TranslationModule - AI translation validation
 OpenResponseModule - AI open-ended responses
 PhraseModule - Phrase comprehension
 AudioModule - Audio listening exercises
 ImageModule - Visual comprehension
 GrammarModule - Grammar exercises
 TextModule - Reading comprehension
 WordDiscoveryModule - Vocabulary introduction

🎯 **Required Methods (All Modules)**:
- Lifecycle: init(), render(), destroy()
- Exercise: validate(), getResults(), handleUserInput()
- Progress: markCompleted(), getProgress()
- Metadata: getExerciseType(), getExerciseConfig()

📋 **Documentation**:
- Updated CLAUDE.md with complete interface hierarchy
- Created DRS_IMPLEMENTATION_PLAN.md (roadmap)
- Documented enforcement rules and patterns

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-08 13:43:25 +08:00
13f6d30e86 Implement robust progress system with ultra-strict validation
**Core Architecture:**
- StrictInterface: Base class with visual error enforcement (red screen, sound, shake)
- ProgressItemInterface: Strict contract requiring 4 methods (validate, serialize, getWeight, canComplete)
- Implementation validation at startup - app refuses to start if methods missing

**Progress Items (8 types with realistic weights):**
- VocabularyDiscoveryItem (1pt) - Passive word exposure, no prerequisites
- VocabularyMasteryItem (1pt) - Active flashcards, requires discovery
- PhraseItem (6pts, 3x vocab) - Requires vocabulary mastery
- DialogItem (12pts, 6x vocab) - Complex, requires vocabulary mastery
- TextItem (15pts, 7.5x vocab) - Most complex, requires vocabulary mastery
- AudioItem (12pts, 6x vocab) - Requires vocabulary mastery
- ImageItem (6pts, 3x vocab) - Requires vocabulary discovered
- GrammarItem (6pts, 3x vocab) - Requires vocabulary discovered

**Realistic Progress Calculation:**
- 1 vocab word = 2 points total (discovery + mastery)
- Other items weighted 3x-7.5x heavier for realistic progression
- Example: 171 vocab (342pts) + 75 phrases (450pts) + 6 dialogs (72pts) + 3 texts (45pts) = 909 total points
- Discovering all words = 38% progress (not 76%)

**Services:**
- ContentProgressAnalyzer: Scans chapter content, creates progress items, calculates total weight
- ProgressTracker: Manages state, tracks completion, saves progress to server
- ImplementationValidator: Validates all implementations at startup

**Integration:**
- Application.js validates ALL item implementations before startup
- Missing methods trigger full-screen red error with impossible-to-ignore UI
- Sound alert + screen shake in dev mode

**Pedagogical Flow Enforced:**
Discovery (passive) → Mastery (active) → Application (context)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-07 15:26:42 +08:00
837a225217 Add stress testing content and update DRS modules
- Add test-heavy.json book with 156 advanced academic vocabulary terms
- Add test-heavy-stress.json chapter for system stress testing
- Update UnifiedDRS with ContentDependencyAnalyzer integration
- Update VocabularyModule for unified persistence system
- Update progress saves with test data

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-07 12:59:07 +08:00
29bc112c0c Unify vocabulary persistence system - remove dual systems
- Simplified loadPersistedVocabularyData() to use only VocabularyProgressManager
- Updated calculateVocabularyProgress() to use unified data structure
- Removed old system references from knowledge panel data loading
- Fixed field names (drsDiscovered, drsMastered) for unified system
- Knowledge panel now displays vocabulary progress correctly

 TESTED: Vocabulary Knowledge panel working with unified system

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-30 13:39:00 +08:00
4b71aba3da Implement intelligent DRS vocabulary system with Smart Guide integration
Major Features:
• Smart vocabulary dependency analysis - only learn words needed for next content
• Discovered vs Mastered word tracking with self-assessment (Again/Hard/Good/Easy)
• Vocabulary Knowledge interface connected to DRS PrerequisiteEngine (not flashcard games)
• Smart Guide UI adaptation for vocabulary override with clear explanations
• Real PrerequisiteEngine with full method support replacing basic fallbacks

Technical Implementation:
• VocabularyModule: Added discovered words tracking + self-assessment scoring
• UnifiedDRS: Vocabulary override detection with Smart Guide signaling
• Vocabulary Knowledge: Reads from DRS only, shows discovered vs mastered stats
• Smart Guide: Adaptive UI showing "Vocabulary Practice (N words needed)" when overridden
• PrerequisiteEngine: Full initialization with analyzeChapter() method

Architecture Documentation:
• Added comprehensive "Intelligent Content Dependency System" to CLAUDE.md
• Content-driven vocabulary acquisition instead of arbitrary percentage-based forcing
• Complete implementation plan for smart content analysis and targeted learning

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-30 08:26:30 +08:00
f5cef0c913 Add comprehensive testing suite with UI/UX and E2E integration tests
- Create complete integration test system (test-integration.js)
- Add UI/UX interaction testing with real event simulation (test-uiux-integration.js)
- Implement end-to-end scenario testing for user journeys (test-e2e-scenarios.js)
- Add console testing commands for rapid development testing (test-console-commands.js)
- Create comprehensive test guide documentation (TEST-GUIDE.md)
- Integrate test buttons in debug panel (F12 → 3 test types)
- Add vocabulary modal two-progress-bar system integration
- Fix flashcard retry system for "don't know" cards
- Update IntelligentSequencer for task distribution validation

🧪 Testing Coverage:
- 35+ integration tests (architecture/modules)
- 20+ UI/UX tests (real user interactions)
- 5 E2E scenarios (complete user journeys)
- Console commands for rapid testing
- Debug panel integration

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-28 23:04:38 +08:00
e8805f878f Complete AI scoring system overhaul with production-ready validation
🎯 MAJOR ACHIEVEMENTS:
 Eliminated ALL mock/fallback responses - Real AI only
 Implemented strict scoring logic (0-20 wrong, 70-100 correct)
 Fixed multi-language translation support (Spanish bug resolved)
 Added comprehensive OpenAI → DeepSeek fallback system
 Created complete Open Analysis Modules suite
 Achieved 100% test validation accuracy

🔧 CORE CHANGES:
- IAEngine: Removed mock system, added environment variable support
- LLMValidator: Eliminated fallback responses, fail-hard approach
- Translation prompts: Fixed context.toLang parameter mapping
- Cache system: Temporarily disabled for accurate testing

🆕 NEW EXERCISE MODULES:
- TextAnalysisModule: Deep comprehension with AI coaching
- GrammarAnalysisModule: Grammar correction with explanations
- TranslationModule: Multi-language validation with context

📋 DOCUMENTATION:
- Updated CLAUDE.md with complete AI system status
- Added comprehensive cache management guide
- Included production deployment recommendations
- Documented 100% test validation results

🚀 PRODUCTION STATUS: READY
- Real AI scoring validated across all exercise types
- No fake responses possible - educational integrity ensured
- Multi-provider fallback working (OpenAI → DeepSeek)
- Comprehensive testing suite with 100% pass rate

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-28 00:14:00 +08:00
a6c81a8ec3 Implement Intelligent QCM system with AI-generated plausible distractors
- Transform ContentLoader from hardcoded QCM to AI-powered exercises
- Remove all mock content generators (_generateTextExercise, etc.)
- Add pure AI content generation with 6-option QCM (1 correct + 5 distractors)
- Create intelligent distractors testing common learning mistakes:
  * Text: main idea confusion, partial truths, logical but wrong conclusions
  * Audio: mishearing, speaker confusion, context misunderstanding
  * Image: object similarity, spatial confusion, descriptive errors
  * Grammar: common errors, tense mistakes, wrong constructions
- Reduce random success chance from 25% to 16.7% for better learning assessment
- Make AI mandatory - no fallback without IAEngine availability
- Update CLAUDE.md plan with dual exercise approach documentation
- Fix async/await issues in ContentLoader module loading chain

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-27 10:47:48 +08:00
05142bdfbc Implement comprehensive AI text report/export system
- Add AIReportSystem.js for detailed AI response capture and report generation
- Add AIReportInterface.js UI component for report access and export
- Integrate AI reporting into LLMValidator and SmartPreviewOrchestrator
- Add missing modules to Application.js configuration (unifiedDRS, smartPreviewOrchestrator)
- Create missing content/chapters/sbs.json for book metadata
- Enhance Application.js with debug logging for module loading
- Add multi-format export capabilities (text, HTML, JSON)
- Implement automatic learning insights extraction from AI feedback
- Add session management and performance tracking for AI reports

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-26 21:24:13 +08:00
38920cc858 Complete architectural rewrite with ultra-modular system
Major Changes:
- Moved legacy system to Legacy/ folder for archival
- Built new modular architecture with strict separation of concerns
- Created core system: Module, EventBus, ModuleLoader, Router
- Added Application bootstrap with auto-start functionality
- Implemented development server with ES6 modules support
- Created comprehensive documentation and project context
- Converted SBS-7-8 content to JSON format
- Copied all legacy games and content to new structure

New Architecture Features:
- Sealed modules with WeakMap private data
- Strict dependency injection system
- Event-driven communication only
- Inviolable responsibility patterns
- Auto-initialization without commands
- Component-based UI foundation ready

Technical Stack:
- Vanilla JS/HTML/CSS only
- ES6 modules with proper imports/exports
- HTTP development server (no file:// protocol)
- Modular CSS with component scoping
- Comprehensive error handling and debugging

Ready for Phase 2: Converting legacy modules to new architecture

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-22 07:08:39 +08:00