create-fate 1.7.7 → 1.8.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.
Files changed (47) hide show
  1. package/bin/create-fate.mjs +40 -6
  2. package/package.json +1 -1
  3. package/templates/fate/_shared/vue-app/package.json +3 -2
  4. package/templates/fate/_shared/vue-app/src/App.css +1 -6
  5. package/templates/fate/_shared/vue-app/vite.config.ts +12 -1
  6. package/templates/fate/drizzle/AGENTS.md +1 -1
  7. package/templates/fate/drizzle/_gitignore +1 -0
  8. package/templates/fate/drizzle/client/package.json +2 -2
  9. package/templates/fate/drizzle/client/pages/layout.tsx +2 -2
  10. package/templates/fate/drizzle/client/src/App.css +1 -6
  11. package/templates/fate/drizzle/pnpm-workspace.yaml +4 -4
  12. package/templates/fate/drizzle/server/package.json +1 -1
  13. package/templates/fate/graphql/AGENTS.md +1 -1
  14. package/templates/fate/graphql/_gitignore +1 -0
  15. package/templates/fate/graphql/client/package.json +2 -2
  16. package/templates/fate/graphql/client/pages/layout.tsx +2 -2
  17. package/templates/fate/graphql/client/src/App.css +1 -6
  18. package/templates/fate/graphql/pnpm-workspace.yaml +3 -3
  19. package/templates/fate/graphql-client/AGENTS.md +20 -0
  20. package/templates/fate/graphql-client/_gitignore +1 -0
  21. package/templates/fate/graphql-client/package.json +2 -2
  22. package/templates/fate/graphql-client/pnpm-workspace.yaml +3 -3
  23. package/templates/fate/graphql-client/src/App.css +1 -7
  24. package/templates/fate/graphql-client/vite.config.ts +1 -11
  25. package/templates/fate/http/AGENTS.md +1 -1
  26. package/templates/fate/http/_gitignore +1 -0
  27. package/templates/fate/http/client/package.json +2 -2
  28. package/templates/fate/http/client/pages/layout.tsx +2 -2
  29. package/templates/fate/http/client/src/App.css +1 -6
  30. package/templates/fate/http/pnpm-workspace.yaml +4 -4
  31. package/templates/fate/http/server/package.json +1 -1
  32. package/templates/fate/prisma/AGENTS.md +1 -1
  33. package/templates/fate/prisma/_gitignore +1 -0
  34. package/templates/fate/prisma/client/package.json +2 -2
  35. package/templates/fate/prisma/client/pages/layout.tsx +2 -2
  36. package/templates/fate/prisma/client/src/App.css +1 -6
  37. package/templates/fate/prisma/pnpm-workspace.yaml +3 -3
  38. package/templates/fate/void/AGENTS.md +23 -0
  39. package/templates/fate/void/_gitignore +1 -0
  40. package/templates/fate/void/db/migrations/20261015035853_better_auth_accounts.sql +3 -0
  41. package/templates/fate/void/db/migrations/meta/20261015035853_snapshot.json +918 -0
  42. package/templates/fate/void/db/migrations/meta/_journal.json +7 -0
  43. package/templates/fate/void/db/schema.ts +20 -3
  44. package/templates/fate/void/package.json +4 -4
  45. package/templates/fate/void/pnpm-workspace.yaml +5 -4
  46. package/templates/fate/void/src/App.css +1 -6
  47. package/templates/fate/void/vite.config.ts +0 -7
@@ -364,7 +364,7 @@ const reactPackageEntries = [
364
364
  'react-fate',
365
365
  ];
366
366
 
367
- const vueAgentsGuide = `# Using _fate_ for Vue applications
367
+ const vueAgentsGuide = (docsDir) => `# Using _fate_ for Vue applications
368
368
 
369
369
  This guidance is for agents working in projects bootstrapped from the fate Vue template. It focuses on Vue-native composables for fate's view composition and request execution.
370
370
 
@@ -391,7 +391,7 @@ This guidance is for agents working in projects bootstrapped from the fate Vue t
391
391
  - **\`useRequest\` only at route roots:** Create a dedicated \`useRequest\` call per screen root that pulls together all child views; do not scatter \`useRequest\` across leaf components unless it is necessary to issue a separate request.
392
392
  - **fate client support:** fate's local client support files are maintained by the Vite/fate tooling. Do not manually edit \`.fate\` files; make the proper schema changes on the server and run \`pnpm fate:generate\` when working outside Vite dev.
393
393
 
394
- Full documentation can be found on the filesystem at \`./client/node_modules/vue-fate/README.md\` or online at [fate.technology](https://fate.technology/).
394
+ Before working on fate, read only the relevant Markdown docs in \`${docsDir}/\`. Start with \`index.md\` to find guides, integrations, and API references; read \`guide/vue.md\` for Vue-specific APIs. The docs match the installed package version. Online documentation is at [fate.technology](https://fate.technology/).
395
395
 
396
396
  ## Review Checklist for Agents
397
397
 
@@ -651,6 +651,31 @@ const configureVueRootPackageJson = (targetPath) => {
651
651
  writePackageJson(packagePath, packageJson);
652
652
  };
653
653
 
654
+ const configureVueRootViteConfig = (targetPath) => {
655
+ const configPath = path.join(targetPath, 'vite.config.ts');
656
+ const config = fs.readFileSync(configPath, 'utf8');
657
+ fs.writeFileSync(
658
+ configPath,
659
+ config.replace(
660
+ 'overrides: [',
661
+ `overrides: [
662
+ {
663
+ env: { browser: true },
664
+ files: ['**/*.vue'],
665
+ globals: {
666
+ defineEmits: 'readonly',
667
+ defineExpose: 'readonly',
668
+ defineModel: 'readonly',
669
+ defineOptions: 'readonly',
670
+ defineProps: 'readonly',
671
+ defineSlots: 'readonly',
672
+ withDefaults: 'readonly',
673
+ },
674
+ },`,
675
+ ),
676
+ );
677
+ };
678
+
654
679
  const configureVueVoidServerFiles = (frontendRoot) => {
655
680
  const oldSessionUser = path.join(frontendRoot, 'src', 'user', 'SessionUser.tsx');
656
681
  const nextSessionUser = path.join(frontendRoot, 'src', 'user', 'SessionUser.ts');
@@ -667,17 +692,25 @@ const configureVueVoidServerFiles = (frontendRoot) => {
667
692
  );
668
693
  };
669
694
 
670
- const configureVueAgents = (targetPath) => {
695
+ const configureVueAgents = (targetPath, selectedVariant) => {
671
696
  const agentsPath = path.join(targetPath, 'AGENTS.md');
697
+ const docsDir = path
698
+ .relative(
699
+ targetPath,
700
+ path.join(frontendRootForVariant(targetPath, selectedVariant), 'node_modules/vue-fate/docs'),
701
+ )
702
+ .split(path.sep)
703
+ .join('/');
704
+ const guide = vueAgentsGuide(docsDir);
672
705
  if (!fs.existsSync(agentsPath)) {
673
- fs.writeFileSync(agentsPath, `${vueAgentsGuide}\n`);
706
+ fs.writeFileSync(agentsPath, `${guide}\n`);
674
707
  return;
675
708
  }
676
709
 
677
710
  const agents = fs.readFileSync(agentsPath, 'utf8');
678
711
  const vitePlusIndex = agents.indexOf('<!--VITE PLUS START-->');
679
712
  const suffix = vitePlusIndex === -1 ? agents : agents.slice(vitePlusIndex);
680
- fs.writeFileSync(agentsPath, `${vueAgentsGuide}\n\n${suffix.trim()}\n`);
713
+ fs.writeFileSync(agentsPath, `${guide}\n\n${suffix.trim()}\n`);
681
714
  };
682
715
 
683
716
  const configureVueReadme = (targetPath, selectedVariant) => {
@@ -770,8 +803,9 @@ const configureVueTemplate = (targetPath, selectedVariant) => {
770
803
  configureVuePackageJson(frontendRoot, selectedVariant, originalPackageJson);
771
804
  if (frontendRoot !== targetPath) {
772
805
  configureVueRootPackageJson(targetPath);
806
+ configureVueRootViteConfig(targetPath);
773
807
  }
774
- configureVueAgents(targetPath);
808
+ configureVueAgents(targetPath, selectedVariant);
775
809
  if (selectedVariant === 'void') {
776
810
  configureVueVoidDemoContent(targetPath);
777
811
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-fate",
3
- "version": "1.7.7",
3
+ "version": "1.8.0",
4
4
  "description": "Create a new fate app.",
5
5
  "homepage": "https://github.com/nkzw-tech/fate",
6
6
  "license": "MIT",
@@ -22,13 +22,13 @@
22
22
  "@nkzw/core": "^1.3.1",
23
23
  "@nkzw/define-env": "^1.1.0",
24
24
  "@trpc/client": "^11.18.0",
25
- "@void/vue": "^0.24.0",
25
+ "@void/vue": "^1.1.0",
26
26
  "class-variance-authority": "^0.7.1",
27
27
  "clsx": "^2.1.1",
28
28
  "dotenv": "^17.4.2",
29
29
  "graphql-sse": "^2.6.1",
30
30
  "tailwind-merge": "^3.6.0",
31
- "void": "^0.24.0",
31
+ "void": "^1.1.0",
32
32
  "vue": "^3.5.41",
33
33
  "vue-fate": "latest"
34
34
  },
@@ -39,6 +39,7 @@
39
39
  "@swc/core": "^1.16.1",
40
40
  "@tailwindcss/vite": "^4.3.3",
41
41
  "@types/node": "^26.4.0",
42
+ "@vitejs/plugin-vue": "^6.0.10",
42
43
  "tailwindcss": "^4.3.3",
43
44
  "typescript": "^7.0.2",
44
45
  "vite": "catalog:",
@@ -2,12 +2,7 @@
2
2
 
3
3
  body {
4
4
  font-family:
5
- system-ui,
6
- -apple-system,
7
- BlinkMacSystemFont,
8
- 'Segoe UI',
9
- 'Open Sans',
10
- 'Helvetica Neue',
5
+ system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Open Sans', 'Helvetica Neue',
11
6
  sans-serif;
12
7
 
13
8
  background-color: hsl(var(--background));
@@ -1,5 +1,6 @@
1
1
  import nkzw from '@nkzw/oxlint-config';
2
2
  import tailwindcss from '@tailwindcss/vite';
3
+ import vue from '@vitejs/plugin-vue';
3
4
  import { voidVue } from '@void/vue/plugin';
4
5
  import { defineConfig, lazyPlugins } from 'vite-plus';
5
6
  import { voidPlugin } from 'void';
@@ -7,6 +8,8 @@ import { fate } from 'vue-fate/vite';
7
8
 
8
9
  /* __ENV_CONFIG__ */
9
10
 
11
+ const isTest = process.env.NODE_ENV === 'test' || process.env.VITEST;
12
+
10
13
  export default defineConfig({
11
14
  /* __BUILD_CONFIG__ */
12
15
  optimizeDeps: {
@@ -31,6 +34,7 @@ export default defineConfig({
31
34
  options: { typeAware: true, typeCheck: true },
32
35
  overrides: [
33
36
  {
37
+ env: { browser: true },
34
38
  files: ['**/*.vue'],
35
39
  globals: {
36
40
  defineEmits: 'readonly',
@@ -42,13 +46,20 @@ export default defineConfig({
42
46
  withDefaults: 'readonly',
43
47
  },
44
48
  },
49
+ {
50
+ files: ['db/seed.ts', '**/__tests__/**'],
51
+ rules: {
52
+ 'no-console': 'off',
53
+ },
54
+ },
45
55
  ],
46
56
  rules: {
47
57
  '@typescript-eslint/no-explicit-any': 'off',
48
58
  },
49
59
  },
50
60
  plugins: [
51
- ...(lazyPlugins(() => [tailwindcss(), voidPlugin(), voidVue()]) ?? []),
61
+ ...(lazyPlugins(() => [tailwindcss(), ...(isTest ? [vue()] : [voidPlugin(), voidVue()])]) ??
62
+ []),
52
63
  fate({
53
64
  module: '__FATE_MODULE__',
54
65
  /* __FATE_TRANSPORT__ */
@@ -29,7 +29,7 @@ This guidance is for agents working in projects bootstrapped from the fate templ
29
29
  - **fate client support** fate's local client support files are maintained by the Vite/fate tooling. Do not manually edit `.fate` files; make the proper schema changes on the server and run `pnpm fate:generate` when working outside Vite dev.
30
30
  - **Library Versions:** This repository uses the most recent releases of React, fate, Vite, tRPC, and more. You might not know about the new releases yet, please don't get confused. The versions you see are real, and there are no feature or version mismatches. You can search the internet for more information about them.
31
31
 
32
- Full documentation can be found on the filesystem at `./client/node_modules/react-fate/README.md` or online at [fate.technology](https://fate.technology/).
32
+ Before working on fate, read only the relevant Markdown docs in `client/node_modules/react-fate/docs/`. Start with `index.md` to find guides, integrations, and API references. The docs match the installed package version. Online documentation is at [fate.technology](https://fate.technology/).
33
33
 
34
34
  ## Review Checklist for Agents
35
35
 
@@ -1,6 +1,7 @@
1
1
  .fate/
2
2
  **/.fate/
3
3
  .void/
4
+ .wrangler/
4
5
  **/.void/
5
6
  .eslintcache
6
7
  .pnpm-debug.log
@@ -27,7 +27,7 @@
27
27
  "@nkzw/stack": "^2.3.2",
28
28
  "@radix-ui/react-slot": "^1.3.3",
29
29
  "@trpc/client": "^11.18.0",
30
- "@void/react": "^0.24.0",
30
+ "@void/react": "^1.1.0",
31
31
  "better-auth": "^1.7.7",
32
32
  "class-variance-authority": "^0.7.1",
33
33
  "clsx": "^2.1.1",
@@ -38,7 +38,7 @@
38
38
  "react-error-boundary": "^6.1.3",
39
39
  "react-fate": "latest",
40
40
  "tailwind-merge": "^3.6.0",
41
- "void": "^0.24.0"
41
+ "void": "^1.1.0"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@nkzw/fbtee-compiler": "^5.0.0",
@@ -23,7 +23,7 @@ const Thinking = () => (
23
23
  );
24
24
 
25
25
  export default function Layout({ children }: { children: ReactNode }) {
26
- const { data: session } = AuthClient.useSession();
26
+ const { data: session, isPending } = AuthClient.useSession();
27
27
  const userId = session?.user.id;
28
28
 
29
29
  const fate = useMemo(
@@ -58,7 +58,7 @@ export default function Layout({ children }: { children: ReactNode }) {
58
58
  <div className="min-h-screen bg-background text-foreground">
59
59
  <div className="min-h-screen bg-[radial-gradient(circle_at_20%_20%,rgba(59,130,246,0.08),transparent_35%),radial-gradient(circle_at_80%_0,rgba(99,102,241,0.08),transparent_28%)]">
60
60
  <Header />
61
- {session ? (
61
+ {isPending ? (
62
62
  <Thinking />
63
63
  ) : (
64
64
  <FateClient client={fate} key={userId}>
@@ -2,12 +2,7 @@
2
2
 
3
3
  body {
4
4
  font-family:
5
- system-ui,
6
- -apple-system,
7
- BlinkMacSystemFont,
8
- 'Segoe UI',
9
- 'Open Sans',
10
- 'Helvetica Neue',
5
+ system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Open Sans', 'Helvetica Neue',
11
6
  sans-serif;
12
7
 
13
8
  background-color: hsl(var(--background));
@@ -11,9 +11,9 @@ allowBuilds:
11
11
  workerd: true
12
12
 
13
13
  catalog:
14
- vite: npm:@voidzero-dev/vite-plus-core@1.0.0
15
- vite-plus: 1.0.0
16
- vitest: 5.0.2
14
+ vite: npm:@voidzero-dev/vite-plus-core@1.2.0
15
+ vite-plus: 1.2.0
16
+ vitest: 5.0.4
17
17
 
18
18
  minimumReleaseAgeExclude:
19
19
  - '@voidzero-dev/vite-plus-core'
@@ -29,7 +29,7 @@ onlyBuiltDependencies:
29
29
 
30
30
  overrides:
31
31
  better-auth: 1.7.7
32
- drizzle-orm: 0.45.3
32
+ drizzle-orm: 0.45.4
33
33
  kysely: 0.28.17
34
34
  vite: 'catalog:'
35
35
  vitest: 'catalog:'
@@ -27,7 +27,7 @@
27
27
  "@nkzw/fate": "latest",
28
28
  "@trpc/server": "^11.18.0",
29
29
  "better-auth": "^1.7.7",
30
- "drizzle-orm": "^0.45.3",
30
+ "drizzle-orm": "^0.45.4",
31
31
  "hono": "^4.13.5",
32
32
  "pg": "^8.23.1",
33
33
  "zod": "^4.4.3"
@@ -29,7 +29,7 @@ This guidance is for agents working in projects bootstrapped from the fate templ
29
29
  - **fate client support** fate's local client support files are maintained by the Vite/fate tooling. Do not manually edit `.fate` files; make the proper schema changes on the server and run `pnpm fate:generate` when working outside Vite dev.
30
30
  - **Library Versions:** This repository uses the most recent releases of React, fate, Vite, GraphQL, and more. You might not know about the new releases yet, please don't get confused. The versions you see are real, and there are no feature or version mismatches. You can search the internet for more information about them.
31
31
 
32
- Full documentation can be found on the filesystem at `./client/node_modules/react-fate/README.md` or online at [fate.technology](https://fate.technology/).
32
+ Before working on fate, read only the relevant Markdown docs in `client/node_modules/react-fate/docs/`. Start with `index.md` to find guides, integrations, and API references. The docs match the installed package version. Online documentation is at [fate.technology](https://fate.technology/).
33
33
 
34
34
  ## Review Checklist for Agents
35
35
 
@@ -1,6 +1,7 @@
1
1
  .fate/
2
2
  **/.fate/
3
3
  .void/
4
+ .wrangler/
4
5
  **/.void/
5
6
  .eslintcache
6
7
  .pnpm-debug.log
@@ -26,7 +26,7 @@
26
26
  "@nkzw/define-env": "^1.1.0",
27
27
  "@nkzw/stack": "^2.3.2",
28
28
  "@radix-ui/react-slot": "^1.3.3",
29
- "@void/react": "^0.24.0",
29
+ "@void/react": "^1.1.0",
30
30
  "better-auth": "^1.7.7",
31
31
  "class-variance-authority": "^0.7.1",
32
32
  "clsx": "^2.1.1",
@@ -38,7 +38,7 @@
38
38
  "react-error-boundary": "^6.1.3",
39
39
  "react-fate": "latest",
40
40
  "tailwind-merge": "^3.6.0",
41
- "void": "^0.24.0"
41
+ "void": "^1.1.0"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@nkzw/fbtee-compiler": "^5.0.0",
@@ -22,7 +22,7 @@ const Thinking = () => (
22
22
  );
23
23
 
24
24
  export default function Layout({ children }: { children: ReactNode }) {
25
- const { data: session } = AuthClient.useSession();
25
+ const { data: session, isPending } = AuthClient.useSession();
26
26
  const userId = session?.user.id;
27
27
 
28
28
  const fate = useMemo(
@@ -45,7 +45,7 @@ export default function Layout({ children }: { children: ReactNode }) {
45
45
  <div className="min-h-screen bg-background text-foreground">
46
46
  <div className="min-h-screen bg-[radial-gradient(circle_at_20%_20%,rgba(59,130,246,0.08),transparent_35%),radial-gradient(circle_at_80%_0,rgba(99,102,241,0.08),transparent_28%)]">
47
47
  <Header />
48
- {session ? (
48
+ {isPending ? (
49
49
  <Thinking />
50
50
  ) : (
51
51
  <FateClient client={fate} key={userId}>
@@ -2,12 +2,7 @@
2
2
 
3
3
  body {
4
4
  font-family:
5
- system-ui,
6
- -apple-system,
7
- BlinkMacSystemFont,
8
- 'Segoe UI',
9
- 'Open Sans',
10
- 'Helvetica Neue',
5
+ system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Open Sans', 'Helvetica Neue',
11
6
  sans-serif;
12
7
 
13
8
  background-color: hsl(var(--background));
@@ -12,9 +12,9 @@ allowBuilds:
12
12
  workerd: true
13
13
 
14
14
  catalog:
15
- vite: npm:@voidzero-dev/vite-plus-core@1.0.0
16
- vite-plus: 1.0.0
17
- vitest: 5.0.2
15
+ vite: npm:@voidzero-dev/vite-plus-core@1.2.0
16
+ vite-plus: 1.2.0
17
+ vitest: 5.0.4
18
18
 
19
19
  minimumReleaseAgeExclude:
20
20
  - '@voidzero-dev/vite-plus-core'
@@ -1,3 +1,23 @@
1
+ # Using fate
2
+
3
+ Before working on fate, read only the relevant Markdown docs in `node_modules/react-fate/docs/`. Start with `index.md` to find guides, integrations, and API references. The docs match the installed package version. Online documentation is at [fate.technology](https://fate.technology/).
4
+
5
+ <!--VITE PLUS START-->
6
+
7
+ # Using Vite+, the Unified Toolchain for the Web
8
+
9
+ This project is using Vite+, a unified toolchain built on top of Vite, Rolldown, Vitest, tsdown, Oxlint, Oxfmt, and Vite Task. Vite+ wraps runtime management, package management, and frontend tooling in a single global CLI called `vp`. Vite+ is distinct from Vite, and it invokes Vite through `vp dev` and `vp build`. Run `vp help` to print a list of commands and `vp <command> --help` for information about a specific command.
10
+
11
+ Docs are local at `node_modules/vite-plus/docs` or online at https://viteplus.dev/guide/.
12
+
13
+ ## Review Checklist
14
+
15
+ - [ ] Run `vp install` after pulling remote changes and before getting started.
16
+ - [ ] Run `vp check` and `vp test` to format, lint, type check and test changes.
17
+ - [ ] Check if there are `vite.config.ts` tasks or `package.json` scripts necessary for validation, run via `vp run <script>`.
18
+
1
19
  Run `vp run test:all` to verify changes.
2
20
 
3
21
  Run `vp check --fix` to fix formatting and lint errors.
22
+
23
+ <!--VITE PLUS END-->
@@ -1,6 +1,7 @@
1
1
  .fate/
2
2
  **/.fate/
3
3
  .void/
4
+ .wrangler/
4
5
  **/.void/
5
6
  .eslintcache
6
7
  .pnpm-debug.log
@@ -23,7 +23,7 @@
23
23
  },
24
24
  "dependencies": {
25
25
  "@nkzw/fate": "latest",
26
- "@void/react": "^0.24.0",
26
+ "@void/react": "^1.1.0",
27
27
  "fbtee": "^5.0.0",
28
28
  "graphql-sse": "^2.6.1",
29
29
  "lucide-react": "^1.34.0",
@@ -31,7 +31,7 @@
31
31
  "react-dom": "^19.3.0",
32
32
  "react-error-boundary": "^6.1.3",
33
33
  "react-fate": "latest",
34
- "void": "^0.24.0"
34
+ "void": "^1.1.0"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@nkzw/eslint-plugin": "^2.0.0",
@@ -9,9 +9,9 @@ allowBuilds:
9
9
  workerd: true
10
10
 
11
11
  catalog:
12
- vite: npm:@voidzero-dev/vite-plus-core@1.0.0
13
- vite-plus: 1.0.0
14
- vitest: 5.0.2
12
+ vite: npm:@voidzero-dev/vite-plus-core@1.2.0
13
+ vite-plus: 1.2.0
14
+ vitest: 5.0.4
15
15
 
16
16
  minimumReleaseAgeExclude:
17
17
  - '@voidzero-dev/vite-plus-core'
@@ -5,13 +5,7 @@ body {
5
5
  background: #f8fafc;
6
6
  color: #111827;
7
7
  font-family:
8
- Inter,
9
- ui-sans-serif,
10
- system-ui,
11
- -apple-system,
12
- BlinkMacSystemFont,
13
- 'Segoe UI',
14
- sans-serif;
8
+ Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
15
9
  }
16
10
 
17
11
  button,
@@ -16,17 +16,7 @@ export default defineConfig({
16
16
  environments: {
17
17
  void_worker: {
18
18
  optimizeDeps: {
19
- exclude: [
20
- '@nkzw/fate',
21
- '@nkzw/fate/client',
22
- '@nkzw/fate/server',
23
- '@void/react',
24
- '@void/react/pages-server',
25
- 'lucide-react',
26
- 'react-error-boundary',
27
- 'react-fate',
28
- 'react-fate/client',
29
- ],
19
+ exclude: ['@nkzw/fate', '@nkzw/fate/client', '@nkzw/fate/server', 'react-fate/client'],
30
20
  },
31
21
  },
32
22
  },
@@ -29,7 +29,7 @@ This guidance is for agents working in projects bootstrapped from the fate templ
29
29
  - **fate client support** fate's local client support files are maintained by the Vite/fate tooling. Do not manually edit `.fate` files; make the proper schema changes on the server and run `pnpm fate:generate` when working outside Vite dev.
30
30
  - **Library Versions:** This repository uses the most recent releases of React, fate, Vite, and more. You might not know about the new releases yet, please don't get confused. The versions you see are real, and there are no feature or version mismatches. You can search the internet for more information about them.
31
31
 
32
- Full documentation can be found on the filesystem at `./client/node_modules/react-fate/README.md` or online at [fate.technology](https://fate.technology/).
32
+ Before working on fate, read only the relevant Markdown docs in `client/node_modules/react-fate/docs/`. Start with `index.md` to find guides, integrations, and API references. The docs match the installed package version. Online documentation is at [fate.technology](https://fate.technology/).
33
33
 
34
34
  ## Review Checklist for Agents
35
35
 
@@ -1,6 +1,7 @@
1
1
  .fate/
2
2
  **/.fate/
3
3
  .void/
4
+ .wrangler/
4
5
  **/.void/
5
6
  .eslintcache
6
7
  .pnpm-debug.log
@@ -26,7 +26,7 @@
26
26
  "@nkzw/define-env": "^1.1.0",
27
27
  "@nkzw/stack": "^2.3.2",
28
28
  "@radix-ui/react-slot": "^1.3.3",
29
- "@void/react": "^0.24.0",
29
+ "@void/react": "^1.1.0",
30
30
  "better-auth": "^1.7.7",
31
31
  "class-variance-authority": "^0.7.1",
32
32
  "clsx": "^2.1.1",
@@ -37,7 +37,7 @@
37
37
  "react-error-boundary": "^6.1.3",
38
38
  "react-fate": "latest",
39
39
  "tailwind-merge": "^3.6.0",
40
- "void": "^0.24.0"
40
+ "void": "^1.1.0"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@nkzw/fbtee-compiler": "^5.0.0",
@@ -22,7 +22,7 @@ const Thinking = () => (
22
22
  );
23
23
 
24
24
  export default function Layout({ children }: { children: ReactNode }) {
25
- const { data: session } = AuthClient.useSession();
25
+ const { data: session, isPending } = AuthClient.useSession();
26
26
  const userId = session?.user.id;
27
27
 
28
28
  const fate = useMemo(
@@ -43,7 +43,7 @@ export default function Layout({ children }: { children: ReactNode }) {
43
43
  <div className="min-h-screen bg-background text-foreground">
44
44
  <div className="min-h-screen bg-[radial-gradient(circle_at_20%_20%,rgba(59,130,246,0.08),transparent_35%),radial-gradient(circle_at_80%_0,rgba(99,102,241,0.08),transparent_28%)]">
45
45
  <Header />
46
- {session ? (
46
+ {isPending ? (
47
47
  <Thinking />
48
48
  ) : (
49
49
  <FateClient client={fate} key={userId}>
@@ -2,12 +2,7 @@
2
2
 
3
3
  body {
4
4
  font-family:
5
- system-ui,
6
- -apple-system,
7
- BlinkMacSystemFont,
8
- 'Segoe UI',
9
- 'Open Sans',
10
- 'Helvetica Neue',
5
+ system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Open Sans', 'Helvetica Neue',
11
6
  sans-serif;
12
7
 
13
8
  background-color: hsl(var(--background));
@@ -11,9 +11,9 @@ allowBuilds:
11
11
  workerd: true
12
12
 
13
13
  catalog:
14
- vite: npm:@voidzero-dev/vite-plus-core@1.0.0
15
- vite-plus: 1.0.0
16
- vitest: 5.0.2
14
+ vite: npm:@voidzero-dev/vite-plus-core@1.2.0
15
+ vite-plus: 1.2.0
16
+ vitest: 5.0.4
17
17
 
18
18
  minimumReleaseAgeExclude:
19
19
  - '@voidzero-dev/vite-plus-core'
@@ -29,7 +29,7 @@ onlyBuiltDependencies:
29
29
 
30
30
  overrides:
31
31
  better-auth: 1.7.7
32
- drizzle-orm: 0.45.3
32
+ drizzle-orm: 0.45.4
33
33
  kysely: 0.28.17
34
34
  vite: 'catalog:'
35
35
  vitest: 'catalog:'
@@ -25,7 +25,7 @@
25
25
  "@nkzw/define-env": "^1.1.0",
26
26
  "@nkzw/fate": "latest",
27
27
  "better-auth": "^1.7.7",
28
- "drizzle-orm": "^0.45.3",
28
+ "drizzle-orm": "^0.45.4",
29
29
  "hono": "^4.13.5",
30
30
  "pg": "^8.23.1",
31
31
  "zod": "^4.4.3"
@@ -29,7 +29,7 @@ This guidance is for agents working in projects bootstrapped from the fate templ
29
29
  - **fate client support** fate's local client support files are maintained by the Vite/fate tooling. Do not manually edit `.fate` files; make the proper schema changes on the server and run `pnpm fate:generate` when working outside Vite dev.
30
30
  - **Library Versions:** This repository uses the most recent releases of React, fate, Vite, tRPC, and more. You might not know about the new releases yet, please don't get confused. The versions you see are real, and there are no feature or version mismatches. You can search the internet for more information about them.
31
31
 
32
- Full documentation can be found on the filesystem at `./client/node_modules/react-fate/README.md` or online at [fate.technology](https://fate.technology/).
32
+ Before working on fate, read only the relevant Markdown docs in `client/node_modules/react-fate/docs/`. Start with `index.md` to find guides, integrations, and API references. The docs match the installed package version. Online documentation is at [fate.technology](https://fate.technology/).
33
33
 
34
34
  ## Review Checklist for Agents
35
35
 
@@ -1,6 +1,7 @@
1
1
  .fate/
2
2
  **/.fate/
3
3
  .void/
4
+ .wrangler/
4
5
  **/.void/
5
6
  .eslintcache
6
7
  .pnpm-debug.log
@@ -27,7 +27,7 @@
27
27
  "@nkzw/stack": "^2.3.2",
28
28
  "@radix-ui/react-slot": "^1.3.3",
29
29
  "@trpc/client": "^11.18.0",
30
- "@void/react": "^0.24.0",
30
+ "@void/react": "^1.1.0",
31
31
  "better-auth": "^1.7.7",
32
32
  "class-variance-authority": "^0.7.1",
33
33
  "clsx": "^2.1.1",
@@ -38,7 +38,7 @@
38
38
  "react-error-boundary": "^6.1.3",
39
39
  "react-fate": "latest",
40
40
  "tailwind-merge": "^3.6.0",
41
- "void": "^0.24.0"
41
+ "void": "^1.1.0"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@nkzw/fbtee-compiler": "^5.0.0",
@@ -23,7 +23,7 @@ const Thinking = () => (
23
23
  );
24
24
 
25
25
  export default function Layout({ children }: { children: ReactNode }) {
26
- const { data: session } = AuthClient.useSession();
26
+ const { data: session, isPending } = AuthClient.useSession();
27
27
  const userId = session?.user.id;
28
28
 
29
29
  const fate = useMemo(
@@ -48,7 +48,7 @@ export default function Layout({ children }: { children: ReactNode }) {
48
48
  <div className="min-h-screen bg-background text-foreground">
49
49
  <div className="min-h-screen bg-[radial-gradient(circle_at_20%_20%,rgba(59,130,246,0.08),transparent_35%),radial-gradient(circle_at_80%_0,rgba(99,102,241,0.08),transparent_28%)]">
50
50
  <Header />
51
- {session ? (
51
+ {isPending ? (
52
52
  <Thinking />
53
53
  ) : (
54
54
  <FateClient client={fate} key={userId}>