版本 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.json里db:generate命令的npx - 优化:
/api/admin/translate接口支持openrouter - 修复:
components/LanguageDetectionAlert.tsx在移动端宽度超出屏幕 - 优化:
layout.tsx条件判断是否开启 VercelAnalytics组件,仅在 Verce 部署时自动开启 - 新增:
Header新增多层目录示例 - 新增:重新生成 Cursor Rules,更适用当前技术栈
- 修复:删除
components/auth/LoginForm.tsx邮箱登录的email字段值 - 修复:
components/auth/LoginForm.tsx邮箱登录按钮disabled判断修复,支持判断是否开启 Turnstile
3.1.6
- 优化:
components/footer/Footer.tsx去掉h2、h3标签 - 修复:
app/[locale]/(protected)/dashboard/(user)/settings/Setting.tsx,提交用户资料后,重置previewUrl - 修复:
lib/cloudflare/r2.ts的serverUploadFile修改上传文件的 key - 优化:
actions/users/admin.ts,封禁用户同时清空该用户的 session - 新增:Cookie Consent,支持通过环境变量
NEXT_PUBLIC_COOKIE_CONSENT_ENABLED设置是否开启app/[locale]/layout.tsxhooks/useCookieConsent.tscomponents/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_KEYactions/newsletter/index.ts
- 优化:新增
generatePublicPresignedUploadUrl,用于任何用户(含未登录用户)均可上传图片的场景actions/r2-resources/index.ts
- 优化:
lib/upstash/index.ts新增获取 IP 的通用方法getClientIPFromRequest和getClientIPFromHeaders - 优化:
actions/stripe/webhook-handler.ts迁移到app/api/stripe/webhook/webhook-handlers.ts,内容不变
3.1.8
- 优化:添加 Stripe 订单相关字段
lib/db/schema.ts,orders表新增字段stripePaymentIntentId,stripeInvoiceId和stripeChargeId,重命名subscriptionProviderId为subscriptionIdapp/api/stripe/webhook/webhook-handlers.ts记录相关字段handleCheckoutSessionCompleted写入orders添加stripePaymentIntentIdhandleInvoicePaid,获取 invoice 的方法扩展 payments,写入orders添加stripePaymentIntentId和stripeInvoiceId,并重命名subscriptionProviderId为subscriptionIdhandleRefund,stripePaymentIntentId写入orders添加stripePaymentIntentId和stripeChargeId,并重命名subscriptionProviderId为subscriptionId
- 优化:
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.tsapp/[locale]/(protected)/dashboard/(user)/my-orders/
- 新增:支持处理 Stripe
radar.early_fraud_warning.created事件,支持通过自动退款和发送通知邮件两种处理方式、支持通过环境变量配置处理方式 - 优化:付款成功页面判断订单最新状态,如果遇到自动退款订单,则提供合理的提示信息
3.1.10
- 修复:解决
components/auth/LoginForm.tsx的lastMethod引起的水合问题 - 优化:增加 Cloudflare R2 的公共方法并优化 cloudflare 相关方法的文件组织
actions/r2-resources/index.ts增加资源下载方法lib/cloudflare/r2-client.ts定义 R2 clientlib/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_URL为DISCORD_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.tsxapp/(site)/refund-policy/page.tsxapp/(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
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,文档