Skip to content

fix/docs build starlight topics#37

Merged
kattsushi merged 9 commits into
masterfrom
fix/docs-build-starlight-topics
Feb 9, 2026
Merged

fix/docs build starlight topics#37
kattsushi merged 9 commits into
masterfrom
fix/docs-build-starlight-topics

Conversation

@kattsushi

@kattsushi kattsushi commented Feb 8, 2026

Copy link
Copy Markdown
Contributor
  • feat(examples): add new example applications and update configurations
  • chore: update workspace dependencies and configuration
  • fix(docs): resolve astro/zod import via packageExtensions, remove direct zod dep; ensure sidebar topics plugin builds

Summary by CodeRabbit

  • New Features

    • Added a Solid.js example app with routing, server-backed demo (incrementing counter), header component, and starter styles.
  • Refactoring

    • Renamed multiple example projects and removed several legacy example/demo apps and routes.
  • Dependencies

    • Updated ecosystem tooling and added Prisma runtime utilities and package extensions.
  • Chores

    • Set npm hoisting to false, updated ignore patterns, removed legacy workflow script, and cleaned project metadata.

- Add new React Router example with authentication, API routes, and Prisma integration
- Add new Solid.js example with TanStack Router setup and Tailwind CSS
- Add new Node.js authentication example using Better Auth and Effect
- Add new React Remix example with Effect integration
- Remove old solid-app-start and react-app-router examples
- Update global .gitignore and .npmrc configurations
- Add project configuration files for all new examples
- Set up database configurations, environment examples, and development tooling
- Remove pnpm override for vite in react-router-example
- Add tsconfig files for solid-example app and test environments
- Update root package.json pnpm settings with additional built dependencies
- Clean up unused imports in solid-example Header component
- Fix vite config type issues in react-router-example
- Standardize solid-example dependencies to use workspace catalog
- Update pnpm workspace catalog with latest package versions
…ect zod dep; ensure sidebar topics plugin builds
@coderabbitai

coderabbitai Bot commented Feb 8, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

Removes two apps (react-app-router, solid-app-start), adds a new Solid example app (solid-example) with server functions and routing, renames several app packages, updates workspace and package metadata, adjusts TypeScript/Vite configs, and deletes assorted tooling/scripts and generated artifacts.

Changes

Cohort / File(s) Summary
Removed React App
apps/react-app-router/index.html, apps/react-app-router/package.json, apps/react-app-router/project.json, apps/react-app-router/src/..., apps/react-app-router/vite.config.ts, apps/react-app-router/tsconfig.json
Entire react-app-router app removed: entry HTML, manifest, NX config, Vite/TS configs, router/runtime, route files, and components.
Removed Solid Start App
apps/solid-app-start/*
Entire solid-start application removed: package/project manifests, routeTree.gen, router, routes, auth client/hooks, components, styles, Tailwind/Vite/Vitest configs, and generated artifacts.
Added Solid Example App
apps/solid-example/package.json, apps/solid-example/project.json, apps/solid-example/vite.config.ts, apps/solid-example/tsconfig.*, apps/solid-example/src/..., apps/solid-example/src/routeTree.gen.ts
New SolidJS example added: package + NX config, Vite/TS configs, styles, Header component, generated route tree, router, index route, demo server functions route, and test/tsconfig files.
Renamed / Updated App Manifests & Configs
apps/node-auth-example/package.json, apps/node-auth-example/project.json, apps/react-remix-example/package.json, apps/react-remix-example/project.json, apps/react-remix-example/vite.config.ts, apps/react-router-example/package.json, apps/react-router-example/project.json, apps/react-router-example/vite.config.ts
Package name changes and project.json/sourceRoot updates; Vite config tweaks; removal of pnpm.overrides; command/workdir and outputPath renames to standardized app identifiers.
Workspace & Root Metadata
.gitignore, .npmrc, package.json, pnpm-workspace.yaml, packages/prisma/package.json, packages/node/better-auth/package.json, nx.json
Added .wrangler to .gitignore; set hoist=false in .npmrc; updated packageExtensions and onlyBuiltDependencies; adjusted catalog dependency pins and ranges; added prisma runtime util and zod; removed nxCloudId.
TypeScript / Build Metadata
apps/cli/tsconfig.tsbuildinfo, apps/solid-example/tsconfig.*, apps/solid-example/tsconfig.app.json
tsbuildinfo version bump; added and adjusted tsconfig files for solid-example (app/test); localized extends and include patterns.
Removed Scripts & Tooling Helpers
scripts/test-workflows.sh
Deleted local GitHub Actions workflow testing script.
Editor Settings
apps/solid-example/.vscode/settings.json
Added VSCode exclusions to ignore generated routeTree.gen.ts in watcher/search and mark it read-only.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant Browser as Browser
  participant Router as Router (Solid)
  participant ServerFn as Server Function
  participant FS as File System

  Browser->>Router: Navigate to /demo/start/server-funcs (loader)
  Router->>ServerFn: invoke getCount()
  ServerFn->>FS: read `count.txt` (if missing -> return 0)
  FS-->>ServerFn: currentCount
  ServerFn-->>Router: loader response { count }
  Router-->>Browser: render page with count

  Browser->>ServerFn: POST updateCount({ increment:1 })
  ServerFn->>FS: read `count.txt` -> parse -> add 1 -> write updated count
  FS-->>ServerFn: write ack
  ServerFn-->>Router: success response
  Router->>Browser: invalidate route -> re-request loader
  Router->>ServerFn: getCount() (repeat)
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Poem

🐰 I hopped through code, nose to the ground,
Cleared old routers where echoes were found,
Planted a Solid seed with server-side cheer,
Tidied manifests and catalog gear,
A tiny rabbit nod — the example is here!

🚥 Pre-merge checks | ✅ 1 | ❌ 2
❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The PR title 'fix/docs build starlight topics' is partially related to the changeset but lacks specificity and clarity about the main changes. Consider revising to a more descriptive title such as 'fix: resolve starlight topics build and update workspace configuration' or similar, clearly communicating both the starlight fix and broader workspace changes.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/docs-build-starlight-topics

No actionable comments were generated in the recent review. 🎉


Comment @coderabbitai help to get the list of available commands and usage tips.

- Add @prisma/client-runtime-utils dependency to prisma package
- Add typecheck script to solid-example package for TypeScript validation
- Update TypeScript version in cli tsconfig build info
@nx-cloud

nx-cloud Bot commented Feb 8, 2026

Copy link
Copy Markdown

View your CI Pipeline Execution ↗ for commit 2a47011

Command Status Duration Result
nx affected --target=test --base=87c40a1ce45893... ❌ Failed 9s View ↗
nx affected --target=build --base=87c40a1ce4589... ✅ Succeeded 59s View ↗
nx affected --target=typecheck --base=origin/ma... ✅ Succeeded 48s View ↗
nx affected --target=lint --base=origin/master ... ✅ Succeeded 3s View ↗

☁️ Nx Cloud last updated this comment at 2026-02-08 23:52:44 UTC

@nx-cloud nx-cloud Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nx Cloud is proposing a fix for your failed CI:

These changes restore the Sharp dependency that was unintentionally removed during the zod import fix. Astro requires Sharp as a direct dependency to optimize images during the build process, and without it, the build fails with a MissingSharp error when generating optimized images.

Warning

We could not verify this fix.

Suggested Fix changes
diff --git a/apps/docs/package.json b/apps/docs/package.json
index 59c42d5..9709ecb 100644
--- a/apps/docs/package.json
+++ b/apps/docs/package.json
@@ -14,6 +14,7 @@
     "@astrojs/starlight-tailwind": "catalog:",
     "@tailwindcss/vite": "catalog:",
     "astro": "catalog:",
+    "sharp": "catalog:",
     "tailwindcss": "catalog:",
     "starlight-theme-nova": "catalog:",
     "starlight-sidebar-topics": "catalog:",
diff --git a/nx.json b/nx.json
index 84ae30f..929ab53 100644
--- a/nx.json
+++ b/nx.json
@@ -5,10 +5,7 @@
     "packageManager": "pnpm"
   },
   "namedInputs": {
-    "default": [
-      "{projectRoot}/**/*",
-      "sharedGlobals"
-    ],
+    "default": ["{projectRoot}/**/*", "sharedGlobals"],
     "production": [
       "default",
       "!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)",
@@ -35,10 +32,7 @@
     },
     {
       "plugin": "@nx/vite/plugin",
-      "exclude": [
-        "apps/solid-app-start/**/*",
-        "apps/react-app-remix/**/*"
-      ],
+      "exclude": ["apps/solid-app-start/**/*", "apps/react-app-remix/**/*"],
       "options": {
         "buildTargetName": "build",
         "serveTargetName": "serve",
@@ -72,10 +66,7 @@
       "options": {
         "testTargetName": "test"
       },
-      "exclude": [
-        "apps/solid-app-start/**/*",
-        "apps/react-app-remix/**/*"
-      ]
+      "exclude": ["apps/solid-app-start/**/*", "apps/react-app-remix/**/*"]
     }
   ],
   "release": {
@@ -110,9 +101,7 @@
     }
   },
   "sync": {
-    "disabledTaskSyncGenerators": [
-      "@nx/js:typescript-sync"
-    ]
+    "disabledTaskSyncGenerators": ["@nx/js:typescript-sync"]
   },
   "targets": {
     "local-registry": {
@@ -148,45 +137,26 @@
   "targetDefaults": {
     "dev": {
       "cache": false,
-      "dependsOn": [
-        "^build"
-      ]
+      "dependsOn": ["^build"]
     },
     "build": {
       "cache": true,
-      "inputs": [
-        "production",
-        "^production"
-      ],
-      "dependsOn": [
-        "^build"
-      ]
+      "inputs": ["production", "^production"],
+      "dependsOn": ["^build"]
     },
     "serve": {
       "cache": false,
-      "dependsOn": [
-        "^build"
-      ]
+      "dependsOn": ["^build"]
     },
     "@nx/esbuild:esbuild": {
       "cache": true,
-      "dependsOn": [
-        "^build"
-      ],
-      "inputs": [
-        "production",
-        "^production"
-      ]
+      "dependsOn": ["^build"],
+      "inputs": ["production", "^production"]
     },
     "@nx/js:tsc": {
       "cache": true,
-      "dependsOn": [
-        "^build"
-      ],
-      "inputs": [
-        "production",
-        "^production"
-      ]
+      "dependsOn": ["^build"],
+      "inputs": ["production", "^production"]
     }
   },
   "generators": {

Apply fix via Nx Cloud  Reject fix via Nx Cloud


Or Apply changes locally with:

npx nx-cloud apply-locally QRxb-uTx6

Apply fix locally with your editor ↗   View interactive diff ↗


🎓 Learn more about Self-Healing CI on nx.dev

Add sharp as a production dependency to enable optimized image processing in the docs application. This provides better performance for image transformations compared to default tools.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 16

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
apps/react-remix-example/vite.config.ts (1)

1-12: ⚠️ Potential issue | 🟠 Major

Replace __dirname with the root path derived from import.meta.url.

The project is configured as ESM ("type": "module" in package.json), where __dirname is undefined. Using it in the alias will throw a ReferenceError when Vite loads the config. The fileURLToPath import is already present; use it to define a root variable and apply it to the alias resolution.

🔧 Proposed fix
 import path from "node:path"
 import { vitePlugin as remix } from "@remix-run/dev"
 import { defineConfig } from "vite"
 import { fileURLToPath } from "node:url"
 
+const root = fileURLToPath(new URL(".", import.meta.url))
+
 export default defineConfig({
-  root: fileURLToPath(new URL(".", import.meta.url)),
+  root,
   plugins: [remix()],
   resolve: {
     alias: {
-      "~": path.resolve(__dirname, "app"),
+      "~": path.resolve(root, "app"),
     },
   },
 })
🤖 Fix all issues with AI agents
In @.gitignore:
- Around line 71-81: The .gitignore contains duplicate patterns; remove repeated
entries and keep only truly new patterns (e.g., preserve "generated/" and
".wrangler" if they are not present earlier) while deleting any duplicates of
existing entries like "node_modules", ".DS_Store", "dist", "dist-ssr",
"*.local", ".env", ".nitro", ".tanstack". Scan the file for existing occurrences
of these patterns and deduplicate so each ignore pattern appears once, leaving
only the unique additions mentioned in the PR.

In `@apps/cli/tsconfig.tsbuildinfo`:
- Line 1: The committed tsbuild info file tsconfig.tsbuildinfo appears to be an
auto-generated TypeScript incremental build cache; decide whether it should be
versioned: if not, remove tsconfig.tsbuildinfo from the repo and add
tsconfig.tsbuildinfo to .gitignore so it no longer appears in commits (verify
after removal that builds still work for entries in "root" like src/main.ts and
src/commands/*), otherwise add a short note to the repository docs (e.g.,
CONTRIBUTING or README) explaining why tsconfig.tsbuildinfo is intentionally
versioned for caching and CI reproducibility so reviewers understand the
decision.

In `@apps/node-auth-example/package.json`:
- Line 2: Replace every occurrence of the old package name
'@effectify/node-auth-app' with the new '@effectify/node-auth-example' across
the docs (including titles, MDX frontmatter, headings, and any filenames/links
that reference the old name), and update installation commands and import
statements (npm/yarn/pnpm and ES/CJS import examples) to use the new package
name; also mirror these changes in the Spanish translations and any
package-specific docs/pages so links and filenames (e.g., package docs page
names) remain consistent with '@effectify/node-auth-example'.

In `@apps/react-router-example/vite.config.ts`:
- Around line 8-15: The plugins array currently casts nxViteTsPaths() to Plugin
which can hide type mismatches; change the typing to accept PluginOption instead
of Plugin (e.g., update the import/typing to use PluginOption and remove the
unsafe cast on nxViteTsPaths()), so nxViteTsPaths() is included as a
PluginOption in the plugins array without forcing it to Plugin; adjust the
declaration that references plugins and any imports (replace Plugin with
PluginOption where used) so type checking is preserved for nxViteTsPaths().

In `@apps/solid-example/package.json`:
- Around line 1-4: Add a top-level "private": true field to the package.json for
the package named "@effectify/solid-example" to prevent accidental npm
publishing; update the existing object that contains "name" and "type" (e.g.,
insert "private": true next to "type": "module") so the package is explicitly
marked private.

In `@apps/solid-example/src/components/Header.tsx`:
- Around line 12-41: The two menu buttons are missing explicit types and can act
as form submit buttons; update the open-menu and close-menu button elements (the
JSX buttons that call setIsOpen(true) and setIsOpen(false) respectively in
Header.tsx) to include type="button" so they won’t trigger form
submission—locate the button with onClick={() => setIsOpen(true)} and the button
with onClick={() => setIsOpen(false)} and add the type attribute to each.
- Around line 30-74: The off-canvas <aside> remains focusable when closed;
update the aside and its child interactive elements so they are removed from the
accessibility/tab order when isOpen() is false: add aria-hidden={ !isOpen() } to
the <aside>, conditionally set inert (if available) or set pointer-events-none
and aria-hidden plus add tabindex={isOpen() ? undefined : -1} to the <nav> and
each <Link> (or wrap links in a container that gets tabindex=-1 when closed) and
ensure the close button and X icon are also excluded when closed; use the
existing isOpen() / setIsOpen to toggle these attributes so invisible links
cannot receive keyboard focus.

In `@apps/solid-example/src/routes/__root.tsx`:
- Line 20: The <html> element in the root component must include a lang
attribute for accessibility; update the <html> tag in the __root.tsx root
component (where the JSX renders <html>) to include an appropriate lang value
(e.g., lang="en" or derive from app locale/i18n) so screen readers can determine
pronunciation.
- Line 30: Wrap the TanStackRouterDevtools JSX so it only renders in development
(e.g. guard with import.meta.env.DEV or process.env.NODE_ENV !== 'production')
to avoid shipping the devtool in production; update the render inside the root
component where <TanStackRouterDevtools /> appears to be conditionally included
(e.g. {import.meta.env.DEV && <TanStackRouterDevtools />}), or dynamically
import it behind the same dev check to ensure it is tree-shaken out of
production bundles.

In `@apps/solid-example/src/routes/demo.start.server-funcs.tsx`:
- Around line 37-46: The button currently lacks an explicit type and will
default to type="submit", which can unintentionally submit surrounding forms;
update the JSX for the button that calls updateCount(...) and
router.invalidate() (the element that renders "Add 1 to {state()}?") to include
an explicit type="button" attribute so it never triggers form submission when
nested inside a form.
- Line 5: The filePath constant uses a relative path ("count.txt") which can
resolve differently across environments; change the code so that filePath is
derived from a stable, absolute location: read an environment variable (e.g.
COUNT_FILE_PATH or DATA_DIR) and, if absent, resolve to an absolute path built
from process.cwd() or a dedicated data directory (using Node's
path.resolve/path.join) to ensure consistent file resolution; update the const
filePath and any callers that reference filePath in this module (e.g., functions
in demo.start.server-funcs.tsx) to use the new env-backed, absolute path
approach.
- Around line 19-24: The inputValidator for createServerFn (updateCount) is a
no-op and must perform runtime validation: change inputValidator to verify the
incoming value is a finite number (e.g., typeof d === "number" &&
Number.isFinite(d)) and reject or throw a clear error when validation fails so
the handler won't receive invalid data; update references in updateCount (and
any related handler logic that assumes a number, e.g., readCount and filePath
usage) to rely on this runtime check before writing to the file.

In `@apps/solid-example/src/routes/index.tsx`:
- Around line 8-42: The features array is static and should be moved out of the
App component to avoid recreating it on every render; pull the const features
declaration to top-level scope (e.g., const FEATURES = [...]) above the App
function, keep the same icon JSX entries and name, and update the App component
to reference FEATURES (or retain the features name) instead of the in-function
variable; ensure any icon imports used in the array remain in scope after moving
it.

In `@apps/solid-example/src/styles.css`:
- Around line 1-10: The Biome CSS parser configuration is missing Tailwind
directives support which causes lint errors for the `@apply` usage in styles.css;
open the Biome config where the CSS parser is defined (the "css" -> "parser"
section) and add the tailwindDirectives flag by setting "tailwindDirectives":
true alongside any existing keys like "cssModules" so the parser accepts
Tailwind directives.

In `@apps/solid-example/tsconfig.json`:
- Around line 1-10: The root tsconfig.json is missing a project reference for
the app declared in apps/solid-example/tsconfig.json; either add a references
entry { "path": "./apps/solid-example" } to the root tsconfig.json so tsc -b
(solution builds) includes solid-example, or add a clear comment/docstring in
the root config and your repo README explaining you rely on Nx task
orchestration (not tsc -b) for building apps; update the root tsconfig.json
references array or documentation accordingly and ensure the referenced path
matches the existing apps/solid-example/tsconfig.json.

In `@packages/prisma/package.json`:
- Line 52: Update the dependency entry for "@prisma/client-runtime-utils" in
package.json to use the monorepo catalog versioning scheme by replacing the
hardcoded version "7.3.0" with "catalog:" so it matches the other Prisma
packages (e.g., "@prisma/adapter-better-sqlite3", "@prisma/generator",
"@prisma/internals").

Comment thread .gitignore
@@ -1 +1 @@
{"root":["./src/main.ts","./src/commands/add.ts","./src/commands/create.ts","./src/commands/init.ts","./src/commands/registry.ts"],"version":"5.9.2"} No newline at end of file
{"root":["./src/main.ts","./src/commands/add.ts","./src/commands/create.ts","./src/commands/init.ts","./src/commands/registry.ts"],"version":"5.9.3"} No newline at end of file

@coderabbitai coderabbitai Bot Feb 8, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Confirm committing tsconfig.tsbuildinfo is intentional.
If this file isn’t meant to be versioned, consider ignoring it to avoid churn; if it is intentional for caching, document that decision.

🤖 Prompt for AI Agents
In `@apps/cli/tsconfig.tsbuildinfo` at line 1, The committed tsbuild info file
tsconfig.tsbuildinfo appears to be an auto-generated TypeScript incremental
build cache; decide whether it should be versioned: if not, remove
tsconfig.tsbuildinfo from the repo and add tsconfig.tsbuildinfo to .gitignore so
it no longer appears in commits (verify after removal that builds still work for
entries in "root" like src/main.ts and src/commands/*), otherwise add a short
note to the repository docs (e.g., CONTRIBUTING or README) explaining why
tsconfig.tsbuildinfo is intentionally versioned for caching and CI
reproducibility so reviewers understand the decision.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it is

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@kattsushi, thanks for clarifying! I've noted that tsconfig.tsbuildinfo is intentionally versioned in this project.


✏️ Learnings added
Learnt from: kattsushi
Repo: devx-op/effectify PR: 37
File: apps/cli/tsconfig.tsbuildinfo:1-1
Timestamp: 2026-02-08T23:51:14.382Z
Learning: In the effectify repository, the file `apps/cli/tsconfig.tsbuildinfo` is intentionally committed and versioned (not ignored), as confirmed by the maintainer.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

@@ -1,5 +1,5 @@
{
"name": "@effectify/node-auth-app",
"name": "@effectify/node-auth-example",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Search for references to the old package name
rg -n "@effectify/node-auth-app" -S

Repository: devx-op/effectify

Length of output: 2584


Update all references to the old package name in documentation.
The package rename to @effectify/node-auth-example was not applied to the documentation. The old name @effectify/node-auth-app still appears in 26 references across:

  • apps/docs/src/content/docs/backend/index.mdx
  • apps/docs/src/content/docs/backend/installation.md
  • apps/docs/src/content/docs/backend/packages/node-auth-app.md
  • apps/docs/src/content/docs/backend/getting-started.md
  • Spanish equivalents in apps/docs/src/content/docs/es/backend/

Update package names, installation commands, import statements, and page titles in these files.

🤖 Prompt for AI Agents
In `@apps/node-auth-example/package.json` at line 2, Replace every occurrence of
the old package name '@effectify/node-auth-app' with the new
'@effectify/node-auth-example' across the docs (including titles, MDX
frontmatter, headings, and any filenames/links that reference the old name), and
update installation commands and import statements (npm/yarn/pnpm and ES/CJS
import examples) to use the new package name; also mirror these changes in the
Spanish translations and any package-specific docs/pages so links and filenames
(e.g., package docs page names) remain consistent with
'@effectify/node-auth-example'.

Comment on lines +8 to +15
import { defineConfig, Plugin } from "vite"

const __filename = fileURLToPath(import.meta.url)
const __dirname = dirname(__filename)

const plugins = [
...(process.env.VITEST ? [] : [reactRouter()]),
nxViteTsPaths(),
nxViteTsPaths() as Plugin,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Avoid the unsafe cast to Plugin; prefer PluginOption typing.
nxViteTsPaths() is a plugin option; narrowing it to Plugin can mask type mismatches.

♻️ Suggested typing fix
-import { defineConfig, Plugin } from "vite"
+import { defineConfig, type PluginOption } from "vite"
@@
-  nxViteTsPaths() as Plugin,
+  nxViteTsPaths() as PluginOption,
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
import { defineConfig, Plugin } from "vite"
const __filename = fileURLToPath(import.meta.url)
const __dirname = dirname(__filename)
const plugins = [
...(process.env.VITEST ? [] : [reactRouter()]),
nxViteTsPaths(),
nxViteTsPaths() as Plugin,
import { defineConfig, type PluginOption } from "vite"
const __filename = fileURLToPath(import.meta.url)
const __dirname = dirname(__filename)
const plugins = [
...(process.env.VITEST ? [] : [reactRouter()]),
nxViteTsPaths() as PluginOption,
🤖 Prompt for AI Agents
In `@apps/react-router-example/vite.config.ts` around lines 8 - 15, The plugins
array currently casts nxViteTsPaths() to Plugin which can hide type mismatches;
change the typing to accept PluginOption instead of Plugin (e.g., update the
import/typing to use PluginOption and remove the unsafe cast on
nxViteTsPaths()), so nxViteTsPaths() is included as a PluginOption in the
plugins array without forcing it to Plugin; adjust the declaration that
references plugins and any imports (replace Plugin with PluginOption where used)
so type checking is preserved for nxViteTsPaths().

Comment on lines +1 to +4
{
"name": "@effectify/solid-example",
"type": "module",
"dependencies": {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Consider adding "private": true to prevent accidental publishing.

Since this is an example application within a monorepo and not intended for npm publication, marking it as private provides a safeguard against accidental publishing.

♻️ Suggested addition
 {
   "name": "@effectify/solid-example",
+  "private": true,
   "type": "module",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
{
"name": "@effectify/solid-example",
"type": "module",
"dependencies": {
{
"name": "@effectify/solid-example",
"private": true,
"type": "module",
"dependencies": {
🤖 Prompt for AI Agents
In `@apps/solid-example/package.json` around lines 1 - 4, Add a top-level
"private": true field to the package.json for the package named
"@effectify/solid-example" to prevent accidental npm publishing; update the
existing object that contains "name" and "type" (e.g., insert "private": true
next to "type": "module") so the package is explicitly marked private.

Comment on lines +37 to +46
<button
onClick={() => {
updateCount({ data: 1 }).then(() => {
router.invalidate()
})
}}
class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded"
>
Add 1 to {state()}?
</button>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add explicit type="button" to prevent unintended form submission.

Without an explicit type, buttons default to type="submit", which can cause unintended form submissions if this component is ever placed inside a form element.

🔧 Suggested fix
       <button
+        type="button"
         onClick={() => {
           updateCount({ data: 1 }).then(() => {
             router.invalidate()
           })
         }}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<button
onClick={() => {
updateCount({ data: 1 }).then(() => {
router.invalidate()
})
}}
class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded"
>
Add 1 to {state()}?
</button>
<button
type="button"
onClick={() => {
updateCount({ data: 1 }).then(() => {
router.invalidate()
})
}}
class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded"
>
Add 1 to {state()}?
</button>
🧰 Tools
🪛 Biome (2.3.13)

[error] 37-44: Provide an explicit type prop for the button element.

The default type of a button is submit, which causes the submission of a form when placed inside a form element. This is likely not the behaviour that you want inside a React application.
Allowed button types are: submit, button or reset

(lint/a11y/useButtonType)

🤖 Prompt for AI Agents
In `@apps/solid-example/src/routes/demo.start.server-funcs.tsx` around lines 37 -
46, The button currently lacks an explicit type and will default to
type="submit", which can unintentionally submit surrounding forms; update the
JSX for the button that calls updateCount(...) and router.invalidate() (the
element that renders "Add 1 to {state()}?") to include an explicit type="button"
attribute so it never triggers form submission when nested inside a form.

Comment on lines +8 to +42
const features = [
{
icon: <Zap class="w-12 h-12 text-cyan-400" />,
title: "Powerful Server Functions",
description:
"Write server-side code that seamlessly integrates with your client components. Type-safe, secure, and simple.",
},
{
icon: <Server class="w-12 h-12 text-cyan-400" />,
title: "Flexible Server Side Rendering",
description:
"Full-document SSR, streaming, and progressive enhancement out of the box. Control exactly what renders where.",
},
{
icon: <RouteIcon class="w-12 h-12 text-cyan-400" />,
title: "API Routes",
description: "Build type-safe API endpoints alongside your application. No separate backend needed.",
},
{
icon: <Shield class="w-12 h-12 text-cyan-400" />,
title: "Strongly Typed Everything",
description: "End-to-end type safety from server to client. Catch errors before they reach production.",
},
{
icon: <Waves class="w-12 h-12 text-cyan-400" />,
title: "Full Streaming Support",
description:
"Stream data from server to client progressively. Perfect for AI applications and real-time updates.",
},
{
icon: <Sparkles class="w-12 h-12 text-cyan-400" />,
title: "Next Generation Ready",
description: "Built from the ground up for modern web applications. Deploy anywhere JavaScript runs.",
},
]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Consider moving static data outside the component.

The features array is static and doesn't depend on props or reactive state. Defining it inside the App function means it's recreated on every render. Moving it outside the component scope would be a minor optimization.

♻️ Suggested refactor
+const features = [
+  {
+    icon: <Zap class="w-12 h-12 text-cyan-400" />,
+    title: "Powerful Server Functions",
+    description:
+      "Write server-side code that seamlessly integrates with your client components. Type-safe, secure, and simple.",
+  },
+  // ... rest of features
+]
+
 function App() {
-  const features = [
-    // ...
-  ]
   return (
🤖 Prompt for AI Agents
In `@apps/solid-example/src/routes/index.tsx` around lines 8 - 42, The features
array is static and should be moved out of the App component to avoid recreating
it on every render; pull the const features declaration to top-level scope
(e.g., const FEATURES = [...]) above the App function, keep the same icon JSX
entries and name, and update the App component to reference FEATURES (or retain
the features name) instead of the in-function variable; ensure any icon imports
used in the array remain in scope after moving it.

Comment on lines +1 to +10
@import "tailwindcss";

body {
@apply m-0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen",
"Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

# Locate Biome config file
fd -a 'biome\.(json|jsonc|toml)$' .

Repository: devx-op/effectify

Length of output: 90


🏁 Script executed:

cat biome.json

Repository: devx-op/effectify

Length of output: 1844


🏁 Script executed:

cat -n apps/solid-example/src/styles.css | head -15

Repository: devx-op/effectify

Length of output: 556


Enable Tailwind directives in Biome's CSS parser configuration.

The CSS parser in biome.json does not have tailwindDirectives enabled, which will cause linting errors on the @apply directive used in this file (line 4). Add "tailwindDirectives": true to the CSS parser configuration:

"css": {
  "parser": {
    "cssModules": true,
    "tailwindDirectives": true
  }
}
🧰 Tools
🪛 Biome (2.3.13)

[error] 4-4: Tailwind-specific syntax is disabled.

Enable tailwindDirectives in the css parser options, or remove this if you are not using Tailwind CSS.

(parse)

🤖 Prompt for AI Agents
In `@apps/solid-example/src/styles.css` around lines 1 - 10, The Biome CSS parser
configuration is missing Tailwind directives support which causes lint errors
for the `@apply` usage in styles.css; open the Biome config where the CSS parser
is defined (the "css" -> "parser" section) and add the tailwindDirectives flag
by setting "tailwindDirectives": true alongside any existing keys like
"cssModules" so the parser accepts Tailwind directives.

Comment on lines +1 to +10
{
"extends": "../../tsconfig.base.json",
"files": [],
"include": [],
"references": [
{ "path": "./tsconfig.app.json" }
],
"compilerOptions": {
"strict": true
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

rg -n "solid-example" --type json

Repository: devx-op/effectify

Length of output: 276


🏁 Script executed:

# Check for root tsconfig files
find . -maxdepth 1 -name "tsconfig*.json" -type f | head -5

# Look at root tsconfig.base.json to see if it has references section
echo "=== ROOT TSCONFIG.BASE.JSON ===" && head -40 tsconfig.base.json 2>/dev/null

# Check for tsconfig.json at root
echo "=== ROOT TSCONFIG.JSON ===" && head -40 tsconfig.json 2>/dev/null

# Check Nx configuration (nx.json or workspace.json)
echo "=== NX/WORKSPACE CONFIG ===" && (cat nx.json 2>/dev/null || cat workspace.json 2>/dev/null || echo "Not found")

Repository: devx-op/effectify

Length of output: 6920


Add solid-example to the root tsconfig.json references or clarify the build strategy.

The apps/solid-example/tsconfig.json is correctly configured with empty files/include and a reference to ./tsconfig.app.json, but it is not referenced in the root tsconfig.json. The root configuration only references ./packages/solid/query, ./packages/node/better-auth, and ./apps/node-auth-app.

If using tsc -b (TypeScript solution builds), add { "path": "./apps/solid-example" } to the root tsconfig.json references. If relying on Nx task orchestration instead, this may be acceptable, but the build strategy should be explicit.

🤖 Prompt for AI Agents
In `@apps/solid-example/tsconfig.json` around lines 1 - 10, The root tsconfig.json
is missing a project reference for the app declared in
apps/solid-example/tsconfig.json; either add a references entry { "path":
"./apps/solid-example" } to the root tsconfig.json so tsc -b (solution builds)
includes solid-example, or add a clear comment/docstring in the root config and
your repo README explaining you rely on Nx task orchestration (not tsc -b) for
building apps; update the root tsconfig.json references array or documentation
accordingly and ensure the referenced path matches the existing
apps/solid-example/tsconfig.json.

"@effect/language-service": "catalog:",
"@effect/vitest": "catalog:",
"@prisma/adapter-better-sqlite3": "catalog:",
"@prisma/client-runtime-utils": "7.3.0",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check where `@prisma/client-runtime-utils` is imported/used
rg "@prisma/client-runtime-utils" --type js --type ts --type json -n

Repository: devx-op/effectify

Length of output: 137


🏁 Script executed:

#!/bin/bash
# Check the current dependency section in package.json
cat packages/prisma/package.json | sed -n '40,65p'

Repository: devx-op/effectify

Length of output: 895


🏁 Script executed:

#!/bin/bash
# Search more broadly for runtime-utils references
rg "runtime-utils" --type js --type ts -n

Repository: devx-op/effectify

Length of output: 43


🏁 Script executed:

#!/bin/bash
# Check if there's a monorepo catalog/versions file
fd -name "catalog" -o -name "pnpm-lock.yaml" -o -name "pnpm-workspace.yaml" | head -5

Repository: devx-op/effectify

Length of output: 291


🏁 Script executed:

#!/bin/bash
# Check package.json structure for any versioning patterns
cat packages/prisma/package.json | grep -A 2 -B 2 "catalog:"  | head -20

Repository: devx-op/effectify

Length of output: 664


🏁 Script executed:

#!/bin/bash
# Check if there's any documentation or comments about this dependency
cat packages/prisma/package.json | grep -C 5 "runtime-utils"

Repository: devx-op/effectify

Length of output: 492


Update @prisma/client-runtime-utils to use the monorepo's catalog versioning scheme for consistency.

Change "7.3.0" to "catalog:" to align with all other dependencies in the project (e.g., @prisma/adapter-better-sqlite3, @prisma/generator, @prisma/internals).

🤖 Prompt for AI Agents
In `@packages/prisma/package.json` at line 52, Update the dependency entry for
"@prisma/client-runtime-utils" in package.json to use the monorepo catalog
versioning scheme by replacing the hardcoded version "7.3.0" with "catalog:" so
it matches the other Prisma packages (e.g., "@prisma/adapter-better-sqlite3",
"@prisma/generator", "@prisma/internals").

kattsushi and others added 2 commits February 8, 2026 17:50
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
pnpm-workspace.yaml (1)

117-136: ⚠️ Potential issue | 🔴 Critical

Downgrade Vite or upgrade vite-plugin-solid for Vite 7.3.1 compatibility.
vite-plugin-solid 2.11.10 officially supports Vite 3–6 only; Vite 7 support is not finalized (upstream issue #221 in solidjs/vite-plugin-solid). This incompatibility will likely cause build failures or runtime issues. Either downgrade vite to 6.x or wait for vite-plugin-solid to release Vite 7 support and upgrade accordingly.

(@tailwindcss/vite 4.1.18 is compatible with Vite 7.3.1; solid-js 1.9.9 is compatible with vite-plugin-solid 2.11.10.)

🤖 Fix all issues with AI agents
In `@package.json`:
- Around line 77-94: The onlyBuiltDependencies list currently omits the native
module "sharp", causing its platform-specific native binaries not to be built;
update the onlyBuiltDependencies array to include "sharp" (so its native build
scripts run) or remove "sharp" as a workspace dependency from
apps/docs/package.json; locate the onlyBuiltDependencies entry in package.json
and add "sharp" to that array (or remove the workspace reference in
apps/docs/package.json) to ensure the native binaries from the lockfile (e.g.,
`@img/sharp-`*) are built.
- Around line 62-66: The peer dependency for the package
"starlight-sidebar-topics" is too permissive ("astro": "*"); update its
peerDependencies entry to require Astro v5+ by changing the "astro" range to
"^5.0.0" so that installation fails on incompatible Astro v4 versions; locate
the "starlight-sidebar-topics" object in package.json and modify its
"peerDependencies" -> "astro" value accordingly.

In `@packages/node/better-auth/package.json`:
- Around line 40-43: Remove the unused "zod" entry from the dependencies block
in package.json (the "zod": "catalog:" key) since none of the module sources
(auth-service.ts, handler.ts, better-auth-error.ts) import or use zod and
validation is handled by effect/Schema; simply delete that dependency key from
the "dependencies" object so zod is no longer declared here (it will still be
available transitively via the peer dependency if needed).

In `@pnpm-workspace.yaml`:
- Around line 53-68: The TanStack router packages are version-misaligned:
`@tanstack/router-plugin` uses a caret range resolving to 1.159.3 while
`@tanstack/react-router` is pinned to 1.139.3, which can cause API/type skew;
update the pnpm-workspace.yaml entries so router-related packages
(`@tanstack/router-plugin`, `@tanstack/react-router`,
`@tanstack/react-router-devtools`, `@tanstack/solid-router`,
`@tanstack/solid-router-devtools`, etc.) are explicitly aligned to the same
compatible version (either pin them all to the tested version like 1.159.3 or
use the same caret range across all), then regenerate the lockfile (pnpm
install) and run the test/build to confirm compatibility.

Comment thread package.json
Comment on lines +62 to +66
"starlight-sidebar-topics": {
"peerDependencies": {
"astro": "*"
}
},

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

starlight-sidebar-topics npm package astro peer dependency supported versions

💡 Result:

For starlight-sidebar-topics, the changelog indicates that Astro v5 is supported and Astro v4 is not (“adds support for Astro v5, drops support for Astro v4”), starting with v0.3.0+ of the plugin. [1]

Current published versions are in the 0.6.x line (e.g., 0.6.2). [2]

Sources: [1] [2]


Set Astro peer range to "^5.0.0" for starlight-sidebar-topics.

starlight-sidebar-topics v0.3.0+ explicitly supports only Astro v5+ and dropped support for Astro v4. Using "astro": "*" allows installation with incompatible versions (e.g., Astro v4), defeating peer dependency checks. Bound the range to "^5.0.0" to match the plugin's documented support matrix.

🤖 Prompt for AI Agents
In `@package.json` around lines 62 - 66, The peer dependency for the package
"starlight-sidebar-topics" is too permissive ("astro": "*"); update its
peerDependencies entry to require Astro v5+ by changing the "astro" range to
"^5.0.0" so that installation fails on incompatible Astro v4 versions; locate
the "starlight-sidebar-topics" object in package.json and modify its
"peerDependencies" -> "astro" value accordingly.

Comment thread package.json
Comment on lines 77 to 94
"onlyBuiltDependencies": [
"@parcel/watcher",
"@prisma/client",
"@prisma/engines",
"@swc/core",
"@tailwindcss/oxide",
"better-sqlite3",
"core-js",
"dprint",
"esbuild",
"msgpackr-extract",
"nx",
"sharp"
"prisma",
"unrs-resolver"
],
"ignoredBuiltDependencies": [
"bun"
]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Locate any remaining sharp dependency or usage
rg -n --glob 'package.json' '"sharp"' 
echo "---"
rg -n 'sharp' pnpm-lock.yaml

Repository: devx-op/effectify

Length of output: 3975


Add sharp to onlyBuiltDependencies.
sharp is declared as a dependency in apps/docs/package.json and present in the lockfile with platform-specific native binaries (@img/sharp-darwin-arm64, @img/sharp-linux-x64, etc.). Omitting it from onlyBuiltDependencies will skip its native build scripts, causing runtime failures. Either re-add it to the list or remove it as a workspace dependency.

🤖 Prompt for AI Agents
In `@package.json` around lines 77 - 94, The onlyBuiltDependencies list currently
omits the native module "sharp", causing its platform-specific native binaries
not to be built; update the onlyBuiltDependencies array to include "sharp" (so
its native build scripts run) or remove "sharp" as a workspace dependency from
apps/docs/package.json; locate the onlyBuiltDependencies entry in package.json
and add "sharp" to that array (or remove the workspace reference in
apps/docs/package.json) to ensure the native binaries from the lockfile (e.g.,
`@img/sharp-`*) are built.

Comment on lines +40 to +43
"dependenciesMeta": {},
"dependencies": {
"zod": "catalog:"
},

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Search for zod imports and usage in the better-auth package
rg -n 'from\s+"zod"|require\("zod"\)' packages/node/better-auth/ --type ts --type tsx --type js --type jsx

Repository: devx-op/effectify

Length of output: 88


🏁 Script executed:

#!/bin/bash
# Search for zod imports and usage in the better-auth package
rg -n 'from\s+"zod"|require\("zod"\)' packages/node/better-auth/

Repository: devx-op/effectify

Length of output: 43


🏁 Script executed:

#!/bin/bash
# List files in the better-auth package
find packages/node/better-auth -type f \( -name "*.ts" -o -name "*.js" -o -name "*.json" \) | head -20

echo "---"

# Search for any mention of zod
rg 'zod' packages/node/better-auth/ -A 2 -B 2

Repository: devx-op/effectify

Length of output: 807


🏁 Script executed:

#!/bin/bash
# Check the main source files
echo "=== index.ts ==="
cat packages/node/better-auth/src/index.ts

echo -e "\n=== auth-service.ts ==="
head -50 packages/node/better-auth/src/lib/auth-service.ts

echo -e "\n=== better-auth-error.ts ==="
cat packages/node/better-auth/src/lib/better-auth-error.ts

echo -e "\n=== handler.ts ==="
cat packages/node/better-auth/src/lib/handler.ts

Repository: devx-op/effectify

Length of output: 5862


🏁 Script executed:

#!/bin/bash
cat packages/node/better-auth/package.json

Repository: devx-op/effectify

Length of output: 1140


Remove unused zod dependency.

The package declares zod as a dependency but does not import or use it anywhere. All source files (auth-service.ts, handler.ts, better-auth-error.ts) rely on effect/Schema for validation. If better-auth requires zod, it will be installed as a transitive dependency of the peer dependency better-auth. Remove this unused entry from dependencies.

🤖 Prompt for AI Agents
In `@packages/node/better-auth/package.json` around lines 40 - 43, Remove the
unused "zod" entry from the dependencies block in package.json (the "zod":
"catalog:" key) since none of the module sources (auth-service.ts, handler.ts,
better-auth-error.ts) import or use zod and validation is handled by
effect/Schema; simply delete that dependency key from the "dependencies" object
so zod is no longer declared here (it will still be available transitively via
the peer dependency if needed).

Comment thread pnpm-workspace.yaml
Comment on lines +53 to +68
"@tailwindcss/vite": "4.1.18"
"@tanstack/query-core": "5.90.20"
"@tanstack/react-form": "1.25.0"
"@tanstack/react-query": "5.90.10"
"@tanstack/react-query-devtools": "5.91.0"
"@tanstack/react-router": "1.139.3"
"@tanstack/react-router-devtools": "1.139.3"
"@tanstack/router-plugin": "1.139.3"
"@tanstack/router-plugin": "^1.133.21"
"@tanstack/solid-form": "1.25.0"
"@tanstack/solid-query": "5.90.23"
"@tanstack/solid-query-devtools": "5.91.0"
"@tanstack/solid-router": "1.139.3"
"@tanstack/solid-router-devtools": "1.139.3"
"@tanstack/solid-start": "1.139.3"
"@tanstack/solid-router": "^1.133.20"
"@tanstack/solid-router-devtools": "^1.133.20"
"@tanstack/devtools-vite": "^0.3.11"
"@tanstack/solid-start": "^1.132.25"
"@tanstack/solid-router-ssr-query": "^1.132.25"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check if pnpm-lock.yaml exists and look for TanStack packages
if [ ! -f pnpm-lock.yaml ]; then
  echo "pnpm-lock.yaml not found"
  exit 1
fi

echo "=== TanStack router-related packages in lockfile ==="
rg -A 2 '@tanstack/(router-plugin|solid-router|react-router|react-router-devtools|solid-router-devtools|solid-router-ssr-query)@' pnpm-lock.yaml | head -100

Repository: devx-op/effectify

Length of output: 2480


🏁 Script executed:

#!/bin/bash
# Check if there are any build files or lockfile integrity checks
# Also look for any recent issues or version compatibility notes

echo "=== Checking TanStack versions from the lockfile ==="
echo "react-router pinned: 1.139.3"
echo "router-plugin resolved: 1.159.3"
echo ""
echo "=== Version gap: $(( 1159 - 1139 )) minor versions ==="
echo ""
echo "=== Searching for version constraints or compatibility notes in source ==="
rg -i 'tanstack.*compat|compat.*tanstack|version.*skip|skip.*version' . --type yaml --type json | head -20

Repository: devx-op/effectify

Length of output: 290


Align TanStack router package versions to avoid API skew.

The lockfile confirms @tanstack/router-plugin resolves to 1.159.3 (due to caret range) while @tanstack/react-router is pinned at 1.139.3 — a 20-version gap. Build tooling (router-plugin) operating against a significantly older runtime version (react-router) can cause type mismatches and devtools incompatibilities. Please verify this combination is tested and compatible, or align versions explicitly.

🤖 Prompt for AI Agents
In `@pnpm-workspace.yaml` around lines 53 - 68, The TanStack router packages are
version-misaligned: `@tanstack/router-plugin` uses a caret range resolving to
1.159.3 while `@tanstack/react-router` is pinned to 1.139.3, which can cause
API/type skew; update the pnpm-workspace.yaml entries so router-related packages
(`@tanstack/router-plugin`, `@tanstack/react-router`,
`@tanstack/react-router-devtools`, `@tanstack/solid-router`,
`@tanstack/solid-router-devtools`, etc.) are explicitly aligned to the same
compatible version (either pin them all to the tested version like 1.159.3 or
use the same caret range across all), then regenerate the lockfile (pnpm
install) and run the test/build to confirm compatibility.

Update zod dependency from version 3.x to 4.3.6 to maintain compatibility
with better-auth ecosystem packages that now require zod ^4.0.0
The nxCloudId is no longer needed as the project is not using Nx Cloud or has migrated to a different setup.
@kattsushi kattsushi merged commit eedb08c into master Feb 9, 2026
6 checks passed
kattsushi added a commit that referenced this pull request Mar 15, 2026
* feat(examples): add new example applications and update configurations

- Add new React Router example with authentication, API routes, and Prisma integration
- Add new Solid.js example with TanStack Router setup and Tailwind CSS
- Add new Node.js authentication example using Better Auth and Effect
- Add new React Remix example with Effect integration
- Remove old solid-app-start and react-app-router examples
- Update global .gitignore and .npmrc configurations
- Add project configuration files for all new examples
- Set up database configurations, environment examples, and development tooling

* chore: update workspace dependencies and configuration

- Remove pnpm override for vite in react-router-example
- Add tsconfig files for solid-example app and test environments
- Update root package.json pnpm settings with additional built dependencies
- Clean up unused imports in solid-example Header component
- Fix vite config type issues in react-router-example
- Standardize solid-example dependencies to use workspace catalog
- Update pnpm workspace catalog with latest package versions

* fix(docs): resolve astro/zod import via packageExtensions, remove direct zod dep; ensure sidebar topics plugin builds

* chore: update dependencies and add typecheck script

- Add @prisma/client-runtime-utils dependency to prisma package
- Add typecheck script to solid-example package for TypeScript validation
- Update TypeScript version in cli tsconfig build info

* build(docs): add sharp dependency for image processing

Add sharp as a production dependency to enable optimized image processing in the docs application. This provides better performance for image transformations compared to default tools.

* Update .gitignore

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* test(node-better-auth): ensure zod v4 resolution via packageExtensions; fix CI test failure

* build(deps): upgrade zod from v3 to v4

Update zod dependency from version 3.x to 4.3.6 to maintain compatibility
with better-auth ecosystem packages that now require zod ^4.0.0

* chore: remove nxCloudId from nx.json configuration

The nxCloudId is no longer needed as the project is not using Nx Cloud or has migrated to a different setup.

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
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