Skip to content

v6.2.0 — Custom Domains + Shared Gallery + Schema Drift Repair

Choose a tag to compare

@github-actions github-actions released this 23 Apr 04:25
· 633 commits to main since this release

Headline

Custom domains (Shopify-style, end-to-end)

  • Tenants add their own domain at /t/:slug/domains
  • Wizard shows TXT (ownership) + CNAME (routing) records with copy buttons
  • "연결 확인" verifies TXT, then auto-calls Railway GraphQL customDomainCreate to register on the web service — Let's Encrypt SSL issued without any super admin step
  • Status flow: pendingverifiedpending_sslactive
  • Apex domain ANAME/ALIAS guidance shown inline

Shared image library

  • Super admin curated R2 gallery (shared/gallery/...)
  • Drag-and-drop multi-upload with Gemini vision auto-classification
  • AI image generation with multi-aspect-ratio fan-out (16:9 / 4:3 / 3:2 / 1:1 / 3:4 / 9:16)
  • Tenants pick from the library in PageEditor instead of generating per-tenant

Per-tenant support accounts

  • Auto-created support-{slug}@truelight.app on tenant creation
  • Super admin issues 24h temp password from tenant detail modal
  • Per-tab session isolation (sessionStorage) — super admin + multiple support sessions coexist

URL routing refactor

  • /t/:slug/* Shopify-style admin URLs throughout the admin app
  • RequireTenantAccess guard, server auth.ts rejects support role on tenant mismatch (403)

Schema + data

  • Schema-drift audit pass: created missing categories, themes, custom_domains tables across every tenant schema (idempotent runtime CREATE/ALTER)
  • Added columns: preachers.title, users.password_expires_at, custom_domains.{verification_token, railway_domain_id}

Block editor

  • Field/renderer alignment fixes: dedicated PastorMessageBlock, QuoteBlock; church_intro/mission_vision field renames
  • AI text gen with church-tone system prompt + 문장/문단 length toggle
  • YouTube thumbnail auto-picks highest available quality
  • Sermon form: inline + 설교자 등록 button + auto-select
  • apiClient.uploadFile unwraps R2 url correctly
  • Block palette tints: amber (data) / purple (layout) / plain (static)

Other

  • Web header logo falls back to church name; settings endpoint fills church_name from tenants.name when missing
  • Super admin + 교회 추가 → instant list refresh + tab switch
  • Slug live availability check (super admin create + public register)
  • Admin proxy server for same-origin /api/* (eliminates CORS for admin)
  • Tenant create/register forms enforce required on all fields

Setup notes

New env vars on api-server (enable full custom-domain automation):

  • RAILWAY_API_TOKEN
  • RAILWAY_WEB_SERVICE_ID
  • RAILWAY_ENVIRONMENT_ID
  • WEB_CNAME_TARGET (defaults to web-production-1f18f.up.railway.app)

Without RAILWAY_* vars, custom domain verification still works but stops at status verified — falls back to manual Railway dashboard registration.