- Introduced `attempt_id` column in `flags` and `attempts` tables to link flags to specific attempts.
- Updated SQL migration scripts to add `attempt_id` and create necessary indexes.
- Enhanced error handling in the application to check for missing `attempt_id` during flag operations.
- Modified API endpoints to accept and return `attempt_id` where applicable.
- Updated frontend to include `attempt_id` in flag submissions and score evaluations.
- Added tests to verify the functionality of the new `attempt_id` linkage and reporting.
3 days ago
Add tests for models tab and POWSM ONNX export, and implement fine-tuning for POWSM-CTC
- 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.
4 days ago
Add requirements browser and diagram rendering enhancements
- 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…
- 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.
6 days ago
feat(activity): implement scoped activity monitoring and fallback mechanism
- 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>
8 days ago
Add the math path, photographed problems, math classes, backups and the mathly Space
- Changed cache version from v3 to v7 in service-worker.js.
- Added new logo assets: logo-intro-alt.svg and logo-math.svg.
- Updated trace.html to include a new exemption name for onset transient.
- Added tests for onset transient behavior in test_scoring.py.
9 days ago
Enhance scoring and training scripts with new features and benchmarks
- 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.
10 days ago
refactor: remove uncertainty handling from scoring logic and related tests for clarity
- Updated `gop-pooling.md` to clarify the context for consonants in token alignment.
- Added new grading rules for unmarked short vowels, final b devoicing, and word-final vowel linking in `grading-pipeline.md`.
- Modified `trace-schema.ts` to include new exemptions in the TraceConfig interface.
- Enhanced UI in `trace.html` and `index.html` to support new frame playback features and display additional exemption information.
- Improved tests in `test_gop_pooling.py`, `test_scoring.py`, and `test_minerva_import.py` to validate new grading rules and ensure correct behavior of the scoring system.
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.
12 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.
13 days ago
Add tests for conservative calibration and update workbook lesson categories
- Implemented a test to verify conservative calibration for deleted 'ayin' phoneme.
- Updated the expected categories for workbook lessons 1, 2, and others to reflect new structure.
- Added a new test for validating new words in workbook lessons.
- Ensured that all lessons correctly filter out word topics in category assertions.
- Implemented `arabic_diacritics.py` to add Arabic vowel marks to words based on their IPA pronunciation.
- Created tests for the diacritics functionality in `test_arabic_diacritics.py`, covering various cases including short and long vowels, gemination, and phrase handling.
- Updated grading pipeline documentation to include detailed explanations of the scoring process and audio 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.