F∆I Studio — desktop GUI for the F∆I hub
Find a file
flemming-it b7468dc7ec
Some checks failed
Security / Security check (push) Failing after 1s
feat: sealed-area connection switch + identity bar (multi-project stage 3)
The workspace switcher now lists the operator's sealed areas (read from
~/.chain/sealed/ manifests, the same source the CLI uses) below the
shared projects, each with a lock icon and a running/stopped status.
Selecting one is a real connection switch: Studio reconnects its hub
client to the area's own port with a full state reload — one window,
one truth. A stopped area is started first (chain project start) with a
visible notice; a failure surfaces as a copyable error and rolls back to
the shared hub.

While in a sealed area an identity bar under the AppBar is painted in
the area's accent colour and names it, with a one-click Leave back to
the shared hub. The area colour is marking, not theming — Studio's blue
stays the app accent. Selecting a shared project from inside an area
switches the connection back first. The sealed connection is never
persisted across restarts.

New: SealedAreaService (manifest + PID discovery), Workspace sealed
switch logic, ChainSealedIdentityBar, SystemActions.chainProjectStart.
l10n DE+EN. flutter analyze clean; 33 tests green (switcher lists sealed
with lock+status, pill shows active area, identity bar renders in the
area colour). Runtime plumbing (discovery, start, endpoint, reach)
verified headlessly against real sealed instances under a redirected
HOME; the identity-bar screenshot is deferred (display click-automation
failed after sleep on the shared desktop — an environment issue, not a
code gap; the visible components are widget-tested).

Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
2026-07-12 17:31:39 +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: detached-runs monitor page (T3 parity) 2026-07-12 14:43:37 +02:00
docs refactor: rename internal Fai* design system + fai_ helpers to chain 2026-06-16 17:53:17 +02:00
lib feat: sealed-area connection switch + identity bar (multi-project stage 3) 2026-07-12 17:31:39 +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 fix(ui): window title Ch∆In Studio (was F∆I); de-dup federation add-satellite 2026-06-18 12:53:35 +02:00
test feat: sealed-area connection switch + identity bar (multi-project stage 3) 2026-07-12 17:31:39 +02:00
tools refactor: rename internal Fai* design system + fai_ helpers to chain 2026-06-16 17:53:17 +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 feat: sealed-area connection switch + identity bar (multi-project stage 3) 2026-07-12 17:31:39 +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: editor project chip wiring (multi-project stage 2 host side) 2026-07-12 14:21:20 +02:00
pubspec.yaml refactor: rename app fai_studio -> chain_studio 2026-06-16 17:48:11 +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.