Menu

版本 3.x 更新记录

提示

  • 请查看 package.json 文件中的 version 字段获取版本号
  • v1 和 v2 的更新记录,请参考 v2 版本文档

3.0.0

  • 授权系统: 授权系统从 Supabase Auth 升级到 Better-auth,获得更大的自由度
  • 数据库曾: 数据库从 Supabase Database 升级到 Drizzle ORM,拥有更好的开发体验

3.1.0

  • 统一管理员 Dashboard 页面展示
  • 移除 edge runtime 相关代码
  • 优化 Drizzle 相关文件组织
  • 支持管理员 ban 用户
  • 修复 bug

3.1.1

  • 支持本地记录用户上一次登录方式
  • 用户退出后刷新路由实现重新鉴权

3.1.2

  • 支持集成 Plausible API(actions/plausible/index.ts
  • 优化 Stripe 相关文件组织
  • 管理员用户管理列表可查看用户来源
  • 重新梳理 .env.example,内容更清晰

3.1.3

  • 修复 drizzle.config.ts 无法读取 .env.local 的问题

3.1.4

  • 修复:删除废弃toast提示
  • 修复:lib/db/index.ts 支持读取 Next.js 本地环境变量

3.1.5

  • 修复:删除 package.jsondb:generate 命令的 npx
  • 优化:/api/admin/translate 接口支持 openrouter
  • 修复:components/LanguageDetectionAlert.tsx 在移动端宽度超出屏幕
  • 优化:layout.tsx 条件判断是否开启 Vercel Analytics 组件,仅在 Verce 部署时自动开启
  • 新增:Header 新增多层目录示例
  • 新增:重新生成 Cursor Rules,更适用当前技术栈
  • 修复:删除 components/auth/LoginForm.tsx 邮箱登录的 email 字段值
  • 修复:components/auth/LoginForm.tsx 邮箱登录按钮 disabled 判断修复,支持判断是否开启 Turnstile

3.1.6

  • 优化:components/footer/Footer.tsx 去掉 h2h3 标签
  • 修复:app/[locale]/(protected)/dashboard/(user)/settings/Setting.tsx,提交用户资料后,重置 previewUrl
  • 修复:lib/cloudflare/r2.tsserverUploadFile 修改上传文件的 key
  • 优化:actions/users/admin.ts,封禁用户同时清空该用户的 session
  • 新增:Cookie Consent,支持通过环境变量 NEXT_PUBLIC_COOKIE_CONSENT_ENABLED 设置是否开启
    • app/[locale]/layout.tsx
    • hooks/useCookieConsent.ts
    • components/shared/CookieConsent/
  • 优化:About、Privacy-Policy 和 Terms-of-Service 页面仅提供英文页面,并且在 page.tsx 编写,更加灵活

3.1.7

  • 新增:About 页面示例和退款政策页面示例
  • 新增:lib/ai-model-factory.ts,模型判断复用方法
  • 新增:与 URL 处理有关的方法汇总到 lib/url.ts
  • 新增:与获取网页内容有关的方法汇总到 lib/scraping.ts,并添加环境变量 FIRECRAWL_API_KEY
  • 新增:Discord 通知模板 lib/discord/notifications.ts,并添加环境变量 DISCORD_WEBHOOK_URL
  • 修复:邮件链接补充邮件协议 emails/user-welcome.tsx
  • 优化:newsletter rate limit key 使用产品名称做前缀,废弃掉环境变量 UPSTASH_REDIS_NEWSLETTER_RATE_LIMIT_KEY
    • actions/newsletter/index.ts
  • 优化:新增 generatePublicPresignedUploadUrl,用于任何用户(含未登录用户)均可上传图片的场景
    • actions/r2-resources/index.ts
  • 优化:lib/upstash/index.ts 新增获取 IP 的通用方法 getClientIPFromRequestgetClientIPFromHeaders
  • 优化:actions/stripe/webhook-handler.ts 迁移到 app/api/stripe/webhook/webhook-handlers.ts,内容不变

3.1.8

  • 优化:添加 Stripe 订单相关字段
    • lib/db/schema.tsorders 表新增字段 stripePaymentIntentId, stripeInvoiceIdstripeChargeId,重命名 subscriptionProviderIdsubscriptionId
    • app/api/stripe/webhook/webhook-handlers.ts 记录相关字段
      • handleCheckoutSessionCompleted 写入 orders 添加 stripePaymentIntentId
      • handleInvoicePaid,获取 invoice 的方法扩展 payments,写入 orders 添加 stripePaymentIntentIdstripeInvoiceId,并重命名 subscriptionProviderIdsubscriptionId
      • handleRefund, stripePaymentIntentId 写入 orders 添加 stripePaymentIntentIdstripeChargeId,并重命名 subscriptionProviderIdsubscriptionId
  • 优化:handleRefund 支持处理订阅退款后的权益降级,使得未删除订阅仅退款的场景获得支持
  • 优化:订阅到期的场景,handleSubscriptionUpdate 会触发 revokeRemainingSubscriptionCreditsOnEnd 以重置订阅剩余积分
  • 优化:订单退款后,原始订单 status 也会被标记为 refund

3.1.9

  • 修复:解决 app/[locale]/(protected)/dashboard/(admin)/orders/DataTable.tsx 翻页后无法返回上一页的问题
  • 优化:app/[locale]/(protected)/dashboard/(admin)/orders 页面的 Status 字段展示
  • 新增:用户端 my-orders 页面
    • actions/orders/user.ts
    • app/[locale]/(protected)/dashboard/(user)/my-orders/
  • 新增:支持处理 Stripe radar.early_fraud_warning.created 事件,支持通过自动退款和发送通知邮件两种处理方式、支持通过环境变量配置处理方式
  • 优化:付款成功页面判断订单最新状态,如果遇到自动退款订单,则提供合理的提示信息

3.1.10

  • 修复:解决 components/auth/LoginForm.tsxlastMethod 引起的水合问题
  • 优化:增加 Cloudflare R2 的公共方法并优化 cloudflare 相关方法的文件组织
    • actions/r2-resources/index.ts 增加资源下载方法
    • lib/cloudflare/r2-client.ts 定义 R2 client
    • lib/cloudflare/r2-utils.ts 定义辅助方法
    • lib/cloudflare/r2-download.ts 定义多个下载功能相关的方法
    • lib/cloudflare/r2.ts 用于定义 R2 核心方法
  • 新增:app/[locale]/(protected)/dashboard/(admin)/r2-resources/page.tsx 增加管理员上传图片的功能
  • 新增:支持 hreflangs
  • 其他优化和细节修复
    • 修复:app/[locale]/(protected)/dashboard/(user)/credit-history/Columns.tsx 更新订阅取消的标识
    • 优化:修改环境变量 DISCORD_SUBMIT_WEBHOOK_URLDISCORD_WEBHOOK_URL
    • 优化:app/[locale]/(protected)/dashboard/(admin)/r2-resources/Columns.tsx 支持复制资源完整 URL
    • 优化:更新 cursor rules
    • 修复:lib/db/schema.ts 定义博客 publishedAt 字段自动更新
    • 优化:博客模块标签管理和选择的样式
    • 优化:用户端博客卡片的图片展示尺寸

3.1.11

  • 优化:错误提示页面样式设计同步与优化
  • 修复:Markdown 表格渲染
  • 新增:博客模块访问量统计

3.1.12

  • 优化:lib/metadata.ts 适配动态 opengraph-image.tsx
  • 修复:仅英文界面 metadata 只传入英文标识
    • app/(site)/privacy-policy/page.tsx
    • app/(site)/refund-policy/page.tsx
    • app/(site)/terms-of-service/page.tsx
  • 优化:更新 FAQ 组件
  • 修复:更新定价数据种子数据 sql 文件
  • 优化:主题样式管理优化

3.2.0

  • 技术栈升级:Tailwind 升级到 v4

3.2.1

  • 修复:年付订阅,credit_logs 表记录每个月发放的积分。更新记录

3.2.2

3.2.3 - 3.2.4

  • 优化:使用 tiptap 重构 CMS,并增加多种特性

3.2.5

  • 修复:解决表格宽度过大会覆盖 Sidebar 的问题
  • ‼️重要修复:内置订阅升级方法在年付续费时,会记录错误的时间。如果你的产品使用了内置的订阅升级方法,请务必参考更新记录修复。

3.2.6

  • 新增:集成 Creem 支付
  • 优化:增强创建定价功能:

3.2.7

  • 技术栈升级:Next.js 和 React 分别升级至 Next.js 16.0.7 和 React 19.2.1,参考升级步骤
  • 技术栈升级:Next-intl 升级至 4.5.8

3.2.8

  • 优化:一些样式、文案优化
  • 修复:升级 React 和 Next.js 版本以修复 RSC 漏洞

3.2.9 - 3.2.10

  • 新增:Umami 和 Rybbit 集成
  • 新增:支持邮箱验证码登录
  • 新增:登录速率限制
  • 新增:记录用户来源信息,支持通过环境变量 NEXT_PUBLIC_USER_SOURCE_TRACKING_ENABLED 设置是否开启
  • 优化:Sidebar 布局下,用户信息不展示在 Header,展示在 Sidebar footer

3.2.11

  • 优化:TipTap 编辑器支持选择输出格式,支持 "markdown" | "text" | "html",默认为 markdown
  • 新增:Microsoft Clarity
  • 修复:开放上传与下载 R2 资源的方法不再判断用户角色
  • 技术栈升级:升级 Resend 至 6.6.0,不再需要 audience_id

3.2.12

  • 新增:PostHog 集成
  • 优化:Better-Auth 限流功能可通过环境变量设置开关,且默认为关闭
  • 优化:优化 Redis Keys 管理
  • 修复:Better-Auth captcha 加上是否启用判断
  • 技术栈升级:Resend 升级到 6.6.0,不再需要 audience_id
  • 技术栈升级:Better-Auth 升级到 1.4.7
  • 优化:Better-Auth 限流功能设置 /get-session 为false,及该接口不触发速率限制,可以显著减少 Redis 读写数量
  • 优化:Better-Auth session 过期时间延迟,freshAge 设置取消(使用默认值)
  • 优化:用户表格展示更多来源数据
  • 优化:使用环境变量开关判断是否开启邮箱别名过滤
  • 新增:Crisp 集成

3.2.13

  • 优化:CMS 标签功能样式优化
  • 优化:CMS 模块升级,支持更多功能
    • 可选是否开启阅读量统计
    • 可选是否开启本地 mdx 文章
    • 文章没有封面图时,会根据标题自动生成动态 OG Image
    • 文章列表支持两种展示方式:卡片和列表,后者不展示封面图
    • 文章封面图支持本地上传、外部链接、CloudFlare R2 选择
  • 新增:CMS 模块新增 Glossary 模块,可用于管理词汇表,提升网站 SEO

3.2.14

  • 技术栈升级:Next.js 升级到 16.1.1
  • 修复:TipTap 编辑器图片后跟随标题,标题无法渲染 Markdown 格式的问题
  • 优化:TipTap 编辑器和渲染器样式
  • 新增:定价管理支持分组功能,文档
  • 修复:解决 Stripe 定价编辑无法提交的问题
  • 优化:定价组件从 Home 组件分离,独立模块维护
  • 优化:更新定价和定价分组的 seed 文件

3.2.15

  • 优化:更新定价数据导入导出脚本,可配合AI生成定价数据

3.2.16

  • 新增:支持自动同步 .env 文件到 GitHub Actions,文档