KIR-612: Update dependencies, Vite config, and TanStack Store usage - #101
Conversation
Bring the stack to current Vite 8, TanStack, and Prisma 7 practices by bumping workspace dependencies, switching to native tsconfig path resolution, migrating store devtools from Derived to createAtom, and aligning CI/tooling with Node 22. Co-authored-by: Cursor <cursoragent@cursor.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
Pull request overview
This PR updates the repo’s toolchain and runtime dependencies (Vite 8, TanStack libraries, Prisma 7.9.1, Biome 2.5.8, Node 22 in CI), modernizes Vite/Vitest configuration to use native tsconfig path resolution, and updates internal devtools/tests to accommodate upstream API changes.
Changes:
- Upgraded Prisma + regenerated the Prisma client outputs under
full-stack/src/_generated/prisma. - Updated Vite/Vitest config to use
resolve.tsconfigPathsand removedvite-tsconfig-pathsand prior esbuild tsconfigRaw overrides. - Migrated TanStack Store devtools off the removed
DerivedAPI, and adjusted Group domain tests to work with the updated Vitest setup.
Reviewed changes
Copilot reviewed 34 out of 35 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| prisma.Dockerfile | Updates Node base image used for Prisma-related Docker build steps. |
| package.json | Bumps Prisma + Biome + dotenv and adds install-script allowlist. |
| full-stack/vitest.config.ts | Switches to native resolve.tsconfigPaths. |
| full-stack/vite.config.ts | Switches to native resolve.tsconfigPaths and removes vite-tsconfig-paths plugin. |
| full-stack/tsconfig.json | Updates TypeScript compiler options (notably path alias config). |
| full-stack/src/domains/group/api/group.e2e.spec.ts | Refactors the “e2e” test to resolve GroupService via DI + mocked Prisma. |
| full-stack/src/devtools/tanstack-store.devtools.tsx | Migrates store devtools from Derived to createAtom and updates devtools event wiring. |
| full-stack/src/_generated/prisma/models/Username.ts | Prisma client regeneration output changes. |
| full-stack/src/_generated/prisma/models/User.ts | Prisma client regeneration output changes. |
| full-stack/src/_generated/prisma/models/Statement.ts | Prisma client regeneration output changes. |
| full-stack/src/_generated/prisma/models/Semester.ts | Prisma client regeneration output changes. |
| full-stack/src/_generated/prisma/models/Scoreboard.ts | Prisma client regeneration output changes. |
| full-stack/src/_generated/prisma/models/Profile.ts | Prisma client regeneration output changes. |
| full-stack/src/_generated/prisma/models/PolicyAssignment.ts | Prisma client regeneration output changes. |
| full-stack/src/_generated/prisma/models/Policy.ts | Prisma client regeneration output changes. |
| full-stack/src/_generated/prisma/models/PointRequest.ts | Prisma client regeneration output changes. |
| full-stack/src/_generated/prisma/models/PointHistory.ts | Prisma client regeneration output changes. |
| full-stack/src/_generated/prisma/models/Notification.ts | Prisma client regeneration output changes. |
| full-stack/src/_generated/prisma/models/MembershipStatus.ts | Prisma client regeneration output changes. |
| full-stack/src/_generated/prisma/models/Membership.ts | Prisma client regeneration output changes. |
| full-stack/src/_generated/prisma/models/GuidelineCollection.ts | Prisma client regeneration output changes. |
| full-stack/src/_generated/prisma/models/Guideline.ts | Prisma client regeneration output changes. |
| full-stack/src/_generated/prisma/models/Group.ts | Prisma client regeneration output changes. |
| full-stack/src/_generated/prisma/models/ExternalAccountLink.ts | Prisma client regeneration output changes. |
| full-stack/src/_generated/prisma/models/Evaluation.ts | Prisma client regeneration output changes. |
| full-stack/src/_generated/prisma/models/EntryAwardRequest.ts | Prisma client regeneration output changes. |
| full-stack/src/_generated/prisma/models/CurrentSemester.ts | Prisma client regeneration output changes. |
| full-stack/src/_generated/prisma/internal/prismaNamespace.ts | Prisma client internal types updated for Prisma 7.9.1. |
| full-stack/src/_generated/prisma/internal/class.ts | Prisma client internal constructor typings/docs updated. |
| full-stack/src/_generated/prisma/client.ts | Prisma client docs regenerated. |
| full-stack/package.json | Major dependency upgrades across TanStack/Vite/Vitest/TypeScript/etc. |
| full-stack/biome.json | Updates Biome schema URL for v2.5.8. |
| biome.json | Updates Biome schema URL and assist/actions config shape. |
| .github/workflows/ci.yml | Bumps CI Node version to 22. |
Suppressed comments (5)
full-stack/src/devtools/tanstack-store.devtools.tsx:20
EventClientautomatically namespaces events withpluginId:. Defining/emitting/listening to the fully-qualified name (store-devtools:state) will double-namespace the event and can prevent the devtools bus from receiving it. The event map key should be the suffix (e.g.state).
This issue also appears in the following locations of the same file:
- line 33
- line 41
- line 48
type EventMap = {
'store-devtools:state': {
firstName: string;
lastName: string;
fullName: string;
};
};
full-stack/src/devtools/tanstack-store.devtools.tsx:33
- When emitting events from
EventClient, pass only the event suffix (thepluginIdis applied automatically).
devToolsClient.emit('store-devtools:state', {
full-stack/src/devtools/tanstack-store.devtools.tsx:41
- Update the local state type to match the un-namespaced event key used by
EventClient(it namespaces internally).
const [state, setState] = useState<EventMap['store-devtools:state']>(() => ({
full-stack/src/devtools/tanstack-store.devtools.tsx:48
- When subscribing with
EventClient.on, pass only the event suffix (thepluginIdis applied automatically).
return devToolsClient.on('store-devtools:state', (e) =>
full-stack/src/domains/group/api/group.e2e.spec.ts:34
- This test now resolves/calls
GroupService.findMany, but the test name still says it calls the controller. Updating theit(...)description will make failures easier to interpret in Vitest output.
const result = await container.resolve(GroupService).findMany({
skip: 0,
take: 10,
});
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
|
||
| import { GroupController } from '@/domains/group/api/group.controller'; | ||
|
|
||
| describe('GroupController (e2e)', () => { |
| "noFallthroughCasesInSwitch": true, | ||
| "noUncheckedSideEffectImports": true, | ||
| "baseUrl": ".", | ||
| "paths": { |
Summary
resolve.tsconfigPaths, dropvite-tsconfig-paths, and rely on tsconfig for decorator metadata via Oxc.DerivedAPI tocreateAtom, and fix the group controller e2e spec for Vitest.package.json.Linear: https://linear.app/kir-dev/issue/KIR-612/update-dependencies-vite-config-and-tanstack-store-usage
Test plan
npx biome check .npm test --workspace full-stacknpm run build --workspace full-stackMade with Cursor