fix(doctor): honest module count, temp-path audit warning, connection line
Some checks are pending
Security / Security check (push) Waiting to run

Three doctor-page findings from the usertest panel:

- Module tile no longer counts the hub's built-in 'system'
  pseudo-module — a fresh hub shows 0 modules, matching the
  welcome checklist's definition of an install. Counting is a
  top-level function with unit tests.
- When the audit DB lives in an OS-cleanable temp directory
  (/var/folders, /tmp, Windows Temp), the daemon-files panel
  says so instead of presenting the state as healthy. The
  classifier is a top-level function with unit tests.
- The daemon card states who-talks-to-whom-how in one line:
  endpoint, transport security (TLS / unencrypted-local /
  unencrypted), and whether a bearer token is attached (length
  only) — the auditor's baseline the green dot cannot answer.

Also syncs pubspec.yaml (0.70.0 -> 0.72.0) with kStudioVersion,
which had drifted to 0.71.0 while pubspec stayed behind.

Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
flemming-it 2026-07-18 00:56:46 +02:00
parent afa3fa7eae
commit 703d961cec
10 changed files with 303 additions and 3 deletions

View file

@ -1267,6 +1267,25 @@
"doctorPillStopped": "gestoppt",
"doctorDaemonControlHint": "Studio ruft das Platform-Binary auf — entspricht chain daemon …, sodass CLI und UI im Gleichschritt bleiben.",
"doctorDaemonControlWorking": "Wird ausgeführt…",
"doctorConnLine": "Verbindung: {endpoint} · {transport} · {auth}",
"@doctorConnLine": {
"placeholders": {
"endpoint": {"type": "String"},
"transport": {"type": "String"},
"auth": {"type": "String"}
}
},
"doctorConnTls": "TLS-verschlüsselt",
"doctorConnPlainLocal": "unverschlüsselt (bleibt auf diesem Rechner)",
"doctorConnPlainRemote": "unverschlüsselt",
"doctorConnToken": "Token gesetzt ({count} Zeichen)",
"@doctorConnToken": {
"placeholders": {
"count": {"type": "int"}
}
},
"doctorConnAnonymous": "ohne Token (anonym)",
"doctorDbVolatileWarning": "Die Audit-Datenbank liegt in einem temporären Ordner, den das Betriebssystem jederzeit aufräumen kann. Für belastbare Nachweise gehört das Datenverzeichnis des Hubs an einen dauerhaften Ort.",
"doctorPathLog": "Log",
"doctorPathConfig": "Konfig",
"doctorPathDb": "Audit-DB",

View file

@ -1291,6 +1291,25 @@
"doctorPillStopped": "stopped",
"doctorDaemonControlHint": "Studio shells out to the platform binary — mirrors chain daemon … exactly so the CLI and UI stay in lockstep.",
"doctorDaemonControlWorking": "Working…",
"doctorConnLine": "Connection: {endpoint} · {transport} · {auth}",
"@doctorConnLine": {
"placeholders": {
"endpoint": {"type": "String"},
"transport": {"type": "String"},
"auth": {"type": "String"}
}
},
"doctorConnTls": "TLS-encrypted",
"doctorConnPlainLocal": "unencrypted (stays on this machine)",
"doctorConnPlainRemote": "unencrypted",
"doctorConnToken": "token configured ({count} characters)",
"@doctorConnToken": {
"placeholders": {
"count": {"type": "int"}
}
},
"doctorConnAnonymous": "no token (anonymous)",
"doctorDbVolatileWarning": "The audit database is stored in a temporary folder the operating system may clean up at any time. For real evidence, move the hub's data directory to a permanent location.",
"doctorPathLog": "Log",
"doctorPathConfig": "Config",
"doctorPathDb": "Audit DB",

View file

@ -3836,6 +3836,48 @@ abstract class AppLocalizations {
/// **'Working…'**
String get doctorDaemonControlWorking;
/// No description provided for @doctorConnLine.
///
/// In en, this message translates to:
/// **'Connection: {endpoint} · {transport} · {auth}'**
String doctorConnLine(String endpoint, String transport, String auth);
/// No description provided for @doctorConnTls.
///
/// In en, this message translates to:
/// **'TLS-encrypted'**
String get doctorConnTls;
/// No description provided for @doctorConnPlainLocal.
///
/// In en, this message translates to:
/// **'unencrypted (stays on this machine)'**
String get doctorConnPlainLocal;
/// No description provided for @doctorConnPlainRemote.
///
/// In en, this message translates to:
/// **'unencrypted'**
String get doctorConnPlainRemote;
/// No description provided for @doctorConnToken.
///
/// In en, this message translates to:
/// **'token configured ({count} characters)'**
String doctorConnToken(int count);
/// No description provided for @doctorConnAnonymous.
///
/// In en, this message translates to:
/// **'no token (anonymous)'**
String get doctorConnAnonymous;
/// No description provided for @doctorDbVolatileWarning.
///
/// In en, this message translates to:
/// **'The audit database is stored in a temporary folder the operating system may clean up at any time. For real evidence, move the hub\'s data directory to a permanent location.'**
String get doctorDbVolatileWarning;
/// No description provided for @doctorPathLog.
///
/// In en, this message translates to:

View file

@ -2255,6 +2255,33 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get doctorDaemonControlWorking => 'Wird ausgeführt…';
@override
String doctorConnLine(String endpoint, String transport, String auth) {
return 'Verbindung: $endpoint · $transport · $auth';
}
@override
String get doctorConnTls => 'TLS-verschlüsselt';
@override
String get doctorConnPlainLocal =>
'unverschlüsselt (bleibt auf diesem Rechner)';
@override
String get doctorConnPlainRemote => 'unverschlüsselt';
@override
String doctorConnToken(int count) {
return 'Token gesetzt ($count Zeichen)';
}
@override
String get doctorConnAnonymous => 'ohne Token (anonym)';
@override
String get doctorDbVolatileWarning =>
'Die Audit-Datenbank liegt in einem temporären Ordner, den das Betriebssystem jederzeit aufräumen kann. Für belastbare Nachweise gehört das Datenverzeichnis des Hubs an einen dauerhaften Ort.';
@override
String get doctorPathLog => 'Log';

View file

@ -2261,6 +2261,32 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get doctorDaemonControlWorking => 'Working…';
@override
String doctorConnLine(String endpoint, String transport, String auth) {
return 'Connection: $endpoint · $transport · $auth';
}
@override
String get doctorConnTls => 'TLS-encrypted';
@override
String get doctorConnPlainLocal => 'unencrypted (stays on this machine)';
@override
String get doctorConnPlainRemote => 'unencrypted';
@override
String doctorConnToken(int count) {
return 'token configured ($count characters)';
}
@override
String get doctorConnAnonymous => 'no token (anonymous)';
@override
String get doctorDbVolatileWarning =>
'The audit database is stored in a temporary folder the operating system may clean up at any time. For real evidence, move the hub\'s data directory to a permanent location.';
@override
String get doctorPathLog => 'Log';