Repository navigation
refactor(playground)!: replace the saved-deck library with deck export - #124
Merged
Merged
Conversation
SuperDeck's retry screen calls reload(), and the in-memory loader ignored it, so a session waiting on the reload could stay loading. Reload now repeats the last decoded slides or error, or reports that no markdown was supplied.
DeckExport lays out slides.md and its generated artwork under assets/, rewriting each bare asset key to a relative path any SuperDeck project can load, and encodes the result as a zip.
The Wizard now exports the deck it generated as a zip (slides.md plus assets/) through the platform save dialog, instead of saving into a remembered SuperDeck folder that the app lists and reopens. Removed with the library: the saved-decks page and route, DeckLibraryController, MacOsDeckLibrary and its manifest, the saved-deck artwork binding, security-scoped bookmarks on the Dart and Swift sides with their entitlement, Result, and DeckDocumentStore, whose only reader was the library save. Generated artwork now resolves from the run's in-memory store alone.
|
Visit the preview URL for this PR (updated for commit e2152d4): https://superdeck-dev--pr124-refactor-playground-csi9r3rm.web.app (expires Fri, 23 Oct 2026 02:19:25 GMT) 🔥 via Firebase Hosting GitHub Action 🌎 Sign: bd68fc230762285849207e7e120aaf87cd4ca2f9 |
… isolate The save dialog now suggests the deck's topic, as the old save dialog did, falling back to the first slide title. Encoding the zip compresses every generated image, so it runs through compute instead of blocking frames.
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Intent
Make the playground one flow: generate a deck, present it, and export it. The saved-deck library (save to a remembered folder, list, reopen) is gone. It needed a set of ownership rules because a saved deck and a freshly generated deck could share the app at the same time. With one deck per run, those rules have nothing left to coordinate.
Export deck saves a zip through the platform save dialog:
The unzipped folder is a standard SuperDeck project. The export carries the Markdown and artwork, not the generated theme.
Commits
fix:MemoryDeckLoader.reloadre-emits the last result. SuperDeck's retry screen callsreload(), which used to do nothing, so a waiting session stayed loading. This fix comes from fix(pdf): release export captures; record the architecture audit #121.feat:DeckExportbuilds the project files and the zip, rewriting each bare asset key toassets/<key>. A follow-up commit names the export after the deck topic, as the old save dialog did, and encodes the zip off the UI isolate.refactor!: the library is replaced with export. Removed:/decksrouteDeckLibraryController,MacOsDeckLibraryand its.deck.jsonmanifestResultDeckDocumentStore, whose only reader was the library saveGenerated artwork now resolves from the in-memory store.
file_saveris registered as a macOS plugin.docs: the playground README and AGENTS.md describe export.Impacted packages
playgroundonly.Commands run
fvm dart run melos bootstrapandmelos run build_runner:build --no-select: no generated-file driftfvm dart analyze --fatal-infosin all 7 packages and playgroundtest_live: no issuesfvm flutter testin playground: 371 passing. New tests cover export building, the zip round trip, and the Wizard export flow: success, cancel, failure, and a new run clearing the notice. The library tests are removed.plutil -lintonproject.pbxprojand both entitlements files, andxcrun swiftc -parseonMainFlutterWindow.swift: cleanmacOS plugins are integrated through Swift Package Manager (
FlutterGeneratedPluginSwiftPackage), andfile_saver0.4.0 ships aPackage.swift, soPodfile.lockdoes not change.Not run: a macOS app build. Both macOS runners target 10.15, which current Xcode rejects. Please run the app once to check the save dialog after the deployment target is raised.