Three connected fixes that close the loop the analyzer started:
- **Strip lives at page level, not text-tab**. Moved
_DiagnosticStrip out of _textTab and into _tabbedBody
below the TabBarView, so the same error list + quick-fix
buttons are visible on Graph + Text + Run. The Graph-tab
operator now sees both the pulsing node AND the message
explaining what's broken, without flipping tabs. One strip,
one source of truth.
- **Run button disabled when there are analyzer errors**.
FlowEditorController.analyzerErrorCount counts `IssueType.error`
issues; the action strip's Run button + the RunTab's Start
button both check it. When > 0:
· button greys out + icon flips to Icons.block
· tooltip names the count ('2 errors prevent the run')
· the Run tab grows an inline red explanation next to
the disabled Start so the operator isn't left guessing
Warnings (orange) do NOT block — they're nudges. Operators
who want to run a half-broken flow during dev can still
silence the analyzer via the strip.
- **Run failures are copyable everywhere**. New
_CopyableErrorBox replaces both the per-run failure detail
and the per-step failure suffix in the RunTab. Selectable
monospace + explicit Copy button with 'Copied' feedback.
Scrollbar-capped at 220 px so the box doesn't push outputs
off-screen. Mirrors the operator-visible contract:
'every error is copyable, always.'
Closes the operator-reported regression where a failed run
showed 'Lauf fehlgeschlagen' as plain Text, leaving the
operator unable to paste it into a bug report.
Bumped to 0.19.0.
Signed-off-by: flemming-it <sf@flemming.it>