create-nuxt-base 2.2.8 → 2.3.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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
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.3.1](https://github.com/lenneTech/nuxt-base-starter/compare/v2.3.0...v2.3.1) (2026-03-15)
6
+
7
+ ## [2.3.0](https://github.com/lenneTech/nuxt-base-starter/compare/v2.2.8...v2.3.0) (2026-03-09)
8
+
5
9
  ### [2.2.8](https://github.com/lenneTech/nuxt-base-starter/compare/v2.2.7...v2.2.8) (2026-03-08)
6
10
 
7
11
  ### [2.2.5](https://github.com/lenneTech/nuxt-base-starter/compare/v2.2.4...v2.2.5) (2026-02-10)
@@ -0,0 +1,59 @@
1
+ # NPM Package Maintainer Memory - nuxt-base-template
2
+
3
+ ## Project Basics
4
+
5
+ - Package manager: pnpm (pnpm-lock.yaml present)
6
+ - Type: Private Nuxt 4 template (not a library)
7
+ - Test command: `pnpm run test:unit` (vitest, 43 tests in 2 files)
8
+ - Build command: `pnpm run build` (nuxt build)
9
+
10
+ ## Key Dependency Patterns
11
+
12
+ - `better-auth`, `@better-auth/passkey`, `tus-js-client` are peer dependencies of `@lenne.tech/nuxt-extensions` - keep in `dependencies`
13
+ - `@nuxt/ui` and `@vueuse/nuxt` belong in `dependencies` (used in app/ source files with type imports)
14
+ - pnpm sometimes auto-moves packages to devDependencies during `-D` updates - watch and fix
15
+
16
+ ## Security Overrides
17
+
18
+ - Overrides are in `pnpm.overrides` (inside the `pnpm` key), NOT a top-level `overrides` key
19
+ - `pnpm audit --fix` outputs proposed overrides as JSON (does not apply automatically)
20
+ - `pnpm install` must be run after adding/updating overrides to re-resolve lockfile
21
+ - `nanotar` vulnerability from nuxt has NO patched version (`<0.0.0`) - cannot be fixed
22
+
23
+ ## Deprecated Package Notes
24
+
25
+ - `@hey-api/client-fetch`: deprecated ("bundled in @hey-api/openapi-ts since v0.73.0") but still a valid runtime HTTP client for generated API SDKs - KEEP in dependencies
26
+ - `openapi-ts.config.ts` uses deprecated `lint`/`format` options; use `postProcess: ['eslint', 'prettier']` instead
27
+ - `@nuxtjs/color-mode`: do NOT add to devDeps - @nuxt/ui brings its own 3.x internally; 4.0.0 would conflict
28
+
29
+ ## Override Cleanup Notes (2026-03-09)
30
+
31
+ Removed as no longer needed:
32
+
33
+ - `devalue@<=5.6.2` - nuxt requires ^5.6.2, latest is 5.6.3 (always picked)
34
+ - `fast-xml-parser@>=5.0.0 <5.3.8` - @nuxtjs/sitemap requires ^5.3.3, latest is 5.4.2 (always safe)
35
+ - `markdown-it@>=13.0.0 <14.1.1` - prosemirror-markdown requires ^14.0.0, latest is 14.1.1 (always picked)
36
+ - `minimatch@>=5.0.0 <5.1.8` - readdir-glob installs minimatch 5.1.9 which is already >=5.1.8 (safe)
37
+
38
+ Still required (keep these overrides):
39
+
40
+ - `@hono/node-server@<1.19.10` - @prisma/dev requires 1.19.9 exactly
41
+ - `hono@<4.12.4` - @prisma/dev requires 4.11.4 exactly
42
+ - `lodash@>=4.0.0 <=4.17.22` - @chevrotain/gast requires 4.17.21 exactly (vulnerable)
43
+ - `minimatch@>=9.0.0 <9.0.7` - editorconfig 1.0.4 requires 9.0.1 exactly (in vulnerable range)
44
+ - `rollup@>=4.0.0 <4.59.0` - vite requires ^4.43.0 which could pick <4.59.0
45
+ - `serialize-javascript@<=7.0.2` - @rollup/plugin-terser requires ^6.0.1 (6.x is vulnerable)
46
+ - `svgo@=4.0.0` - postcss-svgo requires ^4.0.0 which could pick 4.0.0 (vulnerable)
47
+ - `tar@<=7.5.9` - @mapbox/node-pre-gyp requires ^7.4.0 (7.4.x is vulnerable)
48
+
49
+ ## Version History (2026-03-09)
50
+
51
+ After maintenance, all packages at latest:
52
+
53
+ - `@lenne.tech/nuxt-extensions`: 1.3.0
54
+ - `nuxt`: 4.3.1
55
+ - `vitest`: 4.0.18 (major from 3.x)
56
+ - `@nuxt/test-utils`: 4.0.0 (major from 3.x, requires vitest ^4.0.2)
57
+ - `vitest` v4 + `@nuxt/test-utils` v4 must be updated together (compatibility requirement)
58
+ - Residual vulnerabilities: 1 moderate (nanotar, unfixable)
59
+ - Removed: `@nuxtjs/color-mode` from devDeps (unused, conflicts with @nuxt/ui's internal 3.5.2)
@@ -1,10 +1,32 @@
1
1
  NUXT_PUBLIC_SITE_URL=http://localhost:3001
2
- NUXT_PUBLIC_APP_ENV=development
2
+ NUXT_PUBLIC_APP_ENV=local
3
3
  NODE_ENV=development
4
4
  NUXT_API_URL=http://localhost:3000
5
5
  NUXT_PUBLIC_API_URL=http://localhost:3000
6
6
  NUXT_PUBLIC_WEB_PUSH_KEY=
7
- NUXT_PUBLIC_STORAGE_PREFIX=base-dev
7
+ # Local storage namespace prefix (prevents key collisions between projects on localhost)
8
+ NUXT_PUBLIC_STORAGE_PREFIX=my-project-local
9
+
10
+ # ---------------------------------------------------------------------------
11
+ # Local Development API Proxy
12
+ # ---------------------------------------------------------------------------
13
+ # Enables the Vite dev proxy to forward /api/* requests to the backend
14
+ # (localhost:3000). The proxy strips the /api/ prefix before forwarding,
15
+ # so the backend receives the original path (e.g., /iam/sign-in).
16
+ #
17
+ # WHY: In local development, frontend (localhost:3001) and backend
18
+ # (localhost:3000) are on different ports. Browsers enforce same-origin
19
+ # policy for cookies, which breaks session-based authentication.
20
+ # The proxy makes all requests appear same-origin.
21
+ #
22
+ # IMPORTANT: Set to 'true' ONLY for local development with `nuxt dev`.
23
+ # NEVER enable on deployed stages (develop, test, preview, production)
24
+ # — deployed stages call the backend directly via NUXT_PUBLIC_API_URL.
25
+ #
26
+ # Nuxt auto-maps this to runtimeConfig.public.apiProxy
27
+ NUXT_PUBLIC_API_PROXY=true
28
+
29
+ NUXT_PLAUSIBLE_API_URL=
8
30
 
9
31
  NUXT_LINEAR_API_KEY=
10
32
  NUXT_LINEAR_TEAM_NAME=
@@ -15,7 +15,7 @@ export default defineNuxtConfig({
15
15
  // ============================================================================
16
16
  // Bug Reporting (Linear Integration via @lenne.tech/bug.lt)
17
17
  // ============================================================================
18
- // @ts-expect-error bug.lt module config - module temporarily disabled
18
+ // @ts-ignore bug.lt module has no type declarations
19
19
  bug: {
20
20
  enabled: process.env.NUXT_PUBLIC_APP_ENV !== 'production',
21
21
  linearApiKey: process.env.NUXT_LINEAR_API_KEY,
@@ -49,7 +49,7 @@ export default defineNuxtConfig({
49
49
  // ============================================================================
50
50
  // Environment-specific Layers
51
51
  // ============================================================================
52
- extends: process.env.NUXT_PUBLIC_APP_ENV === 'development' ? ['./docs'] : [],
52
+ extends: ['local', 'development'].includes(process.env.NUXT_PUBLIC_APP_ENV || '') ? ['./docs'] : [],
53
53
 
54
54
  // ============================================================================
55
55
  // Image Optimization
@@ -65,9 +65,10 @@ export default defineNuxtConfig({
65
65
  // Icon Configuration
66
66
  // ============================================================================
67
67
  icon: {
68
- // Ensure dynamically rendered icons (e.g., inside v-for) are included in the bundle
68
+ // Icons used in v-for loops or dynamic rendering must be in the client bundle
69
+ // Dynamic icons can set via icons, e.g. icons: ['lucide:trash', 'lucide:key', 'lucide:copy', 'lucide:loader-circle'],
69
70
  clientBundle: {
70
- icons: ['lucide:trash', 'lucide:key', 'lucide:copy', 'lucide:loader-circle'],
71
+ scan: true,
71
72
  },
72
73
  },
73
74
 
@@ -84,9 +85,9 @@ export default defineNuxtConfig({
84
85
  ltExtensions: {
85
86
  auth: {
86
87
  enabled: true,
87
- // baseURL is used in production mode for cross-origin API requests
88
- // In dev mode, Nuxt proxy is used (baseURL is ignored, requests go through /api/iam)
89
- // In production, requests go directly to baseURL + basePath (e.g., https://api.example.com/iam)
88
+ // baseURL is used when NUXT_PUBLIC_API_PROXY is NOT enabled (deployed stages)
89
+ // With proxy: requests go through /api/iam (proxy strips /api/ and forwards to backend)
90
+ // Without proxy: requests go directly to baseURL + basePath (e.g., https://api.example.com/iam)
90
91
  baseURL: process.env.NUXT_API_URL || 'http://localhost:3000',
91
92
  basePath: '/iam',
92
93
  loginPath: '/auth/login',
@@ -115,7 +116,7 @@ export default defineNuxtConfig({
115
116
  modules: [
116
117
  '@lenne.tech/nuxt-extensions', // Auth, Upload, Transitions
117
118
  '@nuxt/test-utils/module', // E2E testing with Playwright
118
- // '@lenne.tech/bug.lt', // Bug reporting to Linear - TEMPORARILY DISABLED FOR TESTING
119
+ '@lenne.tech/bug.lt', // Bug reporting to Linear
119
120
  '@vueuse/nuxt', // Vue composition utilities
120
121
  'dayjs-nuxt', // Date/time handling
121
122
  '@nuxt/image', // Image optimization
@@ -160,6 +161,12 @@ export default defineNuxtConfig({
160
161
  apiUrl: 'http://localhost:3000',
161
162
  // NUXT_PUBLIC_WEB_PUSH_KEY overrides this
162
163
  webPushKey: '',
164
+ // API Proxy: Routes client-side /api/* requests through the Vite dev proxy
165
+ // to the backend (localhost:3000). Required for same-origin cookies during
166
+ // local development. Set NUXT_PUBLIC_API_PROXY=true in .env ONLY for local dev.
167
+ // Nuxt auto-maps NUXT_PUBLIC_API_PROXY to this key.
168
+ // See: @lenne.tech/nuxt-extensions → isLocalDevApiProxy()
169
+ apiProxy: false,
163
170
  },
164
171
  },
165
172
 
@@ -200,22 +207,25 @@ export default defineNuxtConfig({
200
207
  optimizeDeps: {
201
208
  exclude: ['@tailwindcss/vite', 'lightningcss', '@vue/devtools-core', '@vue/devtools-kit', '@internationalized/date'],
202
209
  },
203
- plugins: [tailwindcss()],
210
+ plugins: [tailwindcss() as any],
204
211
  server: {
205
212
  proxy: {
206
- // IAM proxy via /api prefix (nuxt-extensions adds /api in dev mode)
207
- // Must be before /api to match more specifically
208
- '/api/iam': {
209
- target: 'http://localhost:3000',
210
- changeOrigin: true,
211
- rewrite: (path) => path.replace(/^\/api/, ''),
212
- },
213
- // API proxy - no rewrite, backend expects /api/... paths
213
+ // API proxy for local development (NUXT_PUBLIC_API_PROXY=true)
214
+ //
215
+ // How it works:
216
+ // 1. Client-side requests go to /api/... (e.g., /api/iam/sign-in, /api/i18n/errors/de)
217
+ // 2. This proxy strips the /api prefix and forwards to the backend
218
+ // 3. Backend receives the original path (e.g., /iam/sign-in, /i18n/errors/de)
219
+ //
220
+ // Why: Frontend (localhost:3001) and backend (localhost:3000) run on different
221
+ // ports. The proxy makes requests same-origin so cookies work correctly.
214
222
  '/api': {
215
223
  target: 'http://localhost:3000',
216
224
  changeOrigin: true,
225
+ rewrite: (path) => path.replace(/^\/api/, ''),
217
226
  },
218
- // IAM proxy for direct BetterAuth endpoints (SSR mode)
227
+ // Direct IAM proxy for BetterAuth endpoints (SSR Nitro server handler
228
+ // and direct browser redirects, e.g., OAuth callbacks)
219
229
  '/iam': {
220
230
  target: 'http://localhost:3000',
221
231
  changeOrigin: true,
@@ -51,7 +51,7 @@
51
51
  "@better-auth/passkey": "1.5.4",
52
52
  "@hey-api/client-fetch": "0.13.1",
53
53
  "@lenne.tech/bug.lt": "latest",
54
- "@lenne.tech/nuxt-extensions": "1.2.12",
54
+ "@lenne.tech/nuxt-extensions": "1.3.0",
55
55
  "@nuxt/image": "2.0.0",
56
56
  "@nuxt/ui": "4.5.1",
57
57
  "@pinia/nuxt": "0.11.3",
@@ -64,15 +64,14 @@
64
64
  "devDependencies": {
65
65
  "@hey-api/openapi-ts": "0.94.0",
66
66
  "@iconify-json/lucide": "1.2.96",
67
- "@nuxt/devtools": "3.2.2",
67
+ "@nuxt/devtools": "3.2.3",
68
68
  "@nuxt/test-utils": "4.0.0",
69
- "@nuxtjs/color-mode": "4.0.0",
70
69
  "@nuxtjs/plausible": "3.0.2",
71
70
  "@nuxtjs/seo": "3.4.0",
72
71
  "@playwright/test": "1.58.2",
73
72
  "@tailwindcss/typography": "0.5.19",
74
73
  "@tailwindcss/vite": "4.2.1",
75
- "@types/node": "25.3.5",
74
+ "@types/node": "25.4.0",
76
75
  "@types/qrcode": "1.5.6",
77
76
  "@vitejs/plugin-vue": "6.0.4",
78
77
  "@vue/test-utils": "2.4.6",
@@ -117,12 +116,8 @@
117
116
  ],
118
117
  "overrides": {
119
118
  "@hono/node-server@<1.19.10": ">=1.19.10",
120
- "devalue@<=5.6.2": ">=5.6.3",
121
- "fast-xml-parser@>=5.0.0 <5.3.8": ">=5.3.8",
122
119
  "hono@<4.12.4": ">=4.12.4",
123
120
  "lodash@>=4.0.0 <=4.17.22": ">=4.17.23",
124
- "markdown-it@>=13.0.0 <14.1.1": ">=14.1.1",
125
- "minimatch@>=5.0.0 <5.1.8": ">=5.1.8",
126
121
  "minimatch@>=9.0.0 <9.0.7": ">=9.0.7",
127
122
  "rollup@>=4.0.0 <4.59.0": ">=4.59.0",
128
123
  "serialize-javascript@<=7.0.2": ">=7.0.3",