chain-studio/lib/widgets
flemming-it 69b54629d3 chore(studio): flutter_markdown_plus migration + integration-test scaffold
Two follow-ups to the May-2026 trust pass.

flutter_markdown_plus migration:

- pubspec swaps `flutter_markdown ^0.7.7` (discontinued
  upstream) for `flutter_markdown_plus ^1.0.3`, the
  actively-maintained fork. API surface
  (MarkdownStyleSheet, Markdown, MarkdownBody) is
  unchanged — the four import sites in welcome, store,
  flow_output, and theme.dart get an updated package
  string and that's it.
- All Studio analyzer + unit-test suites stay green.

Integration test scaffold:

- New `test/integration/hub_fixture.dart` boots a real
  `fai serve` subprocess on a free port against a temp
  FAI_DATA_DIR, polls until Healthy, exposes a ready
  HubClient. Idempotent teardown wipes the temp dir.
- Resolves the `fai` binary from PATH first, then from
  `../fai_platform/target/release/fai`. When neither
  exists, the fixture calls `markTestSkipped` with a
  clear message — fresh checkouts don't fail.
- One canonical test in `capabilities_test.dart` asserts
  on the bug class the May trust pass surfaced: that
  `system.approval` appears in `list_capabilities` with
  `kind=builtin` so Studio's missing-deps check never
  tries to install it. Plus a contract-shape test that
  every cap's `kind` is one of the three known wire
  values.
- README documents the cold-start gotcha (first
  `fai serve` per machine takes ~30s to build the
  curated-model DB) plus the manual warmup recipe.

Not in CI yet — wiring needs the platform build job to
publish `fai` as a CI artifact for downstream consumption.
Deferred until enough integration tests exist to justify
the CI minutes.

Signed-off-by: flemming-it <sf@flemming.it>
Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
2026-05-25 13:22:04 +02:00
..
fai_card.dart feat(ui): warm-minimalism redesign — design tokens + 6 primitives + animated ∆ 2026-05-05 21:49:37 +02:00
fai_data_row.dart feat(ui): warm-minimalism redesign — design tokens + 6 primitives + animated ∆ 2026-05-05 21:49:37 +02:00
fai_delta_mark.dart fix(ui): visible ∆ pulse + drop internal codename from version line 2026-05-05 22:51:19 +02:00
fai_empty_state.dart feat(ui): warm-minimalism redesign — design tokens + 6 primitives + animated ∆ 2026-05-05 21:49:37 +02:00
fai_en_badge.dart feat(studio): trust pass — friendly errors + store clarity + MCP i18n 2026-05-25 12:36:14 +02:00
fai_error_box.dart feat(studio): trust pass — friendly errors + store clarity + MCP i18n 2026-05-25 12:36:14 +02:00
fai_flow_output.dart chore(studio): flutter_markdown_plus migration + integration-test scaffold 2026-05-25 13:22:04 +02:00
fai_module_sheet.dart feat(studio): Flows + Module sheet + System-AI editor i18n (v0.28.0) 2026-05-08 02:59:08 +02:00
fai_pill.dart feat(ui): warm-minimalism redesign — design tokens + 6 primitives + animated ∆ 2026-05-05 21:49:37 +02:00
fai_search_palette.dart feat(studio): Store + Cmd+K palette i18n (v0.27.0) 2026-05-08 02:49:18 +02:00
fai_settings_dialog.dart feat(studio): trust pass — friendly errors + store clarity + MCP i18n 2026-05-25 12:36:14 +02:00
fai_status_dot.dart feat(ui): warm-minimalism redesign — design tokens + 6 primitives + animated ∆ 2026-05-05 21:49:37 +02:00
fai_system_ai_editor.dart feat(studio): Flows + Module sheet + System-AI editor i18n (v0.28.0) 2026-05-08 02:59:08 +02:00
widgets.dart feat(studio): trust pass — friendly errors + store clarity + MCP i18n 2026-05-25 12:36:14 +02:00