kasy-cli 1.37.0 → 1.37.1

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.
@@ -30,7 +30,7 @@
30
30
  "api/lib/features/subscriptions/api/entities/subscription_entity.dart": "20c1d75ed9d88acb96e94a592dcb4de0f63c792302ea07df53cebbdeb6d0cf7e",
31
31
  "api/lib/features/subscriptions/api/stripe_backend_api.dart": "e370bd05211462f2fc94c69af1749eb5330f997e9ec5e73e5c4e119999bf666f",
32
32
  "api/lib/features/subscriptions/api/subscription_api.dart": "c7484c9301d16245748025a3d420a89397e9e956b2211b7ed001c073ff2e4449",
33
- "api/README.md": "1f30fc1ebf8fe02df6f3ee2f94c17f4bb4952abd5b125312d2c43eb6374eb354",
33
+ "api/README.md": "3c3e4b7731ac6eb86f8fdce202ed7b7d681246bcf76fdb87b389e4c9dfdeac08",
34
34
  "supabase/android/app/src/main/AndroidManifest.xml": "0579c57068ee50d43837ef9c7bee884b6232e92975301c8305ce389282f68291",
35
35
  "supabase/ios/Runner/AppDelegate.swift": "9f1027a03ad1fef2dab45464fbd7e98364b6a9cb6d2a6abe770ee9c45fa19122",
36
36
  "supabase/lib/core/data/api/storage_api.dart": "d77fecc6923ea9544b6ec20571dcab5c8f3d38be81ec618b0cf4f1b08be7bbae",
@@ -62,5 +62,5 @@
62
62
  "supabase/lib/features/subscriptions/api/stripe_backend_api.dart": "e370bd05211462f2fc94c69af1749eb5330f997e9ec5e73e5c4e119999bf666f",
63
63
  "supabase/lib/features/subscriptions/api/subscription_api.dart": "c7484c9301d16245748025a3d420a89397e9e956b2211b7ed001c073ff2e4449",
64
64
  "supabase/lib/google_auth_options.dart": "9d3ab9be5928f3100b9b217864d916edd1223d186e60ed130c35628812cace66",
65
- "supabase/README.md": "1f30fc1ebf8fe02df6f3ee2f94c17f4bb4952abd5b125312d2c43eb6374eb354"
65
+ "supabase/README.md": "3c3e4b7731ac6eb86f8fdce202ed7b7d681246bcf76fdb87b389e4c9dfdeac08"
66
66
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kasy-cli",
3
- "version": "1.37.0",
3
+ "version": "1.37.1",
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"
@@ -41,15 +41,19 @@ colours, typography, spacing and dozens of ready widgets (`KasyButton`,
41
41
  `showKasyConfirmDialog`, …). Reuse one before writing a new widget. Full token
42
42
  reference: **`DESIGN_SYSTEM.md`**.
43
43
 
44
- **Responsiveness is deliberate, not improvised.** There are exactly three
45
- breakpoints and the type sizes are pinned per breakpoint, so the UI never
46
- oscillates or guesses:
44
+ **Responsiveness is deliberate, not improvised.** The responsive system
45
+ (`DeviceType` in `lib/core/widgets/responsive_layout.dart`) has four tiers and the
46
+ type sizes are pinned per breakpoint, so the UI never oscillates or guesses:
47
47
 
48
- | Breakpoint | Width | Notes |
49
- | ---------- | ---------- | ------------------------------------------------ |
50
- | Mobile | `< 768` | native iOS/Android + phone-width web |
51
- | Tablet | `768–1024` | |
52
- | Desktop | `>= 1024` | authored baseline |
48
+ | DeviceType | Width | Notes |
49
+ | ---------- | ------------ | ------------------------------------------------ |
50
+ | `small` | `< 768` | native iOS/Android + phone-width web |
51
+ | `medium` | `768–1023` | tablet |
52
+ | `large` | `1024–1279` | desktop, authored baseline |
53
+ | `xlarge` | `>= 1280` | wide desktop (web-scale design target, 1280) |
54
+
55
+ Typography collapses `large`+`xlarge` into one "desktop" tier (same sizes); the
56
+ `1280` boundary matters for the web render scale (its design target), not type.
53
57
 
54
58
  - **Typography** (`KasyTypeScale`): each role has an **explicit size per
55
59
  breakpoint** — headings are largest on desktop and step down on smaller
@@ -139,7 +143,7 @@ Recommended flow when the user wants newer kit code:
139
143
  2. Run the relevant command:
140
144
  - `kasy update` — shows what's new for the features in use
141
145
  - `kasy update core` / `kasy update components` — refreshes core files / UI components
142
- - `kasy update <feature>` — e.g. `revenuecat`, `ai_chat`, `auth` (re-applies that feature)
146
+ - `kasy update <feature>` — e.g. `revenuecat`, `ai_chat`, `widget` (re-applies that feature)
143
147
  3. The command overwrites the files and prints which ones changed.
144
148
  4. **Merge:** if the user had customized any overwritten file, reconcile their version
145
149
  (in the previous git commit) with the new kit version. As the in-project agent,
@@ -74,7 +74,7 @@ Force manually: `kasy run --rc=test` or `kasy run --rc=prod`. `--rc=auto` (defau
74
74
  To update, edit `.vscode/launch.json` or pass via command line:
75
75
 
76
76
  ```sh
77
- flutter run --dart-define=RC_ANDROID_API_KEY=your_key
77
+ flutter run --dart-define=RC_ANDROID_PROD_KEY=your_key
78
78
  ```
79
79
 
80
80
  ---
@@ -74,7 +74,7 @@ Forzar manualmente: `kasy run --rc=test` o `kasy run --rc=prod`. `--rc=auto` (po
74
74
  Para actualizar, edita `.vscode/launch.json` o pasa por línea de comandos:
75
75
 
76
76
  ```sh
77
- flutter run --dart-define=RC_ANDROID_API_KEY=tu_clave
77
+ flutter run --dart-define=RC_ANDROID_PROD_KEY=tu_clave
78
78
  ```
79
79
 
80
80
  ---
@@ -74,7 +74,7 @@ Forçar manualmente: `kasy run --rc=test` ou `kasy run --rc=prod`. `--rc=auto` (
74
74
  Para atualizar, edite o `.vscode/launch.json` ou passe via linha de comando:
75
75
 
76
76
  ```sh
77
- flutter run --dart-define=RC_ANDROID_API_KEY=sua_chave
77
+ flutter run --dart-define=RC_ANDROID_PROD_KEY=sua_chave
78
78
  ```
79
79
 
80
80
  ---
@@ -254,7 +254,7 @@ class KasySidebar extends StatefulWidget {
254
254
  /// gradient-fill avatar ([profileGradient]) is shown instead.
255
255
  final Widget? profileAvatar;
256
256
 
257
- /// Gradient used for the profile avatar when no [profileImage] is given.
257
+ /// Gradient used for the profile avatar when no [profileAvatar] is given.
258
258
  final KasyAvatarGradientData profileGradient;
259
259
 
260
260
  /// Tap on the profile block (open account menu / profile).
@@ -463,7 +463,7 @@ class _KasySidebarState extends State<KasySidebar> {
463
463
  if (!_collapsed) ...[
464
464
  _buildWorkspaceSelector(c),
465
465
  const SizedBox(height: _kHeaderGap),
466
- _buildTabs(c),
466
+ _buildTabs(),
467
467
  const SizedBox(height: _kNavGap),
468
468
  ],
469
469
  for (final item in _kShowcaseItems)
@@ -712,7 +712,7 @@ class _KasySidebarState extends State<KasySidebar> {
712
712
  /// The showcase segment is the shared [KasyTabs] component (primary pill,
713
713
  /// fill mode) so the sidebar demos the real design-system control rather than
714
714
  /// a bespoke copy.
715
- Widget _buildTabs(_SidebarColors c) {
715
+ Widget _buildTabs() {
716
716
  return KasyTabs(
717
717
  tabs: const ['Layers', 'Assets'],
718
718
  selectedIndex: _showcaseTab,
@@ -262,16 +262,20 @@ class _GuestContinueButtonState extends ConsumerState<_GuestContinueButton> {
262
262
  bool _loading = false;
263
263
 
264
264
  Future<void> _continue() async {
265
+ // Capture the app-level router BEFORE the await. Creating the guest account
266
+ // flips this button's visibility condition (it only shows while there's no
267
+ // identity), so the widget is disposed the moment the account exists — after
268
+ // that `context`/`ref`/`mounted` are gone. The router survives, so navigate
269
+ // through the captured instance.
270
+ //
271
+ // We navigate explicitly because the redirect intentionally only bounces
272
+ // *authenticated* users off the auth routes (so a guest can still open
273
+ // sign-in to upgrade); it won't carry a freshly-created anonymous guest home.
274
+ final router = GoRouter.of(context);
265
275
  setState(() => _loading = true);
266
276
  try {
267
277
  await ref.read(userStateNotifierProvider.notifier).continueAsGuest();
268
- if (!mounted) return;
269
- // Navigate explicitly: the user is now an anonymous guest (has an id but
270
- // is NOT an AuthenticatedUserData), and the router redirect intentionally
271
- // only bounces *authenticated* users off the auth routes — so a guest can
272
- // still open sign-in to upgrade. That means it won't carry us home on its
273
- // own here; we do it ourselves.
274
- context.go('/');
278
+ router.go('/');
275
279
  } catch (_) {
276
280
  if (!mounted) return;
277
281
  setState(() => _loading = false);
@@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
16
16
  # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
17
17
  # In Windows, build-name is used as the major, minor, and patch parts
18
18
  # of the product and file versions while build-number is used as the build suffix.
19
- version: 1.0.0+57
19
+ version: 1.0.0+58
20
20
 
21
21
  environment:
22
22
  sdk: ^3.11.0