BETAPro is not billed during beta. Lock in the price and we will honor it at launch.Freeze this price

Changelog

Stay up to date with the latest changes in our product.

2026-03-09 v3.0.2

2026-03-09 v3.0.2

Fixes and improvements

  • Tailwind Typography: Added @tailwindcss/typography plugin to the marketing app so prose and prose-invert classes render styled content correctly (blog posts, legal pages, changelogs)
  • Page spacing: Normalized top padding across marketing pages (blog list, blog post, changelog, contact, legal) from pt-24 pb-16 to py-16 for consistent vertical rhythm
  • Image hostname: Added picsum.photos to the allowed remote image hostnames in next.config.ts for blog placeholder images

2026-03-08 v3.0.1

2026-03-08 v3.0.1

Fixes and improvements

  • Single `useTranslations()` per component: Removed redundant useTranslations() hooks (e.g. tSignup, tLogin, tSettings, tPricing, tActions, tAria, tAvatar, tOrgSettings) across marketing and SaaS components. Components now use a single t for all translation keys.
  • Color mode labels: Marketing and SaaS ColorModeToggle now use the full key path common.colorMode.${option.value} for option labels.
  • Organization and settings keys: ChangeOrganizationNameForm now uses organizations.settings.changeName.notifications.success / error and settings.save via the shared t; other organization and settings forms (delete org, logo, change email/name/password, two-factor) use the single t for their copy.
  • List purchases enrichment: listPurchases (packages/api) now returns each purchase with resolved planId and planPrice from the payments helper, so clients receive plan data without extra lookups.
  • Purchase helper: createPurchasesHelper and getActivePlanFromPurchases in packages/payments now accept a ResolvedPurchase type (with optional planId and planPrice) and use resolvePurchasePlan / resolvePurchasePlanId to avoid duplicate provider price resolution when purchases are already enriched.
  • SaaS NavBar: Nav link list uses flex-nowrap, overflow-x-auto, and responsive md:overflow-visible md:flex-wrap so links scroll horizontally on small screens and wrap on larger ones; sidebar layout keeps md:flex-nowrap for the vertical nav.

2026-03-08 v3.0.0

2026-03-08 v3.0.0

Major architectural changes and breaking updates

  • App split: The former apps/web application has been split into dedicated apps/marketing and apps/saas Next.js apps
  • Route changes: Marketing routes and SaaS auth/app routes moved into new App Router layouts and path groups
  • Config scoping: Marketing and SaaS now use app-local config.ts, types.ts, and i18n request/config helpers instead of sharing apps/web config
  • Payments model: Billing now uses plan-based configuration and provider priceId values instead of client-facing productId
  • Purchase schema: Purchase records were renamed from productId to priceId across Prisma, Drizzle, and generated Zod schemas
  • i18n split: Translations are now split by scope (marketing, saas, mail, shared) and loaded through a new getMessagesForLocale helper
  • Translation key updates: Marketing and SaaS UI copy now uses full-length translation keys consistently across forms, nav, pricing, settings, admin, and auth flows
  • API removals: The contact and newsletter API routers were removed from packages/api
  • Mail changes: Newsletter signup email/template support was removed and mail rendering now resolves scoped translations from @repo/i18n
  • UI moves: Several SaaS-specific UI primitives were moved out of @repo/ui into apps/saas/modules/shared
  • Workspace tooling: The workspace now relies on a pnpm catalog for shared dependency versions
  • New apps: Added standalone apps/marketing and apps/saas applications with their own package.json, next.config.ts, tsconfig.json, global styles, robots, layouts, config, and Playwright setup
  • Marketing app: Public pages now live in apps/marketing, including home, blog index and post routes, changelog, contact, legal pages, sitemap generation, locale switching, and refreshed home-page sections
  • SaaS app: Protected application routes now live in apps/saas, with separate authenticated and unauthenticated layouts, account dashboards, organization settings, onboarding, auth pages, and API routes
  • Removed: Deleted the old combined apps/web app and its shared layouts, proxy, sitemap, and duplicated feature modules
  • Scoped translations: Split locale files into packages/i18n/translations/{locale}/marketing.json, saas.json, mail.json, and shared.json
  • New locales: Added Spanish (es) and French (fr) alongside English and German
  • Typed config: Added typed i18n config/interfaces and exported config, Locale, and scoped message types from @repo/i18n
  • Message loading: Added getMessagesForLocale(locale, scope) with shared-message merging and default-locale fallback behavior
  • Key normalization: Updated marketing and SaaS components to use explicit full-length translation keys instead of shorter or ambiguous key paths
  • App wiring: Marketing and SaaS now each own their locale request/update helpers and locale-aware providers
  • Plan-based checkout: createCheckoutLink now accepts planId, type, and optional interval, then resolves provider price IDs server-side
  • Payments config: Replaced productId pricing config with typed plan definitions, priceId fields, requireActiveSubscription, and reusable plan lookup helpers
  • Purchase queries: listPurchases now accepts an optional input object by default, simplifying direct server/client calls
  • Database schema: Renamed purchase productId to priceId in Prisma and generated validation output
  • Auth updates: Better Auth now uses the SaaS base URL, raises the minimum password length to 8, reserves chatbot as an organization slug, and updates invitation redirects to /login and /signup
  • Removed API endpoints: Deleted the contact and newsletter oRPC modules from packages/api
  • Mail package refactor: Moved mail helpers into packages/mail/lib, added scoped mail translation loading, and removed the newsletter signup template/export
  • Marketing forms: Marketing contact/newsletter flows were refactored along with the new app split rather than continuing to rely on the removed shared API modules
  • SaaS UI ownership: Moved password input, settings list/item, page header, and related shared components into the SaaS app to avoid over-generalizing them in @repo/ui
  • Workspace cleanup: Added pnpm catalog version management and refreshed package wiring across apps and packages

2026-03-05 v2.0.6

2026-03-05 v2.0.6

Refactoring

  • Server-side oRPC: Introduced a server-only oRPC client that calls the API router directly (no HTTP) during SSR. Added @orpc/server (1.13.6) to apps/web, new orpc.server.ts that sets globalThis.$orpcClient via createRouterClient(router, ...), and instrumentation.ts plus root layout import so the server client is registered before use.
  • orpc-client: Client now throws on the server ("RPCLink is not allowed on the server side") and uses window.location.origin for the RPC URL; exports orpcClient as globalThis.$orpcClient ?? createORPCClient(link) so server code uses the direct router client.
  • API: packages/api now exports router; payments.listPurchases procedure returns the purchases array directly instead of { purchases }.
  • Payments: Removed getPurchases and apps/web/modules/saas/payments/lib/server.ts. Account and organization billing pages and choose-plan page now call orpcClient.payments.listPurchases() directly; removed attemptAsync (es-toolkit) in favor of direct await. usePurchases hook updated to use data ?? [] to match the new procedure return shape.

2026-03-05 v2.0.5

2026-03-05 v2.0.5

Fixes

  • Payments / organizations: When redirecting unsubscribed users to the choose-plan page, organizationId is now only passed to the payments list when organizations are enabled and billing is attached to the organization (billingAttachedTo === "organization"). Previously, organizationId was passed whenever organizations were enabled, which could incorrectly scope or look up purchases by organization when billing was configured at the user level and cause a redirect loop.

2026-03-02 v2.0.4

2026-03-02 v2.0.4

Dependency updates

  • @orpc packages: Upgraded from 1.13.2 to 1.13.6 across the monorepo
  • apps/web: Updated @orpc/client to 1.13.6
  • packages/api: Updated @orpc/client, @orpc/json-schema, @orpc/openapi, @orpc/server, and @orpc/zod to 1.13.6

2026-02-05 v2.0.3

2026-02-05 v2.0.3

Radix UI dependency consolidation

  • Major dependency update: Migrated from individual @radix-ui/react-* packages to unified radix-ui package (v1.4.3)
  • Consolidated dependencies: Replaced 13 separate Radix UI packages with a single radix-ui package
  • Updated all UI components to use new unified package imports:
  • Replaced Radix icons: Migrated from @radix-ui/react-icons to Lucide icons
  • Features component: Replaced MobileIcon from Radix with SmartphoneIcon from Lucide
  • Select component: Replaced CheckIcon from Radix with Lucide's CheckIcon
  • Removed @radix-ui/react-icons dependency
  • UI package: Updated packages/ui/package.json to use unified radix-ui package
  • Web app: Updated apps/web/package.json to use unified radix-ui package
  • Dependencies: Reduced from 13 separate Radix packages to 1 unified package
  • Simplified dependency management with single package
  • Reduced bundle size and faster install times
  • Consistent versioning across all Radix UI components
  • Easier maintenance and updates

2026-02-05 v2.0.2

2026-02-05 v2.0.2

AI Chat refactoring and UI improvements

  • Major refactoring: Simplified AI chat feature to streaming-only interface, removing chat persistence
  • Removed: Chat storage and CRUD operations (create, list, find, update, delete, add-message procedures)
  • Removed: AiChat database model from all schemas (Prisma, Drizzle MySQL/PostgreSQL/SQLite)
  • Removed: Database queries for AI chats (ai-chats.ts files)
  • Simplified: AI router now only exposes a single stream endpoint for real-time AI responses
  • Refactored: AiChat component to use streaming without persistence, using @ai-sdk/react's useChat hook
  • Simplified: Chatbot pages removed prefetching logic for chat lists and individual chats
  • New: stream-message procedure that streams AI responses without storing conversations
  • Any code using orpcClient.ai.chats.* endpoints will need to be updated
  • Database migrations will need to drop the ai_chat table if it exists
  • Chat history persistence is no longer available - conversations are session-only
  • NavBar: Added conditional bottom border when scrolled (border-b when !isTop)
  • Button component: Removed icon opacity styling ([&>svg]:opacity-60) for better icon visibility
  • Global styles: Added consistent Lucide icon stroke-width (1.75) for improved icon rendering

2026-02-05 v2.0.1

2026-02-05 v2.0.1

UI component enhancements and design improvements

  • Major enhancement: Complete redesign of the toast component with custom styling and improved UX
  • Added custom Toast component with support for different types (success, error, info, warning, loading, default)
  • Added automatic icons for each toast type using Lucide icons
  • Added helper functions: toastSuccess, toastError, toastInfo, toastWarning, toastLoading
  • Added toastPromise function for handling async operations with loading/success/error states
  • Improved visual design with type-specific border colors and icons
  • Added support for action and cancel buttons in toasts
  • All form components updated to use the new toast API
  • Redesigned: Changed from dropdown menu to a modern segmented control/toggle button style
  • Added smooth sliding indicator animation for active state
  • Replaced dropdown menu with inline toggle buttons for better UX
  • Added tooltips for each color mode option (System, Light, Dark)
  • Improved accessibility with proper ARIA labels and pressed states
  • Added translations for color mode labels (common.colorMode.system, common.colorMode.light, common.colorMode.dark)
  • Updated icon from HardDriveIcon to MonitorCogIcon for system mode
  • Simplified: Removed inline color mode selection submenu from user menu
  • Color mode toggle now uses the standalone ColorModeToggle component
  • Cleaner menu structure with better separation of concerns
  • Select component: Updated border radius from rounded-md to rounded-lg for consistency with design system
  • SettingsItem component: Increased left column width from 280px to 320px for better content spacing
  • Theme colors: Updated muted background color from #1d1e1e to #191b1b for improved contrast
  • Updated all SaaS form components to use the new toast API:

2026-02-02 v2.0.0

2026-02-02 v2.0.0

Major architectural changes and breaking updates

  • Docs application: Moved from web app to standalone Next.js app (apps/docs)
  • UI components: Moved from apps/web/modules/ui/ to packages/ui/
  • Configuration: Removed centralized config/ package, now scoped to individual packages
  • Shared components: Moved Logo and Spinner components to @repo/ui
  • Mail package: Restructured directory layout (removed src/), removed Logo component and custom provider
  • Payments package: Moved helper utilities from src/lib/ to lib/
  • Mail preview app: New apps/mail-preview application added for email previewing
  • Not-found pages: New dedicated not-found pages for marketing and SaaS routes
  • Import paths: All imports updated throughout codebase (275+ files changed)
  • Removed docs routes from apps/web/app/(marketing)/[locale]/docs/[[...path]]/
  • Removed docs API route apps/web/app/api/docs-search/route.ts
  • Removed apps/web/app/docs-source.ts
  • Removed all docs content from apps/web/content/docs/ (including getting-started/ and index.mdx)
  • Removed TableOfContents component from marketing shared components
  • Removed docs image from apps/web/public/images/docs/login.png
  • Updated apps/web/content-collections.ts to exclude docs content
  • Updated apps/web/app/sitemap.ts to exclude docs routes
  • Created new apps/docs application using fumadocs
  • Docs now run as a separate Next.js app (default port 3001)
  • Docs content moved to apps/docs/content/docs/
  • Uses fumadocs-ui for improved documentation experience
  • Includes AI-powered page actions component
  • New docs app has its own package.json, tsconfig.json, and next.config.ts
  • Removed all UI components from apps/web/modules/ui/components/ (25+ components including accordion, alert, button, card, dialog, form, input, select, etc.)
  • Removed apps/web/modules/ui/lib/index.ts
  • Removed apps/web/components.json (shadcn config file)
  • All component imports throughout the codebase have been updated
  • Created packages/ui package containing all UI components
  • Components now imported from @repo/ui/components/[component-name]
  • Shared utilities (like cn) available from @repo/ui
  • components.json moved to packages/ui/components.json
  • Package includes all Radix UI dependencies and styling utilities
  • Removed config/ package entirely:
  • All imports from @repo/config or config will fail
  • Config is now scoped to individual packages
  • Each package now has its own config.ts file:
  • Root config.ts file for shared configuration
  • Removed apps/web/modules/shared/components/Logo.tsx
  • Removed apps/web/modules/shared/components/Spinner.tsx
  • All imports of these components throughout the codebase have been updated
  • Removed packages/mail/src/components/Logo.tsx (use @repo/ui instead)
  • Removed packages/mail/src/provider/custom.ts provider
  • Restructured mail package directory layout:
  • Updated all mail provider implementations to use new config structure
  • Updated all mail email templates to use new import paths
  • Flatter directory structure without src/ directory
  • Components, providers, and utilities at package root level
  • New packages/mail/config.ts for mail configuration
  • New apps/mail-preview application for email previewing (runs on port 3005)
  • Moved packages/payments/src/lib/customer.ts → packages/payments/lib/customer.ts
  • Moved packages/payments/src/lib/helper.ts → packages/payments/lib/helper.ts (new location)
  • Removed old packages/payments/src/lib/helper.ts (duplicate removed)
  • Updated payment provider implementations (Stripe, LemonSqueezy, DodoPayments, Polar)
  • Updated payment procedures to use new config structure
  • Helper utilities now in packages/payments/lib/ (without src/ prefix)
  • New packages/payments/config.ts for payment configuration
  • UI component imports across all modules (200+ files updated)
  • Config imports throughout the codebase
  • Shared component imports
  • Mail template imports
  • Payment provider imports
  • pnpm-workspace.yaml still references config package (which was removed) - this should be updated manually
  • Workspace now includes new apps/docs application
  • Workspace includes new packages/ui package
  • Updated all Biome configurations across packages to use consistent settings
  • Standardized Biome config format: all package-level configs now extend root config with "extends": "//"
  • Root biome.json contains shared configuration
  • Package-specific biome.json files only override when needed
  • Database package excludes Prisma-generated zod files from linting
  • Added @repo/ui as a workspace dependency where needed
  • Updated pnpm-lock.yaml with new workspace structure (2760+ lines changed)
  • Removed dependencies on deleted config package
  • Updated all package package.json files to reflect new structure
  • Added @repo/docs workspace package
  • Updated tooling packages (scripts, tailwind, typescript) with new dependencies
  • Updated i18n translations (en.json, de.json) with new messages
  • Improved package boundaries and separation of concerns
  • Better isolation between apps and packages
  • Clearer dependency relationships
  • New apps/docs application added to workspace
  • New apps/mail-preview application added to workspace
  • New packages/ui package for shared UI components
  • Removed config/ package in favor of scoped configs
  • Flattened directory structures in mail and payments packages (removed src/ directories)
  • Better code organization and discoverability
  • Clearer separation between application code and shared packages
  • Easier to understand dependencies between packages
  • Better support for independent package versioning
  • Updated agents.md to reflect new architecture and import paths
  • Updated coding guidelines to reference new package structure
  • Updated import examples to use new @repo/ui package
  • Updated .env.local.example with new configuration structure
  • Updated environment variable documentation
  • Updated sitemap generation to exclude docs routes
  • Updated content collections configuration to exclude docs
  • Updated image proxy route configuration
  • Updated turbo.json to use TUI interface ("ui": "tui")
  • Added apps/docs - Standalone documentation application using fumadocs
  • Added apps/mail-preview - Email preview application for development (port 3005)
  • Added dedicated not-found.tsx pages for marketing routes (apps/web/app/(marketing)/[locale]/not-found.tsx)
  • Added dedicated not-found.tsx pages for SaaS routes (apps/web/app/(saas)/app/not-found.tsx)
  • Removed NotFound component from marketing shared components (now using Next.js not-found pages)
  • Updated TypeScript configurations across packages
  • Updated path aliases in tsconfig.json files
  • Added new type definitions for UI package exports
  • Added TypeScript configs for new apps (docs, mail-preview)

2026-01-30 v1.3.5

2026-01-30 v1.3.5

Design system updates and UI improvements

  • Updated color scheme: replaced bg-card with bg-background in navigation and app wrapper for better contrast
  • Changed newsletter section background from bg-primary/5 to bg-muted for consistency
  • Removed borders from card components and dropdown menus for a cleaner look
  • Updated button styles: changed from rounded-md to rounded-full for a more modern appearance
  • Increased container max-width from --container-6xl to --container-7xl for better use of screen space
  • Increased heading sizes across marketing pages (Hero, Features sections)
  • Adjusted letter spacing from -0.02em to -0.01em for improved readability
  • Added max-width constraint to hero paragraph for better text flow
  • Enhanced changelog component: added title field to changelog items with improved layout
  • Updated changelog section styling: switched to rounded-3xl with bg-muted background
  • Improved dropdown menu styling: updated border radius and shadow for better visual hierarchy
  • Updated settings item component: removed explicit border and rounded corners for cleaner appearance

2026-01-26 v1.3.4

2026-01-26 v1.3.4

Enhanced organization dashboard with visual trend charts

    Page 5 of 8