-
Notifications
You must be signed in to change notification settings - Fork 3
feat: add superdeck_genui package #48
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
d12810b
feat: add superdeck_genui package
leoafarias 43b6bf6
fix(genui): add bootstrap initialization and route host overrides
leoafarias 8dfa59d
fix(ci): align workspace sdk constraints for bootstrap
leoafarias 96d60c8
fix(genui): harden runtime safety and address PR review feedback
leoafarias d17c377
feat: add superdeck plugin system and genui integration
leoafarias ea146d0
fix: harden plugin init, lifecycle safety, and mutation error visibility
leoafarias 128d117
Merge remote-tracking branch 'origin/main' into feat/superdeck_genui
leoafarias 5fc2298
chore: set fvm channel to stable
leoafarias File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,3 @@ | ||
| { | ||
| "flutter": "3.38.9" | ||
| } | ||
| "flutter": "stable" | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,64 @@ | ||
| # superdeck_genui | ||
|
|
||
| AI-powered presentation wizard for SuperDeck using GenUI and Gemini. | ||
|
|
||
| This package provides a chat-based wizard that guides users through creating | ||
| presentations with AI assistance. It handles the full generation pipeline: | ||
| wizard conversation → outline → images → final deck. | ||
|
|
||
| ## What it provides | ||
|
|
||
| - **Chat wizard UI** — 8-step GenUI conversation with radio, checkbox, slider, and style selectors | ||
| - **AI generation pipeline** — 3-phase deck generation (outline → images → final deck) using Gemini | ||
| - **Composable routes** — `genUiRoutes()` function for integration into any GoRouter setup | ||
| - **Presentation preview** — Thumbnail generation and deck hosting screens | ||
|
|
||
| ## Configuration | ||
|
|
||
| Set your Gemini API key via either method: | ||
|
|
||
| 1. **Build-time** (recommended): `--dart-define=GOOGLE_AI_API_KEY=xxx` | ||
| 2. **Runtime** (dev only): Create a `.env` file with `GOOGLE_AI_API_KEY=xxx` | ||
|
|
||
| `genUiRoutes()` automatically initializes GenUI runtime dependencies | ||
| (paths, prompt assets, examples, and optional `.env` loading). | ||
|
|
||
| ## Usage | ||
|
|
||
| ```dart | ||
| import 'package:superdeck_genui/superdeck_genui.dart'; | ||
|
|
||
| // Optional (recommended for custom/manual integration) | ||
| await initializeGenUi(); | ||
|
|
||
| // Add routes to your GoRouter | ||
| final router = GoRouter( | ||
| routes: [...genUiRoutes()], | ||
| ); | ||
|
|
||
| // Optional: override default route screens (for custom host integration) | ||
| final customRouter = GoRouter( | ||
| routes: [ | ||
| ...genUiRoutes( | ||
| presentationBuilder: (context, state) { | ||
| return PresentationDeckHost( | ||
| deckAppBuilder: (options) => MyPresentationApp(options: options), | ||
| ); | ||
| }, | ||
| ), | ||
| ], | ||
| ); | ||
|
|
||
| // Or use individual screens directly | ||
| const GenUiBootstrapScope(child: ChatScreen()); | ||
| const GenUiBootstrapScope(child: CreatingPresentationScreen()); | ||
| const GenUiBootstrapScope(child: PresentationDeckHost()); | ||
| ``` | ||
|
|
||
| ## Related packages | ||
|
|
||
| | Package | Description | | ||
| |---------|-------------| | ||
| | `superdeck` | Flutter presentation framework | | ||
| | `superdeck_core` | Core models and parsing | | ||
| | `superdeck_cli` | CLI tool for building decks | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| include: package:flutter_lints/flutter.yaml | ||
| extends: ../../shared_analysis_options.yaml | ||
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
analysis_options.yamldoesn’t support anextends:key (unknown keys are ignored), so../../shared_analysis_options.yamlwon’t be applied. Useinclude:for the shared file (and have the shared file includeflutter_lintsif needed), or merge the shared rules into this file.