chain-studio/lib/widgets
flemming-it 91706cea2b
Some checks failed
Security / Security check (push) Failing after 2s
feat(studio): theme-plugin picker + translate-hook wrapper
Two pieces of the Studio plugin host:

- `data/theme_plugin.dart`: discovery, persistence, ColorScheme
  translation. Plugins listed via list_capabilities filtered
  to studio.theme.*; selection persisted in SharedPreferences;
  loadThemePluginSchemes builds a ColorScheme pair from the
  plugin's 14 ARGB tokens per brightness.
- `main.dart`: StudioApp gains themePluginNotifier +
  setThemePlugin(). MaterialApp wraps a FutureBuilder that
  re-fetches the plugin's ColorSchemes whenever the
  capability flips; falls back to FaiTheme.light/dark on
  null or load failure.
- `fai_settings_dialog.dart`: new `_ThemePluginPanel` shows a
  dropdown of installed studio.theme.* capabilities + a
  "Built-in" entry. Switching applies immediately.
- HubService.invokePluginTranslate added as the typed wrapper
  for the new gRPC RPC — ready for the FaiEnBadge swap-out
  in the next iteration.
- 4 new l10n keys (themePluginHeader / None / Hint / Empty),
  EN+DE.

flutter analyze + flutter test (widget + friendly_error): both
green. The integration test for the theme picker is the
existing fai_runtime plugin_theme + Studio-side
invokePluginTheme path that round-trips through the new
mirror-installable studio-theme-solarized bundle.

Signed-off-by: flemming-it <sf@flemming.it>
Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
2026-05-25 23:02:21 +02:00
..
fai_card.dart feat(ui): warm-minimalism redesign — design tokens + 6 primitives + animated ∆ 2026-05-05 21:49:37 +02:00
fai_data_row.dart feat(ui): warm-minimalism redesign — design tokens + 6 primitives + animated ∆ 2026-05-05 21:49:37 +02:00
fai_delta_mark.dart fix(ui): visible ∆ pulse + drop internal codename from version line 2026-05-05 22:51:19 +02:00
fai_empty_state.dart feat(ui): warm-minimalism redesign — design tokens + 6 primitives + animated ∆ 2026-05-05 21:49:37 +02:00
fai_en_badge.dart feat(studio): trust pass — friendly errors + store clarity + MCP i18n 2026-05-25 12:36:14 +02:00
fai_error_box.dart feat(studio): trust pass — friendly errors + store clarity + MCP i18n 2026-05-25 12:36:14 +02:00
fai_flow_output.dart chore(studio): flutter_markdown_plus migration + integration-test scaffold 2026-05-25 13:22:04 +02:00
fai_module_sheet.dart feat(studio): Flows + Module sheet + System-AI editor i18n (v0.28.0) 2026-05-08 02:59:08 +02:00
fai_pill.dart feat(ui): warm-minimalism redesign — design tokens + 6 primitives + animated ∆ 2026-05-05 21:49:37 +02:00
fai_search_palette.dart feat(studio): Store + Cmd+K palette i18n (v0.27.0) 2026-05-08 02:49:18 +02:00
fai_settings_dialog.dart feat(studio): theme-plugin picker + translate-hook wrapper 2026-05-25 23:02:21 +02:00
fai_status_dot.dart feat(ui): warm-minimalism redesign — design tokens + 6 primitives + animated ∆ 2026-05-05 21:49:37 +02:00
fai_system_ai_editor.dart chore(studio): RadioGroup migration + second integration test 2026-05-25 14:05:43 +02:00
widgets.dart feat(studio): trust pass — friendly errors + store clarity + MCP i18n 2026-05-25 12:36:14 +02:00