F∆I Studio — desktop GUI for the F∆I hub
Find a file
flemming-it 1549334767 feat(studio): real install progress in the store dialog and the wizard
Both surfaces showed an indeterminate spinner for the whole install,
because the hub only offered a unary call. They now follow
HubAdmin/InstallModuleStream:

- The store's install dialog shows the phase in plain language, the
  overall percentage, megabytes while the size is known, and a seconds
  counter. The counter is the second, independent signal: it keeps
  running even if the hub goes quiet, which is what tells 'slow' apart
  from 'stuck'.
- The setup wizard shows the same bar per module instead of a spinner
  inside the button.
- New strings in both locales for the phases, the byte line and the
  elapsed counter.

progress_bar_visual_test writes the four waiting states to
build/progress/ in either theme, so the result can be judged without
launching the desktop app. Writing it turned up a real trap worth
recording: awaiting toImage() directly in a widget test leaves the
binding waiting forever - the file passed in six seconds, then sat
there until the ten-minute timeout failed the whole suite.
tester.runAsync() is the fix. Full suite: 186 passed.

Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
2026-09-08 14:00:24 +02:00
.forgejo/workflows ci(security): add self-test harness (mirror of fai/platform) 2026-05-10 21:41:23 +02:00
.githooks docs: old product name F∆I Platform -> Ch∆In + contact chain@flemming.ai 2026-06-16 10:14:30 +02:00
assets feat(approvals,runs): explain approvals in place + one-click hub update (0.81.0) 2026-07-26 15:50:41 +02:00
docs feat(approvals,audit): record the reviewer as the unchecked claim it is 2026-08-03 23:50:34 +02:00
integration_test chore: 0.82.0 — switcher-rebuild changelog, anchor caption, capture harness 2026-08-28 00:28:02 +02:00
lib feat(studio): real install progress in the store dialog and the wizard 2026-09-08 14:00:24 +02:00
linux fix(ui): window title Ch∆In Studio (was F∆I); de-dup federation add-satellite 2026-06-18 12:53:35 +02:00
macos chore: Pfade auf ~/Developer umgestellt 2026-07-28 00:40:09 +02:00
test feat(studio): real install progress in the store dialog and the wizard 2026-09-08 14:00:24 +02:00
tools feat(settings): hub auth-policy panel — T4/T5 security parity in the GUI 2026-07-15 03:19:33 +02:00
windows refactor: rename app fai_studio -> chain_studio 2026-06-16 17:48:11 +02:00
.gitignore feat: F∆I Studio MVP scaffold (Tier-2 desktop GUI) 2026-05-05 14:19:39 +02:00
.metadata feat: F∆I Studio MVP scaffold (Tier-2 desktop GUI) 2026-05-05 14:19:39 +02:00
.security-allow ci(hooks): pre-commit security check (mirror of fai/platform) 2026-05-09 13:32:26 +02:00
analysis_options.yaml feat: F∆I Studio MVP scaffold (Tier-2 desktop GUI) 2026-05-05 14:19:39 +02:00
CHANGELOG.md chore: 0.82.0 — switcher-rebuild changelog, anchor caption, capture harness 2026-08-28 00:28:02 +02:00
CLAUDE.md docs: add CLAUDE.md with UI verification gate (screenshot light+dark, click-flow) 2026-07-13 14:10:14 +02:00
HANDOVER-2026-08-27.md docs: handover — switcher package delivered 2026-08-28 00:29:27 +02:00
l10n.yaml feat(studio): app-wide i18n via flutter_localizations (v0.24.0) 2026-05-08 01:19:32 +02:00
pubspec.lock feat(flows): sealed-aware flow list — hub sample flag, own dir, sample import 2026-08-28 00:11:55 +02:00
pubspec.yaml chore: 0.82.0 — switcher-rebuild changelog, anchor caption, capture harness 2026-08-28 00:28:02 +02:00
README.md docs: replace stale MVP-scaffold README with the current v0.70 reality 2026-07-07 13:44:40 +02:00

Ch∆In Studio

Desktop GUI client for the Ch∆In Platform hub. Tier-2 generic platform client per docs/architecture/client.md in the platform repo. Connects to a local or remote chain serve over gRPC / gRPC-Web.

Status: live product (v0.70+). Every page talks to the hub through chain_client_sdk; there is no mock data. End users launch Studio via chain studio, which downloads and verifies a prebuilt bundle from the release mirror (sha256 + signature) or rebuilds from source when a dev workspace is configured.

Pages

  1. Welcome — onboarding checklist, guided setup wizard, bundled documentation reader.
  2. Store — browse/search/install modules across multiple stores (pinned publisher keys, private sources, AI AskBar); installed modules live here as a filter.
  3. Flows — graph + text flow editor with a live Run tab (streamed step events, inline approvals). Editor ships as the chain_studio_flow_editor package.
  4. Audit — live event stream (StreamEvents) with filters, hash-chain verification, gated log reset.
  5. Approvals — pending system.approval@^0 reviews with approve / reject and payload disclosure.
  6. Doctor — diagnostics, daemon lifecycle, binary recovery.
  7. Föderation — satellite list, bootstrap-token enrolment, revocation.

Plus: settings dialog (System-AI, integrations/MCP/n8n, security, maintenance), Cmd+K palette, release-channel switcher.

Stack

  • Flutter 3.40+ (Desktop: macOS, Linux, Windows)
  • gRPC client via chain_client_sdk (sibling repo; pinned by relative path during development)
  • No external runtime dependencies; bundles its own Dart VM

Run locally

flutter run -d macos      # or -d linux / -d windows
flutter test

chain studio prefers a configured dev workspace and will flutter run from source when one resolves — see crates/chain_runtime_mgmt in the platform repo.

Repo placement

Published as fai/chain-studio on Forgejo (git.flemming.ai). The local directory follows the established fai_chain_* layout convention.

Why "Studio" and not "Stage"

"Stage" collided too easily with "staging environment" in developer English. "Studio" is the established industry pattern for creator-tools (Visual Studio, Android Studio, RStudio) and matches the GUI's audience of module developers, operators, and power users.