Answers "which game is the most popular?" for one authorized class or the
deduplicated union of all visible classes. Ranks only games with reliable
server-side records, by distinct active players and separately by
player-days, and reports device-only games as not measurable rather than
zero. Applies the existing 3-learner / 5-event thresholds, adds
complementary suppression against single-class differencing, and returns
aggregates only.
The verb-game answer now returns its level, so the existing game event can
tell פועל יוצא from בונים פועל עם איתן going forward. Older events carry no
level and are reported as not attributable.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Persist enum-only operational failures for 90 days and expose aggregate MCP counts without raw logs or identities.\n\nIncludes the service-role-only Supabase migration and daily retention cleanup.
18 days ago
Add script for generating installation demo videos for iOS and Android
- 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.
19 days ago
feat: Add MCP learning analytics tools for exercise difficulty, pronunciation, progress, and bottlenecks
- Implemented scoped attempts with optional diagnostics in SupabaseAuth.
- Extended LibraryAuth to support new analytics tools and modified existing methods for compatibility.
- Introduced new tests for pronunciation difficulties, learning progress, class comparisons, and learning bottlenecks.
- Updated OpenSpec documentation and specifications to reflect new analytics capabilities and privacy requirements.
- Ensured all new tools adhere to existing authorization and privacy standards, suppressing small cohort data.
- Implemented a new MCP connector for managing library videos through Grok.
- Added authentication middleware for the MCP endpoint using a dedicated bearer token.
- Introduced tools for listing, preparing, publishing, and renaming library videos.
- Ensured input validation and duplicate checks for video titles and URLs.
- Implemented an approval system for publishing videos with expiration and single-use constraints.
- Refactored library operations into shared helpers to maintain consistency across API and MCP tools.
- Updated requirements to include the official MCP SDK and anyio for compatibility.
- Added comprehensive tests for the new MCP functionality and ensured existing library API compatibility.
- 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: enhance shadda rendering in complete-path labels
- 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
Add tests for learner home functionality and browser interactions
- Implement tests for saving and reading current lessons for learners.
- Create a mock authentication class to simulate Supabase interactions.
- Add tests for handling various scenarios including missing keys, table absence, and server downtime.
- Develop browser tests for the focused learner home page using headless Chrome.
- Validate lesson selection, reminders, and class-specific lesson handling.
- Ensure tests cover both successful and error scenarios for lesson management.
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…
feat(push): implement admin notification system with audience targeting and broadcast capabilities
- 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.