Commit Graph
24 Commits
Author SHA1 Message Date
nmemmertandClaude Sonnet 4.6 8f3f7634ff Require PIN on every visit to the parent dashboard
Remove sessionStorage caching of the PIN so the gate always shows on
page load instead of auto-unlocking from a previous session.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-27 15:27:11 -04:00
nmemmertandClaude Sonnet 4.6 2accefd122 Add toast notifications for all saves and batch planner task add
Toast: replace buried #admin-msg hint with a floating green/red toast
(bottom-right, auto-dismisses after 3s) covering every save action —
lists, decks, items, grades, kids, units, courses, bulk imports, and
planner saves.

Planner batch add: clicking '+ Add' now queues items locally (shown
as dashed pending badges) without saving. A '💾 Save N items' button
appears in the toolbar; clicking it commits everything at once and
refreshes the planner. Queue clears on student change.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-27 15:10:14 -04:00
nmemmertandClaude Sonnet 4.6 b048ebbd85 Add spelling test polish: date filter, CSV export, student history, planner badges
- Gradebook: period dropdown (all time / 30 / 90 days) and CSV export for
  Spelling Test History section
- Student portal spelling tab: shows last 10 tests as a Recent Tests list
- Planner: completed standalone spelling tests appear as read-only ⭐ badges
  on the day they were taken (week and month views)
- Removed dead s.tests query from /api/overview (now served by dedicated endpoints)
- New endpoints: GET /api/spelling-tests/csv, GET /api/students/:id/tests,
  GET /api/admin/students/:id/tests-range

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-27 14:26:47 -04:00
nmemmertandClaude Sonnet 4.6 183b43b452 Move spelling test results from Spelling panel into Gradebook
Adds a GET /api/spelling-tests endpoint that returns all standalone test
results grouped by student. The Gradebook panel now shows a "Spelling Test
History" section below the course gradebook table. Removed the "Test results"
section from the Spelling panel left column.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-27 13:55:23 -04:00
nmemmertandClaude Sonnet 4.6 774979f2e4 Add 4 UX improvements to spelling/flashcards panel
- Assign → button on each list row opens a popup to pick a kid directly
  without scrolling up to the assignment dropdowns
- Hide/Unhide button on built-in lists (stored in localStorage) keeps
  UNGROUPED clean; Show hidden toggle reveals them dimmed when needed
- Mastery progress bar on each kid showing X/Y words mastered for their
  current assigned list (server now returns listProgress in /api/overview)
- Filter-lists / filter-decks search input for fast lookup by name

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-27 13:47:27 -04:00
nmemmertandClaude Sonnet 4.6 5c2b5baec2 Fix toggle button styling and collapse groups by default
Toggle buttons now match the rest of the admin UI (same font, padding,
border-radius). Both start secondary/gray; the active one turns blue.
List and deck group sections are collapsed by default instead of open.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-27 13:19:10 -04:00
nmemmertandClaude Sonnet 4.6 2d663f6964 Replace details/summary expanders with toggle buttons for list/deck forms
New list, Bulk import, New deck, and Bulk import decks are now proper
buttons. Clicking one toggles the form open (highlighted blue) and
clicking again or cancelling closes it. Only one form open at a time.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-27 13:17:17 -04:00
nmemmertandClaude Sonnet 4.6 4613946cea Use full browser width with 2-column layout at 1100px+
Widened admin-main to 1400px max-width and added panel-cols/panel-col
wrappers so Kids, Courses, Spelling, and Flashcards all display content
on the left and forms/editors on the right on wider screens. Falls back
to single-column on smaller viewports.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-27 13:07:38 -04:00
nmemmertandClaude Sonnet 4.6 adf4bf4cae Add bulk import for spelling lists and flashcard decks
Paste multiple lists/decks in one shot using # Name headers:
  # Week 1
  word1
  word2 | example sentence

  # Week 2
  ...

An optional group field applies to all imported items at once.
Progress shown inline; list/deck panel refreshes on completion.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-27 13:02:45 -04:00
nmemmertandClaude Sonnet 4.6 24e709e038 Make list/deck group sections collapsible with prominent headers
Group headers now use a solid tan background, bold uppercase text, and a
▼/▶ arrow indicator so collapsible sections are visually obvious.
Uses native <details>/<summary> elements; ungrouped items show inline
when no named groups exist.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-27 12:48:51 -04:00
nmemmertandClaude Sonnet 4.6 9acd0a792f Add group/course labels to spelling lists and flashcard decks
- group_name column added to lists and decks tables
- GET/POST/PUT endpoints for both include group_name
- Admin Spelling and Flashcards panels render items grouped under
  labeled section headers (e.g. Bible 6, Bible 8) with ungrouped
  items shown last
- Group input in each form has datalist autocomplete from existing groups
- Edit/copy populates the group field; Clear resets it

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-27 12:22:27 -04:00
nmemmertandClaude Sonnet 4.6 0ae0db76bc Add course duplicate and compact list/roster layout
- POST /api/courses/:id/duplicate deep-copies a course with all units,
  items, and quiz questions; opens the copy immediately for renaming
- Roster changed from broken vertical stack to horizontal chip-pills
  (fixes admin-card label override that was collapsing inline-flex)
- item-row padding reduced for tighter lists throughout admin
- Courses and Kids admin panels now use a 2-column auto-fill grid

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-27 10:48:38 -04:00
nmemmertandClaude Sonnet 4.6 4ec26b1deb Add .dockerignore to exclude data dir from image builds
Without this, local spelling.db was being baked into the image,
causing the bind mount to appear empty or stale on first start.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-21 17:14:15 -04:00
nmemmertandClaude Sonnet 4.6 84b8f77a37 Fix back button from course view returning to My Courses tab
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-21 17:06:51 -04:00
nmemmertandClaude Sonnet 4.6 5adefce486 Allow deleting built-in spelling lists and flashcard decks
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-21 17:03:14 -04:00
nmemmertandClaude Sonnet 4.6 9889da3462 Show course name and assignment content in planner print
Week print: tasks grouped by day, each showing course name, type,
and full assignment body text. Month print: course name in calendar
cells + an Assignment Detail section below the calendar with body text.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-21 16:53:46 -04:00
nmemmertandClaude Sonnet 4.6 934919e392 Include assignment body and quiz questions in print course output
Course detail API now returns item body text and quiz questions.
Print course renders body paragraphs and numbered quiz questions
with lettered choices (correct answers marked with ✓).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-21 16:50:01 -04:00
nmemmertandClaude Sonnet 4.6 19fe0cb053 Add month planner view and print for courses and planner
- Month view toggle in planner (Mon-Fri calendar grid, 4-5 weeks)
- Prev/Next navigate by month when in month mode
- Print month report (landscape calendar layout)
- Print course button on course detail (all units + items)
- New GET /api/schedule-range endpoint for arbitrary date spans

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-21 16:47:28 -04:00
nmemmertandClaude Sonnet 4.6 3c22fe05f8 Add kid engagement features and planner drag-and-drop
- Streak tracker: server-side streak counting per kid, celebration overlay
  when all today's tasks are done for the first time that day
- Kid themes: 5 colour palettes (blue/green/purple/orange/pink), picked via
  colour dots on the kid home screen; parents can set it from the Kids panel
- Grading badge: Grading nav pill turns red and shows a pending count
- Print worksheets: 🖨 Worksheet button per word list in admin Spelling panel;
  kids also get "Print my words" on the Spelling tab
- Parent feedback: gold 💬 badge on Today rows with unread comments; more
  prominent callout styling inside the assignment view
- Planner drag-and-drop: tasks can be dragged between days; PATCH
  /api/schedule/:id moves the task, drop zones highlight on hover

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-21 16:40:07 -04:00
nmemmertandClaude Sonnet 4.6 544469d6c9 Add auto-schedule: fill planner from a course automatically
New "Auto-schedule a course" section in the Weekly Planner lets you pick
a course, start date, and items-per-day, then fills the planner in order
skipping weekends. POST /api/schedule/auto handles the logic server-side.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 14:19:13 -04:00
nmemmertandClaude Sonnet 4.6 e0cf2428d5 Fix modal close buttons not working
CSS display:flex on .modal overrode the hidden attribute. Added
[hidden] { display: none !important } to ensure hidden always wins.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 13:41:26 -04:00
nmemmertandClaude Sonnet 4.6 a7de24b1da Add evidence submission, 3-state offline tasks, parent comments, and retake policies
- Evidence on assignments: photo upload + notes + student self-note (needs help / not sure)
- Evidence required/optional/none flag per item; grading queue shows evidence with lightbox thumbnail
- Parent comment field when grading; shown to student on graded items
- Offline tasks: 3-state status (not started → in progress → done) with inline evidence form
- Retake policy per item: latest / highest / average — gradebook computes effective score accordingly
- Grading queue expanded to include lessons and practices (not just assignments) when evidence present

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 13:33:42 -04:00
nmemmertandClaude Sonnet 4.6 02909e1edc Add retakes, quiz templates, score history, due dates, CSV export, and prerequisites
- allow_retakes flag on items: quizzes, spelling tests, and assignments can all be retaken
- Quiz templates: save any quiz as a reusable template and load it into new items
- Score history: every quiz/test attempt logged to submission_history; click a gradebook score to see all attempts
- Due dates: optional due date per item, shown in course view and gradebook (overdue flagged with ⚠️)
- Gradebook CSV export: one-click download of any course gradebook
- Prerequisites: lock an item until a prior one is completed; locked items show 🔒 in course view

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 13:22:58 -04:00
nmemmertandClaude Sonnet 4.6 23b24b5d21 Add GitHub Actions workflow and update docker-compose to use GHCR
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 12:05:52 -04:00