kasy-cli 1.10.0 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/kasy.js +25 -4
- package/lib/commands/check.js +40 -50
- package/lib/commands/deploy.js +25 -25
- package/lib/commands/splash.js +220 -0
- package/lib/scaffold/CHANGELOG.json +9 -0
- package/lib/scaffold/backends/api/patch/lib/main.dart +29 -10
- package/lib/scaffold/backends/supabase/patch/lib/main.dart +29 -10
- package/lib/scaffold/features/README.md +15 -139
- package/lib/scaffold/shared/generator-utils.js +16 -15
- package/lib/utils/i18n.js +292 -43
- package/package.json +2 -2
- package/templates/firebase/android/app/src/main/res/drawable-hdpi/android12splash.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-hdpi/splash.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-mdpi/android12splash.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-mdpi/splash.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-night/background.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-night/launch_background.xml +9 -0
- package/templates/firebase/android/app/src/main/res/drawable-night-hdpi/android12splash.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-night-hdpi/splash.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-night-mdpi/android12splash.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-night-mdpi/splash.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-night-v21/background.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-night-v21/launch_background.xml +9 -0
- package/templates/firebase/android/app/src/main/res/drawable-night-xhdpi/android12splash.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-night-xhdpi/splash.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-night-xxhdpi/splash.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-night-xxxhdpi/splash.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-xhdpi/android12splash.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-xhdpi/splash.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-xxhdpi/android12splash.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-xxhdpi/splash.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-xxxhdpi/android12splash.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-xxxhdpi/splash.png +0 -0
- package/templates/firebase/android/app/src/main/res/values-night-v31/styles.xml +2 -1
- package/templates/firebase/android/app/src/main/res/values-v31/styles.xml +1 -0
- package/templates/firebase/assets/images/splash_logo_dark.png +0 -0
- package/templates/firebase/assets/images/splash_logo_light.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json +9 -8
- package/templates/firebase/ios/Runner/Assets.xcassets/LaunchBackground.imageset/darkbackground.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json +33 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImageDark.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImageDark@2x.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImageDark@3x.png +0 -0
- package/templates/firebase/ios/Runner/Base.lproj/LaunchScreen.storyboard +1 -1
- package/templates/firebase/lib/core/initializer/onstart_widget.dart +7 -1
- package/templates/firebase/lib/core/theme/providers/theme_provider.dart +48 -24
- package/templates/firebase/lib/features/onboarding/ui/components/onboarding_features.dart +4 -0
- package/templates/firebase/lib/features/onboarding/ui/onboarding_page.dart +1 -0
- package/templates/firebase/lib/features/onboarding/ui/widgets/onboarding_feature.dart +13 -0
- package/templates/firebase/lib/features/settings/settings_page.dart +158 -18
- package/templates/firebase/lib/i18n/en.i18n.json +6 -2
- package/templates/firebase/lib/i18n/es.i18n.json +6 -2
- package/templates/firebase/lib/i18n/pt.i18n.json +6 -2
- package/templates/firebase/lib/main.dart +29 -10
- package/templates/firebase/pubspec.yaml +4 -5
- package/templates/firebase/test/core/data/repositories/user_repository_test.dart +1 -1
- package/templates/firebase/web/index.html +47 -39
- package/templates/firebase/web/splash/img/dark-1x.png +0 -0
- package/templates/firebase/web/splash/img/dark-2x.png +0 -0
- package/templates/firebase/web/splash/img/dark-3x.png +0 -0
- package/templates/firebase/web/splash/img/dark-4x.png +0 -0
- package/templates/firebase/web/splash/img/light-1x.png +0 -0
- package/templates/firebase/web/splash/img/light-2x.png +0 -0
- package/templates/firebase/web/splash/img/light-3x.png +0 -0
- package/templates/firebase/web/splash/img/light-4x.png +0 -0
- package/lib/scaffold/features/analytics/lib/core/data/api/analytics_api.dart +0 -124
- package/lib/scaffold/features/ci/.github/ISSUE_TEMPLATE/BUG.es.md +0 -35
- package/lib/scaffold/features/ci/.github/ISSUE_TEMPLATE/BUG.md +0 -35
- package/lib/scaffold/features/ci/.github/ISSUE_TEMPLATE/BUG.pt.md +0 -35
- package/lib/scaffold/features/ci/.github/ISSUE_TEMPLATE/feature_request.es.md +0 -12
- package/lib/scaffold/features/ci/.github/ISSUE_TEMPLATE/feature_request.md +0 -12
- package/lib/scaffold/features/ci/.github/ISSUE_TEMPLATE/feature_request.pt.md +0 -12
- package/lib/scaffold/features/ci/.github/PULL_REQUEST_TEMPLATE.es.md +0 -17
- package/lib/scaffold/features/ci/.github/PULL_REQUEST_TEMPLATE.md +0 -17
- package/lib/scaffold/features/ci/.github/PULL_REQUEST_TEMPLATE.pt.md +0 -17
- package/lib/scaffold/features/ci/.github/dependabot.yml +0 -16
- package/lib/scaffold/features/ci/.github/workflows/app.yml +0 -20
- package/lib/scaffold/features/ci/.gitlab/templates/deploy.yaml +0 -14
- package/lib/scaffold/features/ci/.gitlab/templates/dropbox.yaml +0 -19
- package/lib/scaffold/features/ci/.gitlab/templates/flutter.yaml +0 -163
- package/lib/scaffold/features/ci/.gitlab/templates/mailgun.yaml +0 -28
- package/lib/scaffold/features/ci/.gitlab-ci.yml +0 -37
- package/lib/scaffold/features/ci/codemagic.yaml +0 -157
- package/lib/scaffold/features/facebook/lib/core/data/api/tracking_api.dart +0 -111
- package/lib/scaffold/features/feedback/lib/features/feedbacks/api/entities/feature_request_entity.dart +0 -27
- package/lib/scaffold/features/feedback/lib/features/feedbacks/api/entities/feature_vote_entity.dart +0 -27
- package/lib/scaffold/features/feedback/lib/features/feedbacks/api/feature_request_api.dart +0 -50
- package/lib/scaffold/features/feedback/lib/features/feedbacks/api/feature_vote_api.dart +0 -79
- package/lib/scaffold/features/feedback/lib/features/feedbacks/models/feature_requests.dart +0 -48
- package/lib/scaffold/features/feedback/lib/features/feedbacks/models/feedback_state.dart +0 -42
- package/lib/scaffold/features/feedback/lib/features/feedbacks/providers/feedback_page_notifier.dart +0 -147
- package/lib/scaffold/features/feedback/lib/features/feedbacks/repositories/feature_request_repository.dart +0 -95
- package/lib/scaffold/features/feedback/lib/features/feedbacks/ui/component/add_feature_form.dart +0 -199
- package/lib/scaffold/features/feedback/lib/features/feedbacks/ui/feedback_page.dart +0 -175
- package/lib/scaffold/features/feedback/lib/features/feedbacks/ui/widgets/add_feature_button.dart +0 -76
- package/lib/scaffold/features/feedback/lib/features/feedbacks/ui/widgets/feature_card.dart +0 -279
- package/lib/scaffold/features/ios-release/.kasy/apple.env.example +0 -8
- package/lib/scaffold/features/ios-release/.kasy/codemagic.env.example +0 -7
- package/lib/scaffold/features/ios-release/docs/codemagic-release.en.md +0 -50
- package/lib/scaffold/features/ios-release/docs/codemagic-release.es.md +0 -50
- package/lib/scaffold/features/ios-release/docs/codemagic-release.pt.md +0 -50
- package/lib/scaffold/features/ios-release/docs/ios-release.en.md +0 -41
- package/lib/scaffold/features/ios-release/docs/ios-release.es.md +0 -41
- package/lib/scaffold/features/ios-release/docs/ios-release.pt.md +0 -41
- package/lib/scaffold/features/ios-release/scripts/bump-ios-version.js +0 -38
- package/lib/scaffold/features/ios-release/scripts/release-ios.sh +0 -137
- package/lib/scaffold/features/llm_chat/lib/features/llm_chat/llm_chat_page.dart +0 -301
- package/lib/scaffold/features/local_notifications/lib/features/local_reminder/providers/reminder_notifier.dart +0 -81
- package/lib/scaffold/features/local_notifications/lib/features/local_reminder/repositories/reminder_preferences.dart +0 -76
- package/lib/scaffold/features/local_notifications/lib/features/local_reminder/ui/reminder_page.dart +0 -282
- package/lib/scaffold/features/onboarding/lib/features/onboarding/api/entities/user_info_entity.dart +0 -24
- package/lib/scaffold/features/onboarding/lib/features/onboarding/api/user_infos_api.dart +0 -71
- package/lib/scaffold/features/onboarding/lib/features/onboarding/models/user_info.dart +0 -92
- package/lib/scaffold/features/onboarding/lib/features/onboarding/providers/onboarding_model.dart +0 -15
- package/lib/scaffold/features/onboarding/lib/features/onboarding/providers/onboarding_provider.dart +0 -78
- package/lib/scaffold/features/onboarding/lib/features/onboarding/repositories/user_infos_repository.dart +0 -29
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/animations/page_transitions.dart +0 -30
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/components/onboarding_att_setup.dart +0 -66
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/components/onboarding_features.dart +0 -72
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/components/onboarding_loader.dart +0 -92
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/components/onboarding_notifications_setup.dart +0 -73
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/components/onboarding_questions.dart +0 -89
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/onboarding_page.dart +0 -94
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/widgets/onboarding_background.dart +0 -80
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/widgets/onboarding_feature.dart +0 -139
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/widgets/onboarding_illustration_scaffold.dart +0 -110
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/widgets/onboarding_progress.dart +0 -84
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/widgets/onboarding_radio_question.dart +0 -173
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/widgets/onboarding_reassurance.dart +0 -45
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/widgets/onboarding_sticky_footer.dart +0 -77
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/widgets/selectable_row_tile.dart +0 -392
- package/lib/scaffold/features/revenuecat/lib/core/data/api/tracking_api.dart +0 -116
- package/lib/scaffold/features/revenuecat/lib/core/data/models/subscription.dart +0 -322
- package/lib/scaffold/features/revenuecat/lib/core/home_widgets/home_widget_background_task.dart +0 -41
- package/lib/scaffold/features/revenuecat/lib/core/states/user_state_notifier.dart +0 -305
- package/templates/firebase/assets/images/splashscreen.png +0 -0
package/lib/utils/i18n.js
CHANGED
|
@@ -59,7 +59,7 @@ const MESSAGES = {
|
|
|
59
59
|
'new.checks.environment.done': 'Environment ready',
|
|
60
60
|
'setup.checks.backend.checking': 'Checking {backend} tools',
|
|
61
61
|
'setup.checks.backend.done': '{backend} tools ready',
|
|
62
|
-
'new.checks.firebaseForPush': 'Note: Firebase CLI is required for push notifications (FCM) on all backends.',
|
|
62
|
+
'new.checks.firebaseForPush': 'Note: Firebase CLI is required for push notifications (Firebase Cloud Messaging / FCM) on all backends.',
|
|
63
63
|
'new.checks.requiredBlock': 'Required tools are missing. Install them to continue.',
|
|
64
64
|
'new.checks.installFirebase': 'Firebase: npm i -g firebase-tools && firebase login. FlutterFire: dart pub global activate flutterfire_cli',
|
|
65
65
|
'new.checks.installSupabase': 'Supabase: npm i -g supabase (or brew install supabase/tap/supabase) && supabase login',
|
|
@@ -578,7 +578,7 @@ const MESSAGES = {
|
|
|
578
578
|
'new.success.step.run': 'Run your app (with your configured keys):',
|
|
579
579
|
'new.success.step.run.vscode': '(or F5 in VS Code)',
|
|
580
580
|
'new.success.step.console': 'Open your backend console:',
|
|
581
|
-
'new.fcm.generating': 'Generating
|
|
581
|
+
'new.fcm.generating': 'Generating push notifications key (Firebase Service Account)…',
|
|
582
582
|
'new.sha1.registering': 'Registering SHA-1 for Google Sign-In (Android)…',
|
|
583
583
|
'new.sha1.failed': 'SHA-1 not added automatically: {error}',
|
|
584
584
|
'new.sha1.manual': 'Add it manually so Google Sign-In works on Android:',
|
|
@@ -624,6 +624,32 @@ const MESSAGES = {
|
|
|
624
624
|
// docs command
|
|
625
625
|
'cli.command.docs.description': 'Open the full documentation',
|
|
626
626
|
|
|
627
|
+
// splash command
|
|
628
|
+
'cli.command.splash.description': 'Swap splash screen logos (light/dark) and regenerate native assets',
|
|
629
|
+
'splash.intro': 'Splash screen',
|
|
630
|
+
'splash.validating': 'Validating PNG files...',
|
|
631
|
+
'splash.validated': 'PNG files look good',
|
|
632
|
+
'splash.copying': 'Copying logos to assets/images/...',
|
|
633
|
+
'splash.copied': 'Logos copied',
|
|
634
|
+
'splash.generating': 'Regenerating native splash (Android, iOS, Web)...',
|
|
635
|
+
'splash.generated': 'Native splash regenerated',
|
|
636
|
+
'splash.done': 'Done. Run "flutter run" to see the new splash.',
|
|
637
|
+
'splash.warn.title': 'Warnings',
|
|
638
|
+
'splash.warn.noAlphaLight': '{path} has no alpha channel. The logo will show with a solid background instead of being transparent.',
|
|
639
|
+
'splash.warn.noAlphaDark': '{path} has no alpha channel. The logo will show with a solid background instead of being transparent.',
|
|
640
|
+
'splash.warn.smallLight': 'Light logo is {w}x{h}. Recommended is at least 768x768 to avoid blurry edges.',
|
|
641
|
+
'splash.warn.smallDark': 'Dark logo is {w}x{h}. Recommended is at least 768x768 to avoid blurry edges.',
|
|
642
|
+
'splash.summary.title': 'Saved',
|
|
643
|
+
'splash.summary.light': 'Light mode',
|
|
644
|
+
'splash.summary.dark': 'Dark mode',
|
|
645
|
+
'splash.skipGenerate.title': 'Skipped generation',
|
|
646
|
+
'splash.skipGenerate.hint': 'Run `dart run flutter_native_splash:create` when you are ready.',
|
|
647
|
+
'splash.error.notKasyProject': 'pubspec.yaml not found. Run this command from inside a Flutter/Kasy project.',
|
|
648
|
+
'splash.error.bothRequired': '--light and --dark are both required.',
|
|
649
|
+
'splash.error.fileNotFound': 'File not found: {path}',
|
|
650
|
+
'splash.error.notPng': 'One of the files is not a valid PNG.',
|
|
651
|
+
'splash.error.generateFailed': 'flutter_native_splash:create failed. Check the output above.',
|
|
652
|
+
|
|
627
653
|
// notifications command
|
|
628
654
|
'cli.command.notifications.description': 'Edit the text of local notifications and reminders',
|
|
629
655
|
'cli.command.notifications.text.description': 'Set titles and bodies shown in local notifications',
|
|
@@ -654,15 +680,15 @@ const MESSAGES = {
|
|
|
654
680
|
'add.error.unknownModule': 'Unknown feature: {module}\nAvailable: {list}',
|
|
655
681
|
'add.alreadyActive': 'Feature "{module}" is already active in this project.',
|
|
656
682
|
'add.applying': 'Adding feature: {module}',
|
|
657
|
-
'add.applyingPatch': 'Applying
|
|
683
|
+
'add.applyingPatch': 'Applying feature changes...',
|
|
658
684
|
'add.patchApplied': 'Patch applied',
|
|
659
685
|
'add.patchFailed': 'Patch failed — check the output above',
|
|
660
|
-
'add.pubGet': '
|
|
686
|
+
'add.pubGet': 'Installing Flutter packages (flutter pub get)...',
|
|
661
687
|
'add.pubGetDone': 'Dependencies updated',
|
|
662
|
-
'add.pubGetFailed': '
|
|
663
|
-
'add.buildRunner': '
|
|
688
|
+
'add.pubGetFailed': 'Failed to install Flutter packages — run `flutter pub get` manually',
|
|
689
|
+
'add.buildRunner': 'Generating code (Riverpod/Freezed)...',
|
|
664
690
|
'add.buildRunnerDone': 'Code generation complete',
|
|
665
|
-
'add.buildRunnerFailed': '
|
|
691
|
+
'add.buildRunnerFailed': 'Code generation failed — run `dart run build_runner build` manually',
|
|
666
692
|
'add.success': 'Feature "{module}" added successfully.',
|
|
667
693
|
'add.cancelled': 'Cancelled.',
|
|
668
694
|
'add.prompt.sentryDsn': 'Sentry DSN (leave blank to configure later):',
|
|
@@ -697,12 +723,12 @@ const MESSAGES = {
|
|
|
697
723
|
'remove.confirm': 'Remove feature "{module}"? This will delete files and dependencies.',
|
|
698
724
|
'remove.cancelled': 'Cancelled.',
|
|
699
725
|
'remove.removing': 'Removing feature: {module}',
|
|
700
|
-
'remove.pubGet': '
|
|
726
|
+
'remove.pubGet': 'Installing Flutter packages (flutter pub get)...',
|
|
701
727
|
'remove.pubGetDone': 'Dependencies updated',
|
|
702
|
-
'remove.pubGetFailed': '
|
|
703
|
-
'remove.buildRunner': '
|
|
728
|
+
'remove.pubGetFailed': 'Failed to install Flutter packages — run `flutter pub get` manually',
|
|
729
|
+
'remove.buildRunner': 'Generating code (Riverpod/Freezed)...',
|
|
704
730
|
'remove.buildRunnerDone': 'Code generation complete',
|
|
705
|
-
'remove.buildRunnerFailed': '
|
|
731
|
+
'remove.buildRunnerFailed': 'Code generation failed — run `dart run build_runner build` manually',
|
|
706
732
|
'remove.success': 'Feature "{module}" removed successfully.',
|
|
707
733
|
'remove.warn.ci': 'CI files removed. If you had custom workflow files, restore them from git.',
|
|
708
734
|
'remove.warn.sentry.shared': 'sentry_flutter kept — still required by active features (revenuecat/facebook).',
|
|
@@ -735,15 +761,72 @@ const MESSAGES = {
|
|
|
735
761
|
'update.applyComponentsFailed': 'Failed to apply update for base components',
|
|
736
762
|
'update.noPatch': 'Feature "{module}" has no files to update (configuration-only feature).',
|
|
737
763
|
'update.noComponentFiles': 'No base component files were found to update.',
|
|
738
|
-
'update.pubGet': '
|
|
764
|
+
'update.pubGet': 'Installing Flutter packages (flutter pub get)...',
|
|
739
765
|
'update.pubGetDone': 'Dependencies updated',
|
|
740
|
-
'update.pubGetFailed': '
|
|
741
|
-
'update.buildRunner': '
|
|
766
|
+
'update.pubGetFailed': 'Failed to install Flutter packages — run `flutter pub get` manually',
|
|
767
|
+
'update.buildRunner': 'Generating code (Riverpod/Freezed)...',
|
|
742
768
|
'update.buildRunnerDone': 'Code generation complete',
|
|
743
|
-
'update.buildRunnerFailed': '
|
|
769
|
+
'update.buildRunnerFailed': 'Code generation failed — run `dart run build_runner build` manually',
|
|
744
770
|
'update.success': 'Feature "{module}" updated successfully.',
|
|
745
771
|
'update.componentsSuccess': 'Base components updated successfully.',
|
|
746
772
|
'update.coreSuccess': 'Core files updated successfully.',
|
|
773
|
+
'check.intro': 'Kasy Check — Push Notifications',
|
|
774
|
+
'check.firebase.detected': 'Firebase backend',
|
|
775
|
+
'check.firebase.adcInfo': 'Firebase uses Application Default Credentials — no extra setup needed.',
|
|
776
|
+
'check.apns.warn': 'iOS push requires APNs Key (cannot be verified via CLI)',
|
|
777
|
+
'check.apns.where': 'Firebase Console → Cloud Messaging → iOS app → APNs Authentication Key',
|
|
778
|
+
'check.done': 'Done',
|
|
779
|
+
'check.notKasy': 'This directory does not look like a Kasy project.',
|
|
780
|
+
'check.aborted': 'Aborted',
|
|
781
|
+
'check.supabase.notLinked': 'Supabase project not linked',
|
|
782
|
+
'check.supabase.notLinkedHint': 'run: supabase link --project-ref YOUR_REF',
|
|
783
|
+
'check.supabase.linked': 'Project linked',
|
|
784
|
+
'check.spin.secrets': 'Checking secrets…',
|
|
785
|
+
'check.spin.secretsDone': 'Secrets checked',
|
|
786
|
+
'check.secrets.listFailed': 'Could not list secrets',
|
|
787
|
+
'check.secrets.checkLogin': 'verify: supabase login',
|
|
788
|
+
'check.fbProjId.ok': 'FIREBASE_PROJECT_ID configured',
|
|
789
|
+
'check.fbProjId.missing': 'FIREBASE_PROJECT_ID missing',
|
|
790
|
+
'check.fbProjId.fixHint': 'Fix: supabase secrets set FIREBASE_PROJECT_ID="{id}"',
|
|
791
|
+
'check.fbProjId.fixed': 'FIREBASE_PROJECT_ID → set automatically',
|
|
792
|
+
'check.fbProjId.fixFailed': 'FIREBASE_PROJECT_ID → failed to set',
|
|
793
|
+
'check.fbSak.ok': 'FIREBASE_SERVICE_ACCOUNT_JSON configured',
|
|
794
|
+
'check.fbSak.missing': 'FIREBASE_SERVICE_ACCOUNT_JSON missing',
|
|
795
|
+
'check.fbSak.spin': 'Generating and setting FCM key…',
|
|
796
|
+
'check.fbSak.spinDone': 'FCM key generated',
|
|
797
|
+
'check.fbSak.fixed': 'FIREBASE_SERVICE_ACCOUNT_JSON → set automatically',
|
|
798
|
+
'check.fbSak.fixFailed': 'FIREBASE_SERVICE_ACCOUNT_JSON → failed to set',
|
|
799
|
+
'check.fbSak.genFailed': 'FIREBASE_SERVICE_ACCOUNT_JSON → could not generate key',
|
|
800
|
+
'check.fbSak.manual': "Manual: Firebase Console → Settings → Service accounts → Generate key\nThen: supabase secrets set FIREBASE_SERVICE_ACCOUNT_JSON='$(cat key.json)'",
|
|
801
|
+
'check.fbSak.hint': "Auto-fix: kasy check --fix\nOr manually: Firebase Console → Settings → Service accounts → Generate key\nThen: supabase secrets set FIREBASE_SERVICE_ACCOUNT_JSON='$(cat key.json)'",
|
|
802
|
+
'check.fn.spin': 'Checking edge functions…',
|
|
803
|
+
'check.fn.spinDone': 'Edge functions checked',
|
|
804
|
+
'check.fn.listFailed': 'Could not list edge functions',
|
|
805
|
+
'check.fn.deployed': 'Edge function send-push-notification deployed',
|
|
806
|
+
'check.fn.missing': 'Edge function send-push-notification not deployed',
|
|
807
|
+
'check.fn.deploySpin': 'Deploying send-push-notification…',
|
|
808
|
+
'check.fn.deployDone': 'send-push-notification → deployed automatically',
|
|
809
|
+
'check.fn.deployFailed': 'send-push-notification → deploy failed',
|
|
810
|
+
'check.fn.hint': 'Auto-fix: kasy check --fix\nOr manually: supabase functions deploy send-push-notification',
|
|
811
|
+
'deploy.firebase.intro': 'Deploy — Firebase',
|
|
812
|
+
'deploy.firebase.spin': 'Deploying Firebase...',
|
|
813
|
+
'deploy.firebase.spinDone': 'Firebase deploy completed',
|
|
814
|
+
'deploy.apns.title': 'iOS push: configure the APNs Key in Firebase Console',
|
|
815
|
+
'deploy.apns.step1': '1. Apple Developer Portal → Keys → create APNs Key (.p8)',
|
|
816
|
+
'deploy.apns.step2': '2. Firebase Console → Cloud Messaging → iOS app → upload APNs Key',
|
|
817
|
+
'deploy.supabase.intro': 'Deploy — Supabase',
|
|
818
|
+
'deploy.supabase.notLinked': 'Supabase project not linked in this directory.',
|
|
819
|
+
'deploy.supabase.linkHint': 'Run: supabase link --project-ref YOUR_PROJECT_REF',
|
|
820
|
+
'deploy.supabase.projectRef': 'Project ref: {ref}',
|
|
821
|
+
'deploy.supabase.sakAlready': 'FIREBASE_SERVICE_ACCOUNT_JSON already configured',
|
|
822
|
+
'deploy.supabase.sakSpin': 'Generating FCM key (Service Account)…',
|
|
823
|
+
'deploy.supabase.sakSpinDone': 'FCM key generated',
|
|
824
|
+
'deploy.supabase.sakManual': "Configure manually: supabase secrets set FIREBASE_SERVICE_ACCOUNT_JSON='...'",
|
|
825
|
+
'deploy.supabase.sakNoGS': 'google-services.json not found — configure manually',
|
|
826
|
+
'deploy.supabase.fnSpin': 'Deploying edge functions…',
|
|
827
|
+
'deploy.supabase.fnSpinDone': 'Edge functions processed',
|
|
828
|
+
'deploy.supabase.fnNone': 'edge functions (none found)',
|
|
829
|
+
'deploy.outro': 'Deploy completed',
|
|
747
830
|
},
|
|
748
831
|
pt: {
|
|
749
832
|
'cli.tagline': 'Crie apps móveis sem dor de configuração',
|
|
@@ -799,7 +882,7 @@ const MESSAGES = {
|
|
|
799
882
|
'new.checks.environment.done': 'Ambiente pronto',
|
|
800
883
|
'setup.checks.backend.checking': 'Verificando ferramentas {backend}',
|
|
801
884
|
'setup.checks.backend.done': 'Ferramentas {backend} prontas',
|
|
802
|
-
'new.checks.firebaseForPush': 'Atenção: Firebase CLI é obrigatório para notificações push (FCM) em todos os backends.',
|
|
885
|
+
'new.checks.firebaseForPush': 'Atenção: Firebase CLI é obrigatório para notificações push (Firebase Cloud Messaging / FCM) em todos os backends.',
|
|
803
886
|
'new.checks.requiredBlock': 'Ferramentas obrigatórias não encontradas. Instale-as para continuar.',
|
|
804
887
|
'new.checks.installFirebase': 'Firebase: npm i -g firebase-tools && firebase login. FlutterFire: dart pub global activate flutterfire_cli',
|
|
805
888
|
'new.checks.installSupabase': 'Supabase: npm i -g supabase (ou brew install supabase/tap/supabase) && supabase login',
|
|
@@ -1364,6 +1447,32 @@ const MESSAGES = {
|
|
|
1364
1447
|
// docs command
|
|
1365
1448
|
'cli.command.docs.description': 'Abre a documentação completa',
|
|
1366
1449
|
|
|
1450
|
+
// splash command
|
|
1451
|
+
'cli.command.splash.description': 'Troca os logos da splash (claro/escuro) e regenera os assets nativos',
|
|
1452
|
+
'splash.intro': 'Splash screen',
|
|
1453
|
+
'splash.validating': 'Validando arquivos PNG...',
|
|
1454
|
+
'splash.validated': 'PNGs estão bons',
|
|
1455
|
+
'splash.copying': 'Copiando logos para assets/images/...',
|
|
1456
|
+
'splash.copied': 'Logos copiados',
|
|
1457
|
+
'splash.generating': 'Regenerando splash nativa (Android, iOS, Web)...',
|
|
1458
|
+
'splash.generated': 'Splash nativa regenerada',
|
|
1459
|
+
'splash.done': 'Pronto. Rode "flutter run" para ver a nova splash.',
|
|
1460
|
+
'splash.warn.title': 'Avisos',
|
|
1461
|
+
'splash.warn.noAlphaLight': '{path} não tem canal alpha (fundo transparente). O logo vai aparecer com fundo sólido em vez de transparente.',
|
|
1462
|
+
'splash.warn.noAlphaDark': '{path} não tem canal alpha (fundo transparente). O logo vai aparecer com fundo sólido em vez de transparente.',
|
|
1463
|
+
'splash.warn.smallLight': 'Logo claro tem {w}x{h}. Recomendado pelo menos 768x768 para evitar bordas borradas.',
|
|
1464
|
+
'splash.warn.smallDark': 'Logo escuro tem {w}x{h}. Recomendado pelo menos 768x768 para evitar bordas borradas.',
|
|
1465
|
+
'splash.summary.title': 'Salvo',
|
|
1466
|
+
'splash.summary.light': 'Modo claro',
|
|
1467
|
+
'splash.summary.dark': 'Modo escuro',
|
|
1468
|
+
'splash.skipGenerate.title': 'Geração pulada',
|
|
1469
|
+
'splash.skipGenerate.hint': 'Rode `dart run flutter_native_splash:create` quando quiser regenerar.',
|
|
1470
|
+
'splash.error.notKasyProject': 'pubspec.yaml não encontrado. Rode este comando dentro de um projeto Flutter/Kasy.',
|
|
1471
|
+
'splash.error.bothRequired': '--light e --dark são obrigatórios.',
|
|
1472
|
+
'splash.error.fileNotFound': 'Arquivo não encontrado: {path}',
|
|
1473
|
+
'splash.error.notPng': 'Um dos arquivos não é um PNG válido.',
|
|
1474
|
+
'splash.error.generateFailed': 'flutter_native_splash:create falhou. Veja a saída acima.',
|
|
1475
|
+
|
|
1367
1476
|
// notifications command
|
|
1368
1477
|
'cli.command.notifications.description': 'Edita os textos das notificações locais e lembretes',
|
|
1369
1478
|
'cli.command.notifications.text.description': 'Define títulos e mensagens das notificações locais',
|
|
@@ -1394,15 +1503,15 @@ const MESSAGES = {
|
|
|
1394
1503
|
'add.error.unknownModule': 'Feature desconhecida: {module}\nDisponiveis: {list}',
|
|
1395
1504
|
'add.alreadyActive': 'A feature "{module}" já está ativa neste projeto.',
|
|
1396
1505
|
'add.applying': 'Adicionando feature: {module}',
|
|
1397
|
-
'add.applyingPatch': 'Aplicando
|
|
1506
|
+
'add.applyingPatch': 'Aplicando mudanças da feature...',
|
|
1398
1507
|
'add.patchApplied': 'Patch aplicado',
|
|
1399
1508
|
'add.patchFailed': 'Patch falhou — verifique a saída acima',
|
|
1400
|
-
'add.pubGet': '
|
|
1509
|
+
'add.pubGet': 'Instalando pacotes do Flutter (flutter pub get)...',
|
|
1401
1510
|
'add.pubGetDone': 'Dependencias atualizadas',
|
|
1402
|
-
'add.pubGetFailed': '
|
|
1403
|
-
'add.buildRunner': '
|
|
1511
|
+
'add.pubGetFailed': 'Falha ao instalar pacotes do Flutter — execute `flutter pub get` manualmente',
|
|
1512
|
+
'add.buildRunner': 'Gerando código (Riverpod/Freezed)...',
|
|
1404
1513
|
'add.buildRunnerDone': 'Geração de código concluída',
|
|
1405
|
-
'add.buildRunnerFailed': '
|
|
1514
|
+
'add.buildRunnerFailed': 'Geração de código falhou — execute `dart run build_runner build` manualmente',
|
|
1406
1515
|
'add.success': 'Feature "{module}" adicionada com sucesso.',
|
|
1407
1516
|
'add.cancelled': 'Cancelado.',
|
|
1408
1517
|
'add.prompt.sentryDsn': 'Sentry DSN (deixe em branco para configurar depois):',
|
|
@@ -1437,12 +1546,12 @@ const MESSAGES = {
|
|
|
1437
1546
|
'remove.confirm': 'Remover a feature "{module}"? Isso vai deletar arquivos e dependências.',
|
|
1438
1547
|
'remove.cancelled': 'Cancelado.',
|
|
1439
1548
|
'remove.removing': 'Removendo feature: {module}',
|
|
1440
|
-
'remove.pubGet': '
|
|
1549
|
+
'remove.pubGet': 'Instalando pacotes do Flutter (flutter pub get)...',
|
|
1441
1550
|
'remove.pubGetDone': 'Dependencias atualizadas',
|
|
1442
|
-
'remove.pubGetFailed': '
|
|
1443
|
-
'remove.buildRunner': '
|
|
1551
|
+
'remove.pubGetFailed': 'Falha ao instalar pacotes do Flutter — execute `flutter pub get` manualmente',
|
|
1552
|
+
'remove.buildRunner': 'Gerando código (Riverpod/Freezed)...',
|
|
1444
1553
|
'remove.buildRunnerDone': 'Geração de código concluída',
|
|
1445
|
-
'remove.buildRunnerFailed': '
|
|
1554
|
+
'remove.buildRunnerFailed': 'Geração de código falhou — execute `dart run build_runner build` manualmente',
|
|
1446
1555
|
'remove.success': 'Feature "{module}" removida com sucesso.',
|
|
1447
1556
|
'remove.warn.ci': 'Arquivos de CI removidos. Se tinha workflows customizados, restaure-os pelo git.',
|
|
1448
1557
|
'remove.warn.sentry.shared': 'sentry_flutter mantido — ainda necessário para features ativas (revenuecat/facebook).',
|
|
@@ -1475,15 +1584,72 @@ const MESSAGES = {
|
|
|
1475
1584
|
'update.applyComponentsFailed': 'Falha ao aplicar atualização dos componentes base',
|
|
1476
1585
|
'update.noPatch': 'Feature "{module}" não tem arquivos para atualizar (feature so de configuração).',
|
|
1477
1586
|
'update.noComponentFiles': 'Nenhum arquivo de componente base foi encontrado para atualizar.',
|
|
1478
|
-
'update.pubGet': '
|
|
1587
|
+
'update.pubGet': 'Instalando pacotes do Flutter (flutter pub get)...',
|
|
1479
1588
|
'update.pubGetDone': 'Dependencias atualizadas',
|
|
1480
|
-
'update.pubGetFailed': '
|
|
1481
|
-
'update.buildRunner': '
|
|
1589
|
+
'update.pubGetFailed': 'Falha ao instalar pacotes do Flutter — execute `flutter pub get` manualmente',
|
|
1590
|
+
'update.buildRunner': 'Gerando código (Riverpod/Freezed)...',
|
|
1482
1591
|
'update.buildRunnerDone': 'Geração de código concluída',
|
|
1483
|
-
'update.buildRunnerFailed': '
|
|
1592
|
+
'update.buildRunnerFailed': 'Geração de código falhou — execute `dart run build_runner build` manualmente',
|
|
1484
1593
|
'update.success': 'Feature "{module}" atualizada com sucesso.',
|
|
1485
1594
|
'update.componentsSuccess': 'Componentes base atualizados com sucesso.',
|
|
1486
1595
|
'update.coreSuccess': 'Arquivos de core atualizados com sucesso.',
|
|
1596
|
+
'check.intro': 'Kasy Check — Notificações Push',
|
|
1597
|
+
'check.firebase.detected': 'Backend Firebase',
|
|
1598
|
+
'check.firebase.adcInfo': 'Firebase usa Application Default Credentials — nenhuma configuração extra necessária.',
|
|
1599
|
+
'check.apns.warn': 'Push iOS requer APNs Key (não verificável via CLI)',
|
|
1600
|
+
'check.apns.where': 'Firebase Console → Cloud Messaging → app iOS → Chave de autenticação APNs',
|
|
1601
|
+
'check.done': 'Pronto',
|
|
1602
|
+
'check.notKasy': 'Esse diretório não parece ser um projeto Kasy.',
|
|
1603
|
+
'check.aborted': 'Cancelado',
|
|
1604
|
+
'check.supabase.notLinked': 'Projeto Supabase não vinculado',
|
|
1605
|
+
'check.supabase.notLinkedHint': 'execute: supabase link --project-ref SEU_REF',
|
|
1606
|
+
'check.supabase.linked': 'Projeto vinculado',
|
|
1607
|
+
'check.spin.secrets': 'Verificando secrets…',
|
|
1608
|
+
'check.spin.secretsDone': 'Secrets verificados',
|
|
1609
|
+
'check.secrets.listFailed': 'Não foi possível listar secrets',
|
|
1610
|
+
'check.secrets.checkLogin': 'verifique: supabase login',
|
|
1611
|
+
'check.fbProjId.ok': 'FIREBASE_PROJECT_ID configurado',
|
|
1612
|
+
'check.fbProjId.missing': 'FIREBASE_PROJECT_ID ausente',
|
|
1613
|
+
'check.fbProjId.fixHint': 'Corrija: supabase secrets set FIREBASE_PROJECT_ID="{id}"',
|
|
1614
|
+
'check.fbProjId.fixed': 'FIREBASE_PROJECT_ID → configurado automaticamente',
|
|
1615
|
+
'check.fbProjId.fixFailed': 'FIREBASE_PROJECT_ID → falhou ao configurar',
|
|
1616
|
+
'check.fbSak.ok': 'FIREBASE_SERVICE_ACCOUNT_JSON configurado',
|
|
1617
|
+
'check.fbSak.missing': 'FIREBASE_SERVICE_ACCOUNT_JSON ausente',
|
|
1618
|
+
'check.fbSak.spin': 'Gerando e configurando chave FCM…',
|
|
1619
|
+
'check.fbSak.spinDone': 'Chave FCM gerada',
|
|
1620
|
+
'check.fbSak.fixed': 'FIREBASE_SERVICE_ACCOUNT_JSON → configurado automaticamente',
|
|
1621
|
+
'check.fbSak.fixFailed': 'FIREBASE_SERVICE_ACCOUNT_JSON → falhou ao configurar',
|
|
1622
|
+
'check.fbSak.genFailed': 'FIREBASE_SERVICE_ACCOUNT_JSON → não foi possível gerar chave',
|
|
1623
|
+
'check.fbSak.manual': "Manual: Firebase Console → Configurações → Contas de serviço → Gerar chave\nDepois: supabase secrets set FIREBASE_SERVICE_ACCOUNT_JSON='$(cat chave.json)'",
|
|
1624
|
+
'check.fbSak.hint': "Corrija automaticamente: kasy check --fix\nOu manualmente: Firebase Console → Configurações → Contas de serviço → Gerar chave\nDepois: supabase secrets set FIREBASE_SERVICE_ACCOUNT_JSON='$(cat chave.json)'",
|
|
1625
|
+
'check.fn.spin': 'Verificando edge functions…',
|
|
1626
|
+
'check.fn.spinDone': 'Edge functions verificadas',
|
|
1627
|
+
'check.fn.listFailed': 'Não foi possível listar edge functions',
|
|
1628
|
+
'check.fn.deployed': 'Edge function send-push-notification deployada',
|
|
1629
|
+
'check.fn.missing': 'Edge function send-push-notification não deployada',
|
|
1630
|
+
'check.fn.deploySpin': 'Publicando send-push-notification…',
|
|
1631
|
+
'check.fn.deployDone': 'send-push-notification → deployada automaticamente',
|
|
1632
|
+
'check.fn.deployFailed': 'send-push-notification → falhou no deploy',
|
|
1633
|
+
'check.fn.hint': 'Corrija automaticamente: kasy check --fix\nOu manualmente: supabase functions deploy send-push-notification',
|
|
1634
|
+
'deploy.firebase.intro': 'Deploy — Firebase',
|
|
1635
|
+
'deploy.firebase.spin': 'Publicando no Firebase...',
|
|
1636
|
+
'deploy.firebase.spinDone': 'Deploy do Firebase concluído',
|
|
1637
|
+
'deploy.apns.title': 'Push iOS: configure a APNs Key no Firebase Console',
|
|
1638
|
+
'deploy.apns.step1': '1. Apple Developer Portal → Keys → criar APNs Key (.p8)',
|
|
1639
|
+
'deploy.apns.step2': '2. Firebase Console → Cloud Messaging → app iOS → upload da APNs Key',
|
|
1640
|
+
'deploy.supabase.intro': 'Deploy — Supabase',
|
|
1641
|
+
'deploy.supabase.notLinked': 'Projeto Supabase não está vinculado neste diretório.',
|
|
1642
|
+
'deploy.supabase.linkHint': 'Execute: supabase link --project-ref SEU_PROJECT_REF',
|
|
1643
|
+
'deploy.supabase.projectRef': 'Project ref: {ref}',
|
|
1644
|
+
'deploy.supabase.sakAlready': 'FIREBASE_SERVICE_ACCOUNT_JSON já configurado',
|
|
1645
|
+
'deploy.supabase.sakSpin': 'Gerando chave FCM (Service Account)…',
|
|
1646
|
+
'deploy.supabase.sakSpinDone': 'Chave FCM gerada',
|
|
1647
|
+
'deploy.supabase.sakManual': "Configure manualmente: supabase secrets set FIREBASE_SERVICE_ACCOUNT_JSON='...'",
|
|
1648
|
+
'deploy.supabase.sakNoGS': 'google-services.json não encontrado — configure manualmente',
|
|
1649
|
+
'deploy.supabase.fnSpin': 'Publicando edge functions…',
|
|
1650
|
+
'deploy.supabase.fnSpinDone': 'Edge functions processadas',
|
|
1651
|
+
'deploy.supabase.fnNone': 'edge functions (nenhuma encontrada)',
|
|
1652
|
+
'deploy.outro': 'Deploy concluído',
|
|
1487
1653
|
},
|
|
1488
1654
|
es: {
|
|
1489
1655
|
'cli.tagline': 'Crea apps móviles sin dolor de configuración',
|
|
@@ -1539,7 +1705,7 @@ const MESSAGES = {
|
|
|
1539
1705
|
'new.checks.environment.done': 'Entorno listo',
|
|
1540
1706
|
'setup.checks.backend.checking': 'Verificando herramientas {backend}',
|
|
1541
1707
|
'setup.checks.backend.done': 'Herramientas {backend} listas',
|
|
1542
|
-
'new.checks.firebaseForPush': 'Nota: Firebase CLI es obligatorio para notificaciones push (FCM) en todos los backends.',
|
|
1708
|
+
'new.checks.firebaseForPush': 'Nota: Firebase CLI es obligatorio para notificaciones push (Firebase Cloud Messaging / FCM) en todos los backends.',
|
|
1543
1709
|
'new.checks.requiredBlock': 'Faltan herramientas obligatorias. Instalalas para continuar.',
|
|
1544
1710
|
'new.checks.installFirebase': 'Firebase: npm i -g firebase-tools && firebase login. FlutterFire: dart pub global activate flutterfire_cli',
|
|
1545
1711
|
'new.checks.installSupabase': 'Supabase: npm i -g supabase (o brew install supabase/tap/supabase) && supabase login',
|
|
@@ -2104,6 +2270,32 @@ const MESSAGES = {
|
|
|
2104
2270
|
// docs command
|
|
2105
2271
|
'cli.command.docs.description': 'Abre la documentación completa',
|
|
2106
2272
|
|
|
2273
|
+
// splash command
|
|
2274
|
+
'cli.command.splash.description': 'Cambia los logos del splash (claro/oscuro) y regenera los assets nativos',
|
|
2275
|
+
'splash.intro': 'Splash screen',
|
|
2276
|
+
'splash.validating': 'Validando archivos PNG...',
|
|
2277
|
+
'splash.validated': 'Los PNGs están bien',
|
|
2278
|
+
'splash.copying': 'Copiando logos a assets/images/...',
|
|
2279
|
+
'splash.copied': 'Logos copiados',
|
|
2280
|
+
'splash.generating': 'Regenerando splash nativo (Android, iOS, Web)...',
|
|
2281
|
+
'splash.generated': 'Splash nativo regenerado',
|
|
2282
|
+
'splash.done': 'Listo. Ejecuta "flutter run" para ver el nuevo splash.',
|
|
2283
|
+
'splash.warn.title': 'Avisos',
|
|
2284
|
+
'splash.warn.noAlphaLight': '{path} no tiene canal alpha (fondo transparente). El logo aparecerá con fondo sólido en vez de transparente.',
|
|
2285
|
+
'splash.warn.noAlphaDark': '{path} no tiene canal alpha (fondo transparente). El logo aparecerá con fondo sólido en vez de transparente.',
|
|
2286
|
+
'splash.warn.smallLight': 'El logo claro mide {w}x{h}. Lo recomendado es al menos 768x768 para evitar bordes borrosos.',
|
|
2287
|
+
'splash.warn.smallDark': 'El logo oscuro mide {w}x{h}. Lo recomendado es al menos 768x768 para evitar bordes borrosos.',
|
|
2288
|
+
'splash.summary.title': 'Guardado',
|
|
2289
|
+
'splash.summary.light': 'Modo claro',
|
|
2290
|
+
'splash.summary.dark': 'Modo oscuro',
|
|
2291
|
+
'splash.skipGenerate.title': 'Generación omitida',
|
|
2292
|
+
'splash.skipGenerate.hint': 'Ejecuta `dart run flutter_native_splash:create` cuando estés listo.',
|
|
2293
|
+
'splash.error.notKasyProject': 'No se encontró pubspec.yaml. Ejecuta este comando dentro de un proyecto Flutter/Kasy.',
|
|
2294
|
+
'splash.error.bothRequired': '--light y --dark son obligatorios.',
|
|
2295
|
+
'splash.error.fileNotFound': 'Archivo no encontrado: {path}',
|
|
2296
|
+
'splash.error.notPng': 'Uno de los archivos no es un PNG válido.',
|
|
2297
|
+
'splash.error.generateFailed': 'flutter_native_splash:create falló. Revisa la salida.',
|
|
2298
|
+
|
|
2107
2299
|
// notifications command
|
|
2108
2300
|
'cli.command.notifications.description': 'Edita los textos de las notificaciones locales y recordatorios',
|
|
2109
2301
|
'cli.command.notifications.text.description': 'Define titulos y mensajes de notificaciones locales',
|
|
@@ -2134,15 +2326,15 @@ const MESSAGES = {
|
|
|
2134
2326
|
'add.error.unknownModule': 'Feature desconocida: {module}\nDisponibles: {list}',
|
|
2135
2327
|
'add.alreadyActive': 'La feature "{module}" ya está activa en este proyecto.',
|
|
2136
2328
|
'add.applying': 'Agregando feature: {module}',
|
|
2137
|
-
'add.applyingPatch': 'Aplicando
|
|
2329
|
+
'add.applyingPatch': 'Aplicando cambios de la feature...',
|
|
2138
2330
|
'add.patchApplied': 'Patch aplicado',
|
|
2139
2331
|
'add.patchFailed': 'Patch fallo — revisa la salida anterior',
|
|
2140
|
-
'add.pubGet': '
|
|
2332
|
+
'add.pubGet': 'Instalando paquetes de Flutter (flutter pub get)...',
|
|
2141
2333
|
'add.pubGetDone': 'Dependencias actualizadas',
|
|
2142
|
-
'add.pubGetFailed': '
|
|
2143
|
-
'add.buildRunner': '
|
|
2334
|
+
'add.pubGetFailed': 'Falló al instalar paquetes de Flutter — ejecuta `flutter pub get` manualmente',
|
|
2335
|
+
'add.buildRunner': 'Generando código (Riverpod/Freezed)...',
|
|
2144
2336
|
'add.buildRunnerDone': 'Generación de código completada',
|
|
2145
|
-
'add.buildRunnerFailed': '
|
|
2337
|
+
'add.buildRunnerFailed': 'Generación de código falló — ejecuta `dart run build_runner build` manualmente',
|
|
2146
2338
|
'add.success': 'Feature "{module}" agregada exitosamente.',
|
|
2147
2339
|
'add.cancelled': 'Cancelado.',
|
|
2148
2340
|
'add.prompt.sentryDsn': 'Sentry DSN (deja en blanco para configurar después):',
|
|
@@ -2177,12 +2369,12 @@ const MESSAGES = {
|
|
|
2177
2369
|
'remove.confirm': 'Eliminar la feature "{module}"? Esto borrara archivos y dependencias.',
|
|
2178
2370
|
'remove.cancelled': 'Cancelado.',
|
|
2179
2371
|
'remove.removing': 'Eliminando feature: {module}',
|
|
2180
|
-
'remove.pubGet': '
|
|
2372
|
+
'remove.pubGet': 'Instalando paquetes de Flutter (flutter pub get)...',
|
|
2181
2373
|
'remove.pubGetDone': 'Dependencias actualizadas',
|
|
2182
|
-
'remove.pubGetFailed': '
|
|
2183
|
-
'remove.buildRunner': '
|
|
2374
|
+
'remove.pubGetFailed': 'Falló al instalar paquetes de Flutter — ejecuta `flutter pub get` manualmente',
|
|
2375
|
+
'remove.buildRunner': 'Generando código (Riverpod/Freezed)...',
|
|
2184
2376
|
'remove.buildRunnerDone': 'Generación de código completada',
|
|
2185
|
-
'remove.buildRunnerFailed': '
|
|
2377
|
+
'remove.buildRunnerFailed': 'Generación de código falló — ejecuta `dart run build_runner build` manualmente',
|
|
2186
2378
|
'remove.success': 'Feature "{module}" eliminada exitosamente.',
|
|
2187
2379
|
'remove.warn.ci': 'Archivos de CI eliminados. Si tenias workflows personalizados, restauralos desde git.',
|
|
2188
2380
|
'remove.warn.sentry.shared': 'sentry_flutter conservado — todavia requerido por features activas (revenuecat/facebook).',
|
|
@@ -2215,15 +2407,72 @@ const MESSAGES = {
|
|
|
2215
2407
|
'update.applyComponentsFailed': 'Error al aplicar actualización de componentes base',
|
|
2216
2408
|
'update.noPatch': 'La feature "{module}" no tiene archivos para actualizar (feature solo de configuración).',
|
|
2217
2409
|
'update.noComponentFiles': 'No se encontraron archivos de componentes base para actualizar.',
|
|
2218
|
-
'update.pubGet': '
|
|
2410
|
+
'update.pubGet': 'Instalando paquetes de Flutter (flutter pub get)...',
|
|
2219
2411
|
'update.pubGetDone': 'Dependencias actualizadas',
|
|
2220
|
-
'update.pubGetFailed': '
|
|
2221
|
-
'update.buildRunner': '
|
|
2412
|
+
'update.pubGetFailed': 'Falló al instalar paquetes de Flutter — ejecuta `flutter pub get` manualmente',
|
|
2413
|
+
'update.buildRunner': 'Generando código (Riverpod/Freezed)...',
|
|
2222
2414
|
'update.buildRunnerDone': 'Generación de código completada',
|
|
2223
|
-
'update.buildRunnerFailed': '
|
|
2415
|
+
'update.buildRunnerFailed': 'Generación de código falló — ejecuta `dart run build_runner build` manualmente',
|
|
2224
2416
|
'update.success': 'Feature "{module}" actualizada exitosamente.',
|
|
2225
2417
|
'update.componentsSuccess': 'Componentes base actualizados exitosamente.',
|
|
2226
2418
|
'update.coreSuccess': 'Archivos de core actualizados exitosamente.',
|
|
2419
|
+
'check.intro': 'Kasy Check — Notificaciones Push',
|
|
2420
|
+
'check.firebase.detected': 'Backend Firebase',
|
|
2421
|
+
'check.firebase.adcInfo': 'Firebase usa Application Default Credentials — no requiere configuración extra.',
|
|
2422
|
+
'check.apns.warn': 'Push iOS requiere APNs Key (no verificable via CLI)',
|
|
2423
|
+
'check.apns.where': 'Firebase Console → Cloud Messaging → app iOS → Clave de autenticación APNs',
|
|
2424
|
+
'check.done': 'Listo',
|
|
2425
|
+
'check.notKasy': 'Este directorio no parece ser un proyecto Kasy.',
|
|
2426
|
+
'check.aborted': 'Cancelado',
|
|
2427
|
+
'check.supabase.notLinked': 'Proyecto Supabase no vinculado',
|
|
2428
|
+
'check.supabase.notLinkedHint': 'ejecuta: supabase link --project-ref TU_REF',
|
|
2429
|
+
'check.supabase.linked': 'Proyecto vinculado',
|
|
2430
|
+
'check.spin.secrets': 'Verificando secrets…',
|
|
2431
|
+
'check.spin.secretsDone': 'Secrets verificados',
|
|
2432
|
+
'check.secrets.listFailed': 'No se pudo listar los secrets',
|
|
2433
|
+
'check.secrets.checkLogin': 'verifica: supabase login',
|
|
2434
|
+
'check.fbProjId.ok': 'FIREBASE_PROJECT_ID configurado',
|
|
2435
|
+
'check.fbProjId.missing': 'FIREBASE_PROJECT_ID ausente',
|
|
2436
|
+
'check.fbProjId.fixHint': 'Corrige: supabase secrets set FIREBASE_PROJECT_ID="{id}"',
|
|
2437
|
+
'check.fbProjId.fixed': 'FIREBASE_PROJECT_ID → configurado automáticamente',
|
|
2438
|
+
'check.fbProjId.fixFailed': 'FIREBASE_PROJECT_ID → falló al configurar',
|
|
2439
|
+
'check.fbSak.ok': 'FIREBASE_SERVICE_ACCOUNT_JSON configurado',
|
|
2440
|
+
'check.fbSak.missing': 'FIREBASE_SERVICE_ACCOUNT_JSON ausente',
|
|
2441
|
+
'check.fbSak.spin': 'Generando y configurando clave FCM…',
|
|
2442
|
+
'check.fbSak.spinDone': 'Clave FCM generada',
|
|
2443
|
+
'check.fbSak.fixed': 'FIREBASE_SERVICE_ACCOUNT_JSON → configurado automáticamente',
|
|
2444
|
+
'check.fbSak.fixFailed': 'FIREBASE_SERVICE_ACCOUNT_JSON → falló al configurar',
|
|
2445
|
+
'check.fbSak.genFailed': 'FIREBASE_SERVICE_ACCOUNT_JSON → no se pudo generar la clave',
|
|
2446
|
+
'check.fbSak.manual': "Manual: Firebase Console → Configuración → Cuentas de servicio → Generar clave\nLuego: supabase secrets set FIREBASE_SERVICE_ACCOUNT_JSON='$(cat clave.json)'",
|
|
2447
|
+
'check.fbSak.hint': "Corrige automáticamente: kasy check --fix\nO manualmente: Firebase Console → Configuración → Cuentas de servicio → Generar clave\nLuego: supabase secrets set FIREBASE_SERVICE_ACCOUNT_JSON='$(cat clave.json)'",
|
|
2448
|
+
'check.fn.spin': 'Verificando edge functions…',
|
|
2449
|
+
'check.fn.spinDone': 'Edge functions verificadas',
|
|
2450
|
+
'check.fn.listFailed': 'No se pudo listar edge functions',
|
|
2451
|
+
'check.fn.deployed': 'Edge function send-push-notification publicada',
|
|
2452
|
+
'check.fn.missing': 'Edge function send-push-notification no publicada',
|
|
2453
|
+
'check.fn.deploySpin': 'Publicando send-push-notification…',
|
|
2454
|
+
'check.fn.deployDone': 'send-push-notification → publicada automáticamente',
|
|
2455
|
+
'check.fn.deployFailed': 'send-push-notification → falló el deploy',
|
|
2456
|
+
'check.fn.hint': 'Corrige automáticamente: kasy check --fix\nO manualmente: supabase functions deploy send-push-notification',
|
|
2457
|
+
'deploy.firebase.intro': 'Deploy — Firebase',
|
|
2458
|
+
'deploy.firebase.spin': 'Publicando en Firebase...',
|
|
2459
|
+
'deploy.firebase.spinDone': 'Deploy de Firebase completado',
|
|
2460
|
+
'deploy.apns.title': 'Push iOS: configura la APNs Key en Firebase Console',
|
|
2461
|
+
'deploy.apns.step1': '1. Apple Developer Portal → Keys → crear APNs Key (.p8)',
|
|
2462
|
+
'deploy.apns.step2': '2. Firebase Console → Cloud Messaging → app iOS → subir APNs Key',
|
|
2463
|
+
'deploy.supabase.intro': 'Deploy — Supabase',
|
|
2464
|
+
'deploy.supabase.notLinked': 'Proyecto Supabase no vinculado en este directorio.',
|
|
2465
|
+
'deploy.supabase.linkHint': 'Ejecuta: supabase link --project-ref TU_PROJECT_REF',
|
|
2466
|
+
'deploy.supabase.projectRef': 'Project ref: {ref}',
|
|
2467
|
+
'deploy.supabase.sakAlready': 'FIREBASE_SERVICE_ACCOUNT_JSON ya configurado',
|
|
2468
|
+
'deploy.supabase.sakSpin': 'Generando clave FCM (Service Account)…',
|
|
2469
|
+
'deploy.supabase.sakSpinDone': 'Clave FCM generada',
|
|
2470
|
+
'deploy.supabase.sakManual': "Configura manualmente: supabase secrets set FIREBASE_SERVICE_ACCOUNT_JSON='...'",
|
|
2471
|
+
'deploy.supabase.sakNoGS': 'google-services.json no encontrado — configura manualmente',
|
|
2472
|
+
'deploy.supabase.fnSpin': 'Publicando edge functions…',
|
|
2473
|
+
'deploy.supabase.fnSpinDone': 'Edge functions procesadas',
|
|
2474
|
+
'deploy.supabase.fnNone': 'edge functions (ninguna encontrada)',
|
|
2475
|
+
'deploy.outro': 'Deploy completado',
|
|
2227
2476
|
}
|
|
2228
2477
|
};
|
|
2229
2478
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kasy-cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.13.0",
|
|
4
4
|
"description": "CLI for scaffolding production-ready Flutter SaaS apps with Firebase, Supabase, or API REST backends.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"kasy": "./bin/kasy.js"
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"access": "public"
|
|
32
32
|
},
|
|
33
33
|
"scripts": {
|
|
34
|
-
"prepack": "node scripts/bundle-template.js",
|
|
34
|
+
"prepack": "node scripts/check-feature-patches.js && node scripts/bundle-template.js",
|
|
35
35
|
"start": "node ./bin/kasy.js",
|
|
36
36
|
"setup": "node ./bin/kasy.js setup",
|
|
37
37
|
"doctor": "node ./bin/kasy.js doctor",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
|
3
|
+
<item>
|
|
4
|
+
<bitmap android:gravity="fill" android:src="@drawable/background"/>
|
|
5
|
+
</item>
|
|
6
|
+
<item>
|
|
7
|
+
<bitmap android:gravity="center" android:src="@drawable/splash"/>
|
|
8
|
+
</item>
|
|
9
|
+
</layer-list>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
|
3
|
+
<item>
|
|
4
|
+
<bitmap android:gravity="fill" android:src="@drawable/background"/>
|
|
5
|
+
</item>
|
|
6
|
+
<item>
|
|
7
|
+
<bitmap android:gravity="center" android:src="@drawable/splash"/>
|
|
8
|
+
</item>
|
|
9
|
+
</layer-list>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/templates/firebase/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
<item name="android:windowFullscreen">true</item>
|
|
7
7
|
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
|
|
8
8
|
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
|
|
9
|
-
<item name="android:windowSplashScreenBackground">#
|
|
9
|
+
<item name="android:windowSplashScreenBackground">#000000</item>
|
|
10
|
+
<item name="android:windowSplashScreenAnimatedIcon">@drawable/android12splash</item>
|
|
10
11
|
</style>
|
|
11
12
|
<!-- Theme applied to the Android Window as soon as the process has started.
|
|
12
13
|
This theme determines the color of the Android Window while your
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
|
|
8
8
|
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
|
|
9
9
|
<item name="android:windowSplashScreenBackground">#FFFFFF</item>
|
|
10
|
+
<item name="android:windowSplashScreenAnimatedIcon">@drawable/android12splash</item>
|
|
10
11
|
</style>
|
|
11
12
|
<!-- Theme applied to the Android Window as soon as the process has started.
|
|
12
13
|
This theme determines the color of the Android Window while your
|
|
Binary file
|
|
Binary file
|