Skip to content

feat(app,admin): migrate consoles from Nuxt 3 EOL to Nuxt 4 - #28

Merged
maksymhryzodub-prog merged 4 commits into
mainfrom
feat/CLEAN-32-nuxt4-migration
Aug 16, 2026
Merged

feat(app,admin): migrate consoles from Nuxt 3 EOL to Nuxt 4#28
maksymhryzodub-prog merged 4 commits into
mainfrom
feat/CLEAN-32-nuxt4-migration

Conversation

@maksymhryzodub-prog

Copy link
Copy Markdown
Contributor

Summary

  • Upgrade app/ and admin/ from Nuxt 3.21 (EOL) to Nuxt 4.5, with @nuxtjs/i18n v10, @pinia/nuxt 0.11, and @nuxt/image 2.1. Slice layout stays v3-flat (registerSlices(), no app/app/).
  • Locale files now live only at <slice>/i18n/locales/; nuxt typecheck is wired into both hosts, turbo, and CI after swagger generate.
  • Typecheck stays green by keeping Nuxt 3-era noUncheckedIndexedAccess and a few call-site fixes (Icon class, template types, file viewer props, Badge import).

Closes CLEAN-32 (Jira). Spec: specs/002-nuxt4-migration/.

Test plan

  • cd app && bun run build and cd admin && bun run build (needs api/swagger-spec.json)
  • bun run typecheck at repo root
  • CI: swagger generate + turbo typecheck + lint + test
  • Smoke app :3000 and admin :3001 with API up: login, nav, one agent flow, settings; URLs stay unprefixed (no_prefix)
  • Confirm 11 app / 28 admin layers still load; i18n strings and Pinia stores still resolve
  • Optional: docker build -f app/Dockerfile . and docker build -f admin/Dockerfile . — entry remains node .output/server/index.mjs

Made with Cursor

maksymhryzodub-prog and others added 4 commits August 14, 2026 12:43
Nuxt 3 is out of support. Move both hosts to Nuxt 4 with i18n v10 and Pinia 0.11, keep the v3-flat slice layout, and add nuxt typecheck to CI.

Co-authored-by: Cursor <cursoragent@cursor.com>
…igration

# Conflicts:
#	.specify/feature.json
#	bun.lock
Post-merge follow-up: the thinking-segment anchor read
messages[length-1].ts behind a length guard, which the stricter Nuxt 4
tsconfig still flags as possibly undefined — optional-chain it instead.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Regex capture groups and indexed array reads are string|undefined under
the Nuxt 4 tsconfig. Narrow via optional chaining + locals instead of
non-null assertions: the three cookie access_token parsers
(agent.gateway, agentFile.gateway, useRanchUpdate, apiBaseUrl), the log
timestamp/text groups in agentLogs, and the stream/stream_end upserts in
the bridle store. Full sweep over slices/**/*.ts in both consoles is
clean (the lone remaining agent.ts API-type error predates the
migration and needs an openapi regen, not a code fix).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@maksymhryzodub-prog
maksymhryzodub-prog merged commit 70b0286 into main Aug 16, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant