Skip to content

#86erqa08y Implement Leitner Box Review System with Scheduling Enhancements and UI Improvements#27

Merged
navidshad merged 51 commits intomainfrom
dev
Feb 1, 2026
Merged

#86erqa08y Implement Leitner Box Review System with Scheduling Enhancements and UI Improvements#27
navidshad merged 51 commits intomainfrom
dev

Conversation

@navidshad
Copy link
Contributor

@navidshad navidshad commented Feb 1, 2026

📋 Summary

This PR introduces a comprehensive Leitner Box spaced repetition system, including board activities, user preferences, and configurable review intervals. It implements a schedule service supporting catch-up mechanisms for recurrent jobs and improves due date logic for Leitner Box items. Several UI enhancements and fixes are applied to the board and settings pages, including improved aesthetics, layout, and toggle components. Node.js version is updated to v22.17.1. Additionally, testing infrastructure is enhanced with Jest and Vitest setups, along with detailed developer guidelines and documentation improvements.

🔗 Related Tasks

  • #86erqa08y - Implement Leitner Box Spaced Repetition System and Board Activity
  • #86erqa08y - Implement schedule service with catch-up for recurrent jobs
  • #86erqa08y - Update Leitner Box due date logic and remove initLeitner function
  • #86erqa08y - Add configurable review interval and daily limit to Leitner settings
  • #86erqa08y - Overhaul board page aesthetics, fix rendering and interaction issues
  • #86eubkvbu - Add Jest and Vitest testing setup and guidelines for frontend and server code
  • #86eubkvbu - Refactor user profile settings page for improved layout, responsiveness, and localization
  • #86erqa08y - Add documentation and scripts for Leitner Box system and developer guidelines

📝 Additional Details

  • The schedule service now passes execution times to job callbacks and always performs catch-up for the leitner-review-job regardless of explicit flags.
  • Leitner box review notifications and persistent board activities with active states are implemented.
  • UI improvements include restructured templates for better readability, improved toggle components, and fixes for overlapping elements and toggle colors.
  • Removed the 'Add New Phrases' button from the empty board state to streamline the user experience.
  • Added e2e testing guide and applied authentication middleware to the board page.
  • Updated Node.js base image and project Node.js version to v22.17.1 for better environment consistency.
  • Extensive testing coverage added for Leitner box service timing, quota enforcement, and board service functionality.
  • Documentation reorganized with development skill integration and markdown conversion scripts for better maintainability.

📜 Commit List

  • da4be8b refactor: Eliminate the status field from schedule job management and update Leitner Box collection names in tests.
  • 390ab2d feat: Update Leitner Box due date logic to include items due by the end of the current day, add corresponding tests, and remove the initLeitner function.
  • 17ed4cc feat: Ensure the leitner-review-job always performs catch-up regardless of its explicit catchUp flag.
  • 27e2c24 feat: Implement a catch-up mechanism for recurrent scheduled jobs and pass execution times to job callbacks.
  • 7bc9b73 chore: Update Node.js base image from version 20.9.0-alpine to 22.17.1-alpine.
  • 63b910b build: update Node.js version to v22.17.1 in .nvmrc
  • 2dc7c35 chore: Update Node.js version to v22.17.1 in .nvmrc.
  • f8b59a1 Remove the 'Add New Phrases' button from the board's empty state.
  • f2edab4 refactor: Reformat FlashCard.vue template for improved readability by breaking long lines.
  • 24b67fe feat: add configurable review interval to Leitner settings.
  • b93f1cf feat: overhaul board page aesthetics and fix rendering issues
  • 861c3ac style: polish LeitnerSettings UI and fix icon rendering
  • 018bd5d fix: resolved HourSelector overlap issue
  • 3152be9 feat: implement refined Leitner notification system
  • faf73fb fix: clear toasted activity card after session completion
  • e257177 feat: Implement persistent board activities with meta.isActive for Leitner box reviews and add BoardService tests.
  • a61c6e1 feat: Add Daily Limit configuration and enforcement
  • 4ec56e6 test: add comprehensive timing tests for Leitner box service, covering review scheduling, demotion, and quota enforcement.
  • e57672b feat: Bring back the Total box input on the Leitner box setting section
  • 9a4acf2 fix: verify and optimize Leitner auto-entry in phrase triggers
  • ab1940e feat: Add an empty trigger slot to the LeitnerPhrasePicker Modal.
  • d3eeb1e feat: use custom Toggle component for Auto-Entry in Preferences
  • addfbd8 style: swap bundle selector and toggle for better UX flow
  • 14502c4 fix: fix toggle active color and persist bundle selection when box filtering
  • 3ac08f4 feat: create reusable Toggle component and fix empty box filtering logic
  • e585404 feat: fix search input spacing and add box-only filter toggle
  • 52f651d feat: prevent phrase picker auto-close and defer state refresh until modal closure
  • 94da625 feat: implement phrase-to-box tracking and refactor picker to dataProvider.list
  • 707651e fix: refactor to content/gap row pattern for correct centering
  • 2bbf1dc feat: implement leitner box user preferences and settings ui
  • 3e2c975 docs: remove agent skill documentation for ClickUp task handling
  • dcca8b2 feat: Reorganize agent documentation by introducing a development skill, integrating lib-vue-components docs, and updating doc download paths with conditional markdown conversion.
  • 789f22a feat: Add e2e testing guide and apply authentication middleware to the board page.
  • 8f8f7bf feat: set up documentation download and conversion script in server/scripts
  • dcb92c4 feat: sync phrase removal and refine user context in Leitner system
  • 63ef0af feat: Implement Leitner System and Board Activity
  • e877a15 docs: update leitner plans for dynamic board and refactor sidebar
  • 8a99fb8 feat(schedule): implement schedule service and tests CU-86erqa08y
  • b4a806a feat: Implement Leitner Box Spaced Repetition System
  • 31c35d7 docs: 86erqa08y Add engineering plan for Leitner Box Review System implementation, detailing backend architecture, logic, and frontend components.
  • 247aa76 feat: Add Google Meet to allowed CORS origins.
  • 1b3d84c feat: Add Teams.microsoft.com to allowed CORS origins.
  • 314c0b6 #86eubkvbu - Add Jest configuration and testing setup: Introduce jest.config.js for TypeScript testing, update package.json with test scripts, and create a test environment file. Replace old calculator tests with new structured tests using Jest for improved maintainability and clarity.
  • 922026a #86eubkvbu - Add comprehensive server testing guidelines: Document core testing patterns, mocking strategies, test organization structure, and best practices for unit and integration testing using Jest and TypeScript. Include examples for API function testing and external service mocking.
  • 58ba221 #86eubkvbu - Refactor user profile settings page: Improve layout and responsiveness, enhance styles for better user interaction, and implement change detection for user input. Add localization for 'Save Changes' button.
  • 1406c0b #86eubkvbu - Add development guidelines: Create a comprehensive document outlining project overview, key technologies, coding standards, and critical rules for frontend development in the Nuxt 3 application.
  • a6338dc #86eubkvbu - Add testing framework setup: Integrate Vitest for unit testing and Playwright for E2E testing. Update package.json with new test scripts, create configuration files, and establish a testing guide in README. Include test stubs and mock implementations for Vue components and composables.
  • eba563e #86eubkvbu - Refactor user profile settings page: Improve layout, enhance responsiveness, and update styles for better user interaction. Add localization for 'Save Changes' button and implement change detection for user input.

navidshad added 30 commits July 31, 2025 21:56
…ance responsiveness, and update styles for better user interaction. Add localization for 'Save Changes' button and implement change detection for user input.
…testing and Playwright for E2E testing. Update package.json with new test scripts, create configuration files, and establish a testing guide in README. Include test stubs and mock implementations for Vue components and composables.
…ent outlining project overview, key technologies, coding standards, and critical rules for frontend development in the Nuxt 3 application.
… responsiveness, enhance styles for better user interaction, and implement change detection for user input. Add localization for 'Save Changes' button.
…re testing patterns, mocking strategies, test organization structure, and best practices for unit and integration testing using Jest and TypeScript. Include examples for API function testing and external service mocking.
….config.js for TypeScript testing, update package.json with test scripts, and create a test environment file. Replace old calculator tests with new structured tests using Jest for improved maintainability and clarity.
…es-as-development-guideline_Navid-Shad

Add comprehensive testing setup
…plementation, detailing backend architecture, logic, and frontend components.
Server:
- Implement LeitnerService for managing spaced repetition logic (box movement, scheduling).
- Add database schemas for `leitner_system` and `review_bundle`.
- Add API functions: `get-review-bundle`, `submit-review-result`, `get-stats`, `update-settings`.
- Implement `generate-daily-bundles` for daily review generation.
- Service: Initialize user Leitner system on login (Auth Router).
- Data: Centralize database and collection configuration in [config.ts](cci:7://file:///Users/navid-shad/Projects/CodeBridger/learn-by-subtitle/dashboard-app/server/src/config.ts:0:0-0:0).
- Schedule: Integrate `node-schedule` for managing background jobs.

Frontend:
- Feature: Add 'Review' page to sidebar with Leitner box stats and Recent AI Lectures.
- Feature: Add 'Preferences' page for Leitner settings (Daily Limit, Total Boxes).
- Update: Enhance Flashcards component to support 'Leitner' mode with Known/Unknown feedback.
- Config: Add localization keys for Review dashboard.
…ll, integrating lib-vue-components docs, and updating doc download paths with conditional markdown conversion.
…ce, covering review scheduling, demotion, and quota enforcement.
…ctive` for Leitner box reviews and add `BoardService` tests.
Refined the Leitner box notification system with the following:
- Added a professional HourSelector.vue component for intuitive session time selection.
- Enforced a default 1-day review interval and 9AM session hour across backend and frontend.
- Implemented proactive job syncing in LeitnerService (with in-memory cache) to ensure existing users are correctly scheduled.
- Added detailed unit tests in notification.test.ts with human-readable explanations to verify registration and conditional dashboard toasting.
- Optimized logging in ScheduleService to reduce console noise.
Accomplishments:
- Refactored icon rendering to use native @codebridger/lib-vue-components Icons (IconCalendar, IconBolt, etc.) and supported iconify syntax for Solar icons.
- Improved vertical alignment of icons and labels using items-center and leading-none.
- Refined Box title badges (Entrance/Mature) to be smaller and more professional.
- Fixed vertical progression line gaps in the Box timeline.
- Refactored Buttons to use #icon slots for guaranteed icon visibility and alignment.
- Redesigned board page with a professional 'Mission Control' theme.
- Improved card aesthetics with glassmorphism, gradients, and smoothed geometry.
- Fixed rendering bug caused by animation class conflicts.
- Enhanced reliability with better error handling and safety checks.
…eitner-Box-Review-System_Navid-Shad

#86erqa08y Implement Comprehensive Leitner Box Spaced Repetition System with UI Enhancements and Board Activity Tracking
…ed jobs and pass execution times to job callbacks.
…ue by the end of the current day, add corresponding tests, and remove the `initLeitner` function.
…anagement and update Leitner Box collection names in tests.
@navidshad
Copy link
Contributor Author

@navidshad navidshad changed the title Dev #86erqa08y Implement Leitner Box Review System with Scheduling Enhancements and UI Improvements Feb 1, 2026
@navidshad navidshad merged commit b8365a7 into main Feb 1, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant