feat(studio): show a source module's data terms before the install button
Some checks failed
Security / Security check (push) Failing after 2s

The store detail sheet now carries a data-source block for source.*
modules: publisher, upstream url, the terms in plain words, and any
attribution the operator has to carry with the output. It sits above
maintainers and above the install button, because it is a decision
input rather than a footnote.

The values are selectable: compliance notes get written by copying,
not retyping. A note names whose terms these are, so nobody reads them
as the module's own licence. Four guards, including that an empty
attribution renders no empty row.

Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
flemming-it 2026-09-09 12:36:45 +02:00
parent fb809a4cbd
commit 35a79d0bb6
8 changed files with 307 additions and 44 deletions

View file

@ -1670,6 +1670,10 @@
"installConfirmTrustTitle": "Vertrauen & Sicherheit",
"installConfirmTrustBody": "Das Modul läuft in einer Sandbox: Es darf nur auf die Netzwerk-Endpunkte, Dateien und Umgebungsvariablen zugreifen, die es selbst deklariert — der Hub setzt diese Liste durch. Die vollständige Berechtigungsliste sehen Sie nach der Installation in den Modul-Details.",
"storeSectionMaintainers": "Maintainer",
"storeSectionDataSource": "Datenquelle",
"storeDataSourceLicense": "Bedingungen",
"storeDataSourceAttribution": "Namensnennung erforderlich",
"storeDataSourceNote": "Diese Bedingungen gelten für das Material, das dieses Modul abruft, nicht für das Modul selbst. Es lädt in Ihrem Auftrag und liefert keine Kopie der Daten mit.",
"storeMaintainersNone": "nicht angegeben",
"installConfirmMaintainers": "Maintainer",
"storePolicyUnverifiedNotice": "Die Signaturpflicht ist in der Hub-Richtlinie ausgeschaltet — Installationen werden nicht kryptografisch geprüft. Der Installations-Dialog zeigt den Status je Modul; für geprüfte Installationen security.require_signatures aktivieren.",

View file

@ -1711,6 +1711,10 @@
"installConfirmTrustTitle": "Trust & security",
"installConfirmTrustBody": "The module runs in a sandbox: it may only touch the network endpoints, files, and environment variables it declares itself — the hub enforces that list. The full permission list is visible in the module details after installation.",
"storeSectionMaintainers": "Maintainers",
"storeSectionDataSource": "Data source",
"storeDataSourceLicense": "Terms",
"storeDataSourceAttribution": "Attribution required",
"storeDataSourceNote": "These terms cover the material this module fetches, not the module itself. It downloads on your behalf and ships no copy of the data.",
"storeMaintainersNone": "not specified",
"installConfirmMaintainers": "Maintainers",
"storePolicyUnverifiedNotice": "Signature enforcement is switched off in the hub policy — installs are not cryptographically verified. The install dialog shows the per-module status; enable security.require_signatures for verified installs.",

View file

@ -5174,6 +5174,30 @@ abstract class AppLocalizations {
/// **'Maintainers'**
String get storeSectionMaintainers;
/// No description provided for @storeSectionDataSource.
///
/// In en, this message translates to:
/// **'Data source'**
String get storeSectionDataSource;
/// No description provided for @storeDataSourceLicense.
///
/// In en, this message translates to:
/// **'Terms'**
String get storeDataSourceLicense;
/// No description provided for @storeDataSourceAttribution.
///
/// In en, this message translates to:
/// **'Attribution required'**
String get storeDataSourceAttribution;
/// No description provided for @storeDataSourceNote.
///
/// In en, this message translates to:
/// **'These terms cover the material this module fetches, not the module itself. It downloads on your behalf and ships no copy of the data.'**
String get storeDataSourceNote;
/// No description provided for @storeMaintainersNone.
///
/// In en, this message translates to:

View file

@ -3056,6 +3056,19 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get storeSectionMaintainers => 'Maintainer';
@override
String get storeSectionDataSource => 'Datenquelle';
@override
String get storeDataSourceLicense => 'Bedingungen';
@override
String get storeDataSourceAttribution => 'Namensnennung erforderlich';
@override
String get storeDataSourceNote =>
'Diese Bedingungen gelten für das Material, das dieses Modul abruft, nicht für das Modul selbst. Es lädt in Ihrem Auftrag und liefert keine Kopie der Daten mit.';
@override
String get storeMaintainersNone => 'nicht angegeben';

View file

@ -3052,6 +3052,19 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get storeSectionMaintainers => 'Maintainers';
@override
String get storeSectionDataSource => 'Data source';
@override
String get storeDataSourceLicense => 'Terms';
@override
String get storeDataSourceAttribution => 'Attribution required';
@override
String get storeDataSourceNote =>
'These terms cover the material this module fetches, not the module itself. It downloads on your behalf and ships no copy of the data.';
@override
String get storeMaintainersNone => 'not specified';