halkyon/packages/halkyon_app/test/assistant/model/assistant_provider_test.dart
Tizian 「ティツィアーン」 b4b27a1d0c
feat(learn,app): the field's row as one, its model by name in its provider's colour, the microphone dictating (ADR 0021, D69)
The developer's review of 4 Nov 2026. Below the question, × and + stand
at the start, who answers is centred and the conversations and the
microphone stand at the end, every button the same rounded square, the
microphone listening and Send too. The row above the text ("Only what I
choose · 2 parts") goes, as +'s sheet offers the same choice; a web
search gets + with that row alone. Who answers shows its model's name
alone ('Haiku 4.5', AssistantProvider.modelName: Anthropic's without
"Claude", others as they are), outlined in its provider's colour (D60).
The microphone is halkyon_app's Dictation: what is said goes where the
cursor stands, and it listens again after each pause until stopped. It
gives way to Send once anything could be sent, as Claude's field does.

Whats-New: The question's buttons are in one row: close and + on the left, who answers in the middle, Conversations and the microphone on the right.
Whats-New: What goes along is chosen under +, for the web search too.
Whats-New: Who answers shows the model's name, in its provider's colour.
Whats-New: The microphone keeps listening after a pause, writing where the cursor is, until you stop it.
Whats-New-De: Die Knöpfe der Frage stehen in einer Reihe: Schließen und + links, wer antwortet in der Mitte, Unterhaltungen und Mikrofon rechts.
Whats-New-De: Was mitgeht, wählst du unter +, auch für die Websuche.
Whats-New-De: Wer antwortet, zeigt den Namen des Modells, in der Farbe seines Anbieters.
Whats-New-De: Das Mikrofon hört nach einer Pause weiter zu und schreibt, wo der Cursor steht, bis du es stoppst.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-05 08:58:37 +01:00

36 lines
1.3 KiB
Dart

import 'package:flutter_test/flutter_test.dart';
import 'package:halkyon_app/halkyon_app.dart';
/// An assistant's model by its own name, where its provider shows beside
/// it (Halkyon Learn's ADR 0021, D69).
void main() {
group("Anthropic's models", () {
const anthropic = AssistantProvider.anthropic;
test('go without the family they share', () {
expect(anthropic.modelName('Claude Haiku 4.5'), 'Haiku 4.5');
expect(anthropic.modelName('Claude Opus 4.1'), 'Opus 4.1');
expect(anthropic.modelName('claude Sonnet 4'), 'Sonnet 4');
});
test('keep a name not led by it, or nothing besides it', () {
expect(anthropic.modelName('Claude'), 'Claude');
expect(anthropic.modelName('Claudette'), 'Claudette');
expect(anthropic.modelName('Our tutor'), 'Our tutor');
});
});
test("OpenAI's and every other provider's stay as they are", () {
expect(AssistantProvider.openai.modelName('GPT-5'), 'GPT-5');
expect(AssistantProvider.openai.modelName('GPT-5 mini'), 'GPT-5 mini');
expect(
AssistantProvider.google.modelName('Gemini 2.5 Pro'),
'Gemini 2.5 Pro',
);
expect(
AssistantProvider.of('llm.example.org').modelName('Claude Haiku 4.5'),
'Claude Haiku 4.5',
reason: 'a proxy names its models as it likes',
);
});
}