feat(doctor,shell): ollama host-service suggestion + hub-update hint (0.80.0)
Some checks failed
Security / Security check (push) Failing after 2s
Some checks failed
Security / Security check (push) Failing after 2s
Doctor: when the system AI uses an Ollama endpoint that no declared host service covers (host:port match, /v1 suffix stripped), the services panel says so in one sentence with a one-click 'declare as host service' via the new DeclareService RPC — and states honestly that it takes effect after a daemon restart (the restart button sits on the same page). Pure suggestOllamaServiceEndpoint pins every branch. Shell: one slim, dismissible banner after connecting when the release manifest offers a newer hub version; dismissal is persisted per version so each release hints exactly once (pure shouldShowUpdateHint + a widget test through the fake hub). Deliberately manifest-based — Studio and hub versions are independent counters, so a direct comparison would be wrong; unreleased dev skew stays with the per-page classified states. The probe stays inert under the test probe override: its timeout timer leaked into hub_banner_test (the hermeticity class again). Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
parent
351c5a82bc
commit
14f824b8ef
13 changed files with 703 additions and 135 deletions
|
|
@ -1191,6 +1191,14 @@
|
|||
}
|
||||
},
|
||||
"doctorSummaryDeclared": "deklariert",
|
||||
"doctorOllamaSuggest": "Die System-KI nutzt Ollama auf {endpoint} — als Host-Dienst deklarieren, damit Module und Diagnose ihn kennen?",
|
||||
"@doctorOllamaSuggest": {"placeholders": {"endpoint": {"type": "String"}}},
|
||||
"doctorOllamaDeclareButton": "Als Host-Dienst deklarieren",
|
||||
"doctorOllamaDeclared": "Als Host-Dienst „ollama“ deklariert — wirksam nach einem Daemon-Neustart (Knopf unten auf dieser Seite).",
|
||||
"updateHintBanner": "Für den Hub ({local}) ist Version {latest} verfügbar.",
|
||||
"@updateHintBanner": {"placeholders": {"local": {"type": "String"}, "latest": {"type": "String"}}},
|
||||
"updateHintOpenDoctor": "Diagnose öffnen",
|
||||
"updateHintDismiss": "Später",
|
||||
"svcExposureLoopback": "nur lokal",
|
||||
"svcExposurePrivate": "privates Netz",
|
||||
"svcExposurePublic": "öffentlich erreichbar",
|
||||
|
|
|
|||
|
|
@ -1215,6 +1215,14 @@
|
|||
}
|
||||
},
|
||||
"doctorSummaryDeclared": "declared",
|
||||
"doctorOllamaSuggest": "The system AI uses Ollama at {endpoint} — declare it as a host service so modules and the doctor know it?",
|
||||
"@doctorOllamaSuggest": {"placeholders": {"endpoint": {"type": "String"}}},
|
||||
"doctorOllamaDeclareButton": "Declare as host service",
|
||||
"doctorOllamaDeclared": "Declared as host service \"ollama\" — takes effect after a daemon restart (button further down this page).",
|
||||
"updateHintBanner": "Version {latest} is available for the hub ({local}).",
|
||||
"@updateHintBanner": {"placeholders": {"local": {"type": "String"}, "latest": {"type": "String"}}},
|
||||
"updateHintOpenDoctor": "Open Doctor",
|
||||
"updateHintDismiss": "Later",
|
||||
"svcExposureLoopback": "local only",
|
||||
"svcExposurePrivate": "private network",
|
||||
"svcExposurePublic": "publicly reachable",
|
||||
|
|
|
|||
|
|
@ -3704,6 +3704,42 @@ abstract class AppLocalizations {
|
|||
/// **'declared'**
|
||||
String get doctorSummaryDeclared;
|
||||
|
||||
/// No description provided for @doctorOllamaSuggest.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'The system AI uses Ollama at {endpoint} — declare it as a host service so modules and the doctor know it?'**
|
||||
String doctorOllamaSuggest(String endpoint);
|
||||
|
||||
/// No description provided for @doctorOllamaDeclareButton.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Declare as host service'**
|
||||
String get doctorOllamaDeclareButton;
|
||||
|
||||
/// No description provided for @doctorOllamaDeclared.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Declared as host service \"ollama\" — takes effect after a daemon restart (button further down this page).'**
|
||||
String get doctorOllamaDeclared;
|
||||
|
||||
/// No description provided for @updateHintBanner.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Version {latest} is available for the hub ({local}).'**
|
||||
String updateHintBanner(String local, String latest);
|
||||
|
||||
/// No description provided for @updateHintOpenDoctor.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Open Doctor'**
|
||||
String get updateHintOpenDoctor;
|
||||
|
||||
/// No description provided for @updateHintDismiss.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Later'**
|
||||
String get updateHintDismiss;
|
||||
|
||||
/// No description provided for @svcExposureLoopback.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
|
|
|||
|
|
@ -2157,6 +2157,29 @@ class AppLocalizationsDe extends AppLocalizations {
|
|||
@override
|
||||
String get doctorSummaryDeclared => 'deklariert';
|
||||
|
||||
@override
|
||||
String doctorOllamaSuggest(String endpoint) {
|
||||
return 'Die System-KI nutzt Ollama auf $endpoint — als Host-Dienst deklarieren, damit Module und Diagnose ihn kennen?';
|
||||
}
|
||||
|
||||
@override
|
||||
String get doctorOllamaDeclareButton => 'Als Host-Dienst deklarieren';
|
||||
|
||||
@override
|
||||
String get doctorOllamaDeclared =>
|
||||
'Als Host-Dienst „ollama“ deklariert — wirksam nach einem Daemon-Neustart (Knopf unten auf dieser Seite).';
|
||||
|
||||
@override
|
||||
String updateHintBanner(String local, String latest) {
|
||||
return 'Für den Hub ($local) ist Version $latest verfügbar.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get updateHintOpenDoctor => 'Diagnose öffnen';
|
||||
|
||||
@override
|
||||
String get updateHintDismiss => 'Später';
|
||||
|
||||
@override
|
||||
String get svcExposureLoopback => 'nur lokal';
|
||||
|
||||
|
|
|
|||
|
|
@ -2160,6 +2160,29 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||
@override
|
||||
String get doctorSummaryDeclared => 'declared';
|
||||
|
||||
@override
|
||||
String doctorOllamaSuggest(String endpoint) {
|
||||
return 'The system AI uses Ollama at $endpoint — declare it as a host service so modules and the doctor know it?';
|
||||
}
|
||||
|
||||
@override
|
||||
String get doctorOllamaDeclareButton => 'Declare as host service';
|
||||
|
||||
@override
|
||||
String get doctorOllamaDeclared =>
|
||||
'Declared as host service \"ollama\" — takes effect after a daemon restart (button further down this page).';
|
||||
|
||||
@override
|
||||
String updateHintBanner(String local, String latest) {
|
||||
return 'Version $latest is available for the hub ($local).';
|
||||
}
|
||||
|
||||
@override
|
||||
String get updateHintOpenDoctor => 'Open Doctor';
|
||||
|
||||
@override
|
||||
String get updateHintDismiss => 'Later';
|
||||
|
||||
@override
|
||||
String get svcExposureLoopback => 'local only';
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue