From c4d3751e851c110f7402f4e2a6f729b7f3589b7c Mon Sep 17 00:00:00 2001 From: flemming-it Date: Sat, 11 Jul 2026 02:37:01 +0200 Subject: [PATCH] fix: page-named toolbar title + ellipsized needs-modules chip (0.21.1) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With no flow open the toolbar header said 'Kein Flow geöffnet' and read as the page title (usertest finding); it now names the page ('Flows') while the empty state keeps the explanatory sentence. The 'needs N modules' chip ellipsizes in the narrow flow list instead of overflowing its row on longer German labels. Signed-off-by: flemming-it --- CHANGELOG.md | 13 +++++++++++++ lib/src/flow_editor_page.dart | 27 ++++++++++++++++++--------- lib/src/l10n.dart | 3 +++ pubspec.yaml | 2 +- 4 files changed, 35 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 432207b..6cb335d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,19 @@ All notable changes to `chain_studio_flow_editor` recorded here. Studio bumps its `pubspec.yaml` git ref to a specific release of this package on every editor change. +## 0.21.1 — 2026-07-11 + +### Fixed + +- **Toolbar names the page, not the missing state.** With no flow + open the header said "No flow open" / "Kein Flow geöffnet" — the + usertest read it as a confusing page title. It now says "Flows"; + the state sentence stays in the centered empty state. +- **"Needs N modules" chip no longer overflows the flow list.** The + label ellipsizes inside the narrow sidebar (the tooltip keeps the + full text); previously it tripped a RenderFlex overflow by a few + pixels on longer German labels. + ## 0.21.0 — 2026-06-09 ### Added diff --git a/lib/src/flow_editor_page.dart b/lib/src/flow_editor_page.dart index 6e1167f..fc29c3f 100644 --- a/lib/src/flow_editor_page.dart +++ b/lib/src/flow_editor_page.dart @@ -925,10 +925,13 @@ class _Toolbar extends StatelessWidget { ), const SizedBox(width: FaiSpace.xs), ], + // With no flow open the toolbar acts as the page header, so + // it says what the page IS ("Flows"), not what it lacks — + // the state sentence stays in the centered empty state. Text( - activeName == null ? strings.emptyTitle : '${activeName!}.yaml', + activeName == null ? strings.pageTitle : '${activeName!}.yaml', style: theme.textTheme.titleSmall?.copyWith( - fontFamily: 'monospace', + fontFamily: activeName == null ? null : 'monospace', fontWeight: FontWeight.w600, // Dirty file name renders in the primary accent // so the operator sees "this file has unsaved @@ -1486,13 +1489,19 @@ class _MissingModulesBadge extends StatelessWidget { children: [ const Icon(Icons.extension_off_outlined, size: 10, color: warn), const SizedBox(width: 4), - Text( - label, - style: theme.textTheme.labelSmall?.copyWith( - color: warn, - fontSize: 10, - fontWeight: FontWeight.w600, - letterSpacing: 0.2, + // Flexible + ellipsis: the chip sits in the narrow flow + // list, where the full label otherwise overflows by a few + // pixels (the tooltip still carries the complete text). + Flexible( + child: Text( + label, + overflow: TextOverflow.ellipsis, + style: theme.textTheme.labelSmall?.copyWith( + color: warn, + fontSize: 10, + fontWeight: FontWeight.w600, + letterSpacing: 0.2, + ), ), ), ], diff --git a/lib/src/l10n.dart b/lib/src/l10n.dart index a549432..a31dcbf 100644 --- a/lib/src/l10n.dart +++ b/lib/src/l10n.dart @@ -20,6 +20,9 @@ class FlowEditorStrings { String get listHeader => _t('FLOWS', 'FLOWS'); String get copy => _t('Copy', 'Kopieren'); String get runOutput => _t('RUN OUTPUT', 'LAUF-ERGEBNIS'); + /// Toolbar title while no flow is open — names the page, never + /// the missing state (that sentence lives in the empty state). + String get pageTitle => _t('Flows', 'Flows'); String get emptyTitle => _t('No flow open', 'Kein Flow geöffnet'); String get emptyBody => _t( 'Pick one from the left, or click New flow to start a fresh one.', diff --git a/pubspec.yaml b/pubspec.yaml index 45a5b5e..02406b9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: chain_studio_flow_editor description: Swappable inline YAML editor for F∆I Studio flows. -version: 0.21.0 +version: 0.21.1 publish_to: 'none' repository: https://git.flemming.ai/fai/studio-flow-editor