feat(studio): clearer store + channel switcher + approvals & welcome polish
Some checks failed
Security / Security check (push) Failing after 2s

- store: repair the filter dialog crash (a Spacer lived directly in
  AlertDialog.actions, which is an OverflowBar, not a Flex — it threw
  and rendered a broken dialog). Buttons now sit in a Row.
- store: promote the module-store manager from a bare icon to a
  labelled 'Add store' button, and fully localize the dialog (DE/EN).
- store: add a curated 'Suggested stores' shelf with one-click
  add/remove (first entry: Recl∆Im). Each suggestion is probed for
  reachability and shows 'not available yet' until its index is
  published, instead of failing only on click. Fail-open on network
  errors so a transient hiccup never hides a real store.
- sidebar: the channel pill is now a one-click channel switcher
  (menu with per-channel running state + active check; switching
  writes ~/.chain/current-channel, restarts the daemon, and Studio
  repoints to the new channel).
- approvals: lead the card with the human prompt ('what am I
  releasing?') and demote the flow/step id to a metadata line; clear
  fallback when the step left the prompt empty.
- welcome: tidy the docs grid into equal-height paired rows with a
  full-width trailing card for the odd one out.

Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
flemming-it 2026-06-18 21:29:39 +02:00
parent 62ed3951e5
commit 5220f19ff8
10 changed files with 865 additions and 148 deletions

View file

@ -81,7 +81,7 @@
"connectionStartHub": "Hub starten",
"connectionTapToStart": "antippen zum Starten",
"sidebarSettingsTooltip": "Einstellungen (⌘;)",
"sidebarChannelTooltip": "Aktiver Kanal — klicken um in Einstellungen (⌘;) zu wechseln.\nproduction = stabil · beta = Vorabversion · dev = laufend · local = Arbeitsumgebung",
"sidebarChannelTooltip": "Aktiver Kanal — klicken zum Wechseln.\nproduction = stabil · beta = Vorabversion · dev = laufend · local = Arbeitsumgebung",
"buttonCancel": "Abbrechen",
"buttonSave": "Speichern",
"buttonClose": "Schließen",
@ -319,6 +319,22 @@
}
},
"storeReloadTooltip": "Aktualisieren",
"storesManagerButton": "Store hinzufügen",
"storesManagerTitle": "Module-Stores",
"storesManagerIntro": "Der Hub führt die Module aller Stores unten zu einem Index zusammen. Füge die Index-URL eines Stores hinzu, damit seine Module hier installierbar werden.",
"storesManagerAddSection": "Store hinzufügen",
"storesManagerNameLabel": "Name",
"storesManagerUrlLabel": "Index-URL (https:// oder file://)",
"storesManagerAddAction": "Hinzufügen",
"storesManagerBundled": "{count} Module · gebündelt",
"storesManagerModuleCount": "{count} Module",
"storesManagerAddFailed": "Store konnte nicht hinzugefügt werden",
"storesManagerRemoveFailed": "Store konnte nicht entfernt werden",
"storesManagerSuggested": "Vorgeschlagene Stores",
"storesManagerAddShort": "Hinzufügen",
"storesManagerNotAvailable": "Noch nicht verfügbar",
"storesManagerNotAvailableHint": "Der Anbieter hat diesen Store-Index noch nicht veröffentlicht. Sobald er das tut, ist er installierbar.",
"storesSuggestedReclaimDesc": "Recl∆Im — Module für Rechts- und Pflichten-Reform-Mapping",
"storeTodayBadge": "HEUTE",
"storeTodayDeck": "Von der Ch∆In-Redaktion",
"storeTodayDismissTooltip": "Für diese Sitzung ausblenden",
@ -998,7 +1014,9 @@
"approvalsPillApproved": "freigegeben",
"approvalsPillRejected": "abgelehnt",
"approvalsPillExpired": "abgelaufen",
"approvalsPayloadPreview": "PAYLOAD-VORSCHAU",
"approvalsPayloadPreview": "DIESE DATEN WERDEN FREIGEGEBEN",
"approvalsRequestFallback": "Freigabe für diesen Schritt erforderlich",
"approvalsFlowStepMeta": "Flow: {flow} · Schritt: {step}",
"approvalsApproveButton": "Freigeben",
"approvalsRejectButton": "Ablehnen",
"approvalsRejectDialogTitle": "Freigabe ablehnen",