scaffold_ui 2.0.0
scaffold_ui: ^2.0.0 copied to clipboard
The fastest way to scaffold services in your Nylo project! Auth & IAP integrations for Supabase, Firebase, Laravel, RevenueCat, Superwall and more.
2.0.0 - 2026-05-21 #
Added #
- Superwall IAP integration.
dart run scaffold_ui:main iapnow offersSuperwallalongsideRevenueCat. The slate generates apaywall_page(callingSuperwall.shared.registerPlacement('campaign_trigger', ...)) and asuperwall_providerthat configures the SDK per-platform from the Apple/Android API keys collected at prompt time. Empty keys fall back to commented-out placeholder lines so an Android-only or iOS-only project can be scaffolded without leakingSuperwall.configure("null")calls. New types:NySuperwallSlateConfig,stubSuperwallProvider,stubSuperwallPaywall,superwallRun(). - Automatic
AndroidManifest.xmlpatching for Superwall. When the user provides an Android API key, the CLI idempotently injects<activity android:name="com.superwall.sdk.paywall.view.SuperwallPaywallActivity" ...>inside<application>per Superwall's install docs. The patch is exposed as a pure function (patchAndroidManifestForSuperwall) and falls back to printing a manual XML snippet if the manifest is missing or malformed. superwallIosSetupHintFor/superwallAndroidSetupHintFor— Superwall-specific post-install hints (iOS 14.0+ deployment target, AndroidminSdkVersion 26).
Changed #
- BREAKING Bumped
nylo_supportdependency from^6.38.1to^7.24.2.scaffold_uinow targets Nylo v7 boilerplates (nylo_framework: ^7.1.16+). - BREAKING Dart SDK floor raised to
^3.10.7to matchnylo_support 7.24.2's minimum. - BREAKING
stubLaravelApiServiceno longer emits aString get bearerTokengetter. The v7 stub overridessetAuthHeaders(RequestHeaders headers)and callsheaders.addBearerToken(token)instead, matchingnylo_support 7.24.x'sNyApiServicecontract. Consumers regenerating the Laravel slate should remove any hand-writtenbearerTokenoverrides from their existingLaravelApiService. - Regenerated both Laravel API service stubs for v7's
NyApiServicecontract.stubLaravelApiServiceandstubLaravelAuthApiServicenow import decoders from/bootstrap/decoders.dart(v6:/config/decoders.dart) and generate context-free constructors — the{BuildContext? buildContext}parameter and thesuper(buildContext, ...)positional are gone.stubLaravelAuthApiServiceadditionally drops thedisplayError(DioException, BuildContext)override and rewritesforgotPasswordto read v7'sNyResponse(response.isSuccessful/response.rawData) instead of the v6response.statusCode/response.data. - Laravel
login,register, andforgot_passwordcontroller stubs drop thecontext: contextargument from theirapi<LaravelAuthApiService>(...)calls — v7'sapi()helper no longer accepts it. - Normalized generated page state classes from
extends NyState<T>toextends NyPage<T>across login, register, forgot-password, landing, and dashboard stubs (all backends). - Dashboard stubs (basic, Firebase, Laravel, Supabase) now read the card color via
ThemeColorResolver.get(context).general.background; v7 replaced the v6ThemeColor.get(context).backgroundaccessor. - Updated stub doc-comment links from
nylo.dev/docs/6.xtonylo.dev/docs/7.x. - Renamed v6
boot/afterBootlifecycle methods to the v7setup/bootnames in RevenueCat, Firebase, and Supabase provider stubs. Generated provider files now compile cleanly againstnylo_support 7.24.xand use the correct lifecycle slot for configuration. - Migrated form stubs from the v6
NyFormData+NyFormwrapper pattern to the v7NyFormWidgetpattern.LoginFormandRegisterFormnow extendNyFormWidget, exposestatic NyFormActions get actions, and use thevalidator:field arg. Page stubs (login, register, supabase register, firebase register) now embedsubmitButtonandonSubmitinside the form widget instead of wrapping it withNyForm(...)and a siblingButton.primary(submitForm: ...). Also fixedlogin_page_stub.dartwhich still emitted the long-removed framework classNyLoginForm(emailValidationRule: ..., passwordValidationRule: ...)— it now references the project-localLoginForm. - The forgot-password page stub's email field migrates from
NyTextField(withvalidationRules: "email") to v7'sInputField.emailAddresswithformValidator: FormValidator.email(). - Replaced the hand-rolled
RichText+TextSpan+TapGestureRecognizerterms/privacy block in the register page stubs (basic, supabase, firebase) withStyledText.template(...). Generated register pages are now ~15 lines shorter, no longer importpackage:flutter/gestures.dart, and use placeholder syntax ({{terms:terms and conditions}},{{privacy:privacy policy}}) withstyles/onTapmaps instead of manualTextSpanchildren withrecognizer:cascades. - The landing page stub's "Already have an account? Login" line migrates from the v6
NyRichTextwidget toStyledText.template(...), consistent with the register-page change above. - Generated
Button.primarywidgets on the login, register, and forgot-password pages no longer hard-codecolor: Colors.black87, so they inherit the app theme's button color. stdin_service.dartnow imports fromnylo_support/dart_console/ny_dart_console.dart(v7's renamed re-export) instead of the v6dart_console.dartpath.bin/main.dart,lib/cli/scaffold_cli.dart, andlib/scaffold_ui.dartnow import the consolidatednylo_support/metro/ny_metro.dartbarrel instead of v6's separatemetro/metro_console.dart,metro/metro_service.dart,metro/constants/strings.dart, andmetro/models/ny_template.dartpaths.- The
authcommand's Laravel setup instructions are rewritten as a numbered checklist — now including thephp artisan install:apistep — and printed in yellow (previously green prose).
Fixed #
- Supabase dashboard stub no longer imports the unused
/app/models/user.dart. That import pulled the default NyloUsermodel into scope alongside theUsertype re-exported bysupabase_flutter, making every generated Supabasedashboard_page.dartfail to compile with an ambiguous-import error. The_usergetter only ever returns the Supabase auth user (supabase.auth.currentUser), so the app-model import was dead code.
1.4.0 - 2026-05-10 #
Fixed #
- CLI no longer hangs after a list selection on Windows 11 (#2). After picking a backend, the next text prompt could not be submitted because
dart_console's raw-mode reset (in nylo_support's bundleddart_console) zeroes the Windows console mode.ListChooser._resetStdinnow restores the full interactive input mask via FFI on Windows. - CLI no longer exits silently after
dart pub add(#3).MetroService.addPackagewiredstdin.pipe(process.stdin)to the child, which left the parent's stdin in a consumed state and the nextreadLineSyncreturning null tore the program down. The CLI now installs packages via a local_addPackagehelper backed byProcess.start(..., mode: ProcessStartMode.inheritStdio), which leaves the parent's stdin untouched. CliDialognow actually validates eachmessagesentry — the previous check fired only if you passed more than two messages total.stubRevenueCatProviderno longer emitsPurchasesConfiguration("null")when an app ID is null; the placeholder branch now matches the comment-toggle branch and handles both null and empty string.NyLaravelSlateConfig.urlnow strips every trailing slash (/+$), not just one, so a URL likehttps://api.example.com//no longer leaks//app/v1into the generated stub.
Added #
- New
lib/cli/scaffold_cli.dartexposing the per-command logic as a testable layer:SlatePlan,parseCommand,planAuthSlate,planIapSlate,iosSetupHintFor, plus thesupportedAuthBackends/supportedIapServicesconstants and the prompt strings. - Comprehensive test suite — 120 tests covering models, slate runners, stubs, the CLI dialog (validation + mock-mode interactions), the list chooser (arrow-key navigation), the XTerm helpers, and the new CLI command planners.
Changed #
bin/main.dartis now a thin runtime wrapper over the new planner functions.addQuestiondoc-comment example fixed — now matches the actual two-positional-arg signature with valid Dart Map literal syntax.- Renamed three Laravel stub source files for naming consistency (only affects code that imported the files directly via
package:scaffold_ui/stubs/laravel/..., which is not the documented usage):lib/stubs/laravel/laravel_auth_api_serivce_stub.dart→laravel_auth_api_service_stub.dartlib/stubs/laravel/laravel_api_service.dart→laravel_api_service_stub.dartlib/stubs/laravel/laravel_auth_response.dart→laravel_auth_response_stub.dart
Chore #
.gitignorenow covers Flutter-generated artifacts (.flutter-plugins,.flutter-plugins-dependencies,example/pubspec.lock); previously-tracked copies untracked.
1.3.1 - 2025-12-13 #
- Dependency updates
1.3.0 - 2025-09-06 #
- Dependency updates
1.2.9 - 2025-07-17 #
- Dependency updates
1.2.8 - 2025-05-23 #
- Dependency updates
1.2.7 - 2025-04-09 #
- Dependency updates
1.2.6 - 2025-03-27 #
- Dependency updates
1.2.5 - 2025-03-21 #
- Small fix for login_page stub
- Dependency updates
1.2.4 - 2025-03-09 #
- Update Laravel controller stubs
- Dependency updates
1.2.3 - 2025-02-27 #
- Dependency updates
1.2.2 - 2025-02-23 #
- Update stubs as per analysis
- Update GitHub workflows
- Dependency updates
1.2.1 - 2025-02-04 #
- Dependency updates
1.2.0 - 2025-02-03 #
- Ability to scaffold in-app purchases via RevenueCat
- Use
dart run scaffold_ui:main iapand then selectRevenueCat - Added
firebaseto the list of available auth scaffolds - Dependency updates
1.1.14 - 2025-01-26 #
- Dependency updates
1.1.13 - 2024-01-16 #
- Update Laravel dashboard stub
1.1.12 - 2024-01-16 #
- Dependency updates
1.1.11 - 2024-01-14 #
- Fix Laravel api service stub
- Update
NyLaravelSlateConfigto remove trailing slash from urls - Dependency updates
1.1.10 - 2024-01-13 #
- Dependency updates
1.1.9 - 2024-01-04 #
- Dependency updates
1.1.8 - 2024-12-31 #
- Update copyright year
- Dependency updates
1.1.7 - 2024-12-18 #
- Dependency updates
1.1.6 - 2024-12-16 #
- Dependency updates
1.1.5 - 2024-12-02 #
- refactor stubs
- Dependency updates
1.1.4 - 2024-11-25 #
- Dependency updates
1.1.3 - 2024-11-10 #
- Dependency updates
1.1.2 - 2024-11-06 #
- Fix GitHub actions
1.1.1 - 2024-11-06 #
- Update GitHub actions
- Update Readme
1.1.0 - 2024-11-05 #
- Update stubs
1.0.0 - 2024-11-02 #
- Initial release.
