create-nuxt-base 2.5.2 → 2.6.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/CHANGELOG.md CHANGED
@@ -2,28 +2,34 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [2.6.0](https://github.com/lenneTech/nuxt-base-starter/compare/v2.5.3...v2.6.0) (2026-04-17)
6
+
7
+
8
+ ### Features
9
+
10
+ * **template:** harden check script with server-start verification and document vendor-mode workflow ([6521650](https://github.com/lenneTech/nuxt-base-starter/commit/65216500261c846a87c66f0cb7a1170a3d0ed2b9))
11
+
12
+ ### [2.5.3](https://github.com/lenneTech/nuxt-base-starter/compare/v2.5.2...v2.5.3) (2026-04-06)
13
+
5
14
  ### [2.5.2](https://github.com/lenneTech/nuxt-base-starter/compare/v2.5.1...v2.5.2) (2026-04-04)
6
15
 
7
16
  ### [2.5.1](https://github.com/lenneTech/nuxt-base-starter/compare/v2.5.0...v2.5.1) (2026-03-16)
8
17
 
9
-
10
18
  ### Bug Fixes
11
19
 
12
- * prevent build-time baked API URLs by defaulting to empty strings resolved at runtimeOC ([e577648](https://github.com/lenneTech/nuxt-base-starter/commit/e577648a287e18a76c72564d68bacc277b04a500))
20
+ - prevent build-time baked API URLs by defaulting to empty strings resolved at runtimeOC ([e577648](https://github.com/lenneTech/nuxt-base-starter/commit/e577648a287e18a76c72564d68bacc277b04a500))
13
21
 
14
22
  ## [2.5.0](https://github.com/lenneTech/nuxt-base-starter/compare/v2.3.1...v2.5.0) (2026-03-16)
15
23
 
16
-
17
24
  ### Features
18
25
 
19
- * add production default dockerfile ([e338c93](https://github.com/lenneTech/nuxt-base-starter/commit/e338c9363a348c1a63d40a71301240c8e8478835))
26
+ - add production default dockerfile ([e338c93](https://github.com/lenneTech/nuxt-base-starter/commit/e338c9363a348c1a63d40a71301240c8e8478835))
20
27
 
21
28
  ## [2.4.0](https://github.com/lenneTech/nuxt-base-starter/compare/v2.3.1...v2.4.0) (2026-03-16)
22
29
 
23
-
24
30
  ### Features
25
31
 
26
- * add production default dockerfile ([e338c93](https://github.com/lenneTech/nuxt-base-starter/commit/e338c9363a348c1a63d40a71301240c8e8478835))
32
+ - add production default dockerfile ([e338c93](https://github.com/lenneTech/nuxt-base-starter/commit/e338c9363a348c1a63d40a71301240c8e8478835))
27
33
 
28
34
  ### [2.3.1](https://github.com/lenneTech/nuxt-base-starter/compare/v2.3.0...v2.3.1) (2026-03-15)
29
35
 
@@ -58,9 +58,51 @@ pnpm run check # Full quality check (audit + format + lint + types + test
58
58
 
59
59
  ## Framework: @lenne.tech/nuxt-extensions
60
60
 
61
- This project depends on `@lenne.tech/nuxt-extensions`. The framework source is available in `node_modules/@lenne.tech/nuxt-extensions/` and **MUST** be read when using or debugging framework features.
62
-
63
- ### Key Source Files (in node_modules/@lenne.tech/nuxt-extensions/)
61
+ This project consumes the framework in one of two modes:
62
+
63
+ - **npm mode (default):** `@lenne.tech/nuxt-extensions` is installed as
64
+ an npm dependency; framework source lives in
65
+ `node_modules/@lenne.tech/nuxt-extensions/`. Registered in
66
+ `nuxt.config.ts` via the module string `'@lenne.tech/nuxt-extensions'`.
67
+ - **vendor mode:** framework source is copied directly into
68
+ `app/core/` as first-class project code. No
69
+ `@lenne.tech/nuxt-extensions` npm dependency. Baseline + patch log
70
+ live in `app/core/VENDOR.md`. Updated via
71
+ `/lt-dev:frontend:update-nuxt-extensions-core`. Detect via:
72
+ `test -f app/core/VENDOR.md`.
73
+
74
+ **ALWAYS read the actual framework source** before guessing behavior —
75
+ in npm mode from `node_modules/@lenne.tech/nuxt-extensions/`, in
76
+ vendor mode directly from `app/core/`.
77
+
78
+ ### Vendor Modification Policy
79
+
80
+ When this project is in vendor mode, the copy in `app/core/` exists
81
+ so Claude Code can read framework internals directly — it is a
82
+ **comprehension aid**, not a fork. Only edit `app/core/` when the
83
+ change is **generally useful to every nuxt-extensions consumer**:
84
+
85
+ - Bugfixes that apply to every consumer
86
+ - Broad framework enhancements (new composables, better defaults,
87
+ SSR fixes)
88
+ - Security vulnerability fixes
89
+ - Type/config compatibility fixes every consumer would hit
90
+
91
+ **Everything else stays out of `app/core/`.** Project-specific
92
+ business rules, customer branding, and proprietary integrations
93
+ belong in project code (`app/composables/`, `app/components/`,
94
+ `app/middleware/`, plugin overrides).
95
+
96
+ **Generally-useful changes MUST be submitted as an upstream PR** to
97
+ `github.com/lenneTech/nuxt-extensions`. Run
98
+ `/lt-dev:frontend:contribute-nuxt-extensions-core` to prepare the PR
99
+ — the agent filters cosmetic commits, categorizes each local change
100
+ as upstream-candidate vs. project-specific, and writes PR drafts for
101
+ human review. Letting useful fixes rot in a single project's vendor
102
+ tree is an anti-pattern: they belong upstream so every consumer
103
+ benefits and the local patch disappears on the next sync.
104
+
105
+ ### Key Source Files (in node_modules/@lenne.tech/nuxt-extensions/ — npm mode; replace prefix with app/core/ in vendor mode)
64
106
 
65
107
  | File | Purpose |
66
108
  | --------------------------- | ---------------------------------------------------------- |
@@ -75,11 +117,18 @@ This project depends on `@lenne.tech/nuxt-extensions`. The framework source is a
75
117
 
76
118
  ### Rules
77
119
 
78
- 1. **ALWAYS read actual source code** from `node_modules/@lenne.tech/nuxt-extensions/` before guessing framework behavior
120
+ 1. **ALWAYS read actual source code** before guessing framework behavior — from `node_modules/@lenne.tech/nuxt-extensions/` in npm mode, or from `app/core/` in vendor mode
79
121
  2. **NEVER re-implement** functionality that nuxt-extensions already provides — check composables first
80
122
  3. **Use `useBetterAuth()`** for authentication — never implement auth manually
81
123
  4. **When debugging auth issues**, read the auth proxy server route and middleware source
82
- 5. **Check `dist/runtime/composables/`** before creating new composables — may already exist
124
+ 5. **Check runtime composables** before creating new composables — may already exist
125
+ 6. **In vendor mode**, only edit `app/core/` for generally-useful changes and submit them upstream via `/lt-dev:frontend:contribute-nuxt-extensions-core`. Project-specific code belongs outside `app/core/`.
126
+
127
+ ## Authentication
128
+
129
+ Auth is managed by `@lenne.tech/nuxt-extensions` via `useLtAuth()`. See the [nuxt-extensions CLAUDE.md](https://github.com/lenneTech/nuxt-extensions) for detailed auth cookie rules.
130
+
131
+ Key rule: Never manually write to the `lt-auth-state` cookie from custom middleware. Use `useLtAuth().setUser()` / `clearUser()` exclusively.
83
132
 
84
133
  ## Security Overrides (pnpm)
85
134
 
@@ -11,9 +11,9 @@
11
11
  },
12
12
  "scripts": {
13
13
  "c": "pnpm run check",
14
- "check": "pnpm audit && pnpm run format:check && pnpm run lint && pnpm test && pnpm run build && pnpm start",
15
- "check:fix": "pnpm install && pnpm audit --fix && pnpm run format && pnpm run lint:fix && pnpm test && pnpm run build && pnpm start",
16
- "check:naf": "pnpm install && pnpm run format && pnpm run lint:fix && pnpm test && pnpm run build && pnpm start",
14
+ "check": "pnpm audit && pnpm run format:check && pnpm run lint && pnpm test && pnpm run build && bash scripts/check-server-start.sh",
15
+ "check:fix": "pnpm install && pnpm audit --fix && pnpm run format && pnpm run lint:fix && pnpm test && pnpm run build && bash scripts/check-server-start.sh",
16
+ "check:naf": "pnpm install && pnpm run format && pnpm run lint:fix && pnpm test && pnpm run build && bash scripts/check-server-start.sh",
17
17
  "cf": "pnpm run check:fix",
18
18
  "cnaf": "pnpm run check:naf",
19
19
  "init": "pnpm install",
@@ -50,7 +50,7 @@
50
50
  "dependencies": {
51
51
  "@better-auth/passkey": "1.5.6",
52
52
  "@lenne.tech/bug.lt": "latest",
53
- "@lenne.tech/nuxt-extensions": "1.5.2",
53
+ "@lenne.tech/nuxt-extensions": "1.5.3",
54
54
  "@nuxt/image": "2.0.0",
55
55
  "@nuxt/ui": "4.6.1",
56
56
  "@pinia/nuxt": "0.11.3",
@@ -61,7 +61,6 @@
61
61
  "valibot": "1.3.1"
62
62
  },
63
63
  "devDependencies": {
64
- "@hey-api/client-fetch": "0.13.1",
65
64
  "@hey-api/openapi-ts": "0.95.0",
66
65
  "@iconify-json/lucide": "1.2.101",
67
66
  "@nuxt/devtools": "3.2.4",
@@ -40,8 +40,8 @@ importers:
40
40
  specifier: latest
41
41
  version: 1.6.5(@babel/parser@7.29.2)(crossws@0.3.5)(db0@0.3.4(@electric-sql/pglite@0.3.15)(drizzle-orm@0.45.1(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.1)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(typescript@6.0.2))(kysely@0.28.15)(mysql2@3.15.3)(postgres@3.4.7)(prisma@7.4.2(@types/react@19.2.14)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)))(mysql2@3.15.3))(embla-carousel@8.6.0)(ioredis@5.9.2)(magicast@0.5.2)(qrcode@1.5.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(valibot@1.3.1(typescript@6.0.2))(vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(yaml@2.8.3))(vue-router@4.6.4(vue@3.5.30(typescript@6.0.2)))(vue@3.5.30(typescript@6.0.2))
42
42
  '@lenne.tech/nuxt-extensions':
43
- specifier: 1.5.2
44
- version: 1.5.2(@better-auth/passkey@1.5.6(@better-auth/core@1.5.6(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.2(zod@4.3.6))(jose@6.1.3)(kysely@0.28.15)(nanostores@1.1.1))(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-auth@1.5.6(b30780dc8bc760c93f1eee811a4ad078))(better-call@1.3.2(zod@4.3.6))(nanostores@1.1.1))(@playwright/test@1.59.1)(better-auth@1.5.6(b30780dc8bc760c93f1eee811a4ad078))(magicast@0.5.2)(nuxt@4.4.2(469ac8679250cf62c9e726a96ed146de))(tus-js-client@4.3.1)
43
+ specifier: 1.5.3
44
+ version: 1.5.3(@better-auth/passkey@1.5.6(@better-auth/core@1.5.6(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.2(zod@4.3.6))(jose@6.1.3)(kysely@0.28.15)(nanostores@1.1.1))(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-auth@1.5.6(b30780dc8bc760c93f1eee811a4ad078))(better-call@1.3.2(zod@4.3.6))(nanostores@1.1.1))(@playwright/test@1.59.1)(better-auth@1.5.6(b30780dc8bc760c93f1eee811a4ad078))(magicast@0.5.2)(nuxt@4.4.2(469ac8679250cf62c9e726a96ed146de))(tus-js-client@4.3.1)
45
45
  '@nuxt/image':
46
46
  specifier: 2.0.0
47
47
  version: 2.0.0(crossws@0.3.5)(db0@0.3.4(@electric-sql/pglite@0.3.15)(drizzle-orm@0.45.1(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.1)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(typescript@6.0.2))(kysely@0.28.15)(mysql2@3.15.3)(postgres@3.4.7)(prisma@7.4.2(@types/react@19.2.14)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)))(mysql2@3.15.3))(ioredis@5.9.2)(magicast@0.5.2)
@@ -67,9 +67,6 @@ importers:
67
67
  specifier: 1.3.1
68
68
  version: 1.3.1(typescript@6.0.2)
69
69
  devDependencies:
70
- '@hey-api/client-fetch':
71
- specifier: 0.13.1
72
- version: 0.13.1(@hey-api/openapi-ts@0.95.0(magicast@0.5.2)(typescript@6.0.2))
73
70
  '@hey-api/openapi-ts':
74
71
  specifier: 0.95.0
75
72
  version: 0.95.0(magicast@0.5.2)(typescript@6.0.2)
@@ -870,12 +867,6 @@ packages:
870
867
  '@hexagon/base64@1.1.28':
871
868
  resolution: {integrity: sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw==}
872
869
 
873
- '@hey-api/client-fetch@0.13.1':
874
- resolution: {integrity: sha512-29jBRYNdxVGlx5oewFgOrkulZckpIpBIRHth3uHFn1PrL2ucMy52FvWOY3U3dVx2go1Z3kUmMi6lr07iOpUqqA==}
875
- deprecated: Starting with v0.73.0, this package is bundled directly inside @hey-api/openapi-ts.
876
- peerDependencies:
877
- '@hey-api/openapi-ts': < 2
878
-
879
870
  '@hey-api/codegen-core@0.7.4':
880
871
  resolution: {integrity: sha512-DGd9yeSQzflOWO3Y5mt1GRXkXH9O/yIMgbxPjwLI3jwu/3nAjoXXD26lEeFb6tclYlg0JAqTIs5d930G/qxHeA==}
881
872
  engines: {node: '>=20.19.0'}
@@ -1001,8 +992,8 @@ packages:
1001
992
  '@lenne.tech/bug.lt@1.6.5':
1002
993
  resolution: {integrity: sha512-3aSfAcuizL8WvmDaHUlSjpLVdaeSRtNMrEPle7IoqA9VBmfaCfUKzOQmSdnz69Laeq6hn1a2P1HVcsj1QoOWuQ==}
1003
994
 
1004
- '@lenne.tech/nuxt-extensions@1.5.2':
1005
- resolution: {integrity: sha512-z+mzLVMumka+mqiS4cBvaN1OkrV30hKpVYrAi5C4NYIpWgDNsP2TRUnmHv2Euq54brM9ZW4rGYNGSiHIAYACxQ==}
995
+ '@lenne.tech/nuxt-extensions@1.5.3':
996
+ resolution: {integrity: sha512-CABvWvBUYiFtfYkOHKH9WbDbAwqNSkPJAlje5qX+KqbP5GCXP9BdIOejKKehsD+P7Wfs/pjTns4Fo6PvjuTyjQ==}
1006
997
  peerDependencies:
1007
998
  '@better-auth/passkey': '>=1.0.0'
1008
999
  '@playwright/test': '>=1.0.0'
@@ -7856,10 +7847,6 @@ snapshots:
7856
7847
 
7857
7848
  '@hexagon/base64@1.1.28': {}
7858
7849
 
7859
- '@hey-api/client-fetch@0.13.1(@hey-api/openapi-ts@0.95.0(magicast@0.5.2)(typescript@6.0.2))':
7860
- dependencies:
7861
- '@hey-api/openapi-ts': 0.95.0(magicast@0.5.2)(typescript@6.0.2)
7862
-
7863
7850
  '@hey-api/codegen-core@0.7.4(magicast@0.5.2)':
7864
7851
  dependencies:
7865
7852
  '@hey-api/types': 0.1.4
@@ -8071,7 +8058,7 @@ snapshots:
8071
8058
  - vue-router
8072
8059
  - yup
8073
8060
 
8074
- '@lenne.tech/nuxt-extensions@1.5.2(@better-auth/passkey@1.5.6(@better-auth/core@1.5.6(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.2(zod@4.3.6))(jose@6.1.3)(kysely@0.28.15)(nanostores@1.1.1))(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-auth@1.5.6(b30780dc8bc760c93f1eee811a4ad078))(better-call@1.3.2(zod@4.3.6))(nanostores@1.1.1))(@playwright/test@1.59.1)(better-auth@1.5.6(b30780dc8bc760c93f1eee811a4ad078))(magicast@0.5.2)(nuxt@4.4.2(469ac8679250cf62c9e726a96ed146de))(tus-js-client@4.3.1)':
8061
+ '@lenne.tech/nuxt-extensions@1.5.3(@better-auth/passkey@1.5.6(@better-auth/core@1.5.6(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.3.2(zod@4.3.6))(jose@6.1.3)(kysely@0.28.15)(nanostores@1.1.1))(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-auth@1.5.6(b30780dc8bc760c93f1eee811a4ad078))(better-call@1.3.2(zod@4.3.6))(nanostores@1.1.1))(@playwright/test@1.59.1)(better-auth@1.5.6(b30780dc8bc760c93f1eee811a4ad078))(magicast@0.5.2)(nuxt@4.4.2(469ac8679250cf62c9e726a96ed146de))(tus-js-client@4.3.1)':
8075
8062
  dependencies:
8076
8063
  '@nuxt/kit': 4.4.2(magicast@0.5.2)
8077
8064
  better-auth: 1.5.6(b30780dc8bc760c93f1eee811a4ad078)
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env bash
2
+ set -e
3
+
4
+ # Temp file for server output
5
+ LOG_FILE=$(mktemp)
6
+
7
+ # Start the built Nuxt server in background, redirect output to log file
8
+ # The build step already ran before this script is called
9
+ node .output/server/index.mjs > "$LOG_FILE" 2>&1 &
10
+ SERVER_PID=$!
11
+
12
+ # Show log output in real-time
13
+ tail -f "$LOG_FILE" &
14
+ TAIL_PID=$!
15
+
16
+ # Ensure cleanup on exit: kill server, tail, and remove temp file
17
+ trap 'kill $SERVER_PID $TAIL_PID 2>/dev/null; wait $SERVER_PID $TAIL_PID 2>/dev/null || true; rm -f "$LOG_FILE"' EXIT
18
+
19
+ # Wait for the Nitro server ready message (max 60 seconds)
20
+ for i in $(seq 1 60); do
21
+ if grep -q "Listening on\|Nitro ready\|Local:" "$LOG_FILE" 2>/dev/null; then
22
+ echo ""
23
+ echo "Server started successfully - check complete"
24
+ exit 0
25
+ fi
26
+ # Check if server process died unexpectedly
27
+ if ! kill -0 $SERVER_PID 2>/dev/null; then
28
+ echo ""
29
+ echo "Server process exited unexpectedly"
30
+ exit 1
31
+ fi
32
+ sleep 1
33
+ done
34
+
35
+ echo ""
36
+ echo "Server failed to start within 60 seconds"
37
+ exit 1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-nuxt-base",
3
- "version": "2.5.2",
3
+ "version": "2.6.0",
4
4
  "description": "Starter to generate a configured environment with VueJS, Nuxt, Tailwind, Linting, Unit Tests, Playwright etc.",
5
5
  "license": "MIT",
6
6
  "author": "lenne.Tech GmbH",
@@ -38,6 +38,9 @@
38
38
  },
39
39
  "pnpm": {
40
40
  "overrides": {
41
+ "brace-expansion@>=4.0.0 <5.0.5": ">=5.0.5",
42
+ "handlebars@>=4.0.0 <=4.7.8": ">=4.7.9",
43
+ "lodash@>=4.0.0 <=4.17.23": ">=4.18.0",
41
44
  "minimatch@<3.1.4": ">=3.1.4"
42
45
  }
43
46
  }