EARLY ACCESS
← All releases

v2026.3.30-beta

Onboarding

  • Organization onboarding funnel: New multi-step flow for journal setup — org profile with live preview, plan comparison table, Stripe Checkout, welcome page
  • User onboarding funnel: Two-step flow for new users — display name + username, then avatar, pronouns, bio, and profile visibility with live preview
  • onboarding_complete flag: Profiles now track whether a user has completed onboarding, with automatic redirect for new users

Billing

  • Stripe subscription checkout: End-to-end flow working — upgrade button creates Stripe Checkout session, webhook activates subscription
  • Stripe price ID sync: Backend reads price IDs from environment variables and syncs to the plans table on startup
  • Error display on billing page: Upgrade errors are now shown to the user instead of silently swallowed
  • Plan pre-selection: Homepage pricing buttons pass the selected plan through the signup callback URL

UI

  • Unified footer: Removed duplicate kit Footer from marketing and public layouts — single footer across all pages
  • Feedback modal: Replaced the /feedback page with a dialog accessible from the nav bar, with draft persistence and amber icon indicator for unsaved drafts
  • CSS view transitions: Enabled for all SvelteKit page navigations
  • Pronouns field: Added to profiles (backend + frontend), displayed on public profile identity card
  • Nav avatar: Now shows the user's profile photo instead of always showing initials

Infrastructure

  • Asset proxy: GET /api/assets/{*key} serves public S3/R2 objects (avatars, covers) through the backend, restricted to public prefixes only
  • S3Proxy compatibility: Disabled request checksums for local dev S3-compatible services
  • Full public URLs: Avatar and cover image uploads now store complete URLs instead of bare R2 keys
  • Process-compose Stripe config: Added Stripe environment variables to the backend process