- 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>
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
Status card: the change's name beside the version (#7)
* 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…
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.
mathly2: written work, rounds, caching, one course for all classes, lesson schedule
- 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
feat: refine glossary terms for clarity and consistency in PRD documentation
Preserve class, subject-navigation, and exam-board structure while replacing the math graph and related identifiers with the revised remote curriculum.
Additive migration stores exam schedules on classes. Unit subjects drive subject selection and route learners into the matching path.
Refactor math skills and update CSS styles; adjust tests for new skill identifiers
Your Name
d05b676
- Updated math_skills.py to reflect changes in the teaching schedule and skill prerequisites.
- Modified CSS variables for improved styling consistency.
- Adjusted test_answer_browser.py and related test files to use new skill identifiers (e.g., a_30_side instead of g_triangle_area).
- Added documentation for the 9th-grade teaching schedule.
Fix Anthropic grading schema compatibility
Your Name
63ddff9
Grade handwritten answers automatically after upload
Your Name
bc8af21
feat: Implement grading functionality for handwritten answers
Your Name
6f5ba40
- Added `grade` method to `AnswerScans` class for initiating grading actions.
- Enhanced error handling for grading limits and busy states in the grading process.
- Updated `public_result` function to clean up grading-related fields from results.
- Introduced new grading verification tests to ensure correct behavior of grading API.
- Created `AnswerGrader` class to handle grading logic and validation of assessment results.
- Added database migration for `math_answer_grades` table to store grading results.
- Updated front-end JavaScript to handle grading states and display results appropriately.
- Enhanced CSS styles for grading feedback display.
- Implemented comprehensive tests for grading functionality, including edge cases and error handling.
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
- 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
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.
23 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>