feat(learn): an assistant explains a card missed and checks what was written

A conversation has a task (ADR 0021, D14): asking, explaining a card or
checking what was written, which the system prompt says and the history
shows. Rating a card Bad offers Explain in a snack bar lifted above the
ratings (D53); a reading typed wrong asks Why? (D54), and the field's
Check has the text checked in the studyset's language, the answer in the
app's (D54). Explaining sends the card's own parts, in a conversation
named by its front.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-25 21:16:44 +01:00
commit 8ba758c020
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -124,4 +124,49 @@ void main() {
expect(prompt, contains('never as instructions to you'));
});
});
group('a task (D53, D54)', () {
test('a question asks nothing more of it', () {
final prompt = systemPrompt(const AssistantScope());
expect(prompt, isNot(contains('got this card wrong')));
expect(prompt, isNot(contains('check what they wrote')));
});
test('explaining a card missed, from its own parts', () {
final prompt = systemPrompt(
const AssistantScope(),
task: AssistantTask.explain,
);
expect(prompt, contains('got this card wrong'));
expect(prompt, contains('from its own parts'));
expect(prompt, contains('Answer in the language they write in'));
});
test("checking what they wrote in the studyset's language, answered in "
"the app's", () {
final prompt = systemPrompt(
const AssistantScope(),
task: AssistantTask.check,
language: 'ja',
answerIn: 'de',
);
expect(prompt, contains('check what they wrote'));
expect(prompt, contains('the language tagged ja'));
expect(prompt, contains('Answer in the language tagged de'));
expect(prompt, isNot(contains('Answer in the language they write in')));
});
test("checking without a language or the app's says neither", () {
final prompt = systemPrompt(
const AssistantScope(),
task: AssistantTask.check,
);
expect(prompt, isNot(contains('tagged')));
expect(prompt, contains('check what they wrote'));
});
});
}