Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await SuperDeckApp.initialize();

runApp(const SuperDeckApp(options: DeckOptions()));
runApp(SuperDeckApp(options: DeckOptions()));
}
```

Expand Down Expand Up @@ -109,7 +109,7 @@ final index = slide.slideIndex;
final args = slide.options.args;
```

Use Flutter's `LayoutBuilder` for sizing. SuperDeck does not export a public `MeasureSize` API.
Use Flutter's `LayoutBuilder` for sizing. SuperDeck does not export a public widget-size measurement API.

If a widget factory is missing, SuperDeck renders `Widget not found: <name>`. If the factory throws, SuperDeck renders error details on the slide.

Expand Down
12 changes: 4 additions & 8 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
- `packages/core`: Markdown parsing, schemas, validation (Dart-only)
- `packages/superdeck`: Flutter runtime/widgets
- `packages/cli`: `superdeck` CLI commands
- `packages/builder`: code generation/build integration
- `packages/builder`: deck parsing, serialization, and the build/watch pipeline
- `packages/playground`: the Wizard app for AI deck generation, presenting, and saving
- `packages/plugins/pdf`: PDF export
- `demo/`: reference app and slide content used by CI smoke/integration flows

## First-time setup (required)
Expand All @@ -30,7 +32,7 @@ fvm dart run melos bootstrap
## Agent workflow expectations
1. Keep changes surgical and package-scoped.
2. Run `fvm dart run melos run build_runner:build` before tests when touching code that can affect generated output.
3. Commit generated files when they change (`*.g.dart`, `*.mapper.dart`).
3. Commit generated files when they change (`*.g.dart`, `*.ack.dart`).
4. Prefer relative imports in Dart files.
5. Follow existing style: two-space indentation, `snake_case.dart` filenames.

Expand All @@ -45,12 +47,6 @@ fvm dart run melos bootstrap
fvm dart run melos bootstrap
```

- **CI failure while building demo assets (`fvm dart run superdeck_cli:main build`)**
- Observed error:
- `Invalid YAML frontmatter in slide ... Error on line 1, column 1: Unexpected character.`
- Triggering content starts with `@section {`.
- Workaround: fix invalid slide frontmatter/config in demo slide content before rerunning CI.

## CI notes
- Main validation workflow: `.github/workflows/test.yml`
- CI sequence is effectively: bootstrap -> build_runner -> contracts check -> tests/integration/web smoke.
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Flutter/Dart/Pub related
# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
pubspec.lock
!/pubspec.lock
pubspec_overrides.yaml

# Miscellaneous
Expand Down Expand Up @@ -50,7 +51,6 @@ build/

# Node file for website
node_modules
.local-chrome
.orbit
discovery

Expand Down
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,7 @@ lib/src/
- Use `snake_case` for repo-owned non-standard filenames
- Prefer `.yaml` for repo-owned configuration and fixture files
- Keep ecosystem-standard names as-is, including `README.md`, `CHANGELOG.md`, generated platform files, and existing GitHub workflow `.yml` files
- Vendor forked third-party code under a `vendor/` directory with an upstream attribution header (source, commit, license), a `LICENSE` file beside it, and local patches clearly marked, following `packages/superdeck/lib/src/markdown/mermaid/vendor/`

## Testing Guidelines

Expand Down
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ SuperDeck is a monorepo; each package keeps its own changelog:
- [`superdeck`](packages/superdeck/CHANGELOG.md) — the Flutter presentation framework
- [`superdeck_core`](packages/core/CHANGELOG.md) — parsing, models, and schema validation
- [`superdeck_cli`](packages/cli/CHANGELOG.md) — the `superdeck` command-line tool
- [`superdeck_builder`](packages/builder/CHANGELOG.md) — build_runner integration
- [`superdeck_builder`](packages/builder/CHANGELOG.md) — deck parsing and the build pipeline
- [`superdeck_pdf`](packages/plugins/pdf/CHANGELOG.md) — PDF export support
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ SuperDeck is a Flutter presentation framework. You write slides in Markdown, and
WidgetsFlutterBinding.ensureInitialized();
await SuperDeckApp.initialize();

runApp(const SuperDeckApp(options: DeckOptions()));
runApp(SuperDeckApp(options: DeckOptions()));
}
```

Expand Down
1 change: 0 additions & 1 deletion demo/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -49,5 +49,4 @@ app.*.map.json
.fvm/

.env
lib/env/env.g.dart
.superdeck/assets/*
5 changes: 3 additions & 2 deletions demo/analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
include: package:flutter_lints/flutter.yaml
extends: ../shared_analysis_options.yaml
include:
- package:flutter_lints/flutter.yaml
- ../shared_analysis_options.yaml

2 changes: 1 addition & 1 deletion demo/lib/src/widgets/demo_widgets.dart
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import 'ack_metric_card.dart';
/// }
/// ```
///
/// The QR code widget is now a built-in widget available as `@qrcode`.
/// QR codes use the built-in `@qrcode` widget.
Map<String, WidgetFactory> get demoWidgets => {
'mix-simple-box': (_) => _DemoWrapper(
child: Transform.scale(scale: 3.0, child: mix_simple_box.Example()),
Expand Down
Loading
Loading