Thai Tone Trainer LogoThai Tone Trainer

    Master Thai tones one card at a time

    Release Notes

    Latest updates, improvements, and fixes for Thai Tone Trainer

    v2.3.0

    Latest

    Logging Infrastructure & Engineering Health

    January 22, 2026

    This release introduces a robust, centralized logging system and a comprehensive End-to-End (E2E) testing framework with Playwright. We've also optimized React performance for audio playback and resolved critical linting violations to ensure long-term stability.

    New Features

    Logging & Testing
    • Centralized Logging System: Implemented a unified `logger` utility to standardize application logs, replacing scattered `console.log` calls.
    • E2E Testing Suite: Added Playwright configuration and initial test specs to automate critical user flow verification.
    • Performance Optimization: Wrapped `handlePlayAudio` in `useCallback` to prevent unnecessary re-renders.

    Bug Fixes

    Code Health
    • Linting & Type Safety: Resolved TypeScript violations and fixed a variable shadowing issue (renamed `Infinity` import).
    • Test Configuration: Added proper Vitest configuration to `vite.config.ts`.

    Internal & QA

    Engineering
    • Documentation: Added `logging-solution-summary.md` and `test-suite-analysis.md`.
    • Release Note Organization: Consolidated all release notes into a structured `docs/release_notes` directory.

    v2.2.0

    The "Data Integrity" Update

    January 21, 2026

    This release focuses on data quality and educational accuracy, fixing 720 tone rule inconsistencies and validating flashcard data against authoritative dictionary sources. Our pedagogical approach has been validated against Chulalongkorn University research on Thai tone teaching.

    New Features

    Dual-Source Tone Validation
    • Wiktionary Cross-Reference: Implemented validation pipeline using Kaikki.org with 20,291 Thai dictionary entries containing IPA pronunciation data.
    • Confidence Scoring: Introduced a confidence scoring system (HIGH/MEDIUM/LOW) based on external source agreement.
    • Academic Alignment: Documented alignment with Chulalongkorn University research confirming our approach of teaching stressed/final syllable tones.
    Developer Tools
    • Audit Scripts: Added `audit_tone_rules.ts` for detecting rule/data mismatches and `fix_tone_rules.ts` for automated correction.
    • Validation Pipeline: Created Python-based `validate_tones.py` for cross-referencing with external dictionaries.

    Bug Fixes

    Tone Rule Text Corrections
    • 720 Fixes Applied: Corrected `toneRule` description strings citing incorrect consonant classes, vowel lengths, or tone outcomes.
    • Card #81 Fix: Corrected `correctTone` from 'Falling' to 'Low' for จมูก (nose), fixed rule text, and corrected Swedish translation.

    Internal & QA

    Documentation
    • Validation Report: Added comprehensive `TONE_VALIDATION_REPORT_2026-01.md` documenting 938 cards (67%) validated, 278 multi-syllable discrepancies (expected), and academic research citations.
    Quality Assurance
    • All Tests Passing: 3,521 unit tests confirmed passing after tone rule fixes.
    • Gitignore Update: Added `src/scripts/validation/data/` to exclude large dictionary files.

    "This update validates our pedagogical approach against research from Chulalongkorn University, confirming that focusing on stressed/final syllable tones aligns with Thai language teaching best practices."

    v2.1.0

    The "Emerald & Karaoke" Update

    January 19, 2026

    Building on the v2.0 foundation, this release introduces a vibrant Emerald default theme and upgrades the learning experience with precise Karaoke Highlighting for reading practice. We've also hardened our audio accuracy with a new 'Tricky Pronunciation' engine.

    New Features

    Interactive Karaoke & Syllables
    • Real-time Highlighting: Thai text now highlights character-by-character in sync with the audio, helping learners visually track tone and pronunciation speed.
    • Click-to-Speak: Users can now tap any individual syllable in the karaoke view to hear just that specific sound, perfect for drilling difficult tones.
    Visual Refresh
    • Emerald Theme Default: The application now defaults to the Emerald card animation theme, offering a fresh, high-contrast look for new users. The 'Royal Purple' theme remains available in settings.
    Expanded Localization
    • Swedish Translations: Added Swedish translations for hundreds of new flashcards, expanding accessibility for our Scandinavian learner base.

    Bug Fixes

    Audio & Pronunciation
    • Tricky Word Mitigation: Fixed pronunciation for words with irregular spellings (e.g., *Tor-Ror* clusters like 'Insi', silent *Ho Hip*, and silent final vowels). Example: `ทรัพยากรบุคคล` (HR) and `โทรทัศน์` (TV) now pronounce correctly.
    • Ghost Syllable Elimination: Fixed an issue where the TTS engine interpolated a 'ghost vowel' in words like `ไม่เป็นไร` (Mai Pen Rai).
    • Tone Consistency: Corrected `consonantClass` and `correctTone` data for 8+ cards (including `หนังสือ`, `ขนมครก`) where the game logic mismatched standard Thai tone rules.
    Data Integrity
    • Malformed Data Fix: Resolved a critical data corruption issue that caused Card 404 (`ตัดสินใจ`) to be duplicated with invalid properties.

    Internal & QA

    Quality Assurance (QA)
    • New Test Suites: `Tricky Pronunciation Coverage` (scans for dangerous spelling patterns) and `Syllable Integrity` (ensures phonetic agreement).
    • Audit Scripts: Added `check_tricky_words.ts` and `check_tone_consistency.ts` (dev-only) for automated content validation.
    React & State Management
    • Hook Updates: Updated `useSettings` hook to manage the new default `karaokeTheme` state persistence.
    • Component Logic: Refactored `FlashCard.tsx` to handle partial audio regeneration requests more efficiently using `pronunciationFixes.ts`.

    v2.0.0

    Major Platform Update

    December 23, 2025

    This release introduces a comprehensive Card Error Reporting System that empowers users to flag content issues directly from the learning interface, along with significant Email System Enhancements for better user engagement. We've also upgraded to React 19.2.3 and improved accessibility.

    New Features

    Card Error Reporting System
    • New Hook: `useCardReports` — Enables users to report tone errors, translation issues, and audio problems.
    • New Component: `ReportCardModal` — Accessible modal for submitting reports with error type selection.
    • Admin Panel: `ErrorReportsPanel` — Review, update, and export card reports from the admin dashboard.
    • Database: Added `card_reports` table with RLS policies for secure storage.
    Exam Mode Enhancements
    • Exam Mode Badge: Clearly indicates when users are taking level exams.
    • Star Gate: Users must now earn 5 practice stars before unlocking the level exam.
    • SummaryModal: Improved accuracy display and next-level navigation.
    Email System (React Email)
    • New Template System: Built with React Email for maintainable, component-based templates.
    • Welcome, Achievement & Weekly Emails: New automated lifecycle emails.
    • GDPR Compliance: Added physical address, email preferences link, and unsubscribe functionality.

    Bug Fixes

    General Fixes
    • Email: Removed icons rendering consistently across clients.
    • UI: Report button repositioned to prevent overlap.
    • Security: Fixed profile exposure false positive and resolved related build errors.

    Internal & QA

    Internal / Chore
    • Testing Infrastructure: Added Vitest 4.0 integration and tone rule unit tests.
    • Documentation: Added comprehensive `Documentation_v2.0.md`.
    • Email Pipeline: Added `npm run build:emails`.

    Dependencies

    PackageChange
    react19.2.1 → 19.2.3
    react-dom19.2.1 → 19.2.3
    vitest→ 4.0.16 (new)

    "Thank you to all users who provided feedback that shaped the Card Error Reporting feature."

    We use cookies to enhance your experience

    This website uses cookies to provide essential functionality and improve your learning experience. By continuing to use this site, you agree to our use of cookies. Learn more in our Privacy Policy.