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>
Filter the file list by the host's active project — flows without
a project: key count as 'general', display-only, the file is never
rewritten. New flows are stamped with the active project's key
(general and all-projects stay unstamped). Adds a toolbarTrailing
slot so the host can mount its workspace switcher in the editor's
single toolbar, and a flowsDir injection point so widget tests run
against a temp dir instead of the operator's ~/.chain flows.
Covered by pure filter-semantics tests plus hermetic widget tests
for filtering, the project-empty state, and new-flow stamping.
Signed-off-by: flemming-it <sf@flemming.it>
Split each flow's missing capabilities into store-resolvable ones
(amber chip + Install link, which now installs only those) and a
quiet 'not in store' chip whose tooltip explains the three recovery
paths in place: local install via chain install --link, adding the
providing store, or configuring the MCP/n8n integration. The
analyzer's not-in-store message names the same three paths (EN+DE).
Previously the list's Install action covered every missing
capability and could end in the hub's 'no store entry' error.
Also replace a private-looking capability example name in a doc
comment and test with a neutral placeholder. (0.25.0)
Signed-off-by: flemming-it <sf@flemming.it>
- drop the hardcoded builtin set {'debug.echo'}; missing-module
detection trusts the host capability list (includes real hub
builtins) — fixes hello's false play button
- split the orange combined chip into a neutral status chip and a
never-truncated install link
- add a substring filter over the flow list with an honest
no-match state
- German strings use the formal address throughout; grammar fixes
- analyzer hint says 'chain install --link' (was 'fai …')
- 0.24.0
Signed-off-by: flemming-it <sf@flemming.it>
The Run tab asked the operator to type an absolute path into a text
field — with no file dialog anywhere. FlowEditorPage now accepts an
onPickFile callback (PickedFileData: name + bytes) that hosts wire
to their native picker; the path-entry dialog remains only as the
no-host fallback. 0.23.0.
Signed-off-by: flemming-it <sf@flemming.it>
When the open flow declares its own top-level project:, show it as a
chip in the tab action strip. On mismatch with the host's active
workspace, an amber file-wins pill offers a one-click Switch to
<project> — the file always wins for the run; switching only aligns
the workspace view.
New optional FlowEditorPage.activeProject + onSwitchToFileProject.
Parse + normalize (mirrors the hub's normalize_project_slug) lives in
flow_project.dart, unit-tested. flutter analyze clean, 57 tests green.
Signed-off-by: flemming-it <sf@flemming.it>
Flows without missing modules get a play button in the list that
opens them directly on the Run tab - one click from the list to
entering inputs and starting a run. Rows with missing modules keep
the install badge as their single actionable path.
Signed-off-by: flemming-it <sf@flemming.it>
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 <sf@flemming.it>
The flow editor is a Ch∆In Studio sub-component (chain product), not a
F∆I-vendor package. Rename the package, entry library file, and all
package: imports. flutter analyze: clean.
Signed-off-by: flemming-it <sf@flemming.it>