feat(ui): Flows page (5th destination) + keyboard shortcuts
Two operator-DX additions:
1. **Flows** is the new third destination in the sidebar.
Lists saved flows from the hub via the new HubAdmin
ListFlows RPC. Each row has a Run button that opens an
input dialog (key=value pairs, one per line, all values
sent as text payloads — the binary-input case stays in
`fai run` CLI). Flow runs in a non-dismissable progress
dialog; output is shown per-key with monospace
selectable text. Errors render with the exception detail
for diagnosis.
2. **Keyboard shortcuts** at the shell level:
- Cmd+1 / Cmd+2 / Cmd+3 / Cmd+4 / Cmd+5 jump to the
matching destination (Doctor / Modules / Flows / Audit
/ Approvals).
- Cmd+, opens the Settings dialog (macOS convention).
Implemented via Flutter's Shortcuts/Actions/Intent triple
so the bindings are discoverable in IDE devtools and
composable with platform-specific overrides later.
Bumps fai_studio 0.7.3 -> 0.8.0.
Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
parent
2f32023322
commit
753db4fc60
5 changed files with 508 additions and 24 deletions
|
|
@ -6,7 +6,7 @@ import 'package:fai_studio/data/hub.dart';
|
|||
import 'package:fai_studio/main.dart';
|
||||
|
||||
void main() {
|
||||
testWidgets('Studio shell shows the four destinations',
|
||||
testWidgets('Studio shell shows the five destinations',
|
||||
(tester) async {
|
||||
await tester.pumpWidget(
|
||||
const StudioApp(initialThemeMode: ThemeModeValue.system),
|
||||
|
|
@ -15,7 +15,8 @@ void main() {
|
|||
expect(find.text('F∆I Studio'), findsOneWidget);
|
||||
expect(find.text('Doctor'), findsWidgets);
|
||||
expect(find.text('Modules'), findsWidgets);
|
||||
expect(find.text('Audit'), findsWidgets);
|
||||
expect(find.text('Approvals'), findsWidgets);
|
||||
expect(find.text('Flows'), findsOneWidget);
|
||||
expect(find.text('Audit'), findsOneWidget);
|
||||
expect(find.text('Approvals'), findsOneWidget);
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue