F∆I Studio — desktop GUI for the F∆I hub
Find a file
flemming-it e522267ec1
Some checks failed
Security / Security check (push) Failing after 2s
feat(studio): pencil-into-editor + back button + collapsible rail
Three operator-visible improvements per Stefan's review of
the v0.50.0 editor.

1. Pencil icon on Flows page now opens Studio's own flow
   editor (route push) preloaded with the selected flow,
   replacing the previous "open in OS default editor"
   (SystemActions.openInOs) behaviour. The editor's AppBar
   gains a back arrow when reached via route push; reaching
   the editor via the nav rail leaves it bare. Tooltip
   string updated in EN + DE.

2. New FlowEditorPage `initialFlowName` parameter. When set,
   the page loads that flow on first frame (via post-frame
   callback so the BuildContext is mounted before
   _openByName runs). When null (the nav-rail path), the
   editor opens to its empty state as before.

3. Sidebar (_Sidebar) is now collapsed-by-default: shows
   just icons in a 72px-wide rail with per-destination
   tooltips. Hovering the rail expands it to 220px (the
   old width) with brand-mark + labels + the full footer
   row (theme toggle, language toggle, clock, settings).
   Collapsed footer shows the settings icon only. Brand-
   mark (FaiDeltaMark) stays visible in both states so the
   live/idle status dot is always glanceable.

Side-effect: SystemActions import in flows.dart is no
longer needed (the pencil no longer shells out) — removed.

widget_test.dart: dropped the per-destination Text-presence
asserts since labels are now Tooltips when collapsed.
Hover-expand testing triggers RenderFlex-overflow mid-
animation in widget tests (the AnimatedContainer's width
transitions through a constraint slimmer than the Row's
intrinsic min). The booting-without-throwing assertion
remains; per-destination presence stays in the per-page
test suites.

Both arb files updated with the new strings (navFlowEditor
already existed; added flowEditorBackTooltip + retouched
flowsOpenInEditorTooltip).

Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
2026-05-30 12:04:05 +02:00
.forgejo/workflows ci(security): add self-test harness (mirror of fai/platform) 2026-05-10 21:41:23 +02:00
.githooks ci(hooks): pre-commit security check (mirror of fai/platform) 2026-05-09 13:32:26 +02:00
assets/docs feat(studio): Welcome page Phase B — embedded doc reader (v0.38.0) 2026-05-09 00:24:31 +02:00
docs chore(security): externalise confidentiality term list 2026-05-25 21:06:17 +02:00
lib feat(studio): pencil-into-editor + back button + collapsible rail 2026-05-30 12:04:05 +02:00
linux feat(studio): inline flow editor — YAML highlighting + Run (v0.50.0) 2026-05-30 01:10:05 +02:00
macos feat(studio): inline flow editor — YAML highlighting + Run (v0.50.0) 2026-05-30 01:10:05 +02:00
test feat(studio): pencil-into-editor + back button + collapsible rail 2026-05-30 12:04:05 +02:00
tools chore(security): externalise confidentiality term list 2026-05-25 21:06:17 +02:00
windows feat(studio): inline flow editor — YAML highlighting + Run (v0.50.0) 2026-05-30 01:10:05 +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
l10n.yaml feat(studio): app-wide i18n via flutter_localizations (v0.24.0) 2026-05-08 01:19:32 +02:00
pubspec.lock feat(studio): inline flow editor — YAML highlighting + Run (v0.50.0) 2026-05-30 01:10:05 +02:00
pubspec.yaml feat(studio): inline flow editor — YAML highlighting + Run (v0.50.0) 2026-05-30 01:10:05 +02:00
README.md chore(studio): switch to fai_client_sdk (renamed from fai_dart_sdk) 2026-05-26 13:46:32 +02:00

F∆I Studio

Desktop GUI client for the F∆I Platform hub. Tier-2 generic platform client per docs/architecture/client.md. Connects to a local or remote fai serve over gRPC.

Status (2026-05-05): MVP scaffold. Three pages with mock data, no live gRPC connection yet. Validates the visual direction before the Dart SDK is wired in.

Pages (MVP scope)

  1. Modules — installed modules, capabilities, declared permissions. Click → manifest detail.
  2. Audit — live stream of hub events (when wired). Filter by event type and flow.
  3. Approvals — pending system.approval@^0 reviews with approve / reject buttons.

These three cover the platform's central properties: composition (modules), audit (events), human-in-the-loop (approvals).

Stack

  • Flutter 3.40+ (Desktop: macOS, Linux, Windows)
  • gRPC client via fai_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

Repo placement

Will be published as fai/studio on Forgejo (git.flemming.ws). The local directory fai_studio/ follows the established fai_platform/ 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. The rename was applied across all docs/ in the platform repo on 2026-05-05.