- Practice tests on request in three modes (balanced, focused on the hard skills, manual pick) and simulations on request
(all the material, timed, no choice, repeatable). No plan, no window, no one-time rule. Old exercise tests 1-2 count as balanced, 3 as focused.
- Readiness moves only with handed-in tests, only up: number += GAIN x (grade - number), GAIN 0.6 simulation, 0.3 practice,
0.15 manual. Mastery and deepening no longer count. Levels, points to the next level, what a perfect test adds.
- Home: one compact block (number, level, days left; practice and simulation buttons with +N), still one screen.
The test page: how it goes up, simulation, practice modes, the trail of gains. A result opens with its gain and a level up.
- Teacher tabs show readiness, test counts and bests. countdown.py removed. OpenSpec change tests-on-demand; PRD updated.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The tests expect board work's "work" fields and board functions; tests about other things count the board as written on. The home spec's "Nothing critical" scenario is back.
Home: the current lesson on its own, past and coming lessons folded (#10)
When the curriculum dates the lessons, home shows the current lesson with its date and folds the past lessons (with how many are behind) and the coming ones under it.
feat(board-work): implement board work feature for student answers
- Save a picture of the student's board with every answer in practice, quizzes, tests, and simulations.
- Require board work for quizzes and tests before a choice can be submitted.
- Allow teachers to grade the board work, providing points for the process.
- Create API endpoints for uploading board work and retrieving it for teacher review.
- Add frontend functionality to handle board work submission and display in the teacher's grading interface.
- Implement database migrations to support new board work data structure and relationships.
- Add comprehensive tests for the new functionality, ensuring correct behavior in various scenarios.
- Updated home.js to change the layout to a grid of lesson tiles, each displaying stars and status indicators.
- Replaced the previous map structure with a compact design that fits within a single screen.
- Modified the nearest test display to a strip format showing days left and readiness.
- Consolidated new assignments into a single button that links to the submissions tab.
- Adjusted related tests to reflect the new layout and functionality.
Prompter: a dim libretto view and La bohème in Italian and English (#9)
* Path: heading reads מה נתרגל היום? instead of במה נתרגל היום?
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011XVGkAsva3pSS6u4MFvghb
* HF sync: check out without LFS
The image files' LFS contents were never uploaded to GitHub, so checkout
with lfs: true failed and the Space was never updated from GitHub. Check
out the LFS pointers and push them; the Space keeps the image contents it
already has.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011XVGkAsva3pSS6u4MFvghb
* Only the simulation is timed: lesson quizzes and exercise tests have no time limit
A lesson quiz and an exercise test now stay open until the student hands
them in and show no timer; the simulation keeps its countdown and is still
handed in when time ends. Attempts still store due_at (the database needs
one) but only a simulation is held to it. Updates the specs, PRD (QZ-2,
QZ-5, EXT-4, EXT-7, GRD-2) an…
feat: implement lesson rounds with instant feedback and star system
- Added a new lesson round feature that presents 10 questions from a lesson's skills, providing instant feedback for each answer.
- Implemented a star rating system based on performance in the lesson round, with conditions for earning 0 to 3 stars.
- Updated the home interface to display a map of lessons, showing progress and allowing easy access to the next lesson.
- Created database migration to accommodate the new lesson round functionality.
- Developed comprehensive tests for the lesson rounds and their integration with the home interface.
2 days ago
Subjects and worksheets: more subjects, and a worksheet becomes a lesson (#6)
* Path: heading reads מה נתרגל היום? instead of במה נתרגל היום?
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011XVGkAsva3pSS6u4MFvghb
* HF sync: check out without LFS
The image files' LFS contents were never uploaded to GitHub, so checkout
with lfs: true failed and the Space was never updated from GitHub. Check
out the LFS pointers and push them; the Space keeps the image contents it
already has.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011XVGkAsva3pSS6u4MFvghb
* Only the simulation is timed: lesson quizzes and exercise tests have no time limit
A lesson quiz and an exercise test now stay open until the student hands
them in and show no timer; the simulation keeps its countdown and is still
handed in when time ends. Attempts still store due_at (the database needs
one) but only a simulation is held to it. Updates the specs, PRD (QZ-2,
QZ-5, EXT-4, EXT-7, GRD-2) an…
3 days ago
Developer activity chart: how many people used the app each day (#5)
* Path: heading reads מה נתרגל היום? instead of במה נתרגל היום?
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011XVGkAsva3pSS6u4MFvghb
* HF sync: check out without LFS
The image files' LFS contents were never uploaded to GitHub, so checkout
with lfs: true failed and the Space was never updated from GitHub. Check
out the LFS pointers and push them; the Space keeps the image contents it
already has.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011XVGkAsva3pSS6u4MFvghb
* Only the simulation is timed: lesson quizzes and exercise tests have no time limit
A lesson quiz and an exercise test now stay open until the student hands
them in and show no timer; the simulation keeps its countdown and is still
handed in when time ends. Attempts still store due_at (the database needs
one) but only a simulation is held to it. Updates the specs, PRD (QZ-2,
QZ-5, EXT-4, EXT-7, GRD-2) an…
Developer status card: system health, running version and last update date (#4)
* Path: heading reads מה נתרגל היום? instead of במה נתרגל היום?
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011XVGkAsva3pSS6u4MFvghb
* HF sync: check out without LFS
The image files' LFS contents were never uploaded to GitHub, so checkout
with lfs: true failed and the Space was never updated from GitHub. Check
out the LFS pointers and push them; the Space keeps the image contents it
already has.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011XVGkAsva3pSS6u4MFvghb
* Only the simulation is timed: lesson quizzes and exercise tests have no time limit
A lesson quiz and an exercise test now stay open until the student hands
them in and show no timer; the simulation keeps its countdown and is still
handed in when time ends. Attempts still store due_at (the database needs
one) but only a simulation is held to it. Updates the specs, PRD (QZ-2,
QZ-5, EXT-4, EXT-7, GRD-2) an…
Only the simulation is timed: lesson quizzes and exercise tests have no time limit (#3)
* Path: heading reads מה נתרגל היום? instead of במה נתרגל היום?
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011XVGkAsva3pSS6u4MFvghb
* HF sync: check out without LFS
The image files' LFS contents were never uploaded to GitHub, so checkout
with lfs: true failed and the Space was never updated from GitHub. Check
out the LFS pointers and push them; the Space keeps the image contents it
already has.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011XVGkAsva3pSS6u4MFvghb
* Only the simulation is timed: lesson quizzes and exercise tests have no time limit
A lesson quiz and an exercise test now stay open until the student hands
them in and show no timer; the simulation keeps its countdown and is still
handed in when time ends. Attempts still store due_at (the database needs
one) but only a simulation is held to it. Updates the specs, PRD (QZ-2,
QZ-5, EXT-4, EXT-7, GRD-2) an…
5 days ago
Board: the right button held erases; the question is placed at the top by itself; clear keeps it; archive board-question-and-right-click-eraser
- Introduced a new "התקדמות" tab for teachers to view class progress by lesson, including readiness for upcoming tests.
- Implemented API endpoint `GET /api/classes/{id}/progress` to fetch progress data, including skill states, coverage, and readiness metrics.
- Updated permissions to restrict access to class progress data to the class's teacher and developers only.
- Enhanced UI with period tabs and a class picker, ensuring a responsive design that prevents sideways scrolling.
- Added comprehensive tests for API and browser interactions to validate functionality and permissions.
Archive one-course-for-all-classes, add-lesson-schedule and launch-on-space; sync their specs
- Introduced detailed specifications for exercise tests to enhance student practice under test conditions.
- Established a unified grading system across quizzes and tests, ensuring consistent evaluation.
- Defined the learning path structure, emphasizing skill mastery and navigation.
- Created lesson quizzes that allow retakes and provide feedback on skill performance.
- Implemented a readiness meter to assess student preparedness for upcoming tests.
- Added functionality for teachers to set and manage real tests within the app.
- Developed a rewards system to motivate student engagement and practice.
- Specified requirements for simulation tests to provide students with a rehearsal for real tests.
- Outlined skill mastery criteria to ensure accurate tracking of student progress.
- Designed a smart board feature for interactive problem-solving and submission of solutions.
- Enhanced the student home screen to streamline access to tasks and upcoming tests.
- Implemented a countdown plan…
7 days ago
feat: Implement skill learning and mastery features
- Added a proposal for a new skill learning system that includes a structured four-stage learning process: worked examples, faded examples, practice, and feedback.
- Introduced specifications for the learning path, allowing students to access lessons in any order, track daily goals, and view their progress.
- Developed specifications for skill mastery, defining the criteria for mastering skills and ensuring mastery does not decay over time.
- Created tasks for implementing the new features, including database migrations, API endpoints, and student screens.
- Added a new build for test preparation, including features for exercise tests, readiness meters, and real test management.
- Defined specifications for exercise tests that focus on weak skills, simulation tests, and student screens for managing assignments and grades.
- Ensured all new features adhere to the app's design principles, including right-to-left layout and server-side grade management.
8 days ago
Add tests for student task list and quiz modes functionality
- Implement tests for retrieving a student's assignments, focus practices, finals, and returned worksheets in `test_my_tasks.py`.
- Ensure that the task list correctly reflects only the student's assignments and submissions.
- Add tests for quiz modes in `test_quiz_modes.py`, covering final quiz windows, sitting management, and grade release processes.
- Validate that only the class teacher can open final quiz windows and that practice is blocked while a final is active.
- Test the handling of photo submissions and the behavior of quiz sittings after deadlines.
9 days ago
Add end-to-end tests for worksheets functionality with Playwright
- Implement tests for teacher and student interactions with assignments and worksheets.
- Cover scenarios including PDF upload, photo submissions, grading, and worksheet removal.
- Ensure proper handling of errors and UI feedback during the workflow.
- Validate the visibility of classes and assignments for teachers and students.
10 days ago
Add tests for drafting and reviewing student answers
- 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.
feat: implement server-side grading for unit quizzes
- Added `math_quiz_sittings` table to store quiz sittings on the server.
- Introduced functions `math_quiz_sitting_json` and `math_quiz_action` for handling quiz data.
- Updated `sitting_view` to compute grades based on stored attempts and checks.
- Enhanced tests to validate the new grading logic and ensure correct behavior of quiz sittings.
- Modified existing tests to reflect changes in quiz grading and reporting.
feat: Add server-side quiz grades and teacher review capabilities
- Implemented server-side recording of unit-quiz sittings to ensure grades are computed securely and accurately.
- Updated class report to reflect only server-calculated grades, marking device-reported data accordingly.
- Introduced worked examples for skills to assist students after repeated mistakes, enhancing learning without revealing answers.
- Enabled teachers to review and comment on student answers, allowing for personalized feedback and score adjustments.
- Added visibility controls for lesson resources uploaded by teachers, ensuring students only see appropriate materials.
- Created comprehensive tests to validate new features and ensure system integrity.
11 days ago
Implement push notifications for photo requests from computer to phone
- Added push notification functionality in app/push.py to notify phones when a photo of an answer is requested from the computer.
- Created a new service worker (static/service-worker.js) to handle push notifications.
- Introduced a new database table (supabase/migrations/20261103180000_math_push_subs.sql) to store push subscriptions.
- Updated the frontend (static/math.js, static/math.css) to remove phone pairing functionality and adjust UI accordingly.
- Removed related tests (tests/test_phone_browser.py) and added new tests for push notifications (tests/test_push.py).
- Ensured proper handling of push subscription lifecycle and error cases.
feat: add misconception patterns tracking and UI enhancements
- Introduced a new log for tracking misconceptions across multiple-choice answers, capturing details such as skill, question, and activity type.
- Implemented a "patterns that come back" card on the math home screen to display recurring misconceptions, enhancing student feedback.
- Developed a patterns sheet that shows detailed information about misconceptions, including tips and practice links.
- Updated the UI to reflect these changes, ensuring a consistent user experience.
- Added tests to validate the new functionality and ensure existing features remain unaffected.
- Modified database schema to accommodate new scan states for answer submissions.
14 days ago
feat: add additive answer-scanning schema and related functionality
Your Name
f14ef69
- Introduced new JavaScript file for shared camera preparation for answer scans.
- Created new tables in the Supabase database for managing math question attempts, answer scans, and attachments.
- Implemented row-level security and policies for data access control.
- Added a new RPC function for handling answer scans, including actions for creating, confirming, and finalizing scans.
- Developed tests for the new functionality, ensuring proper handling of answer scans, including retries and error management.
- Established a local testing environment with PostgreSQL and integrated Playwright for end-to-end testing of the answer scanning process.
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.
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.