- Implement tests for the drafting of worked examples in `test_draft_examples.py`, ensuring well-formed drafts are generated for skills without examples, and that the model's responses are validated.
- Create tests in `test_teacher_review.py` to cover the teacher's review process of student answers, including handling review requests, score validation, and ensuring proper access control for teachers and students.
- Ensure that the tests cover various scenarios, including error handling and edge cases, to maintain robustness in the review and drafting functionalities.
18 days ago
Remove obsolete test files and training scripts for phoneme CTC model on Palestinian Arabic recordings
- Introduced a new Python script `install.py` in the `scripts/demo_video` directory.
- The script captures screenshots of the app's first screen on both iPhone and Android devices.
- It supports generating video files from the captured images using FFmpeg.
- Added command-line arguments for specifying the app URL, target OS, output directory, and specific frames to capture.
- Updated promo.html to improve layout and styling for new features, including enhanced word display and interaction elements.
- Modified promo.py to include new marks for user interactions and improved timing for screen recordings.
- Adjusted index.html to refine lesson continuation logic and ensure proper voice configuration for TTS.
- Enhanced test cases for Arabic diacritics and learner home browser to validate new story resumption logic and TTS playback configurations.
- Added tests for TTS endpoint to ensure proper audio serving and voice ID handling.
- Introduced a new OpenSpec configuration for the Grok library MCP.
20 days ago
feat: update demo video scripts and HTML for improved functionality and user experience
- 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.
21 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.
22 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.
23 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.
24 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.
27 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.
29 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.
Update TTS voice ID for Amir, enhance recording status messages, and add voice activity detection; introduce script to concatenate .oga files