chain-studio-flow-editor/CHANGELOG.md
2026-07-22 14:13:17 +02:00

8.7 KiB
Raw Permalink Blame History

Changelog

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: _FileList consumes the host's storeCapabilities (already exposed on FlowEditorPage) 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 a project: key count as general (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 (general and "all projects" stay unstamped — no key already means general).
  • toolbarTrailing slot on FlowEditorPage: the host can place its workspace switcher in the editor's single toolbar.
  • flowsDir injection on FlowEditorPage: 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. storeCapabilities is 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 bundled hello flow showing a play button on hubs that don't have debug.echo installed.
  • 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, was fai install --link).

0.23.0

  • Run tab file inputs accept a host-injected native file picker (FlowEditorPage.onPickFile, new PickedFileData / PickFileCallback contract). 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 optional FlowEditorPage.activeProject + onSwitchToFileProject; the parse + normalize logic (mirrors the hub's normalize_project_slug) lives in flow_project.dart and 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.

  • FlowRunDriver extended 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 as 4.3 KB instead of 4321 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 AnalyzerStrings adapter, 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 via google_fonts. Hosts without Studio's setup saw the YAML editor render in the system proportional default. New _monoTextStyle() helper pins fontFamilyFallback to 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 storeCapabilities closure; 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.
  • InstallCapabilityFix delegates to a host callback (onInstallCapability).

0.16.0 — 2026-06-08

Fixed

  • Editor gutter glitches. The flutter_code_editor gutter hard-positioned an Icons.cancel pin in a 16-px slot with a popup that painted over the code area. Hidden via showErrors: false; replaced with a bottom diagnostic strip the editor owns.

0.15.x — 0.14.x

Earlier development. See git log.