The Example chip used to come from a client-side content-marker scan that had drifted from the hub's renamed sample header — no current sample matched it. The host now passes the hub-reported sample set (FlowSummary.sample) and the editor renders truth only: no host info, no chips. Samples collapse under one 'Examples (N)' group below the operator's own flows (expanded only when nothing else exists), and an optional onImportSamples action on the empty list is the deliberate way to pull the bundled examples into a sealed area's empty hub. Guard: flow_list_samples_test pins chips-from-host-only, the grouping, and the import round trip. Signed-off-by: flemming-it <sf@flemming.it>
9.7 KiB
Changelog
0.26.0
Sample flows follow the hub's wire flag (sealed-areas rework):
FlowEditorPage.sampleFlowNames— the host passes the set of flow names the hub reports as bundled samples (FlowSummary.sample). This is now the ONLY source of the "Example" chip; the editor's own content-marker scan is gone (it had silently drifted from the hub's renamed sample header and missed every current sample). Null = no host info = no chips.- Examples group. Sample flows collapse under one "Examples (N)" row below the operator's own flows, expanded on demand — or by default when there is nothing else to show.
FlowEditorPage.onImportSamples— optional empty-list action ("Import example flows"); sealed areas start without samples, so hosts wire this as the deliberate pull. The list refreshes itself after the import.FaiEmptyStategained an optionalactionslot.- The editor reloads its file list when the host changes
flowsDiror delivers the sample set after an async fetch.
0.25.0
Honest install badge — the flow list and analyzer only offer "Install" for capabilities a configured store can actually resolve:
- Store-resolvability split in the flow list. Missing
capabilities are classified BEFORE any click: store-resolvable
ones keep the amber chip + Install link (which now installs only
those), the rest render a quiet "not in store" chip whose tooltip
explains the three recovery paths (local install via
chain install --link, adding the providing store, configuring the MCP/n8n integration). Previously the Install action covered every missing capability and could end in the hub's "no store entry for ''" error. - New host contract:
_FileListconsumes the host'sstoreCapabilities(already exposed onFlowEditorPage) for the split; hosts should pass only capabilities the store can install (installable status, native kind). - Analyzer not-in-store message now names all three recovery paths instead of only the local-install hint (EN + DE).
Project separation in the flow list:
- Workspace filter. The file list filters by the host's
activeProject; flows without aproject:key count asgeneral(display semantics — the file stays the truth and is never rewritten). A project with no flows gets its own honest empty state naming the project and the way out. - New flows are stamped with the active project's
project:key (generaland "all projects" stay unstamped — no key already means general). toolbarTrailingslot onFlowEditorPage: the host can place its workspace switcher in the editor's single toolbar.flowsDirinjection onFlowEditorPage: tests (and other hosts) point the editor at any directory instead of the hard-wired~/.chain/data/flows— the new widget tests run against a temp dir, never the operator's flows.
Disturbance hardening:
- Unknown ≠ absent.
storeCapabilitiesis nullable now (null = store state unknown): missing capabilities then render the plain missing chip with an honest tooltip — no install offer, no "not in store" claim — and the analyzer message says the store cannot be checked right now (EN + DE). Previously an unreachable store made every missing capability claim "not in store".
0.24.1
- No ALL-CAPS "FLOWS" panel header: the page toolbar already names the page — the duplicate label read as a broken title hierarchy. The refresh action moved next to the list filter.
- Doc comments name the current CLI (
chain install).
0.24.0
Usertest-panel fixes (flow list + language):
- Builtin-capability truth from the hub. Removed the hardcoded
client-side builtin set (
{'debug.echo'}): missing-module detection now trusts the host-supplied capability list alone, which already includes the hub's real builtins. Fixes the bundledhelloflow showing a play button on hubs that don't havedebug.echoinstalled. - Missing-modules badge redesigned. Status ("N Module fehlen", quiet neutral chip with an amber dot) and the install action (own link, never truncated) are separate elements; the former combined orange chip read as an error wall and ellipsized the action word.
- Flow-list filter. Case-insensitive substring filter above the list, with an honest "no flow matches" empty state.
- Formal address (Sie) in all German strings plus missing commas/quotes in the empty-state sentences.
- Analyzer hint now names the current CLI (
chain install --link, wasfai install --link).
0.23.0
- Run tab file inputs accept a host-injected native file picker
(
FlowEditorPage.onPickFile, newPickedFileData/PickFileCallbackcontract). The manual path-entry dialog remains only as the no-host fallback — typing an absolute path by hand is a last resort, not an input method.
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.22.0 — 2026-07-12
Added
- Project chip (multi-project stage ②). When the open flow file
declares its own top-level
project:, the editor shows it as a chip in the tab action strip. If the file's project differs from the host's active workspace, the chip becomes an amber "file wins" pill with a one-click Switch to action — the file always wins for the run; switching only aligns the workspace view. New optionalFlowEditorPage.activeProject+onSwitchToFileProject; the parse + normalize logic (mirrors the hub'snormalize_project_slug) lives inflow_project.dartand is unit-tested.
0.21.2 — 2026-07-11
Added
- Per-row start button. Runnable flows (no missing modules) get a play button in the flow list that opens them directly on the Run tab — one click from the list to entering inputs and starting (usertest quick win).
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
-
Diagnostic-strip "Beheben" button opens a focused modal enumerating every issue with its quick-fix actions plus an "apply every quick fix" master button. Replaces the cramped expand-strip workflow for operators who want a deliberate dialog instead of scrolling in a 200-px footer.
-
Inline Approve / Reject in the Run tab. When the hub pauses a flow on
system.approval@^0, the Run tab now renders a complete approve / reject form directly under the awaiting step. The operator no longer needs to switch to the Approvals page mid-run. -
FlowRunDriverextended with three new methods (default implementations throw with a clear message so legacy hosts keep compiling):pendingApprovalIdForStep,approveApproval,rejectApproval.
0.20.1 — 2026-06-09
Changed
- Flow list rows in the sidebar get a leading 28×28 icon
tile (
account_tree_outlined), active-row accent + weight, and compact byte formatting (B / KB / MB). Long names no longer overflow into a multi-line ellipsis; size strings read as4.3 KBinstead of4321 B.
0.20.0 — 2026-06-09
Added
- Localised analyzer + strip + run messages. Every analyzer
message and every quick-fix label flows through the new
AnalyzerStringsadapter, populated from the editor's locale. Strip + hover card + run-block tooltip + inline message- step row + CopyableErrorBox tooltips all moved to the string table.
Fixed
- Real monospace font everywhere. The editor previously
used
fontFamily: 'JetBrains Mono'as a bare string with no fallback. The package never bundled the font; only Studio pre-loaded it viagoogle_fonts. Hosts without Studio's setup saw the YAML editor render in the system proportional default. New_monoTextStyle()helper pinsfontFamilyFallbackto a cross-platform monospace chain.
0.19.0 — 2026-06-08
Added
- Persistent diagnostic strip below the TabBarView. Same issue list visible on Graph + Text + Run tabs.
- Run button blocked when the analyzer reports errors.
Both the action-strip Run and the RunTab Start button gate
on
analyzerErrorCount. - Run failures copyable via a new
_CopyableErrorBox.
0.18.0 — 2026-06-08
Added
- Graph nodes pulse on error. Steps + pseudo-nodes (inputs / outputs) carrying analyzer issues render a breathing halo in the matching severity colour.
- Store-aware install / add-source. Analyzer takes a
storeCapabilitiesclosure; unknown-capability fixes switch between "Install" (in store) and "Add source for…" (not in store). - Did-you-mean suggestion within Levenshtein distance 2.
0.17.0 — 2026-06-08
Added
- Copyable diagnostics + hover tooltip + quick fixes. Strip rows use SelectableText with per-row Copy. Wavy underlines publish hover-tooltip requests via a ValueNotifier; an OverlayEntry card renders the message + fix buttons near the cursor.
InstallCapabilityFixdelegates to a host callback (onInstallCapability).
0.16.0 — 2026-06-08
Fixed
- Editor gutter glitches. The
flutter_code_editorgutter hard-positioned anIcons.cancelpin in a 16-px slot with a popup that painted over the code area. Hidden viashowErrors: false; replaced with a bottom diagnostic strip the editor owns.
0.15.x — 0.14.x
Earlier development. See git log.