/review — "Keep it from fading." A short queue of things you have learned and are due to see again.
A skill is eligible for review once it is practised but not yet Mastered — level 1 through 3 on the mastery ladder. Nothing you have never touched appears, and neither does anything you have taken all the way to Mastered.
That rule is worth stating plainly because it sets expectations: review is for consolidating the middle of the ladder, not for introducing new material and not for maintaining finished material.
The page snapshots what is due when you arrive, so the list does not shift under you as you work. Each item is a single exercise; answering grades the skill and can move it up a rung. Finishing records daily activity, so a review session keeps your streak alive exactly as a class does.
When there is nothing due you get "All caught up" rather than a padded queue. Empty is a real answer here.
A class's clips can be played back-to-back as a short recap — the film without the interleaved steps. It is the fastest way back into material you half-remember.
ReviewReminderButton requests a notification permission and schedules a nudge. It is opt-in and per-device.
Review and classes both feed the streak, which is forgiving by design: it has freezes, capped at 2, so a missed day does not necessarily reset you.
One implementation detail that matters if you ever touch this: every day-scoped value derives from the learner's local calendar date, not UTC. Using toISOString() rolled the day over at 16:00–17:00 local across the Americas — an evening session was credited to tomorrow, and the next morning's session found lastActiveDay === today and silently earned no streak credit at all.