Smart review: name the source deck on every card, break the counts down
"It contains mistakes I either did more than once or from decks that I've removed - there's no way there's 34 to repeat with 2 decks." The counts were honest (dueItems/mistakeItems only resolve live deck+activity pairs; a seeded repro with 37 SRS rows and 30 live shows "30 due"), but nothing in the UI said where an item came from: a deck created twice from the same notes shows every question twice, and a deck that survived a delete or a sync looks like a ghost. Both read as a broken list. - SessionFeed gains showDeck (review + mistakes): a deck chip above every card, so two identical questions are visibly two decks. - The Smart review card breaks its numbers down under the buttons: "Due by deck: Sky deck - 17 - Sky deck (2) - 17", capped at three decks plus "+n more" (groupByDeck in lib/learning). - New i18n keys (en + cs, plural forms for "+n more"). review-test pins it: a twin-deck seed renders the breakdown and both deck chips in the feed. Version 0.6.8, SW v90.
This commit is contained in:
parent
2a956a1cd4
commit
1e8606a95b
9 changed files with 129 additions and 8 deletions
|
|
@ -4,7 +4,7 @@ import { useCallback, useEffect, useRef, useState } from "react";
|
|||
|
||||
import { ActivityRenderer } from "@/components/activities";
|
||||
import { AiDisclaimer } from "@/components/AiDisclaimer";
|
||||
import { XIcon } from "@/components/icons";
|
||||
import { LayersIcon, XIcon } from "@/components/icons";
|
||||
import { ReportQuestionButton } from "@/components/ReportQuestionButton";
|
||||
import { ProgressBar } from "@/components/ui";
|
||||
import type { Activity, Deck } from "@/lib/schemas";
|
||||
|
|
@ -32,6 +32,7 @@ export function SessionFeed({
|
|||
items,
|
||||
timerSeconds,
|
||||
noHints = false,
|
||||
showDeck = false,
|
||||
testId,
|
||||
onExit,
|
||||
onAnswered,
|
||||
|
|
@ -41,6 +42,9 @@ export function SessionFeed({
|
|||
items: SessionItem[];
|
||||
timerSeconds?: number;
|
||||
noHints?: boolean;
|
||||
/** Review/mistakes: show which deck each card comes from. Two decks with
|
||||
* the same question otherwise read as one item repeating itself. */
|
||||
showDeck?: boolean;
|
||||
testId?: string;
|
||||
onExit: () => void;
|
||||
onAnswered?: (item: SessionItem, correct: boolean, meta?: { userAnswer?: string }) => void;
|
||||
|
|
@ -203,6 +207,14 @@ export function SessionFeed({
|
|||
className="flex h-full snap-start snap-always items-stretch justify-center overflow-y-auto overscroll-y-contain"
|
||||
>
|
||||
<div className="mx-auto flex min-h-full w-full max-w-xl flex-col gap-4 px-4 pb-24 pt-24 [justify-content:safe_center] [&>*]:shrink-0">
|
||||
{showDeck ? (
|
||||
<div className="flex flex-wrap items-center gap-2">
|
||||
<span className="glass-chip inline-flex max-w-full items-center gap-1.5 rounded-full px-3 py-1 text-xs font-semibold text-frost-600 dark:text-frost-300">
|
||||
<LayersIcon className="size-3.5 shrink-0" />
|
||||
<span className="truncate">{item.deck.title}</span>
|
||||
</span>
|
||||
</div>
|
||||
) : null}
|
||||
<ActivityRenderer
|
||||
activity={item.activity}
|
||||
active={index === itemIndex}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue