feat(approvals,runs): explain approvals in place + one-click hub update (0.81.0)
Approvals: the pending card now shows its full origin — flow, step, run id (previously dropped at the Dart mapping layer), project, and requested-at — under an ORIGIN heading, led by a one-line intro strip that says what the inbox is and what Approve/Reject do. Approve/Reject buttons carry tooltips; the history dialog gains project + run id. Fixes the approvals doc drift (title/details/reviewer -> prompt/show/timeout_seconds). Guard: approvals_origin_test renders the card via the hermetic fake hub and pins every origin fact. Runs: the "hub too old" state now leads with an in-place update button (same `chain update apply` path as the Diagnose page), the Diagnose deeplink demoted to secondary, with a CLI-absent fallback. Guard: two new RunsLoadErrorView widget tests. Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
parent
14f824b8ef
commit
28f6fe1a9a
16 changed files with 613 additions and 115 deletions
|
|
@ -1101,6 +1101,13 @@
|
|||
"approvalsNoDataConfirmAction": "Trotzdem freigeben",
|
||||
"approvalsRequestFallback": "Freigabe für diesen Schritt erforderlich",
|
||||
"approvalsFlowStepMeta": "Flow: {flow} · Schritt: {step}",
|
||||
"approvalsIntroHelp": "Hier warten pausierte Flows auf Ihre Entscheidung. Jede Karte zeigt, welcher Flow an welchem Schritt hält und welche Daten er Ihnen vorlegt — Freigeben setzt den Flow fort, Ablehnen stoppt ihn mit Ihrer Begründung.",
|
||||
"approvalsOriginLabel": "HERKUNFT",
|
||||
"approvalsOriginProject": "Projekt",
|
||||
"approvalsOriginRequested": "Angefordert",
|
||||
"approvalsOriginRun": "Lauf",
|
||||
"approvalsApproveTooltip": "Setzt den Flow an diesem Schritt fort",
|
||||
"approvalsRejectTooltip": "Stoppt den Flow — mit Ihrer Begründung",
|
||||
"approvalsApproveButton": "Freigeben",
|
||||
"approvalsRejectButton": "Ablehnen",
|
||||
"approvalsRejectDialogTitle": "Freigabe ablehnen",
|
||||
|
|
@ -1822,6 +1829,8 @@
|
|||
"runsHubTooOldTitle": "Diese Ansicht braucht eine neuere Hub-Version",
|
||||
"runsHubTooOldHint": "Der Hub ist verbunden, aber seine Version kennt die Laufübersicht noch nicht. Aktualisieren Sie den Hub, dann erscheinen die Läufe hier.",
|
||||
"runsHubTooOldButton": "Diagnose öffnen",
|
||||
"runsHubUpdateButton": "Hub jetzt aktualisieren",
|
||||
"runsHubUpdateStarted": "Hub wird aktualisiert…",
|
||||
"runsLoadFailedTitle": "Läufe konnten nicht geladen werden",
|
||||
"runsCancelButton": "Abbrechen",
|
||||
"runsCancelSignalled": "Abbruch für {flow} ausgelöst.",
|
||||
|
|
|
|||
|
|
@ -1119,6 +1119,13 @@
|
|||
"approvalsNoDataConfirmAction": "Approve anyway",
|
||||
"approvalsRequestFallback": "Approval required for this step",
|
||||
"approvalsFlowStepMeta": "Flow: {flow} · Step: {step}",
|
||||
"approvalsIntroHelp": "Paused flows waiting for your decision. Each card shows which flow is holding at which step and what data it puts in front of you — Approve resumes the flow, Reject stops it with your reason.",
|
||||
"approvalsOriginLabel": "ORIGIN",
|
||||
"approvalsOriginProject": "Project",
|
||||
"approvalsOriginRequested": "Requested",
|
||||
"approvalsOriginRun": "Run",
|
||||
"approvalsApproveTooltip": "Resumes the flow at this step",
|
||||
"approvalsRejectTooltip": "Stops the flow — with your reason",
|
||||
"@approvalsFlowStepMeta": {
|
||||
"placeholders": {
|
||||
"flow": { "type": "String" },
|
||||
|
|
@ -1861,6 +1868,8 @@
|
|||
"runsHubTooOldTitle": "This view needs a newer hub version",
|
||||
"runsHubTooOldHint": "The hub is connected, but its version does not know the runs monitor yet. Update the hub and the runs will appear here.",
|
||||
"runsHubTooOldButton": "Open Doctor",
|
||||
"runsHubUpdateButton": "Update hub now",
|
||||
"runsHubUpdateStarted": "Updating hub…",
|
||||
"runsLoadFailedTitle": "Runs could not be loaded",
|
||||
"runsCancelButton": "Cancel",
|
||||
"runsCancelSignalled": "Cancel signalled for {flow}.",
|
||||
|
|
|
|||
|
|
@ -3554,6 +3554,48 @@ abstract class AppLocalizations {
|
|||
/// **'Flow: {flow} · Step: {step}'**
|
||||
String approvalsFlowStepMeta(String flow, String step);
|
||||
|
||||
/// No description provided for @approvalsIntroHelp.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Paused flows waiting for your decision. Each card shows which flow is holding at which step and what data it puts in front of you — Approve resumes the flow, Reject stops it with your reason.'**
|
||||
String get approvalsIntroHelp;
|
||||
|
||||
/// No description provided for @approvalsOriginLabel.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'ORIGIN'**
|
||||
String get approvalsOriginLabel;
|
||||
|
||||
/// No description provided for @approvalsOriginProject.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Project'**
|
||||
String get approvalsOriginProject;
|
||||
|
||||
/// No description provided for @approvalsOriginRequested.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Requested'**
|
||||
String get approvalsOriginRequested;
|
||||
|
||||
/// No description provided for @approvalsOriginRun.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Run'**
|
||||
String get approvalsOriginRun;
|
||||
|
||||
/// No description provided for @approvalsApproveTooltip.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Resumes the flow at this step'**
|
||||
String get approvalsApproveTooltip;
|
||||
|
||||
/// No description provided for @approvalsRejectTooltip.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Stops the flow — with your reason'**
|
||||
String get approvalsRejectTooltip;
|
||||
|
||||
/// No description provided for @approvalsApproveButton.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
|
@ -5683,6 +5725,18 @@ abstract class AppLocalizations {
|
|||
/// **'Open Doctor'**
|
||||
String get runsHubTooOldButton;
|
||||
|
||||
/// No description provided for @runsHubUpdateButton.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Update hub now'**
|
||||
String get runsHubUpdateButton;
|
||||
|
||||
/// No description provided for @runsHubUpdateStarted.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Updating hub…'**
|
||||
String get runsHubUpdateStarted;
|
||||
|
||||
/// No description provided for @runsLoadFailedTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
|
|
|||
|
|
@ -2058,6 +2058,28 @@ class AppLocalizationsDe extends AppLocalizations {
|
|||
return 'Flow: $flow · Schritt: $step';
|
||||
}
|
||||
|
||||
@override
|
||||
String get approvalsIntroHelp =>
|
||||
'Hier warten pausierte Flows auf Ihre Entscheidung. Jede Karte zeigt, welcher Flow an welchem Schritt hält und welche Daten er Ihnen vorlegt — Freigeben setzt den Flow fort, Ablehnen stoppt ihn mit Ihrer Begründung.';
|
||||
|
||||
@override
|
||||
String get approvalsOriginLabel => 'HERKUNFT';
|
||||
|
||||
@override
|
||||
String get approvalsOriginProject => 'Projekt';
|
||||
|
||||
@override
|
||||
String get approvalsOriginRequested => 'Angefordert';
|
||||
|
||||
@override
|
||||
String get approvalsOriginRun => 'Lauf';
|
||||
|
||||
@override
|
||||
String get approvalsApproveTooltip => 'Setzt den Flow an diesem Schritt fort';
|
||||
|
||||
@override
|
||||
String get approvalsRejectTooltip => 'Stoppt den Flow — mit Ihrer Begründung';
|
||||
|
||||
@override
|
||||
String get approvalsApproveButton => 'Freigeben';
|
||||
|
||||
|
|
@ -3366,6 +3388,12 @@ class AppLocalizationsDe extends AppLocalizations {
|
|||
@override
|
||||
String get runsHubTooOldButton => 'Diagnose öffnen';
|
||||
|
||||
@override
|
||||
String get runsHubUpdateButton => 'Hub jetzt aktualisieren';
|
||||
|
||||
@override
|
||||
String get runsHubUpdateStarted => 'Hub wird aktualisiert…';
|
||||
|
||||
@override
|
||||
String get runsLoadFailedTitle => 'Läufe konnten nicht geladen werden';
|
||||
|
||||
|
|
|
|||
|
|
@ -2062,6 +2062,28 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||
return 'Flow: $flow · Step: $step';
|
||||
}
|
||||
|
||||
@override
|
||||
String get approvalsIntroHelp =>
|
||||
'Paused flows waiting for your decision. Each card shows which flow is holding at which step and what data it puts in front of you — Approve resumes the flow, Reject stops it with your reason.';
|
||||
|
||||
@override
|
||||
String get approvalsOriginLabel => 'ORIGIN';
|
||||
|
||||
@override
|
||||
String get approvalsOriginProject => 'Project';
|
||||
|
||||
@override
|
||||
String get approvalsOriginRequested => 'Requested';
|
||||
|
||||
@override
|
||||
String get approvalsOriginRun => 'Run';
|
||||
|
||||
@override
|
||||
String get approvalsApproveTooltip => 'Resumes the flow at this step';
|
||||
|
||||
@override
|
||||
String get approvalsRejectTooltip => 'Stops the flow — with your reason';
|
||||
|
||||
@override
|
||||
String get approvalsApproveButton => 'Approve';
|
||||
|
||||
|
|
@ -3357,6 +3379,12 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||
@override
|
||||
String get runsHubTooOldButton => 'Open Doctor';
|
||||
|
||||
@override
|
||||
String get runsHubUpdateButton => 'Update hub now';
|
||||
|
||||
@override
|
||||
String get runsHubUpdateStarted => 'Updating hub…';
|
||||
|
||||
@override
|
||||
String get runsLoadFailedTitle => 'Runs could not be loaded';
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue