Menu

Version 2.x Updates

Good to know

Please check the version field in the package.json file for version number

2.0.0

Optimization

  • More universal landing page boilerplate
  • Built-in complete payment requirements: monthly subscription, annual subscription, one-time payment

2.1.0

Optimization

  • Optimized Supabase database initialization and update methods
    • SQL files originally in the data/ folder have been migrated to supabase/migrations
    • For new initialization and update methods, please see details
  • Optimized styles of some components

2.2.0

New Features

  1. Record user's first visit source, see commit history 1 and commit history 2
  • Execute database file supabase/migrations/20250802164211_users_add_referral.sql, and update types.ts file
  • Execute database file supabase/migrations/20250803113600_update_my_profile_add_referral.sql, and update types.ts file
  • middleware.ts: Record user source in Cookie based on URL parameters
  • components/providers/AuthProvider.tsx: Carry user source to login parameters
  • app/auth/callback/route.ts: Record user source to users table
  1. Simplified existing email boilerplates, email content only retains English, see commit history:
  • emails/invoice-payment-failed.tsx: Delete non-English content
  • emails/newsletter-welcome.tsx: Delete non-English content
  • actions/newsletter/index.ts: Update incoming email parameters
  1. Unified email sending function, see commit history:
  • actions/resend/index.ts: Unified handling of email sending and unsubscription
  • actions/newsletter/index.ts: Call unified email sending method
  • lib/stripe/actions.ts: Call unified email sending method
  1. Configurable welcome email for new users, see commit history
  • .env.example: Added environment variable NEXT_PUBLIC_USER_WELCOME to configure whether to enable welcome emails for new users
  • app/auth/callback/route.ts: Send new user email notification when new user logs in
  • emails/user-welcome.tsx: New user welcome email boilerplate

Optimization

  1. Optimized styles of some components:
  • components/LanguageDetectionAlert.tsx
  • components/ui/rainbow-button.tsx
  1. Optimized dynamic icon handling:
  • components/DynamicIcon.tsx
  1. Optimized login modal closing timing:
  • components/auth/LoginForm.tsx

2.2.1

Optimization

  1. Optimized JSON validation of lang_json field in pricing management form and JSON parsing of preview card
  • app/[locale]/(protected)/dashboard/(admin)/prices/PricePlanForm.tsx
  • app/[locale]/(protected)/dashboard/(admin)/prices/PricingCardPreview.tsx
  • lib/safeJson.ts

2.2.2

Optimization

  1. Optimized language switcher alert styles
  • components/LanguageDetectionAlert.tsx
  • Multilingual package LanguageDetection field:
    • i18n/messages/en/common.json
    • i18n/messages/ja/common.json
    • i18n/messages/zh/common.json

2.3.0

Optimized user benefits acquisition pipeline and implemented a reliable SSG solution.

Optimizations

  1. Moved the useSearchParams call in AuthProvider.tsx down to the login component to maintain layout server-side rendering, see commit history
  • Updated components/providers/AuthProvider.tsx
  • Updated components/auth/LoginForm.tsx
  • Updated app/[locale]/login/page.tsx
  1. The original user benefits acquisition pipeline was complex, not beginner-friendly, and affected SSG. Therefore, we optimized the way benefits are acquired and used, see commit history
  • Installed dependency swr: pnpm i swr
  • Updated app/[locale]/layout.tsx
  • Updated actions/usage/benefits.ts, added client-side user benefits acquisition method getClientUserBenefits
  • Added hooks/useUserBenefits.ts to share user benefits request, update methods and data state
  • Updated components/layout/CurrentUserBenefitsDisplay.tsx, changed from calling @/stores/benefitsStore to calling @/hooks/useUserBenefits. Since both files provide the same method names, no other code changes were needed in this file
  • Updated components/header/UserInfo.tsx
  • Updated app/[locale]/payment/success/page.tsx to use the data refetch method mutate(revalidateBenefits) for immediate benefits update
  • Removed components/layout/BenefitsErrorBoundary.tsx
  • Removed components/providers/BenefitsProvider.tsx

For secondary development features, whether adding or deducting points, always call mutate(revalidateBenefits) to immediately synchronize database points.

  1. Fixed SSG implementation, see commit history
  • Updated app/[locale]/layout.tsx
  • Updated app/[locale]/blogs/[slug]/page.tsx, extracted locale from params instead of using getLocale()

2.3.1

Fixes

  1. GoogleOneTap checks if environment variables are configured, see commit history 1 and commit history 2
  • components/auth/GoogleOneTap.tsx

2.3.2

Improvements

  1. Login and payment buttons now redirect to the login page with the current page path included in the URL for post-login redirection. See commit history
  • components/home/PricingCTA.tsx
  • components/header/UserInfo.tsx
  • lib/utils.ts

Bug Fixes

  1. Fixed an issue where login would fail when the URL parameter next was an empty string. This bug was introduced in version 2.3.0 when LoginForm.tsx was modified. This update includes a fallback solution. See commit history
  • app/auth/callback/route.ts
  • app/auth/confirm/route.ts

2.4.0

Optimizations

  1. Updated layout, Dashboard uses Shadcn Sidebar component to refactor left-right layout, other pages maintain the original top-middle-bottom layout, see commit history
  • Execute pnpm dlx shadcn@latest add sidebar
  • Created folder app/[locale]/(basic-layout), added file app/[locale]/(basic-layout)/layout.tsx
  • Moved all files and folders under app/[locale] folder, except app/[localte]/layout.tsx and app/[locale]/(protected), into app/[localte]/(basic-layout)
  • Updated app/[locale]/layout.tsx, removed Header and Footer references, removed <main> tag (do not remove children inside <main>)
  • Added app/[locale]/(protected)/dashboard/DashboardSidebar.tsx
  • Added components/header/SidebarInsetHeader.tsx
  • Updated app/[locale]/(protected)/dashboard/layout.tsx, using new Sidebar
  • Added directory icons to UserMenus and AdminMenus in i18n/message/en/common.json, i18n/message/ja/common.json and i18n/message/zh/common.json
  • Removed app/[locale]/(protected)/dashboard/Sidebar.tsx
  • Removed app/[locale]/(protected)/dashboard/MobileSidebar.tsx
  • Component style optimizations:
    • components/header/UserInfo.tsx
    • components/header/UserAvatar.tsx
    • components/header/MobileMenu.tsx
    • components/header/HeaderLinks.tsx
    • components/header/Header.tsx
  1. Optimized copy styles
  • components/mdx/CopyButton.tsx

New Features

  1. Added administrator overview page, see commit history
  • Execute pnpm dlx shadcn@latest add chart
  • Migrated new SQL files: supabase/migrations/20250812143117_create_order_stats_function.sql, supabase/migrations/20250812151308_create_daily_growth_stats_function.sql, see update methods
  • Added Server Actions actions/overview
  • Added page app/[locale]/(protected)/dashboard/(admin)/overview
  • Updated lib/supabase/middleware.ts, added /dashboard/overview to administrator permission pages
  • Updated lib/utils.ts, added number formatting methods
  • Updated multilingual packages
    • Edited directories: i18n/messages/en/common.json, i18n/messages/ja/common.json, i18n/messages/zh/common.json, added new page directory items
    • Added new page language packages: i18n/messages/en/Dashboard/Admin/Overview.json, i18n/messages/ja/Dashboard/Admin/Overview.json, i18n/messages/zh/Dashboard/Admin/Overview.json
    • Edited i18n/request.ts, imported new page language packages
  1. Added administrator orders viewing page, see commit history
  • Added Server Actions actions/orders
  • Added page app/[locale]/(protected)/dashboard/(admin)/orders
  • Updated lib/supabase/middleware.ts, added /dashboard/orders to administrator permission pages
  • Updated multilingual packages
    • Edited directories: i18n/messages/en/common.json, i18n/messages/ja/common.json, i18n/messages/zh/common.json, added new page directory items
    • Added new page language packages: i18n/messages/en/Dashboard/Admin/Orders.json, i18n/messages/ja/Dashboard/Admin/Orders.json, i18n/messages/zh/Dashboard/Admin/Orders.json
    • Edited i18n/request.ts, imported new page language packages

2.4.1

Bug Fixes

  1. Fixed Google model issues on AI Demo page
  • .env.example
  • config/models.ts
  • app/api/admin/translate/route.ts
  • app/api/ai-demo/multi-chat/route.ts
  • app/api/ai-demo/single-chat/route.ts
  1. Email boilerplates now use site name from config/site.ts configuration
  • actions/newsletter/index.ts
  • app/auth/callback/route.ts
  1. Added admin orders viewing page, see commit history
  • Added Server Actions actions/orders
  • Added page app/[locale]/(protected)/dashboard/(admin)/orders
  • Updated lib/supabase/middleware.ts, added /dashboard/orders to admin permission pages
  • Updated multilingual packages
    • Edited directories: i18n/messages/en/common.json, i18n/messages/ja/common.json, i18n/messages/zh/common.json, added new page directory items
    • Added new page language packages: i18n/messages/en/Dashboard/Admin/Orders.json, i18n/messages/ja/Dashboard/Admin/Orders.json, i18n/messages/zh/Dashboard/Admin/Orders.json
    • Edited i18n/request.ts, imported new page language packages

2.4.2

Bug Fixes

  1. Fixed the issue where one-time payments using 100% discount codes could not handle benefit upgrades, see commit history
  • lib/stripe/webhook-handlers.ts
  • app/api/payment/verify-success/route.ts

Optimizations

Made some styling and detail optimizations

2.4.3

Bug Fixes

  1. Update redirect URLs to use site URL instead of origin in auth callback and confirm routes, see commit history
  • app/auth/callback/route.ts
  • app/auth/confirm/route.ts

2.4.4

Webhook Processing Improvements

  1. Reduce one orders table query for one-time and subscription payments in webhook processing, see commit history
  • lib/stripe/webhook-handlers.ts
  1. Add retry mechanism for payment upgrade benefits rpc in one-time and subscription payments, see commit history
  • lib/stripe/webhook-handlers.ts
  1. Add email notification when payment upgrade benefits rpc fails after 3 retry attempts, see commit history
  • emails/credit-upgrade-failed.tsx Email notification template
  • lib/stripe/actions.ts Add email notification method
  • lib/stripe/webhook-handlers.ts Call email notification method after retry failures

Other Optimizations

  1. Make pricing card TabsList responsive components/home/Pricing.tsx

  2. Fix incorrect i18n namespace in PricePlanForm

  • app/[locale]/(protected)/dashboard/(admin)/prices/PricePlanForm.tsx

2.4.5

  1. Changed .eslintrc.json to .eslintrc.js

2.4.7

  1. Added support for Magic Link login confirmation redirect to prevent token invalidation and login failures caused by email service page scanning
  • Added new page app/[locale]/(basic-layout)/login/confirm/page.tsx
  • Modified app/auth/confirm/route.ts
  • Added environment variable MAGIC_LINK_REQUIRE_CONFIRMATION, redirect page is only enabled when value is true