|
Some checks failed
Security / Security check (push) Failing after 2s
Field test of the setup wizard surfaced three trust breaks in one run: an unexplained macOS Documents permission prompt, a perceived crash, and an error message whose copy button could not be reached. Root causes and fixes: - chain init failures were shown as a SnackBar, which lands BEHIND the wizard's modal barrier: dimmed, clipped, copy unreachable — and the click aimed at it hit the barrier, dismissing the whole wizard with all answers (the perceived crash). Errors now open a modal dialog ABOVE the wizard via showChainErrorDialog with a copyable detail block, and the wizard is no longer barrier-dismissible. - When the resolved chain binary is older than Studio and rejects --plan-json, the wizard now explains the version skew in plain language (binary path + update path) instead of leaking a raw clap usage error. A missing binary gets its own localized story. - Step 3 announces which chain binary the preview will execute; when that binary physically lives (symlinks resolved) in a TCC-protected folder, the wizard pre-explains the macOS folder prompt. Supporting changes: FriendlyError passes through friendlyError() unchanged so call sites can ship precise localized stories through the shared presentation; SystemActions gains resolvedChainBinary() plus run/resolve test seams; ChainErrorBox hugs its content instead of filling an unbounded dialog; the wizard's answers file is written synchronously (the async dart:io variants never complete under the widget-test fake-async zone). Verified: flutter analyze clean, 53 tests green (6 new wizard error- path tests incl. clipboard round-trip), plus a live GUI walk on macOS in dark + light with a stale binary (skew dialog, copy verified via clipboard) and with the real binary (TCC pre-explanation with the resolved path, full plan preview). Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com> |
||
|---|---|---|
| .forgejo/workflows | ||
| .githooks | ||
| assets | ||
| docs | ||
| integration_test | ||
| lib | ||
| linux | ||
| macos | ||
| test | ||
| tools | ||
| windows | ||
| .gitignore | ||
| .metadata | ||
| .security-allow | ||
| analysis_options.yaml | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| l10n.yaml | ||
| pubspec.lock | ||
| pubspec.yaml | ||
| README.md | ||
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 viachain 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
- Welcome — onboarding checklist, guided setup wizard, bundled documentation reader.
- Store — browse/search/install modules across multiple stores (pinned publisher keys, private sources, AI AskBar); installed modules live here as a filter.
- Flows — graph + text flow editor with a live Run tab
(streamed step events, inline approvals). Editor ships as the
chain_studio_flow_editorpackage. - Audit — live event stream (
StreamEvents) with filters, hash-chain verification, gated log reset. - Approvals — pending
system.approval@^0reviews with approve / reject and payload disclosure. - Doctor — diagnostics, daemon lifecycle, binary recovery.
- 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.