Changelog — March 24, 2026
Introduced a full Fumadocs documentation site for the etouch platform, fixed watermark preview rendering, hardened production email URL validation, and stabilized the GraphQL codegen pipeline.
✨ New Features
- Fumadocs Documentation Site — New
apps/docsapplication built with Fumadocs (Next.js 15 + MDX), running on port 3002. Includes full GraphQL API documentation (queries, mutations, subscriptions, types from a 1816-line schema), Prisma database model documentation (all models, fields, relations, enums), and developer guides covering setup, Coolify deployment, and the project workflow state machine. Uses the same design tokens as the main app: shadcn/ui New York, Tailwind v4, and oklch CSS variables. A dedicated Dockerfile with standalone output was added for Coolify deployment.#320→ released as v1.20.0
🐛 Bug Fixes
-
Docs Build Errors — Resolved a series of compatibility issues introduced with the new documentation site: aligned Fumadocs to v15/v11, fixed Tailwind CSS / PostCSS configuration, added the
.sourcestub required byfumadocs-mdx@11, suppressed TypeScript errors on Fumadocs-generated types, removed invalid shell operators from the DockerfileCOPYstep, created thepublic/directory at build time, and stripped duplicate H1 titles from all MDX files.#321#322#323#324#325#326→ released as v1.20.1 and v1.20.2 -
Watermark Previews — Replaced the repeated watermark mosaic with a single, discreet "e-do studio" watermark. Watermark previews are now served consistently through the API with a cache-busting version token. Added a forced backfill option for existing assets and aligned metadata preview URLs accordingly.
#319 -
Production Email URLs & GraphQL Codegen —
getBaseUrl()now relies directly onloadEnv()instead of filtering localhost and then falling back to it, preventing broken email links in production.loadEnv()now validates thatAUTH_BASE_URLandDATABASE_URLcontain no localhost references in production, crashing at boot with a clear message if they do. Stripe config throws on missingNEXT_PUBLIC_SITE_URL. Codegen no longer scansnode_modulesand.next, and the duplicateTrackDownloadoperation was renamed toTrackAssetDownloadto unblock codegen. Workers now logauthBaseUrlat startup for diagnostics.#318→ released as v1.19.1
By Théo Daguier