fix(docs): page help buttons open the right topic + wiring guard

The Federation and Runs help buttons opened the architecture doc:
federation.md/runs.md existed as assets but had no _DocEntry, so
showFaiDoc resolved the unknown slug to _kDocs.first. Register both
(onWelcome: false, so they don't clutter the newcomer grid but are
reachable), split the Welcome grid onto the curated subset, and make
the unknown-slug fallback assert in debug instead of silently opening
the wrong topic.

Guard (no-bugfix-without-a-guard): doc_help_wiring_test.dart scans
lib/ for every showFaiDoc('slug') call and asserts each has a
registered entry AND both assets/docs/<slug>[_de].md files. Exposes
kKnownDocSlugs for the test.

Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
flemming-it 2026-07-20 02:00:56 +02:00
parent 588f437395
commit 5a3f00bb2c
7 changed files with 226 additions and 6 deletions

View file

@ -398,6 +398,30 @@ abstract class AppLocalizations {
/// **'Human-in-the-loop checkpoints — when to use them, how the audit log records them.'**
String get welcomeDocApprovalsBlurb;
/// No description provided for @welcomeDocFederationTitle.
///
/// In en, this message translates to:
/// **'Federation'**
String get welcomeDocFederationTitle;
/// No description provided for @welcomeDocFederationBlurb.
///
/// In en, this message translates to:
/// **'Connect other hubs (satellites) so their capabilities become usable here — what a satellite is and how enrolment works.'**
String get welcomeDocFederationBlurb;
/// No description provided for @welcomeDocRunsTitle.
///
/// In en, this message translates to:
/// **'Background runs'**
String get welcomeDocRunsTitle;
/// No description provided for @welcomeDocRunsBlurb.
///
/// In en, this message translates to:
/// **'Flows that keep working in the background — what they are for, how to switch the feature on and monitor the runs.'**
String get welcomeDocRunsBlurb;
/// No description provided for @helpTooltip.
///
/// In en, this message translates to:
@ -680,6 +704,12 @@ abstract class AppLocalizations {
/// **'Cancel'**
String get buttonCancel;
/// No description provided for @buttonLearnMore.
///
/// In en, this message translates to:
/// **'Learn more'**
String get buttonLearnMore;
/// No description provided for @buttonSave.
///
/// In en, this message translates to:
@ -5347,6 +5377,18 @@ abstract class AppLocalizations {
/// **'Satellite name'**
String get federationNameLabel;
/// No description provided for @federationAddIntro.
///
/// In en, this message translates to:
/// **'A satellite is another hub this hub connects to — its capabilities then become usable here in flows. You give it a name and receive a one-time token the satellite uses to enrol with this hub.'**
String get federationAddIntro;
/// No description provided for @federationNameHelp.
///
/// In en, this message translates to:
/// **'A free-form name to recognize this satellite in the list (e.g. its location or purpose). Display only — it changes nothing technical.'**
String get federationNameHelp;
/// No description provided for @federationIssueButton.
///
/// In en, this message translates to: