- Created `test_models_tab.py` to verify the functionality of the models tab, including model switching and settings management.
- Introduced `test_powsm_onnx.py` to test the POWSM ONNX export functionality, ensuring correct handling of model exports and environmental configurations.
- Developed `finetune_powsm.py` for fine-tuning the POWSM-CTC model on Palestinian Arabic recordings, including support for dynamic padding and training configurations.
feat: enhance scoring logic to handle reference noise and improve learner feedback
- Updated the learner home browser tests to support mobile rendering of shadda-bearing Hebrew letters.
- Added a new test to ensure correct rendering of shadda in complete-path labels on mobile devices.
- Modified the scoring logic to ensure that baseline references only compensate for substitutions when the reference also lost the sound.
- Introduced a requirement for evidence before showing substitution tips, ensuring that tips are only displayed when the competing sound has sufficient acoustic evidence.
- Documented design decisions and migration plans for the changes related to shadda rendering and baseline forgiveness in the respective markdown files.
- Added new specifications and tasks to ensure thorough testing and validation of the new behavior.
2 days ago
feat: implement home component rendering and enhance lesson display logic
- Introduced a local, read-only requirements browser for inspecting OpenSpec specifications and changes, ensuring it operates solely on the loopback interface.
- Implemented a standalone Python server for the requirements browser, utilizing OpenSpec CLI output for project inventory and ensuring all reads are confined to resolved paths.
- Developed structured JSON responses and a responsive HTML/CSS/JavaScript interface for the requirements browser, focusing on accessibility and usability.
- Enhanced the Atlas to render fenced `mermaid` diagrams as visual representations while preserving the original source as inert text, ensuring no external dependencies or interactive elements are introduced.
- Added a pinned Mermaid library for local rendering of diagrams, with strict security configurations to prevent any active content from being executed.
- Ensured that all new features maintain the existing read-only and local-only boundaries of the Atlas, with comprehensive testing for functiona…
feat: add local requirements browser for OpenSpec
- Introduced a read-only local browser interface for inspecting OpenSpec capabilities, requirements, and changes.
- Implemented a standalone Python module to serve the browser and handle OpenSpec CLI commands.
- Created a structured HTML/CSS/JavaScript interface for displaying specifications and active changes.
- Added functionality for searching and navigating requirements without modifying any OpenSpec artifacts.
- Included comprehensive tests to ensure the reliability of the new browser and its integration with existing OpenSpec functionality.
3 days ago
Add script to create promotional booklet video assets
This commit introduces a new Python script, `make_book.py`, which generates the cover and pages for a promotional booklet video. The script processes a cover photo by straightening it and applying a white overlay to a stage line, and it extracts pages from a provided PDF using the `pdftoppm` utility. The output includes a JPEG cover and individual page images, facilitating the creation of a video showcasing the booklet.
feat(tts): implement tts_arabic function for improved Arabic pronunciation handling and update references
- Implemented promo.py to record and render a promotional video for the app, utilizing Playwright for screen recording and frame manipulation.
- Created promo.html for displaying the recorded frames in a 3D iPhone interface with animated captions.
- Added tests for the Nakdan module to ensure correct handling of Hebrew niqqud and caching behavior.
- Developed tests for the Push module to validate subscription management and notification sending logic.
4 days ago
feat(auth): increase MAX_MONITOR_ATTEMPTS for improved pronunciation pattern sampling
feat(main): update class progress handling to retain student history across classes
feat(index): enhance logout button styling for better accessibility and visibility
test: adjust assertions to reflect changes in class progress tracking and student data
feat(scoring): measure against فدوى too, and show every native baseline in the trace dashboard
- The native baseline now uses two TTS voices: ראאף (generated on demand) and فدوى (used when cached).
Each sound is still measured against the lowest score any voice got on it.
- References are read with wav_for_voice: wav() turned any voice outside playback into ראאף.
- Each Reference carries its voice name; the trace keeps every voice's score per sound
(baseline stage `refs`, references[].voice).
- Trace dashboard: a row per voice under each sound (the voice used in bold), a marker per
voice on the waterfall's baseline step, per-voice tooltip and table columns.
- The mock trace has two voices.
Bench on 2,828 lab recordings (all said right): false rejections 3.6% -> 2.9%
(ħ 6.0 -> 2.8%, h 9.7 -> 5.4%, ɣ 20.6 -> 12.5%, ʕ 12.5 -> 9.5%). Detection is not measured:
the lab has no recordings with a planted mistake yet.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Update demo video duration and enhance logo animation
- Updated the demo video duration from 82 seconds to 97 seconds in README.md.
- Adjusted the logo animation timing in record.py to ensure it holds until the dots settle.
- Enhanced the SVG logo animation with new keyframes and clip paths for improved visual effects.
- Updated service worker cache version from v19 to v21 for better asset management.
5 days ago
feat(demo_video): add demo video recording and voiceover functionality
- Updated service worker cache version to v19.
- Created a new directory for demo video scripts and added .gitignore.
- Added README.md for demo video instructions, including setup and usage.
- Implemented make_takes.py to generate student voice takes using TTS.
- Developed make_voice.py to create Hebrew voiceovers from script lines.
- Introduced music.py to synthesize background music for the demo video.
- Added overlay.js for captioning and tap effects during the demo.
- Created record.py to handle the recording of the demo video with sound and captions.
- Defined script.py to manage captions and voice lines for the demo video.
- Updated test_scoring.py to include subject handling in save_class and added assertions for progress tracking.
- Modified finetune.py to introduce new command-line arguments for layer training, optimizer selection, gradient checkpointing, and maximum training steps.
- Added minerva_benchmark.py for benchmarking phoneme models on Minerva lines, including false flag detection and planted mistake scoring.
- Created minerva_dataset.py to cut reviewed Minerva lines into a training set, ensuring a proper split by video and maintaining CSV compatibility for training.
8 days ago
feat: enhance lab sample upload with retry mechanism and update learn drive UI interactions
- Removed hardcoded video data and replaced it with dynamic loading from `data/minerva_metadata.json`.
- Updated the `phrases` function to handle metadata and return structured data for each reviewed line.
- Modified command-line arguments to allow importing specific YouTube IDs.
- Enhanced validation checks to ensure the integrity of imported lines.
- Updated tests to reflect changes in the import logic and ensure coverage for new functionality.
Add comprehensive tests for the Tutor module in test_tutor.py
- Implement tests to verify lesson scenarios and their corresponding lines.
- Ensure vocabulary expands correctly with each lesson.
- Validate conversation flow, including turn handling and summary generation.
- Test for new words and their recognition in lessons.
- Check that corrections without changes are ignored.
- Confirm that only teachers can initiate sessions until opened.
- Validate daily limits based on stored data.
- Ensure conversations are restricted to the respective students.
- Implement input validation for start parameters.
- Handle refused answers appropriately without counting them.
Add tests for GOP pooling and windowing functionality
- Implemented tests for GOP frame pooling in `test_gop_pooling.py` to validate the scoring of synthetic CTC emissions, including various scenarios for vowel and consonant recognition.
- Created tests for class-based GOP windows in `test_gop_window.py`, ensuring proper handling of vowel and consonant transitions, substitutions, and deletions.
- Added a test for the Minerva import functionality in `test_minerva_import.py` to verify the integrity of the pilot manifest and associated phrases.
10 days ago
Add comprehensive tests for lab functionality and scoring
- Introduced a new test suite in `tests/test_lab.py` to validate the lab scoring system.
- Implemented mock classes for TTS and authentication to facilitate testing.
- Added tests for item validation, lab scores, flagging, and rescore functionality.
- Verified the integration of TTS with lab scoring and ensured proper handling of audio files.
- Included benchmarks for false rejections and caught mistakes in scoring.
- Updated pronunciation rules in `pronunciation-rules.md` to clarify the handling of shwa and kubutz sounds, including new examples and scoring rules.
- Modified `index.html` to integrate scoring rules display, allowing teachers to toggle rules on and off.
- Added tests in `test_scoring.py` to verify the functionality of newly implemented scoring rules and their impact on pronunciation scoring.
- Introduced a new script `compare_verbs.py` to check the phonemes of Arabic verbs against the scorer's expectations, ensuring consistency in pronunciation handling.
Add unit tests for pronunciation rules parsing and detection
- Implement tests to ensure all YAML blocks in pronunciation-rules.md are parsed correctly into rules.
- Verify that every heard symbol has a corresponding Hebrew label.
- Check correct realizations per letter and dialect associations.
- Report undetectable rules and validate their detection status.
18 days ago
Update TTS voice ID for Amir, enhance recording status messages, and add voice activity detection; introduce script to concatenate .oga files