-
Notifications
You must be signed in to change notification settings - Fork 208
chore: bump package versions and update dependencies across project #29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
WalkthroughVersion 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
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
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Poem
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches
🧪 Generate unit tests
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.
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. Comment |
There was a problem hiding this 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.
There was a problem hiding this 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", |
There was a problem hiding this comment.
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 @@
"name": "vite-shadcn-template-libra",
"private": true,
- "version": "1.0.0",
+ "version": "1.0.1",
"type": "module",
"scripts": {
</file context>
There was a problem hiding this 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'; |
There was a problem hiding this comment.
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 👍 / 👎.
There was a problem hiding this 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 patternUse 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 runtimeThese 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 existsGuidelines 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 versionScripts 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 appsThis 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 dateWorkers 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 consistencyThis 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
⛔ Files ignored due to path filters (1)
bun.lockis 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.exampleapps/docs/package.jsonapps/deploy/package.jsonapps/opennext-cache/CHANGELOG.mdapps/deploy/CHANGELOG.mdapps/dispatcher/CHANGELOG.mdapps/builder/CHANGELOG.mdapps/docs/next-env.d.tsapps/docs/wrangler.jsoncapps/opennext-cache/wrangler.jsoncapps/dispatcher/package.jsonapps/docs/middleware.tsapps/builder/package.jsonapps/web/CHANGELOG.mdapps/vite-shadcn-template/wrangler.jsoncapps/builder/wrangler.jsoncapps/deploy/wrangler.jsonc.exampleapps/docs/CHANGELOG.mdapps/web/package.jsonapps/vite-shadcn-template/CHANGELOG.mdapps/screenshot/wrangler.jsonc.exampleapps/screenshot/CHANGELOG.mdapps/web/wrangler.jsoncapps/screenshot/package.jsonapps/opennext-cache/package.jsonapps/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.tsapps/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 opacityUse 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.tsapps/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 validationOrganize 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.tsapps/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.tsapps/docs/wrangler.jsoncapps/opennext-cache/wrangler.jsoncapps/docs/middleware.tsapps/vite-shadcn-template/wrangler.jsoncapps/builder/wrangler.jsoncapps/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.tsapps/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.tsapps/docs/middleware.ts
apps/*/wrangler.jsonc
📄 CodeRabbit inference engine (CLAUDE.md)
Keep Cloudflare Workers configuration in wrangler.jsonc per app
Files:
apps/docs/wrangler.jsoncapps/opennext-cache/wrangler.jsoncapps/vite-shadcn-template/wrangler.jsoncapps/builder/wrangler.jsoncapps/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.jsonpackages/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.jsonapps/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 goodVersion 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 goodNo other config changes; flags and placement remain consistent.
apps/opennext-cache/wrangler.jsonc (1)
5-5: Compatibility date bump acknowledgedMatches 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 approvedEntry 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.tsenables 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 inconsistentRoot 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-onlyDevtools 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.
| "@cloudflare/vite-plugin": "^1.13.4", | ||
| "wrangler": "4.27.0", | ||
| "@cloudflare/workers-types": "^4.20250921.0" | ||
| "@cloudflare/workers-types": "^4.20250924.0" | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 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*"' || trueLength 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/**' || trueLength 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
doneLength 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
doneLength 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", |
There was a problem hiding this comment.
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 || trueLength 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 || trueLength 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"}}]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 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 || trueLength 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"
fiLength 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.
| "posthog-js": "^1.268.1", | ||
| "posthog-node": "^5.8.8", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 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", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 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 || trueLength 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' || trueLength 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.
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
Bug Fixes
Summary by CodeRabbit
Bug Fixes
Documentation
Chores