Skip to content

Conversation

@nextify2025
Copy link
Member

@nextify2025 nextify2025 commented Sep 24, 2025

Summary by cubic

Updated dependencies and bumped package versions across the workspace to match the latest Cloudflare, Better Auth, and Next releases. Also fixed a docs middleware import to restore i18n.

  • Dependencies

    • Cloudflare: set compatibility_date to 2025-09-03 and bump @cloudflare/workers-types.
    • Auth: upgrade better-auth to 1.3.16 and update @libra/better-auth-cloudflare/stripe.
    • Web: bump next to 15.5.4, motion to 12.23.19, and @tanstack/react-query (+ devtools) to 5.90.2.
    • AI/analytics: update AI SDK providers and posthog-js/node.
    • Infra: update @opennextjs/cloudflare to 1.8.5 and refresh bun.lock.
  • Bug Fixes

    • Docs: use fumadocs-core/i18n/middleware, add Next routes types, and regenerate source index.

Summary by CodeRabbit

  • Bug Fixes

    • Resolved minor documentation issues across apps.
  • Documentation

    • Refreshed docs content and site configuration for more reliable routing.
    • Updated generated types to improve docs site stability.
  • Chores

    • Bumped versions across apps and packages.
    • Upgraded dependencies (frameworks, auth, analytics, motion, React Query) for performance and stability.
    • Updated platform compatibility dates to the latest.
    • Minor configuration improvements in the docs app middleware.
    • General maintenance updates to keep tooling current.

Copilot AI review requested due to automatic review settings September 24, 2025 01:54
@coderabbitai
Copy link

coderabbitai bot commented Sep 24, 2025

Walkthrough

Version bumps, changelog additions, and Cloudflare compatibility_date updates across multiple apps/packages. apps/docs adds an i18n middleware import path change plus an exported matcher config and a new Next.js routes reference. docs content imports are rehashed. Root and app/package.json files update various dependency versions; no runtime logic changes elsewhere.

Changes

Cohort / File(s) Summary of changes
Docs middleware and types
apps/docs/middleware.ts, apps/docs/next-env.d.ts
Changed i18n import to fumadocs-core/i18n/middleware; added export const config with matcher exclusions. Added triple-slash reference to .next/types/routes.d.ts.
Docs content index refresh
apps/docs/.source/index.ts
Updated imported MDX content hashes/ordering; export shape unchanged.
Wrangler compatibility_date updates
apps/builder/wrangler.jsonc, apps/docs/wrangler.jsonc, apps/opennext-cache/wrangler.jsonc, apps/web/wrangler.jsonc, apps/deploy/wrangler.jsonc.example, apps/dispatcher/wrangler.jsonc.example, apps/screenshot/wrangler.jsonc.example, apps/vite-shadcn-template/wrangler.jsonc
Bumped compatibility_date 2025-08-03 → 2025-09-03. No other config changes.
App package versions and deps
apps/builder/package.json, apps/deploy/package.json, apps/dispatcher/package.json, apps/docs/package.json, apps/opennext-cache/package.json, apps/screenshot/package.json, apps/vite-shadcn-template/package.json, apps/web/package.json
Version bumps; dependency updates (notably @tanstack/react-query, motion, Next/AI/PostHog in web; workers types devDeps). No code changes.
Root workspace dependencies
package.json
Updated devDependencies (@cloudflare/workers-types, @turbo/gen, turbo, knip) and dependencies (@opennextjs/cloudflare, better-auth).
Auth packages deps
packages/better-auth-cloudflare/package.json, packages/better-auth-stripe/package.json, packages/auth/package.json
Version bumps and dependency updates (better-auth, workers types, @opennextjs/cloudflare). No API changes.
Changelogs
apps/*/CHANGELOG.md, packages/*/CHANGELOG.md
Added patch-release entries documenting docs bug fix and dependency updates; some list internal updated deps. Content-only.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant U as User
  participant NW as Next.js (Edge)
  participant MW as Docs Middleware
  participant I18N as fumadocs i18n middleware
  participant R as Route Handler

  U->>NW: HTTP request
  NW->>MW: Invoke middleware
  Note over MW: Uses new import path<br/>fumadocs-core/i18n/middleware
  MW->>I18N: Apply locale handling
  I18N-->>MW: NextResponse / rewrite
  alt Matches config.matcher
    MW-->>NW: Continue with localized request
    NW->>R: Route resolution
    R-->>U: Response
  else Excluded by matcher (api/_next/assets/static)
    MW-->>NW: Bypass
    NW->>R: Route/static handling
    R-->>U: Response
  end
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • update deps #28 — Similar dependency/version bumps across the same apps and packages, likely a preceding or parallel release alignment.

Poem

A bunny taps the version drum,
Dates hop forward—wrangler’s hum.
Docs learn routes, the i18n lane,
Hashes shuffle like spring rain.
Packages blink with shiny tags,
Patch-day carrots in tidy bags.
Ship it—thump-thump—no code lags! 🥕✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The title is concise and accurately describes the primary intent of the changeset — bumping package versions and updating dependencies across the project. The raw_summary shows many package.json version bumps and dependency updates across multiple apps and packages, so the title is directly related and clear for a teammate scanning history. It is a single, specific sentence and does not use vague terms or unnecessary noise.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 0924

Tip

👮 Agentic pre-merge checks are now available in preview!

Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.

  • Built-in checks – Quickly apply ready-made checks to enforce title conventions, require pull request descriptions that follow templates, validate linked issues for compliance, and more.
  • Custom agentic checks – Define your own rules using CodeRabbit’s advanced agentic capabilities to enforce organization-specific policies and workflows. For example, you can instruct CodeRabbit’s agent to verify that API documentation is updated whenever API schema files are modified in a PR. Note: Upto 5 custom checks are currently allowed during the preview period. Pricing for this feature will be announced in a few weeks.

Please see the documentation for more information.

Example:

reviews:
  pre_merge_checks:
    custom_checks:
      - name: "Undocumented Breaking Changes"
        mode: "warning"
        instructions: |
          Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).

Please share your feedback with us on this Discord post.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR updates package versions and dependencies across the entire project, including Better Auth framework upgrades, Cloudflare Workers type updates, and various library version bumps.

  • Bumps Better Auth from ^1.3.13 to ^1.3.16 across all packages
  • Updates Cloudflare Workers types and OpenNext Cloudflare integration versions
  • Updates various AI SDK packages, React Query, and other dependencies to latest versions

Reviewed Changes

Copilot reviewed 33 out of 35 changed files in this pull request and generated no comments.

Show a summary per file
File Description
packages/better-auth-stripe/package.json Updates Better Auth dependency and package version
packages/better-auth-cloudflare/package.json Updates Better Auth and peer dependencies
packages/auth/package.json Updates Better Auth CLI dependency
package.json Updates root-level dependencies including Turbo, Knip, and Cloudflare packages
apps/web/package.json Major dependency updates for AI SDK, React Query, Next.js, and motion libraries
apps/docs/middleware.ts Fixes import path for fumadocs i18n middleware
Multiple wrangler.jsonc files Updates Cloudflare compatibility dates from 2025-08-03 to 2025-09-03
Multiple CHANGELOG.md files Documents version bumps and dependency updates

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Copy link

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

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

1 issue found across 35 files

Prompt for AI agents (all 1 issues)

Understand the root cause of the following 1 issues and fix them.


<file name="apps/vite-shadcn-template/package.json">

<violation number="1" location="apps/vite-shadcn-template/package.json:4">
Project version bumped to 1.0.1 while Docker/Daytona script tags remain 1.0.0, leading to inconsistent versioning across build/push workflows. Update script tags to match the new version.</violation>
</file>

React with 👍 or 👎 to teach cubic. Mention @cubic-dev-ai to give feedback, ask questions, or re-run the review.

"name": "vite-shadcn-template-libra",
"private": true,
"version": "1.0.0",
"version": "1.0.1",
Copy link

@cubic-dev-ai cubic-dev-ai bot Sep 24, 2025

Choose a reason for hiding this comment

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

Project version bumped to 1.0.1 while Docker/Daytona script tags remain 1.0.0, leading to inconsistent versioning across build/push workflows. Update script tags to match the new version.

Prompt for AI agents
Address the following comment on apps/vite-shadcn-template/package.json at line 4:

<comment>Project version bumped to 1.0.1 while Docker/Daytona script tags remain 1.0.0, leading to inconsistent versioning across build/push workflows. Update script tags to match the new version.</comment>

<file context>
@@ -1,7 +1,7 @@
   &quot;name&quot;: &quot;vite-shadcn-template-libra&quot;,
   &quot;private&quot;: true,
-  &quot;version&quot;: &quot;1.0.0&quot;,
+  &quot;version&quot;: &quot;1.0.1&quot;,
   &quot;type&quot;: &quot;module&quot;,
   &quot;scripts&quot;: {
</file context>
Fix with Cubic

@nextify2025 nextify2025 merged commit 454e5c4 into main Sep 24, 2025
10 of 12 checks passed
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

Codex Review: Here are some suggestions.

Reply with @codex fix comments to fix any unresolved comments.

About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you open a pull request for review, mark a draft as ready, or comment "@codex review". If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex fix this CI failure" or "@codex address that feedback".

*/

import { createI18nMiddleware } from 'fumadocs-core/i18n';
import { createI18nMiddleware } from 'fumadocs-core/i18n/middleware';

Choose a reason for hiding this comment

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

[P1] Import path no longer matches installed fumadocs-core version

The middleware now imports createI18nMiddleware from fumadocs-core/i18n/middleware, but apps/docs/package.json still pins fumadocs-core to ^15.7.13. That version only exports createI18nMiddleware from fumadocs-core/i18n, so builds will fail with Module not found: Can't resolve 'fumadocs-core/i18n/middleware' unless the dependency is bumped to a release that exposes the new submodule. Either upgrade fumadocs-core or revert to the original import path.

Useful? React with 👍 / 👎.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 5

Caution

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

⚠️ Outside diff range comments (4)
apps/dispatcher/wrangler.jsonc.example (3)

28-33: Fix invalid Cloudflare route pattern

Use a hostname pattern (e.g., wildcard subdomain) instead of "/". Current value will not match as intended.

Apply this diff:

-  "routes": [
-    {
-      "pattern": "*/*",
-      "zone_name": "libra.sh"
-    }
-  ],
+  "routes": [
+    {
+      "pattern": "*.libra.sh/*",
+      "zone_name": "libra.sh"
+    }
+  ],

70-76: Do not expose Cloudflare account/token identifiers at runtime

These values are not needed by the worker at runtime and increase exfiltration risk. Keep them in CI/deploy-time secrets instead of runtime vars.

Apply this diff to remove them from runtime vars:

-    "CLOUDFLARE_ACCOUNT_ID": "{{CLOUDFLARE_ACCOUNT_ID}}",
-    "DATABASE_ID": "{{DATABASE_ID}}",
-    "CLOUDFLARE_API_TOKEN": "{{CLOUDFLARE_API_TOKEN}}",
-    "CLOUDFLARE_AIGATEWAY_NAME": "{{CLOUDFLARE_AIGATEWAY_NAME}}",
-    "CLOUDFLARE_ZONE_ID": "{{CLOUDFLARE_ZONE_ID}}",

Note: For all API keys (OpenAI/Anthropic/etc.), use Wrangler secrets (wrangler secret put ...) in real configs, not plain vars.


1-6: Ensure apps/dispatcher/wrangler.jsonc exists

Guidelines require a wrangler.jsonc per app — repo currently has apps/dispatcher/wrangler.jsonc.example but no apps/dispatcher/wrangler.jsonc; add the real file or ensure CI generates it.

apps/vite-shadcn-template/package.json (1)

10-11: Update daytona image tags to match package version

Scripts still reference 1.0.0 after bumping to 1.0.1.

Apply one of the following:

Option A (hardcode current):

-    "daytona:build": "docker buildx build --platform linux/amd64 -t vite-shadcn-template-libra:1.0.0 -f Dockerfile .",
-    "daytona:push": "daytona snapshot push vite-shadcn-template-libra:1.0.0 --entrypoint 'bun dev --host 0.0.0.0' --name vite-shadcn-template-libra:1.0.0 --cpu 1 --memory 1 --disk 3",
+    "daytona:build": "docker buildx build --platform linux/amd64 -t vite-shadcn-template-libra:1.0.1 -f Dockerfile .",
+    "daytona:push": "daytona snapshot push vite-shadcn-template-libra:1.0.1 --entrypoint 'bun dev --host 0.0.0.0' --name vite-shadcn-template-libra:1.0.1 --cpu 1 --memory 1 --disk 3",

Option B (auto-use package version):

-    "daytona:build": "docker buildx build --platform linux/amd64 -t vite-shadcn-template-libra:1.0.0 -f Dockerfile .",
-    "daytona:push": "daytona snapshot push vite-shadcn-template-libra:1.0.0 --entrypoint 'bun dev --host 0.0.0.0' --name vite-shadcn-template-libra:1.0.0 --cpu 1 --memory 1 --disk 3",
+    "daytona:build": "docker buildx build --platform linux/amd64 -t vite-shadcn-template-libra:${npm_package_version} -f Dockerfile .",
+    "daytona:push": "daytona snapshot push vite-shadcn-template-libra:${npm_package_version} --entrypoint 'bun dev --host 0.0.0.0' --name vite-shadcn-template-libra:${npm_package_version} --cpu 1 --memory 1 --disk 3",
🧹 Nitpick comments (5)
apps/builder/wrangler.jsonc (1)

4-4: Date bump OK; optional: add a 'name' for consistency with other apps.

For parity with apps/docs and apps/web, consider adding a name field:

 {
   "$schema": "../../node_modules/wrangler/config-schema.json",
-  "main": "src/worker.ts",
+  "name": "libra-builder",
+  "main": "src/worker.ts",
   "compatibility_date": "2025-09-03",
apps/deploy/package.json (1)

29-35: Align Wrangler CLI version across apps

This app pins wrangler to 4.27.0 while others use different majors (e.g., v3 in opennext-cache). Tooling skew can cause inconsistent behavior.

Consider standardizing on a single wrangler major (prefer v4) across the monorepo.

apps/vite-shadcn-template/package.json (1)

76-79: Bump workers-types to match newer compatibility date

Workers types lag behind other apps updated to late September. Aligning helps avoid type mismatches with 2025-09-03 compatibility_date.

Apply:

-    "@cloudflare/workers-types": "^4.20250803.0"
+    "@cloudflare/workers-types": "^4.20250924.0"
apps/opennext-cache/package.json (1)

15-19: Upgrade Wrangler and workers-types for consistency

This app uses wrangler v3 while others use v4, and older workers-types. Recommend aligning.

Apply:

-    "@cloudflare/workers-types": "^4.20250723.0",
-    "typescript": "^5.8.3",
-    "wrangler": "^3.0.0"
+    "@cloudflare/workers-types": "^4.20250924.0",
+    "typescript": "^5.9.2",
+    "wrangler": "^4.27.0"
apps/web/package.json (1)

60-61: Next 15.5.4 and Motion bumps: pin Node engines to avoid CI drift.
Consider declaring Node engines to match Next’s supported versions to prevent mismatches across environments.

Example addition in package.json:

{
  "engines": {
    "node": ">=18.18.0 || >=20"
  }
}
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between bfdcd83 and 9ee6b41.

⛔ Files ignored due to path filters (1)
  • bun.lock is excluded by !**/*.lock
📒 Files selected for processing (34)
  • apps/builder/CHANGELOG.md (1 hunks)
  • apps/builder/package.json (3 hunks)
  • apps/builder/wrangler.jsonc (1 hunks)
  • apps/deploy/CHANGELOG.md (1 hunks)
  • apps/deploy/package.json (1 hunks)
  • apps/deploy/wrangler.jsonc.example (1 hunks)
  • apps/dispatcher/CHANGELOG.md (1 hunks)
  • apps/dispatcher/package.json (2 hunks)
  • apps/dispatcher/wrangler.jsonc.example (1 hunks)
  • apps/docs/.source/index.ts (1 hunks)
  • apps/docs/CHANGELOG.md (1 hunks)
  • apps/docs/middleware.ts (1 hunks)
  • apps/docs/next-env.d.ts (1 hunks)
  • apps/docs/package.json (2 hunks)
  • apps/docs/wrangler.jsonc (1 hunks)
  • apps/opennext-cache/CHANGELOG.md (1 hunks)
  • apps/opennext-cache/package.json (1 hunks)
  • apps/opennext-cache/wrangler.jsonc (1 hunks)
  • apps/screenshot/CHANGELOG.md (1 hunks)
  • apps/screenshot/package.json (1 hunks)
  • apps/screenshot/wrangler.jsonc.example (1 hunks)
  • apps/vite-shadcn-template/CHANGELOG.md (1 hunks)
  • apps/vite-shadcn-template/package.json (1 hunks)
  • apps/vite-shadcn-template/wrangler.jsonc (2 hunks)
  • apps/web/CHANGELOG.md (1 hunks)
  • apps/web/package.json (4 hunks)
  • apps/web/wrangler.jsonc (1 hunks)
  • package.json (2 hunks)
  • packages/auth/CHANGELOG.md (1 hunks)
  • packages/auth/package.json (2 hunks)
  • packages/better-auth-cloudflare/CHANGELOG.md (1 hunks)
  • packages/better-auth-cloudflare/package.json (2 hunks)
  • packages/better-auth-stripe/CHANGELOG.md (1 hunks)
  • packages/better-auth-stripe/package.json (2 hunks)
🧰 Additional context used
📓 Path-based instructions (12)
apps/**

📄 CodeRabbit inference engine (.cursor/rules/project-structure.mdc)

Never expose sensitive data in client-side code of applications

Files:

  • apps/dispatcher/wrangler.jsonc.example
  • apps/docs/package.json
  • apps/deploy/package.json
  • apps/opennext-cache/CHANGELOG.md
  • apps/deploy/CHANGELOG.md
  • apps/dispatcher/CHANGELOG.md
  • apps/builder/CHANGELOG.md
  • apps/docs/next-env.d.ts
  • apps/docs/wrangler.jsonc
  • apps/opennext-cache/wrangler.jsonc
  • apps/dispatcher/package.json
  • apps/docs/middleware.ts
  • apps/builder/package.json
  • apps/web/CHANGELOG.md
  • apps/vite-shadcn-template/wrangler.jsonc
  • apps/builder/wrangler.jsonc
  • apps/deploy/wrangler.jsonc.example
  • apps/docs/CHANGELOG.md
  • apps/web/package.json
  • apps/vite-shadcn-template/CHANGELOG.md
  • apps/screenshot/wrangler.jsonc.example
  • apps/screenshot/CHANGELOG.md
  • apps/web/wrangler.jsonc
  • apps/screenshot/package.json
  • apps/opennext-cache/package.json
  • apps/vite-shadcn-template/package.json
package.json

📄 CodeRabbit inference engine (.cursor/rules/project-structure.mdc)

Use Bun workspaces via the root package.json; do not manually edit dependencies (use bun commands)

Files:

  • package.json
apps/{web,docs,auth-studio}/**/*.{ts,tsx}

📄 CodeRabbit inference engine (CLAUDE.md)

Use components from packages/ui for app UIs (avoid duplicating UI components)

Files:

  • apps/docs/next-env.d.ts
  • apps/docs/middleware.ts
**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (.cursor/rules/clean-code.mdc)

**/*.{ts,tsx,js,jsx}: Use consistent naming and style; prefer explanatory variables and positive conditions
Encapsulate boundary conditions and extract helper functions to simplify logic
Use descriptive, searchable names and meaningful distinctions (avoid numeric suffixes)
Use named constants instead of magic values
Avoid encoding prefixes like Hungarian notation
Design small, focused functions with single responsibility and descriptive names
Prefer fewer parameters; pass an options object for related params
Avoid side effects and boolean flag parameters
Favor self-documenting code; avoid redundant/noisy comments
Delete unused code instead of commenting it out
Use JSDoc to document public interfaces and add examples when helpful
Keep related code vertically close; declare variables/functions near their usage and group with blank lines; respect line length
Identify and refactor code smells: rigidity, fragility, immobility, unnecessary complexity, duplication, and opacity

Use proper imports/exports

Code style: 2-space indentation, line width 100, single quotes, semicolons as needed, trailing commas ES5

Files:

  • apps/docs/next-env.d.ts
  • apps/docs/middleware.ts
**/*.{ts,tsx}

📄 CodeRabbit inference engine (.cursor/rules/nextjs.mdc)

**/*.{ts,tsx}: Place static content and TypeScript interfaces at the end of the file
Use Zod for form validation

Organize imports in the order: Node built-ins, external packages, internal @libra/*, then relative imports

**/*.{ts,tsx}: Use camelCase for variables and functions
Use UPPER_CASE for constants
Use descriptive names with auxiliary verbs (e.g., isLoading, hasError)
Use explicit return types for public functions
Use arrow functions for callbacks and methods
Prefer async/await over Promises
Implement proper null checking
Use try-catch blocks with typed catch clauses
Handle Promise rejections properly

**/*.{ts,tsx}: TypeScript-first: keep strict types and meaningful names
Use Zod v4 only: import { z } from 'zod/v4'

Files:

  • apps/docs/next-env.d.ts
  • apps/docs/middleware.ts
**/*.{config,mjs,ts,jsonc}

📄 CodeRabbit inference engine (.cursor/rules/project-structure.mdc)

Configuration files must use prescribed names like next.config.mjs, tailwind.config.ts, drizzle.config.ts, wrangler.jsonc (no camelCase variants)

Files:

  • apps/docs/next-env.d.ts
  • apps/docs/wrangler.jsonc
  • apps/opennext-cache/wrangler.jsonc
  • apps/docs/middleware.ts
  • apps/vite-shadcn-template/wrangler.jsonc
  • apps/builder/wrangler.jsonc
  • apps/web/wrangler.jsonc
**/*.{ts,tsx,d.ts}

📄 CodeRabbit inference engine (.cursor/rules/typescript.mdc)

**/*.{ts,tsx,d.ts}: Prefer interfaces over types for object definitions
Use type for unions, intersections, and mapped types
Avoid using any; prefer unknown for unknown types
Leverage TypeScript's built-in utility types
Use generics for reusable type patterns
Use PascalCase for type names and interfaces
Keep type definitions close to where they're used
Implement proper error handling with custom error types
Use function overloads for complex type scenarios
Use readonly for immutable properties
Leverage discriminated unions for type safety
Use type guards for runtime type checking
Avoid type assertions unless necessary
Create custom error types for domain-specific errors
Use Result types for operations that can fail

Files:

  • apps/docs/next-env.d.ts
  • apps/docs/middleware.ts
**/*.{ts,tsx,mts,cts}

📄 CodeRabbit inference engine (.cursor/rules/zod-v4.mdc)

**/*.{ts,tsx,mts,cts}: Always import Zod v4 from 'zod/v4' and never from 'zod'
For every Zod schema, declare an inferred type with the same name directly above the schema, with JSDoc (/** */) and without a 'Schema' suffix
Use standalone string validators (z.email(), z.url(), z.uuid(), z.ip()) instead of chaining on z.string()
Use the 'error' parameter sparingly; prefer Zod’s default messages. Provide custom 'error' only for business rules (e.g., via .check())
Use z.number() for general numbers; z.int() for integers (not z.number().int()); use z.int32() and z.float64() for specific numeric types; treat numbers as finite by default
Choose the appropriate object constructor: z.object() (strips unknowns), z.strictObject() (rejects extras), or z.looseObject() (allows extras)
Prefer .check() over .superRefine() for custom validation
In custom validation migration: use ctx.value instead of val
In custom validation migration: replace ctx.addIssue() with ctx.issues.push()
In custom validation migration: replace z.ZodIssueCode.custom with 'custom'
In custom validation migration: include input: ctx.value in the issue object
Use .check() when you need detailed errors; use .refine() for simple true/false validation
Use z.prettifyError() for human-readable error output
Use z.treeifyError() for tree-structured error output
Define function schemas with explicit input and output using z.function({ input: [...], output })
Define records using z.record(keyType, valueType)
Use z.iso.datetime() and z.iso.date() for ISO 8601 validation
Remember: .default() applies to output in v4; use .prefault() to emulate v3 behavior
Validate files with z.file().min(...).max(...).mime([...])
Use z.pipe(a, b) for transformations (e.g., z.pipe(z.string(), z.number()))
Use .check(async (val) => ...) for async validation
Define arrays as z.array(T) or T.array()
Use .optional(), .nullable(), and .nullish() for optional and null semantics

Files:

  • apps/docs/next-env.d.ts
  • apps/docs/middleware.ts
apps/*/wrangler.jsonc

📄 CodeRabbit inference engine (CLAUDE.md)

Keep Cloudflare Workers configuration in wrangler.jsonc per app

Files:

  • apps/docs/wrangler.jsonc
  • apps/opennext-cache/wrangler.jsonc
  • apps/vite-shadcn-template/wrangler.jsonc
  • apps/builder/wrangler.jsonc
  • apps/web/wrangler.jsonc
apps/docs/wrangler.jsonc

📄 CodeRabbit inference engine (.cursor/rules/project-structure.mdc)

apps/docs must include Cloudflare Workers configuration wrangler.jsonc

Files:

  • apps/docs/wrangler.jsonc
packages/auth/**/*

📄 CodeRabbit inference engine (CLAUDE.md)

Make authentication schema changes in packages/auth and run its migrations via provided scripts

Files:

  • packages/auth/package.json
  • packages/auth/CHANGELOG.md
apps/builder/wrangler.jsonc

📄 CodeRabbit inference engine (.cursor/rules/project-structure.mdc)

apps/builder must include Cloudflare Workers config at wrangler.jsonc

Files:

  • apps/builder/wrangler.jsonc
🧠 Learnings (12)
📚 Learning: 2025-09-21T03:29:20.816Z
Learnt from: CR
PR: nextify-limited/libra#0
File: .cursor/rules/project-structure.mdc:0-0
Timestamp: 2025-09-21T03:29:20.816Z
Learning: Applies to apps/dispatcher/wrangler.jsonc : apps/dispatcher must include Cloudflare Workers configuration wrangler.jsonc

Applied to files:

  • apps/dispatcher/wrangler.jsonc.example
📚 Learning: 2025-09-21T03:31:30.279Z
Learnt from: CR
PR: nextify-limited/libra#0
File: .cursor/rules/typescript.mdc:0-0
Timestamp: 2025-09-21T03:31:30.279Z
Learning: Applies to **/*.{ts,tsx,d.ts} : Leverage TypeScript's built-in utility types

Applied to files:

  • apps/docs/next-env.d.ts
📚 Learning: 2025-09-21T03:29:20.816Z
Learnt from: CR
PR: nextify-limited/libra#0
File: .cursor/rules/project-structure.mdc:0-0
Timestamp: 2025-09-21T03:29:20.816Z
Learning: Applies to apps/**/app/**/page.tsx : Use default exports for Next.js page entry points

Applied to files:

  • apps/docs/next-env.d.ts
📚 Learning: 2025-09-21T03:28:01.930Z
Learnt from: CR
PR: nextify-limited/libra#0
File: .cursor/rules/nextjs.mdc:0-0
Timestamp: 2025-09-21T03:28:01.930Z
Learning: Applies to {app,components}/**/*.{ts,tsx} : Use Server Components by default in Next.js

Applied to files:

  • apps/docs/next-env.d.ts
📚 Learning: 2025-09-21T03:28:01.930Z
Learnt from: CR
PR: nextify-limited/libra#0
File: .cursor/rules/nextjs.mdc:0-0
Timestamp: 2025-09-21T03:28:01.930Z
Learning: Applies to app/** : Use the Next.js App Router directory structure

Applied to files:

  • apps/docs/next-env.d.ts
📚 Learning: 2025-09-21T03:29:20.816Z
Learnt from: CR
PR: nextify-limited/libra#0
File: .cursor/rules/project-structure.mdc:0-0
Timestamp: 2025-09-21T03:29:20.816Z
Learning: Applies to apps/docs/app/** : apps/docs must use Next.js App Router under apps/docs/app

Applied to files:

  • apps/docs/next-env.d.ts
📚 Learning: 2025-09-21T03:32:26.536Z
Learnt from: CR
PR: nextify-limited/libra#0
File: AGENTS.md:0-0
Timestamp: 2025-09-21T03:32:26.536Z
Learning: Applies to **/*.{ts,tsx} : TypeScript-first: keep strict types and meaningful names

Applied to files:

  • apps/docs/next-env.d.ts
📚 Learning: 2025-09-21T03:29:20.816Z
Learnt from: CR
PR: nextify-limited/libra#0
File: .cursor/rules/project-structure.mdc:0-0
Timestamp: 2025-09-21T03:29:20.816Z
Learning: Applies to apps/builder/wrangler.jsonc : apps/builder must include Cloudflare Workers config at wrangler.jsonc

Applied to files:

  • apps/dispatcher/package.json
  • apps/builder/wrangler.jsonc
📚 Learning: 2025-09-21T03:29:20.816Z
Learnt from: CR
PR: nextify-limited/libra#0
File: .cursor/rules/project-structure.mdc:0-0
Timestamp: 2025-09-21T03:29:20.816Z
Learning: Applies to apps/docs/wrangler.jsonc : apps/docs must include Cloudflare Workers configuration wrangler.jsonc

Applied to files:

  • apps/dispatcher/package.json
📚 Learning: 2025-09-21T03:29:20.816Z
Learnt from: CR
PR: nextify-limited/libra#0
File: .cursor/rules/project-structure.mdc:0-0
Timestamp: 2025-09-21T03:29:20.816Z
Learning: Applies to apps/cdn/wrangler.jsonc : apps/cdn must include Cloudflare Workers configuration wrangler.jsonc

Applied to files:

  • apps/dispatcher/package.json
📚 Learning: 2025-09-21T03:29:20.816Z
Learnt from: CR
PR: nextify-limited/libra#0
File: .cursor/rules/project-structure.mdc:0-0
Timestamp: 2025-09-21T03:29:20.816Z
Learning: Applies to apps/docs/lib/i18n.ts : apps/docs internationalization config must be at lib/i18n.ts

Applied to files:

  • apps/docs/middleware.ts
📚 Learning: 2025-09-21T03:24:39.962Z
Learnt from: CR
PR: nextify-limited/libra#0
File: CLAUDE.md:0-0
Timestamp: 2025-09-21T03:24:39.962Z
Learning: Applies to apps/*/wrangler.jsonc : Keep Cloudflare Workers configuration in wrangler.jsonc per app

Applied to files:

  • apps/builder/wrangler.jsonc
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (7)
  • GitHub Check: Build & Deploy to Cloudflare Workers
  • GitHub Check: Build & Deploy to Cloudflare Workers
  • GitHub Check: Build & Deploy to Cloudflare Workers
  • GitHub Check: Build & Deploy to Cloudflare Workers
  • GitHub Check: cubic · AI code reviewer
  • GitHub Check: Publish to Cloudflare Workers
  • GitHub Check: Publish Docs to Cloudflare Workers
🔇 Additional comments (31)
apps/vite-shadcn-template/CHANGELOG.md (1)

3-8: Changelog entry reads clearly and matches PR scope.

apps/builder/CHANGELOG.md (1)

3-8: Changelog aligns with a patch release for deps/docs.

apps/screenshot/package.json (1)

3-3: Version bump only; ensure workspace lockfile and publish flow are updated.

  • Confirm the workspace lockfile is regenerated (e.g., pnpm i) and CI builds pass with wrangler 4.27.0 and TS 5.9.x.
  • Verify any packages depending on @libra/screenshot don’t have pinned peer ranges that conflict with 1.0.9.
apps/deploy/wrangler.jsonc.example (1)

5-5: Example config date bump is fine; double-check against latest Workers runtime notes.

  • Validate this example still deploys under wrangler 4.x with the new date.
  • Confirm no additional flags are required by new runtime defaults for queues/durable objects.
apps/screenshot/wrangler.jsonc.example (1)

5-5: Compatibility date aligned; good to keep examples current.

  • Sanity check queue/D1/Hyperdrive bindings still behave the same under the new date (especially strict fetch behavior with global_fetch_strictly_public).
apps/web/wrangler.jsonc (1)

5-5: Date bump OK; verify public vars are intended to be public.

  • Confirm all NEXT_PUBLIC_* values (Lines 42–57) are intentionally public and non-sensitive.
  • Validate no Workers API or flag behavior change impacts OpenNext worker with 2025‑09‑03.
apps/docs/wrangler.jsonc (1)

6-6: Most wrangler configs updated to 2025-09-03 — update remaining examples and confirm CF breaking changes

  • Stragglers: apps/cdn/wrangler.jsonc.example — "2025-07-23"; apps/deploy-workflow/wrangler.jsonc.example — "2025-07-17". Update to 2025-09-03 or document why they should differ.
  • Web lookup failed here — manually verify Cloudflare Workers release/compatibility notes for 2025-09-03 (check nodejs_compat and global_fetch_strictly_public) before merging.
apps/dispatcher/CHANGELOG.md (1)

3-8: Changelog entry looks good

Version entry and notes align with the patch release sweep in this PR.

apps/vite-shadcn-template/wrangler.jsonc (1)

5-5: Compatibility date bump looks good

No other config changes; flags and placement remain consistent.

apps/opennext-cache/wrangler.jsonc (1)

5-5: Compatibility date bump acknowledged

Matches the repo-wide update. Ensure local DO classes remain compatible with this date.

If issues arise, bump @cloudflare/workers-types and wrangler in the corresponding package.json (see separate comment).

apps/docs/CHANGELOG.md (1)

3-8: Changelog update approved

Entry is consistent with the version bump and dependency updates.

packages/better-auth-stripe/CHANGELOG.md (1)

3-8: LGTM!

The changelog entry correctly documents the version bump to 1.0.5 with proper formatting and accurately reflects the docs bug fix and dependency updates.

apps/opennext-cache/CHANGELOG.md (1)

3-8: LGTM!

The changelog entry correctly documents the version bump to 1.0.1 with proper formatting and accurately reflects the docs bug fix and dependency updates.

apps/deploy/CHANGELOG.md (1)

3-10: LGTM!

The changelog entry correctly documents the version bump to 1.0.10 with proper formatting, accurately reflects the docs bug fix and dependency updates, and properly lists the updated @libra/auth dependency version.

packages/auth/CHANGELOG.md (1)

3-11: LGTM!

The changelog entry correctly documents the version bump to 1.0.6 with proper formatting, accurately reflects the docs bug fix and dependency updates, and properly lists the updated dependency versions for both better-auth packages.

packages/auth/package.json (2)

3-3: LGTM!

The version bump to 1.0.6 is correctly applied and consistent with the corresponding changelog entry.


31-31: LGTM!

The dependency update for @better-auth/cli to version ^1.3.16 aligns with the dependency updates mentioned in the changelog.

apps/screenshot/CHANGELOG.md (1)

3-10: LGTM!

The changelog entry correctly documents the version bump to 1.0.9 with proper formatting, accurately reflects the docs bug fix and dependency updates, and properly lists the updated @libra/auth dependency version.

apps/docs/middleware.ts (2)

21-21: Updated import path aligns with Fumadocs v14 changes.

The import path change from 'fumadocs-core/i18n' to 'fumadocs-core/i18n/middleware' is correct and aligns with the Fumadocs v14 migration where i18n middleware was moved to fumadocs-core/i18n. This is the proper way to import the middleware function after the refactoring.


26-29: Export config follows Next.js middleware conventions.

The exported config object with the matcher array correctly follows Next.js middleware conventions and matches the documented pattern for ignoring Next.js internal routes and static assets. The matcher pattern is comprehensive, excluding API routes, Next.js static files, and common image formats.

apps/docs/next-env.d.ts (1)

3-3: Next.js typed routes support added.

The addition of the triple-slash reference to .next/types/routes.d.ts enables Next.js typed routes functionality, providing type safety for navigation and routing. This is a standard Next.js feature that generates TypeScript definitions for your app's routes.

apps/docs/package.json (1)

3-3: Version and dependency bump look fine.

Please confirm these were produced via bun workspace commands (not manual edits) and that bun.lockb is updated.

Also applies to: 15-15

packages/better-auth-cloudflare/CHANGELOG.md (1)

3-8: Changelog entry reads well.

Accurately reflects patch release scope.

apps/web/CHANGELOG.md (1)

3-12: Changelog update LGTM.

Matches package version bumps referenced in the PR.

packages/better-auth-stripe/package.json (1)

3-3: Stripe plugin bump is aligned with better-auth.

No issues spotted.

Also applies to: 42-42

package.json (1)

34-55: Confirm lockfile and run check-deps — workspace versions inconsistent

Root package.json and bun.lock were updated, but several workspace package.json files still pin older versions of @cloudflare/workers-types / @opennextjs/cloudflare. Run the root "check-deps" script and align versions via bun workspace commands, then commit the updated lockfile.

Findings (selected):

  • apps/opennext-cache/package.json — @cloudflare/workers-types: ^4.20250723.0; @opennextjs/cloudflare: ^1.6.2
  • apps/vite-shadcn-template/package.json — @cloudflare/workers-types: ^4.20250803.0
  • packages/middleware/package.json — @cloudflare/workers-types: ^4.20250712.0
  • packages/better-auth-cloudflare/package.json — @cloudflare/workers-types: ^4.20250924.0; @opennextjs/cloudflare: ^1.8.5
  • root package.json — @cloudflare/workers-types: ^4.20250924.0; @opennextjs/cloudflare: ^1.8.5; better-auth: ^1.3.16; turbo/@turbo/gen/knip bumped

Note: repository has bun.lock (committed/changed), not bun.lockb.

apps/builder/package.json (2)

4-4: Version bump looks good; ensure lockfile and release metadata are in sync.
Please confirm bun.lockb and CHANGELOG/tag updates are included for 1.0.12.


50-56: React Query & Motion — peer deps OK; align older template versions

  • bun.lock shows @tanstack/react-query and react-query-devtools peerDeps accept react ^18 || ^19 => React 19 supported.
  • Found @tanstack/react-query ^5.90.2 in apps/builder/package.json and apps/web/package.json (apps/web also has react-query-devtools ^5.90.2); apps/vite-shadcn-template/package.json and template files still reference ^5.84.1 / ^5.81.5 — sync these if you want uniform v5.90.x (devtools requires ^5.90.2).
  • motion is imported as motion/react across the repo and the patch bump (12.23.12 → 12.23.19) is safe; framer-motion is used separately in some files.
  • Action: either update template/workspace package.json entries to ^5.90.x or confirm templates don't rely on react-query-devtools; otherwise the bumps look safe.
apps/web/package.json (3)

3-3: Version bump acknowledged; keep lockfile in sync.
Please confirm bun.lockb is updated for 1.0.17.


49-49: React Query + Devtools versions are aligned — devtools is dev-only

Devtools present in devDependencies at ^5.90.2 and absent from dependencies; keep it dev-only to avoid client bundle bloat.


28-31: AI SDK providers patch bumps: skim release notes and re-run typechecks.
These packages sometimes change types/exports — check each package changelog for breaking/type changes and ensure CI typecheck passes.
Location: apps/web/package.json (lines 28–31).
Changelog diffs couldn't be fetched because prior versions weren't provided — paste the previous versions from the PR (or confirm you've checked the release notes) to get a summarized delta.

Comment on lines +72 to 75
"@cloudflare/vite-plugin": "^1.13.4",
"wrangler": "4.27.0",
"@cloudflare/workers-types": "^4.20250921.0"
"@cloudflare/workers-types": "^4.20250924.0"
}
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

🧩 Analysis chain

Cloudflare deps bumped: ensure Wrangler and compatibility_date alignment.
Confirm wrangler 4.27.0 is compatible with @cloudflare/vite-plugin ^1.13.4 and workers-types ^4.20250924.0, and that compatibility_date is updated in wrangler config(s).

Use this to audit compatibility_date values:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "compatibility_date occurrences:"
rg -n --type=json --type=jsonc -C1 '"compatibility_date"\s*:\s*"' || true

Length of output: 61


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Finding wrangler config files (json, jsonc, toml):"
if command -v fd >/dev/null 2>&1; then
  fd -HI -e json -e jsonc -e toml -g 'wrangler*' || true
else
  find . -type f -iregex '.*wrangler\.\(json\|jsonc\|toml\)$' -print || true
fi

echo
echo "Occurrences of 'compatibility_date' (showing 1 line context):"
rg -n -S -C1 --hidden --no-ignore 'compatibility_date' --glob '!**/node_modules/**' || true

Length of output: 444


🏁 Script executed:

#!/bin/bash
set -euo pipefail
IFS=$'\n'

if command -v fd >/dev/null 2>&1; then
  mapfile -t files < <(fd -HI -e json -e jsonc -e toml -g 'wrangler*' || true)
else
  mapfile -t files < <(find . -type f -iregex '.*wrangler\.\(json\|jsonc\|toml\)$' -print || true)
fi

if [ ${#files[@]} -eq 0 ]; then
  echo "No wrangler config files found"
  exit 0
fi

for f in "${files[@]}"; do
  echo "---- $f ----"
  if grep -n -E 'compatibility_date' "$f" >/dev/null 2>&1; then
    grep -n -E 'compatibility_date' "$f" || true
  else
    echo "no compatibility_date found"
  fi
done

Length of output: 56


🏁 Script executed:

#!/bin/bash
set -euo pipefail

files=(
  "apps/builder/wrangler.jsonc"
  "apps/docs/wrangler.jsonc"
  "apps/opennext-cache/wrangler.jsonc"
  "apps/vite-shadcn-template/wrangler.jsonc"
  "apps/web/wrangler.jsonc"
  "packages/auth/wrangler.jsonc"
)

for f in "${files[@]}"; do
  echo "---- $f ----"
  if [ -f "$f" ]; then
    grep -n 'compatibility_date' "$f" || echo "no compatibility_date found"
  else
    echo "file not found"
  fi
done

Length of output: 469


Update compatibility_date to match @cloudflare/workers-types (2025-09-24) and verify wrangler/plugin compatibility

compatibility_date is "2025-09-03" in:

  • apps/builder/wrangler.jsonc
  • apps/docs/wrangler.jsonc
  • apps/opennext-cache/wrangler.jsonc
  • apps/vite-shadcn-template/wrangler.jsonc
  • apps/web/wrangler.jsonc

packages/auth/wrangler.jsonc — no compatibility_date present.

Action: set compatibility_date to "2025-09-24" (or appropriate deployment date) in the files above, add compatibility_date to packages/auth/wrangler.jsonc if needed, and confirm wrangler 4.27.0 is compatible with @cloudflare/vite-plugin ^1.13.4 and @cloudflare/workers-types ^4.20250924.0.

🤖 Prompt for AI Agents
In apps/builder/package.json around lines 72 to 75 and in the listed
wrangler.jsonc files (apps/builder, apps/docs, apps/opennext-cache,
apps/vite-shadcn-template, apps/web) update compatibility_date to "2025-09-24"
(and add compatibility_date:"2025-09-24" to packages/auth/wrangler.jsonc if it
needs one); after updating, verify wrangler 4.27.0 compatibility with
@cloudflare/vite-plugin ^1.13.4 and @cloudflare/workers-types ^4.20250924.0 by
consulting plugin/changelog docs and running a local wrangler build/dev
(wrangler build/dev) to ensure no runtime or build errors, and if any
incompatibility appears, pin or upgrade the plugin or wrangler accordingly.

{
"name": "@libra/dispatcher",
"version": "1.0.11",
"version": "1.0.12",
Copy link

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

🧩 Analysis chain

Align Cloudflare workers-types with wrangler compatibility_date.

You bumped @cloudflare/workers-types; ensure each app’s wrangler.jsonc compatibility_date matches the new types to avoid subtle type/runtime drift.

Run to review configured compatibility_date values:

Also applies to: 26-26


🏁 Script executed:

#!/bin/bash
# List Cloudflare compatibility_date across repo
rg -n '"compatibility_date"\s*:\s*"[0-9-]+"' -g '!**/node_modules/**' -C1 || true

Length of output: 148


🏁 Script executed:

#!/bin/bash
set -euo pipefail
printf "PWD: %s\n\n" "$(pwd)"

printf "-- Finding wrangler.json / wrangler.jsonc files --\n"
fd -HI -e json -e jsonc '^wrangler' || true

printf "\n-- Showing contents of found wrangler files (first 200 lines) --\n"
fd -HI -e json -e jsonc '^wrangler' -0 | while IFS= read -r -d '' file; do
  printf "\n==== %s ====\n" "$file"
  sed -n '1,200p' "$file"
done || true

printf "\n-- Searching for compatibility_date occurrences --\n"
rg -n --hidden --no-ignore '"compatibility_date"\s*:\s*"[0-9-]+"' -C1 || true

printf "\n-- Searching for @cloudflare/workers-types in repo --\n"
rg -n --hidden --no-ignore '@cloudflare/workers-types' -S || true

Length of output: 120


🏁 Script executed:

#!/bin/bash
set -euo pipefail
echo "PWD: $(pwd)"
echo

echo "-- git ls-files: wrangler.json / wrangler.jsonc --"
git ls-files -- '*/wrangler.json' '*/wrangler.jsonc' || true

echo
echo "-- fallback: find wrangler files (exclude node_modules) --"
find . -type f \( -iname 'wrangler.json' -o -iname 'wrangler.jsonc' \) -not -path './node_modules/*' -print || true

# Collect list of wrangler files (git first, then find)
wranglers=$(git ls-files -- '*/wrangler.json' '*/wrangler.jsonc' 2>/dev/null || true)
if [ -z "$wranglers" ]; then
  wranglers=$(find . -type f \( -iname 'wrangler.json' -o -iname 'wrangler.jsonc' \) -not -path './node_modules/*' -print 2>/dev/null || true)
fi

if [ -n "$wranglers" ]; then
  echo
  echo "-- Showing first 200 lines of each wrangler file found --"
  # Handle filenames safely
  while IFS= read -r file; do
    [ -z "$file" ] && continue
    echo
    echo "==== $file ===="
    sed -n '1,200p' "$file" || true
  done <<< "$wranglers"
else
  echo
  echo "No wrangler.json / wrangler.jsonc files found."
fi

echo
echo "-- Searching for compatibility_date occurrences across repo --"
# Use grep to find occurrences; exclude node_modules
grep -nR --line-number --exclude-dir=node_modules '"compatibility_date"' . || true

echo
echo "-- Searching for @cloudflare/workers-types references in package.json files --"
grep -nR --line-number --exclude-dir=node_modules '@cloudflare/workers-types' . || true

echo
echo "-- finished --"

Length of output: 236373


Align wrangler compatibility_date with bumped @cloudflare/workers-types

@cloudflare/workers-types was bumped to ^4.20250924.0 — update each Cloudflare Worker config's compatibility_date to 2025-09-24 (or later) so types and runtime match.

  • wrangler files currently set to "2025-09-03": apps/builder/wrangler.jsonc, apps/docs/wrangler.jsonc, apps/opennext-cache/wrangler.jsonc, apps/vite-shadcn-template/wrangler.jsonc, apps/web/wrangler.jsonc — update them to 2025-09-24.
  • apps/dispatcher/package.json uses ^4.20250924.0 but only apps/dispatcher/wrangler.jsonc.example exists — add/update apps/dispatcher/wrangler.jsonc with the matched compatibility_date.
  • Confirm any other app/wrangler.jsonc (or example files) are >= 2025-09-24 after changes.
🤖 Prompt for AI Agents
In apps/dispatcher/package.json around line 3, package.json already uses
@cloudflare/workers-types ^4.20250924.0 but there is no matching wrangler
config; add or update apps/dispatcher/wrangler.jsonc (or wrangler.jsonc.example
if preferred) to include "compatibility_date": "2025-09-24" (or later) so the
worker runtime date matches the bumped types, and then scan all other app
wrangler.jsonc / wrangler.jsonc.example files to ensure their compatibility_date
is >= "2025-09-24" and update any that are still "2025-09-03".

import { _runtime } from "fumadocs-mdx"
import * as _source from "../source.config"
export const docs = _runtime.docs<typeof _source.docs>([{ info: {"path":"opensource/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/index.mdx"}, data: docs_0 }, { info: {"path":"opensource/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/index.zh.mdx"}, data: docs_1 }, { info: {"path":"platform/faq.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/faq.mdx"}, data: docs_2 }, { info: {"path":"platform/faq.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/faq.zh.mdx"}, data: docs_3 }, { info: {"path":"platform/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/index.mdx"}, data: docs_4 }, { info: {"path":"platform/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/index.zh.mdx"}, data: docs_5 }, { info: {"path":"platform/quickstart.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/quickstart.mdx"}, data: docs_6 }, { info: {"path":"platform/quickstart.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/quickstart.zh.mdx"}, data: docs_7 }, { info: {"path":"opensource/bestpractice/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/bestpractice/index.mdx"}, data: docs_8 }, { info: {"path":"opensource/bestpractice/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/bestpractice/index.zh.mdx"}, data: docs_9 }, { info: {"path":"opensource/getstarted/faq.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/getstarted/faq.mdx"}, data: docs_10 }, { info: {"path":"opensource/getstarted/faq.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/getstarted/faq.zh.mdx"}, data: docs_11 }, { info: {"path":"opensource/getstarted/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/getstarted/index.mdx"}, data: docs_12 }, { info: {"path":"opensource/getstarted/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/getstarted/index.zh.mdx"}, data: docs_13 }, { info: {"path":"platform/community/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/community/index.mdx"}, data: docs_14 }, { info: {"path":"platform/community/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/community/index.zh.mdx"}, data: docs_15 }, { info: {"path":"platform/guides/effective-ai-communication.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/guides/effective-ai-communication.mdx"}, data: docs_16 }, { info: {"path":"platform/guides/effective-ai-communication.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/guides/effective-ai-communication.zh.mdx"}, data: docs_17 }, { info: {"path":"platform/account/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/account/index.mdx"}, data: docs_18 }, { info: {"path":"platform/account/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/account/index.zh.mdx"}, data: docs_19 }, { info: {"path":"platform/usinglibra/deploy/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/usinglibra/deploy/index.mdx"}, data: docs_20 }, { info: {"path":"platform/usinglibra/deploy/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/usinglibra/deploy/index.zh.mdx"}, data: docs_21 }, { info: {"path":"platform/usinglibra/directEdit/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/usinglibra/directEdit/index.mdx"}, data: docs_22 }, { info: {"path":"platform/usinglibra/directEdit/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/usinglibra/directEdit/index.zh.mdx"}, data: docs_23 }, { info: {"path":"platform/usinglibra/timeMachine/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/usinglibra/timeMachine/index.mdx"}, data: docs_24 }, { info: {"path":"platform/usinglibra/timeMachine/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/usinglibra/timeMachine/index.zh.mdx"}, data: docs_25 }], [{"info":{"path":"meta.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/meta.json"},"data":{"pages":["platform","opensource"]}}, {"info":{"path":"meta.zh.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/meta.zh.json"},"data":{"pages":["platform","opensource"]}}, {"info":{"path":"opensource/meta.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/meta.json"},"data":{"title":"Open Source","pages":["---Getting Started---","getstarted/index","getstarted/faq","---Best Practice---","bestpractice/index","---Open Source---","index"],"description":"Open source documentation and guides","root":true,"icon":"BookOpen"}}, {"info":{"path":"opensource/meta.zh.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/meta.zh.json"},"data":{"title":"开源","pages":["---快速开始---","getstarted/index","getstarted/faq","---最佳实践---","bestpractice/index","---开源---","index"],"description":"开源文档和指南","root":true,"icon":"BookOpen"}}, {"info":{"path":"platform/meta.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/meta.json"},"data":{"title":"Libra AI","pages":["---Quickstart---","index","quickstart","faq","---Using Libra---","usinglibra/deploy/index","usinglibra/directEdit/index","usinglibra/timeMachine/index","---Guides---","guides/effective-ai-communication","---Account & Billing---","account/index","---Community---","community/index"],"description":"Platform specific features and integrations","root":true,"icon":"Server"}}, {"info":{"path":"platform/meta.zh.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/meta.zh.json"},"data":{"title":"Libra AI","pages":["---快速开始---","index","quickstart","faq","---使用 Libra---","usinglibra/deploy/index","usinglibra/directEdit/index","usinglibra/timeMachine/index","---使用指南---","guides/effective-ai-communication","---账户与账单---","account/index","---社区---","community/index"],"description":"平台特定功能和集成","root":true,"icon":"Server"}}, {"info":{"path":"platform/guides/meta.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/guides/meta.json"},"data":{"title":"Guides","pages":["effective-ai-communication"],"description":"Comprehensive guides for using Libra AI effectively","icon":"BookOpen"}}, {"info":{"path":"platform/guides/meta.zh.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/guides/meta.zh.json"},"data":{"title":"使用指南","pages":["effective-ai-communication"],"description":"有效使用 Libra AI 的综合指南","icon":"BookOpen"}}])
export const docs = _runtime.docs<typeof _source.docs>([{ info: {"path":"opensource/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/index.mdx"}, data: docs_0 }, { info: {"path":"opensource/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/index.zh.mdx"}, data: docs_1 }, { info: {"path":"platform/faq.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/faq.mdx"}, data: docs_2 }, { info: {"path":"platform/faq.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/faq.zh.mdx"}, data: docs_3 }, { info: {"path":"platform/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/index.mdx"}, data: docs_4 }, { info: {"path":"platform/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/index.zh.mdx"}, data: docs_5 }, { info: {"path":"platform/quickstart.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/quickstart.mdx"}, data: docs_6 }, { info: {"path":"platform/quickstart.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/quickstart.zh.mdx"}, data: docs_7 }, { info: {"path":"opensource/getstarted/faq.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/getstarted/faq.mdx"}, data: docs_8 }, { info: {"path":"opensource/getstarted/faq.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/getstarted/faq.zh.mdx"}, data: docs_9 }, { info: {"path":"opensource/getstarted/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/getstarted/index.mdx"}, data: docs_10 }, { info: {"path":"opensource/getstarted/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/getstarted/index.zh.mdx"}, data: docs_11 }, { info: {"path":"opensource/bestpractice/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/bestpractice/index.mdx"}, data: docs_12 }, { info: {"path":"opensource/bestpractice/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/bestpractice/index.zh.mdx"}, data: docs_13 }, { info: {"path":"platform/community/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/community/index.mdx"}, data: docs_14 }, { info: {"path":"platform/community/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/community/index.zh.mdx"}, data: docs_15 }, { info: {"path":"platform/account/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/account/index.mdx"}, data: docs_16 }, { info: {"path":"platform/account/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/account/index.zh.mdx"}, data: docs_17 }, { info: {"path":"platform/guides/effective-ai-communication.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/guides/effective-ai-communication.mdx"}, data: docs_18 }, { info: {"path":"platform/guides/effective-ai-communication.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/guides/effective-ai-communication.zh.mdx"}, data: docs_19 }, { info: {"path":"platform/usinglibra/deploy/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/usinglibra/deploy/index.mdx"}, data: docs_20 }, { info: {"path":"platform/usinglibra/deploy/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/usinglibra/deploy/index.zh.mdx"}, data: docs_21 }, { info: {"path":"platform/usinglibra/directEdit/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/usinglibra/directEdit/index.mdx"}, data: docs_22 }, { info: {"path":"platform/usinglibra/directEdit/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/usinglibra/directEdit/index.zh.mdx"}, data: docs_23 }, { info: {"path":"platform/usinglibra/timeMachine/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/usinglibra/timeMachine/index.mdx"}, data: docs_24 }, { info: {"path":"platform/usinglibra/timeMachine/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/usinglibra/timeMachine/index.zh.mdx"}, data: docs_25 }], [{"info":{"path":"meta.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/meta.json"},"data":{"pages":["platform","opensource"]}}, {"info":{"path":"meta.zh.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/meta.zh.json"},"data":{"pages":["platform","opensource"]}}, {"info":{"path":"opensource/meta.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/meta.json"},"data":{"title":"Open Source","pages":["---Getting Started---","getstarted/index","getstarted/faq","---Best Practice---","bestpractice/index","---Open Source---","index"],"description":"Open source documentation and guides","root":true,"icon":"BookOpen"}}, {"info":{"path":"opensource/meta.zh.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/meta.zh.json"},"data":{"title":"开源","pages":["---快速开始---","getstarted/index","getstarted/faq","---最佳实践---","bestpractice/index","---开源---","index"],"description":"开源文档和指南","root":true,"icon":"BookOpen"}}, {"info":{"path":"platform/meta.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/meta.json"},"data":{"title":"Libra AI","pages":["---Quickstart---","index","quickstart","faq","---Using Libra---","usinglibra/deploy/index","usinglibra/directEdit/index","usinglibra/timeMachine/index","---Guides---","guides/effective-ai-communication","---Account & Billing---","account/index","---Community---","community/index"],"description":"Platform specific features and integrations","root":true,"icon":"Server"}}, {"info":{"path":"platform/meta.zh.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/meta.zh.json"},"data":{"title":"Libra AI","pages":["---快速开始---","index","quickstart","faq","---使用 Libra---","usinglibra/deploy/index","usinglibra/directEdit/index","usinglibra/timeMachine/index","---使用指南---","guides/effective-ai-communication","---账户与账单---","account/index","---社区---","community/index"],"description":"平台特定功能和集成","root":true,"icon":"Server"}}, {"info":{"path":"platform/guides/meta.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/guides/meta.json"},"data":{"title":"Guides","pages":["effective-ai-communication"],"description":"Comprehensive guides for using Libra AI effectively","icon":"BookOpen"}}, {"info":{"path":"platform/guides/meta.zh.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/guides/meta.zh.json"},"data":{"title":"使用指南","pages":["effective-ai-communication"],"description":"有效使用 Libra AI 的综合指南","icon":"BookOpen"}}])
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

🧩 Analysis chain

Remove hardcoded absolutePath values to avoid leaking local machine paths (apps/ guideline).**

The embedded absolutePath fields expose the developer’s local path (/Users/alex/...). This can leak environment details in client bundles and harms reproducibility. Strip absolutePath before export or adjust the generator to omit it.

Apply this minimal transform to sanitize the first argument inline:

-export const docs = _runtime.docs<typeof _source.docs>([{ info: {"path":"opensource/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/index.mdx"}, data: docs_0 }, { info: {"path":"opensource/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/index.zh.mdx"}, data: docs_1 }, { info: {"path":"platform/faq.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/faq.mdx"}, data: docs_2 }, { info: {"path":"platform/faq.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/faq.zh.mdx"}, data: docs_3 }, { info: {"path":"platform/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/index.mdx"}, data: docs_4 }, { info: {"path":"platform/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/index.zh.mdx"}, data: docs_5 }, { info: {"path":"platform/quickstart.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/quickstart.mdx"}, data: docs_6 }, { info: {"path":"platform/quickstart.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/quickstart.zh.mdx"}, data: docs_7 }, { info: {"path":"opensource/getstarted/faq.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/getstarted/faq.mdx"}, data: docs_8 }, { info: {"path":"opensource/getstarted/faq.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/getstarted/faq.zh.mdx"}, data: docs_9 }, { info: {"path":"opensource/getstarted/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/getstarted/index.mdx"}, data: docs_10 }, { info: {"path":"opensource/getstarted/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/getstarted/index.zh.mdx"}, data: docs_11 }, { info: {"path":"opensource/bestpractice/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/bestpractice/index.mdx"}, data: docs_12 }, { info: {"path":"opensource/bestpractice/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/bestpractice/index.zh.mdx"}, data: docs_13 }, { info: {"path":"platform/community/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/community/index.mdx"}, data: docs_14 }, { info: {"path":"platform/community/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/community/index.zh.mdx"}, data: docs_15 }, { info: {"path":"platform/account/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/account/index.mdx"}, data: docs_16 }, { info: {"path":"platform/account/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/account/index.zh.mdx"}, data: docs_17 }, { info: {"path":"platform/guides/effective-ai-communication.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/guides/effective-ai-communication.mdx"}, data: docs_18 }, { info: {"path":"platform/guides/effective-ai-communication.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/guides/effective-ai-communication.zh.mdx"}, data: docs_19 }, { info: {"path":"platform/usinglibra/deploy/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/usinglibra/deploy/index.mdx"}, data: docs_20 }, { info: {"path":"platform/usinglibra/deploy/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/usinglibra/deploy/index.zh.mdx"}, data: docs_21 }, { info: {"path":"platform/usinglibra/directEdit/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/usinglibra/directEdit/index.mdx"}, data: docs_22 }, { info: {"path":"platform/usinglibra/directEdit/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/usinglibra/directEdit/index.zh.mdx"}, data: docs_23 }, { info: {"path":"platform/usinglibra/timeMachine/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/usinglibra/timeMachine/index.mdx"}, data: docs_24 }, { info: {"path":"platform/usinglibra/timeMachine/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/usinglibra/timeMachine/index.zh.mdx"}, data: docs_25 }], [{"info":{"path":"meta.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/meta.json"},"data":{"pages":["platform","opensource"]}}, {"info":{"path":"meta.zh.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/meta.zh.json"},"data":{"pages":["platform","opensource"]}}, {"info":{"path":"opensource/meta.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/meta.json"},"data":{"title":"Open Source","pages":["---Getting Started---","getstarted/index","getstarted/faq","---Best Practice---","bestpractice/index","---Open Source---","index"],"description":"Open source documentation and guides","root":true,"icon":"BookOpen"}}, {"info":{"path":"opensource/meta.zh.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/meta.zh.json"},"data":{"title":"开源","pages":["---快速开始---","getstarted/index","getstarted/faq","---最佳实践---","bestpractice/index","---开源---","index"],"description":"开源文档和指南","root":true,"icon":"BookOpen"}}, {"info":{"path":"platform/meta.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/meta.json"},"data":{"title":"Libra AI","pages":["---Quickstart---","index","quickstart","faq","---Using Libra---","usinglibra/deploy/index","usinglibra/directEdit/index","usinglibra/timeMachine/index","---Guides---","guides/effective-ai-communication","---Account & Billing---","account/index","---Community---","community/index"],"description":"Platform specific features and integrations","root":true,"icon":"Server"}}, {"info":{"path":"platform/meta.zh.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/meta.zh.json"},"data":{"title":"Libra AI","pages":["---快速开始---","index","quickstart","faq","---使用 Libra---","usinglibra/deploy/index","usinglibra/directEdit/index","usinglibra/timeMachine/index","---使用指南---","guides/effective-ai-communication","---账户与账单---","account/index","---社区---","community/index"],"description":"平台特定功能和集成","root":true,"icon":"Server"}}, {"info":{"path":"platform/guides/meta.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/guides/meta.json"},"data":{"title":"Guides","pages":["effective-ai-communication"],"description":"Comprehensive guides for using Libra AI effectively","icon":"BookOpen"}}, {"info":{"path":"platform/guides/meta.zh.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/guides/meta.zh.json"},"data":{"title":"使用指南","pages":["effective-ai-communication"],"description":"有效使用 Libra AI 的综合指南","icon":"BookOpen"}}])
+export const docs = _runtime.docs<typeof _source.docs>(
+  [{ info: {"path":"opensource/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/index.mdx"}, data: docs_0 }, { info: {"path":"opensource/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/index.zh.mdx"}, data: docs_1 }, { info: {"path":"platform/faq.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/faq.mdx"}, data: docs_2 }, { info: {"path":"platform/faq.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/faq.zh.mdx"}, data: docs_3 }, { info: {"path":"platform/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/index.mdx"}, data: docs_4 }, { info: {"path":"platform/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/index.zh.mdx"}, data: docs_5 }, { info: {"path":"platform/quickstart.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/quickstart.mdx"}, data: docs_6 }, { info: {"path":"platform/quickstart.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/quickstart.zh.mdx"}, data: docs_7 }, { info: {"path":"opensource/getstarted/faq.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/getstarted/faq.mdx"}, data: docs_8 }, { info: {"path":"opensource/getstarted/faq.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/getstarted/faq.zh.mdx"}, data: docs_9 }, { info: {"path":"opensource/getstarted/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/getstarted/index.mdx"}, data: docs_10 }, { info: {"path":"opensource/getstarted/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/getstarted/index.zh.mdx"}, data: docs_11 }, { info: {"path":"opensource/bestpractice/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/bestpractice/index.mdx"}, data: docs_12 }, { info: {"path":"opensource/bestpractice/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/bestpractice/index.zh.mdx"}, data: docs_13 }, { info: {"path":"platform/community/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/community/index.mdx"}, data: docs_14 }, { info: {"path":"platform/community/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/community/index.zh.mdx"}, data: docs_15 }, { info: {"path":"platform/account/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/account/index.mdx"}, data: docs_16 }, { info: {"path":"platform/account/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/account/index.zh.mdx"}, data: docs_17 }, { info: {"path":"platform/guides/effective-ai-communication.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/guides/effective-ai-communication.mdx"}, data: docs_18 }, { info: {"path":"platform/guides/effective-ai-communication.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/guides/effective-ai-communication.zh.mdx"}, data: docs_19 }, { info: {"path":"platform/usinglibra/deploy/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/usinglibra/deploy/index.mdx"}, data: docs_20 }, { info: {"path":"platform/usinglibra/deploy/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/usinglibra/deploy/index.zh.mdx"}, data: docs_21 }, { info: {"path":"platform/usinglibra/directEdit/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/usinglibra/directEdit/index.mdx"}, data: docs_22 }, { info: {"path":"platform/usinglibra/directEdit/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/usinglibra/directEdit/index.zh.mdx"}, data: docs_23 }, { info: {"path":"platform/usinglibra/timeMachine/index.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/usinglibra/timeMachine/index.mdx"}, data: docs_24 }, { info: {"path":"platform/usinglibra/timeMachine/index.zh.mdx","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/usinglibra/timeMachine/index.zh.mdx"}, data: docs_25 }].map(e => ({ ...e, info: { path: e.info.path } })),
+  [{"info":{"path":"meta.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/meta.json"},"data":{"pages":["platform","opensource"]}}, {"info":{"path":"meta.zh.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/meta.zh.json"},"data":{"pages":["platform","opensource"]}}, {"info":{"path":"opensource/meta.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/meta.json"},"data":{"title":"Open Source","pages":["---Getting Started---","getstarted/index","getstarted/faq","---Best Practice---","bestpractice/index","---Open Source---","index"],"description":"Open source documentation and guides","root":true,"icon":"BookOpen"}}, {"info":{"path":"opensource/meta.zh.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/opensource/meta.zh.json"},"data":{"title":"开源","pages":["---快速开始---","getstarted/index","getstarted/faq","---最佳实践---","bestpractice/index","---开源---","index"],"description":"开源文档和指南","root":true,"icon":"BookOpen"}}, {"info":{"path":"platform/meta.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/meta.json"},"data":{"title":"Libra AI","pages":["---Quickstart---","index","quickstart","faq","---Using Libra---","usinglibra/deploy/index","usinglibra/directEdit/index","usinglibra/timeMachine/index","---Guides---","guides/effective-ai-communication","---Account & Billing---","account/index","---Community---","community/index"],"description":"Platform specific features and integrations","root":true,"icon":"Server"}}, {"info":{"path":"platform/meta.zh.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/meta.zh.json"},"data":{"title":"Libra AI","pages":["---快速开始---","index","quickstart","faq","---使用 Libra---","usinglibra/deploy/index","usinglibra/directEdit/index","usinglibra/timeMachine/index","---使用指南---","guides/effective-ai-communication","---账户与账单---","account/index","---社区---","community/index"],"description":"平台特定功能和集成","root":true,"icon":"Server"}}, {"info":{"path":"platform/guides/meta.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/guides/meta.json"},"data":{"title":"Guides","pages":["effective-ai-communication"],"description":"Comprehensive guides for using Libra AI effectively","icon":"BookOpen"}}, {"info":{"path":"platform/guides/meta.zh.json","absolutePath":"/Users/alex/opensource/libra/apps/docs/content/platform/guides/meta.zh.json"},"data":{"title":"使用指南","pages":["effective-ai-communication"],"description":"有效使用 Libra AI 的综合指南","icon":"BookOpen"}}]
+)

Run to find any other absolutePath leaks:


🏁 Script executed:

#!/bin/bash
# Find absolutePath occurrences that include local machine paths
rg -nP '"absolutePath"\s*:\s*"/Users/[^"]+"' -C0 || true
rg -nP '"absolutePath"\s*:\s*"/home/[^"]+"' -C0 || true
rg -nP '"absolutePath"\s*:\s*"[A-Za-z]:\\\\[^"]+"' -C0 || true

Length of output: 0


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Searching repo for absolutePath occurrences and /Users/ /home/ /[A-Z]:\\ patterns..."

rg -n --hidden -S --no-ignore '"absolutePath"\s*:\s*".*?"' -C2 || true
rg -n --hidden -S --no-ignore 'absolutePath\s*:' -C2 || true
rg -n --hidden -S --no-ignore '/Users/' -C2 || true
rg -n --hidden -S --no-ignore '/home/' -C2 || true
rg -n --hidden -S --no-ignore '[A-Za-z]:\\\\' -C2 || true

echo
echo "Printing apps/docs/.source/index.ts (if present) for inspection..."
if [ -f apps/docs/.source/index.ts ]; then
  sed -n '1,240p' apps/docs/.source/index.ts || true
else
  echo "File not found: apps/docs/.source/index.ts"
fi

Length of output: 29699


Remove hardcoded absolutePath values from generated files

Confirmed: apps/docs/.source/index.ts contains absolutePath entries (/Users/alex/...) and the repo also contains multiple /home/user/ hardcoded paths. Strip absolutePath from generated exports or change the generator to omit it.

  • apps/docs/.source/index.ts (export on line 30): sanitize both arrays passed to _runtime.docs, e.g. wrap each array with .map(e => ({ ...e, info: { path: e.info.path } })) to remove absolutePath.
  • Other occurrences found (review and parameterize/remove): packages/sandbox/src/config/index.ts (PROJECT_PATH), packages/api/src/utils/container.ts, packages/api/DEV_ZH.md, apps/vite-shadcn-template/** (Dockerfiles, scripts), apps/builder/**, apps/deploy-workflow/src/index.ts.
🤖 Prompt for AI Agents
In apps/docs/.source/index.ts around line 30, the generated export passes
objects with info.absolutePath containing hardcoded local paths; remove or omit
absolutePath when exporting by transforming the two arrays passed to
_runtime.docs to strip info.absolutePath (e.g. map each entry to a shallow clone
with info reduced to only path), or update the generator to not include
absolutePath; ensure the resulting objects still include info.path and data but
no absolutePath, and run the generator across other listed files to remove
similar hardcoded absolute paths.

Comment on lines +63 to +64
"posthog-js": "^1.268.1",
"posthog-node": "^5.8.8",
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

🧩 Analysis chain

PostHog bumps: revalidate client-side usage for secrets/consent.
Ensure only the public key is exposed on the client, server key stays server-side, and events are gated by consent where required.

Quick scan for PostHog init usage:


🏁 Script executed:

#!/bin/bash
set -euo pipefail
rg -n -C2 'posthog|PostHog' apps/web | sed -n '1,200p'

Length of output: 12130


PostHog bumps: remove server secrets from client and gate tracking by consent.

  • Verified: client uses NEXT_PUBLIC_POSTHOG_KEY in apps/web/components/client-providers.tsx and apps/web/wrangler.jsonc contains NEXT_PUBLIC_POSTHOG_KEY; tracking calls occur without consent checks in apps/web/components/general-analytics-collector.tsx and exception captures in apps/web/components/ui/error.tsx, apps/web/app/(frontend)/error.tsx, apps/web/app/(frontend)/global-error.tsx.
  • Action: ensure only a public/project key (no server API key) is exposed client-side; move any server key to server-only envs and use posthog-node server-side. Gate initialization/capture — either defer posthog.init until user consents or start opted-out and call posthog.opt_in_capturing() only after explicit consent; require explicit opt-in for session recording/PII collection.
🤖 Prompt for AI Agents
In apps/web/package.json around lines 63-64 (and affecting client code in
apps/web/components/client-providers.tsx,
apps/web/components/general-analytics-collector.tsx,
apps/web/components/ui/error.tsx, apps/web/app/(frontend)/error.tsx,
apps/web/app/(frontend)/global-error.tsx and wrangler.jsonc): the PR
exposes/uses PostHog server secrets client-side and performs tracking/capture
without consent; remove any server API key from client envs (ensure only
NEXT_PUBLIC_POSTHOG_KEY/project key remains in client configs), move any server
API key to server-only environment variables and use posthog-node for
server-side event ingestion, and update client init logic to either defer
posthog.init until the user explicitly consents or initialize in an opted-out
state and call posthog.opt_in_capturing() only after explicit consent; also
ensure session recording/PII collection remains disabled until opt-in and gate
all capture/exception calls behind the consent check or server-side forwarding.

{
"name": "@libra/better-auth-cloudflare",
"version": "1.0.9",
"version": "1.0.10",
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

🧩 Analysis chain

Peer and runtime deps aligned; good.

Ensure consumers satisfy new peer ranges (@cloudflare/workers-types, @opennextjs/cloudflare).

Run to find dependents and spot-check versions:

Also applies to: 34-34, 40-42


🏁 Script executed:

#!/bin/bash
rg -nP '@libra/better-auth-cloudflare' -C2 || true
rg -nP '"@opennextjs/cloudflare"\s*:\s*".*"' package.json apps/**/package.json packages/**/package.json -n || true

Length of output: 28533


🏁 Script executed:

#!/bin/bash
set -euo pipefail
echo "=== packages/better-auth-cloudflare/package.json ==="
sed -n '1,240p' packages/better-auth-cloudflare/package.json || true

echo
echo "=== package.json files that declare @opennextjs/cloudflare ==="
rg -nP '"@opennextjs/cloudflare"\s*:\s*".*"' package.json apps/**/package.json packages/**/package.json -n || true

echo
echo "=== package.json files that declare @cloudflare/workers-types ==="
rg -nP '"@cloudflare/workers-types"\s*:\s*".*"' package.json apps/**/package.json packages/**/package.json -n || true

echo
echo "=== occurrences of @cloudflare/workers-types in repo ==="
rg -n '@cloudflare/workers-types' || true

echo
echo "=== occurrences of @opennextjs/cloudflare in repo ==="
rg -n '@opennextjs/cloudflare' || true

Length of output: 42809


Update consumers to satisfy new peer ranges (@cloudflare/workers-types ^4.20250924.0, @opennextjs/cloudflare ^1.8.5)

packages/better-auth-cloudflare/package.json sets those peers; repo scan found consumers declaring older ranges — update these files:

  • apps/opennext-cache/package.json — @opennextjs/cloudflare: ^1.6.2 → update to ^1.8.5
  • packages/middleware/package.json — @cloudflare/workers-types: ^4.20250712.0 → update to ^4.20250924.0
  • apps/vite-shadcn-template/package.json — @cloudflare/workers-types: ^4.20250803.0 → update to ^4.20250924.0
  • apps/opennext-cache/package.json — @cloudflare/workers-types: ^4.20250723.0 → update to ^4.20250924.0
🤖 Prompt for AI Agents
In packages/better-auth-cloudflare/package.json around line 3, the package
declares new peer ranges that consumers must satisfy; update the consumer
package.json files to match those peers: in apps/opennext-cache/package.json
bump @opennextjs/cloudflare from ^1.6.2 to ^1.8.5 and bump
@cloudflare/workers-types to ^4.20250924.0, in packages/middleware/package.json
bump @cloudflare/workers-types to ^4.20250924.0, and in
apps/vite-shadcn-template/package.json bump @cloudflare/workers-types to
^4.20250924.0; ensure package.json versions are updated, run npm/yarn install or
lockfile update, and verify no other constraints conflict.

@nextify2025 nextify2025 deleted the 0924 branch September 24, 2025 02:11
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.

2 participants