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

228 lines
8.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 '<name>'" 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 <project>* 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.