create-nuxt-base 2.2.8 → 2.3.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,6 +2,8 @@
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.0](https://github.com/lenneTech/nuxt-base-starter/compare/v2.2.8...v2.3.0) (2026-03-09)
6
+
5
7
  ### [2.2.8](https://github.com/lenneTech/nuxt-base-starter/compare/v2.2.7...v2.2.8) (2026-03-08)
6
8
 
7
9
  ### [2.2.5](https://github.com/lenneTech/nuxt-base-starter/compare/v2.2.4...v2.2.5) (2026-02-10)
@@ -0,0 +1,50 @@
1
+ # NPM Package Maintainer Memory - nuxt-base-template
2
+
3
+ ## Project Basics
4
+ - Package manager: pnpm (pnpm-lock.yaml present)
5
+ - Type: Private Nuxt 4 template (not a library)
6
+ - Test command: `pnpm run test:unit` (vitest, 43 tests in 2 files)
7
+ - Build command: `pnpm run build` (nuxt build)
8
+
9
+ ## Key Dependency Patterns
10
+ - `better-auth`, `@better-auth/passkey`, `tus-js-client` are peer dependencies of `@lenne.tech/nuxt-extensions` - keep in `dependencies`
11
+ - `@nuxt/ui` and `@vueuse/nuxt` belong in `dependencies` (used in app/ source files with type imports)
12
+ - pnpm sometimes auto-moves packages to devDependencies during `-D` updates - watch and fix
13
+
14
+ ## Security Overrides
15
+ - Overrides are in `pnpm.overrides` (inside the `pnpm` key), NOT a top-level `overrides` key
16
+ - `pnpm audit --fix` outputs proposed overrides as JSON (does not apply automatically)
17
+ - `pnpm install` must be run after adding/updating overrides to re-resolve lockfile
18
+ - `nanotar` vulnerability from nuxt has NO patched version (`<0.0.0`) - cannot be fixed
19
+
20
+ ## Deprecated Package Notes
21
+ - `@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
22
+ - `openapi-ts.config.ts` uses deprecated `lint`/`format` options; use `postProcess: ['eslint', 'prettier']` instead
23
+ - `@nuxtjs/color-mode`: do NOT add to devDeps - @nuxt/ui brings its own 3.x internally; 4.0.0 would conflict
24
+
25
+ ## Override Cleanup Notes (2026-03-09)
26
+ Removed as no longer needed:
27
+ - `devalue@<=5.6.2` - nuxt requires ^5.6.2, latest is 5.6.3 (always picked)
28
+ - `fast-xml-parser@>=5.0.0 <5.3.8` - @nuxtjs/sitemap requires ^5.3.3, latest is 5.4.2 (always safe)
29
+ - `markdown-it@>=13.0.0 <14.1.1` - prosemirror-markdown requires ^14.0.0, latest is 14.1.1 (always picked)
30
+ - `minimatch@>=5.0.0 <5.1.8` - readdir-glob installs minimatch 5.1.9 which is already >=5.1.8 (safe)
31
+
32
+ Still required (keep these overrides):
33
+ - `@hono/node-server@<1.19.10` - @prisma/dev requires 1.19.9 exactly
34
+ - `hono@<4.12.4` - @prisma/dev requires 4.11.4 exactly
35
+ - `lodash@>=4.0.0 <=4.17.22` - @chevrotain/gast requires 4.17.21 exactly (vulnerable)
36
+ - `minimatch@>=9.0.0 <9.0.7` - editorconfig 1.0.4 requires 9.0.1 exactly (in vulnerable range)
37
+ - `rollup@>=4.0.0 <4.59.0` - vite requires ^4.43.0 which could pick <4.59.0
38
+ - `serialize-javascript@<=7.0.2` - @rollup/plugin-terser requires ^6.0.1 (6.x is vulnerable)
39
+ - `svgo@=4.0.0` - postcss-svgo requires ^4.0.0 which could pick 4.0.0 (vulnerable)
40
+ - `tar@<=7.5.9` - @mapbox/node-pre-gyp requires ^7.4.0 (7.4.x is vulnerable)
41
+
42
+ ## Version History (2026-03-09)
43
+ After maintenance, all packages at latest:
44
+ - `@lenne.tech/nuxt-extensions`: 1.3.0
45
+ - `nuxt`: 4.3.1
46
+ - `vitest`: 4.0.18 (major from 3.x)
47
+ - `@nuxt/test-utils`: 4.0.0 (major from 3.x, requires vitest ^4.0.2)
48
+ - `vitest` v4 + `@nuxt/test-utils` v4 must be updated together (compatibility requirement)
49
+ - Residual vulnerabilities: 1 moderate (nanotar, unfixable)
50
+ - 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
@@ -84,9 +84,9 @@ export default defineNuxtConfig({
84
84
  ltExtensions: {
85
85
  auth: {
86
86
  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)
87
+ // baseURL is used when NUXT_PUBLIC_API_PROXY is NOT enabled (deployed stages)
88
+ // With proxy: requests go through /api/iam (proxy strips /api/ and forwards to backend)
89
+ // Without proxy: requests go directly to baseURL + basePath (e.g., https://api.example.com/iam)
90
90
  baseURL: process.env.NUXT_API_URL || 'http://localhost:3000',
91
91
  basePath: '/iam',
92
92
  loginPath: '/auth/login',
@@ -115,7 +115,7 @@ export default defineNuxtConfig({
115
115
  modules: [
116
116
  '@lenne.tech/nuxt-extensions', // Auth, Upload, Transitions
117
117
  '@nuxt/test-utils/module', // E2E testing with Playwright
118
- // '@lenne.tech/bug.lt', // Bug reporting to Linear - TEMPORARILY DISABLED FOR TESTING
118
+ '@lenne.tech/bug.lt', // Bug reporting to Linear
119
119
  '@vueuse/nuxt', // Vue composition utilities
120
120
  'dayjs-nuxt', // Date/time handling
121
121
  '@nuxt/image', // Image optimization
@@ -160,6 +160,12 @@ export default defineNuxtConfig({
160
160
  apiUrl: 'http://localhost:3000',
161
161
  // NUXT_PUBLIC_WEB_PUSH_KEY overrides this
162
162
  webPushKey: '',
163
+ // API Proxy: Routes client-side /api/* requests through the Vite dev proxy
164
+ // to the backend (localhost:3000). Required for same-origin cookies during
165
+ // local development. Set NUXT_PUBLIC_API_PROXY=true in .env ONLY for local dev.
166
+ // Nuxt auto-maps NUXT_PUBLIC_API_PROXY to this key.
167
+ // See: @lenne.tech/nuxt-extensions → isLocalDevApiProxy()
168
+ apiProxy: false,
163
169
  },
164
170
  },
165
171
 
@@ -200,22 +206,25 @@ export default defineNuxtConfig({
200
206
  optimizeDeps: {
201
207
  exclude: ['@tailwindcss/vite', 'lightningcss', '@vue/devtools-core', '@vue/devtools-kit', '@internationalized/date'],
202
208
  },
203
- plugins: [tailwindcss()],
209
+ plugins: [tailwindcss() as any],
204
210
  server: {
205
211
  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
212
+ // API proxy for local development (NUXT_PUBLIC_API_PROXY=true)
213
+ //
214
+ // How it works:
215
+ // 1. Client-side requests go to /api/... (e.g., /api/iam/sign-in, /api/i18n/errors/de)
216
+ // 2. This proxy strips the /api prefix and forwards to the backend
217
+ // 3. Backend receives the original path (e.g., /iam/sign-in, /i18n/errors/de)
218
+ //
219
+ // Why: Frontend (localhost:3001) and backend (localhost:3000) run on different
220
+ // ports. The proxy makes requests same-origin so cookies work correctly.
214
221
  '/api': {
215
222
  target: 'http://localhost:3000',
216
223
  changeOrigin: true,
224
+ rewrite: (path) => path.replace(/^\/api/, ''),
217
225
  },
218
- // IAM proxy for direct BetterAuth endpoints (SSR mode)
226
+ // Direct IAM proxy for BetterAuth endpoints (SSR Nitro server handler
227
+ // and direct browser redirects, e.g., OAuth callbacks)
219
228
  '/iam': {
220
229
  target: 'http://localhost:3000',
221
230
  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",