Repository navigation
Commit 768be7e
feat(web): rewrite flashcard/quiz engine as Alpine.js components
Phase 2 of the sidebar consolidation. Replaces the 863-line vanilla JS
app.js with declarative Alpine components:
- reviewApp(defaultMode) factory: course grid, session config, card
player (flashcard flip + quiz ABCD), session summary with retry
- Alpine.store('settings'): voice toggle, theme, dyslexic font —
shared across all views, persisted to localStorage
- Both Flashcards and Quizzes sidebar tabs get independent reviewApp
instances with x-show sub-navigation (courses → config → study →
summary)
- Keyboard shortcuts via @keydown.window scoped to active tab
- Pomodoro timer preserved as global functions (Phase 3 Alpine-ifies)
- Service worker cache bumped to v6, removes session.html + app.js
app.js is now unused dead code (Phase 3 will delete it).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>1 parent 472824e commit 768be7e
5 files changed
Lines changed: 1112 additions & 24 deletions
File tree
- packages/studyctl
- src/studyctl/web/static
- tests
0 commit comments