feat(assistant): search the web too, and choose what goes along

The assistant's field now has a switch at its start: a question goes to
Claude or into a web search, and the field remembers which. A web search
opens the chosen engine's results: on Android the device's own web
search by default (ACTION_WEB_SEARCH, answered by its default browser or
search app; Brave Search where nothing answers), elsewhere Brave Search
by default; Settings › Assistant › Search engine offers Ecosia,
DuckDuckGo, Startpage, Qwant, Google, Bing, or one's own address with
%s where the question goes.

Above the field, chips offer what the question is about: a card's
front, back, each hint and its explanation, the studyset's name and
description. None is chosen, so only what the person picks goes along,
each part cut at 600 characters; Claude gets the question and a compact
line per chosen part, a web search the question and the chosen text,
never the studyset's name. A chosen chip alone is enough to send. The
old sentences around every question (where it was asked, the connector)
are gone: they cost tokens for nothing unless the studyset is chosen.

On a studyset's screen the button now stands above the bottom bar, as in
the Library: unfolded inside the bar, its chips lay outside the bar's
bounds, where taps don't land.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-10 14:41:36 +02:00
commit 96c2dc1be8
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -5681,11 +5681,11 @@ class AppLocalizationsDe extends AppLocalizations {
String get settingsAssistant => 'Assistent';
@override
String get settingsAskClaude => 'Claude fragen';
String get settingsAskClaude => 'Claude fragen oder im Web suchen';
@override
String get settingsAskClaudeSubtitle =>
'Aus, bis du es einschaltest. Fügt ein Feld auf der Startseite und einen Knopf in der Bibliothek, bei einem Lernset und beim Lernen hinzu. Eine Frage öffnet sich in Claude mit dem, worum es geht, und du sendest sie dort; von hier aus wird nichts gesendet.';
'Aus, bis du es einschaltest. Fügt ein Feld auf der Startseite und einen Knopf in der Bibliothek, bei einem Lernset und beim Lernen hinzu. Eine Frage öffnet sich in Claude oder als Websuche, nur mit dem Zusammenhang, den du wählst; von hier aus wird nichts gesendet.';
@override
String get assistantHint => 'Frag Claude…';
@ -5702,7 +5702,7 @@ class AppLocalizationsDe extends AppLocalizations {
String get assistantSend => 'In Claude fragen';
@override
String get assistantOpen => 'Claude fragen';
String get assistantOpen => 'Fragen oder suchen';
@override
String get assistantClose => 'Schließen';
@ -5710,31 +5710,6 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get assistantOpenFailed => 'Claude ließ sich nicht öffnen.';
@override
String assistantPromptLearning(String question, String instance) {
return '$question\n\n(Gefragt aus Halkyon Learn, wo ich mit Lernsets auf $instance lerne. Wenn du den Connector von Halkyon Learn hast, kannst du sie dort lesen.)';
}
@override
String assistantPromptStudyset(
String question,
String title,
String instance,
) {
return '$question\n\n(Es geht um mein Lernset „$title“ in Halkyon Learn auf $instance. Wenn du den Connector von Halkyon Learn hast, kannst du es dort lesen.)';
}
@override
String assistantPromptCard(
String question,
String title,
String front,
String back,
String instance,
) {
return '$question\n\n(Es geht um eine Karteikarte, die ich gerade lerne, aus meinem Lernset „$title“ in Halkyon Learn auf $instance.\nVorderseite: $front\nRückseite: $back)';
}
@override
String get assistantConnectTitle => 'Claude verbinden';
@ -5809,4 +5784,82 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get assistantRetry => 'Erneut versuchen';
@override
String assistantLineFront(String text) {
return 'Vorderseite: $text';
}
@override
String assistantLineBack(String text) {
return 'Rückseite: $text';
}
@override
String assistantLineHint(int number, String text) {
return 'Hinweis $number: $text';
}
@override
String assistantLineExplanation(String text) {
return 'Erklärung: $text';
}
@override
String assistantLineStudyset(String title, String instance) {
return 'Lernset: „$title“ in Halkyon Learn auf $instance';
}
@override
String assistantLineDescription(String text) {
return 'Beschreibung: $text';
}
@override
String assistantChipStudyset(String title) {
return 'Lernset: $title';
}
@override
String get assistantContextLabel => 'Mitsenden';
@override
String get assistantTargetClaude => 'Claude';
@override
String get assistantTargetWeb => 'Web';
@override
String get assistantSwitchToWeb => 'Stattdessen im Web suchen';
@override
String get assistantSwitchToClaude => 'Stattdessen Claude fragen';
@override
String get assistantHintWeb => 'Im Web suchen…';
@override
String get assistantSendWeb => 'Suchen';
@override
String get assistantSearchFailed => 'Die Suche ließ sich nicht öffnen.';
@override
String get settingsSearchEngine => 'Suchmaschine';
@override
String get searchEngineDevice => 'Suche des Geräts';
@override
String get searchEngineCustom => 'Eigene Adresse';
@override
String get searchEngineCustomHint => 'https://example.org/search?q=%s';
@override
String get searchEngineCustomInvalid =>
'Eine http- oder https-Adresse mit %s, wo die Frage hingehört.';
@override
String get searchEngineCustomSave => 'Verwenden';
}