feat(studio): Settings dialog gets macOS-style sidebar categories
Some checks failed
Security / Security check (push) Failing after 2s

The Settings dialog was a single 800-line vertical scroll — Hub
endpoint, channels, System AI, MCP, n8n, registry credentials,
hub auth token, default scope, theme plugin, maintenance all
stacked. Stefan: 'inzwischen zu unübersichtlich als langes
feld, untergruppierungen wären toll, wie z.B. in den MacOS
Einstellungen'.

Splits the panel into six focused categories driven by a
left sidebar:

  - **General**: Hub endpoint (host/port/TLS), channels,
    default scope
  - **Appearance**: theme plugin picker (applies instantly)
  - **System AI**: operator-managed LLM endpoint for Studio
    helpers
  - **Integrations**: MCP servers + n8n endpoints
  - **Security**: registry credentials + hub auth token
  - **Maintenance**: reset / destructive ops

Sidebar uses macOS-style icon + label rows with a highlighted
selection pill. Content area is per-category, scrollable
within its own panel. The dialog widens from 520→820 px and
gains a fixed height (620 px) so the layout doesn't jump as
the operator switches categories.

Each panel opens with a title + one-sentence description so
the operator knows what they're looking at before scanning the
controls — same pattern Apple uses in System Settings.

Also adds the missing 'meta' dependency that FaiLog's
@visibleForTesting needed. Studio bumped to 0.63.0.

Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
flemming-it 2026-06-04 10:37:19 +02:00
parent d9dca60cfb
commit d0e15ca385
4 changed files with 416 additions and 204 deletions

View file

@ -126,7 +126,7 @@ packages:
path: "../fai_studio_flow_editor"
relative: true
source: path
version: "0.15.1"
version: "0.16.0"
fake_async:
dependency: transitive
description:
@ -412,7 +412,7 @@ packages:
source: hosted
version: "0.13.0"
meta:
dependency: transitive
dependency: "direct main"
description:
name: meta
sha256: "1741988757a65eb6b36abe716829688cf01910bbf91c34354ff7ec1c3de2b349"