Skip to main content

Changelog

What shipped, what broke, what we fixed. Written for users.

April 2026 — SEO platform foundation

April 24, 2026

This month Aedifex shipped the groundwork for the next 6-12 months of growth: real content, real discoverability, and real test coverage.

New routes

  • /blog — writing for architects, designers, and homeowners. First post: a practical walkthrough of designing a 30 sqm studio.
  • /solutions/{floor-plan,interior,ai-designer} — use-case landing pages with keyword-focused copy and structured data.
  • /showcase — community-published 3D designs. Anyone with a Pro account can publish a project to the public directory with one click.

Under the hood

  • SEO invariants now tested. A 12-case Playwright suite asserts title, description, canonical URL, JSON-LD structured data, robots.txt, sitemap.xml, and hreflang alternates on every public route. CI gates landing, solutions, blog, showcase, and the guest demo.
  • Two-query share pages. The /view/[shareId] page used to load megabytes of scene JSON on every bot crawl. Split into getPublicProjectMetadata (lightweight) + getPublicProjectScene (heavy), so search engines cost us a few KB instead.
  • KV-backed incremental cache. OpenNext now uses a Cloudflare KV namespace for ISR pages, the sitemap, and fetch-cache. Bot traffic no longer re-runs route handlers against D1 on every request.
  • SSR crawlable body. Share and showcase pages render project name, author, and context text in HTML even when the 3D viewer mounts client-side. Schema.org CreativeWork + BreadcrumbList included.

New database fields

  • slug — the canonical URL segment for /showcase/{slug}
  • summary — one-sentence meta description, regenerated by an LLM when you publish
  • isListed — gate for the public showcase directory (separate from isPublic which only controls the share link)
  • publishedAt — sort key for the showcase feed
  • locale — placeholder for per-project language hints

Existing projects were backfilled automatically. No action required.

UI

  • Share dialog now has two independent toggles: "Public Access" (anyone with the link can view) and "Publish to community showcase" (goes into the public directory and gets SEO metadata).
  • Footer surfaces Blog / Solutions / Showcase. A language picker is visible but disabled — we'll unlock Chinese and Japanese as translations land.

Developer experience

  • pnpm test:e2e — run the SEO regression suite against localhost.
  • pnpm test:e2e:prod — run it against aedifex.app after deploy.
  • pnpm typecheck:local — TypeScript check scoped to our own code, filters out upstream aedifex noise.

Known gaps

  • Per-project Open Graph images fall back to the static site-wide card. Dynamic next/og generation collides with OpenNext's WASM bundler; tracking as a TODO.
  • Chinese and Japanese UI copy is not shipped yet. hreflang x-default + en-US declared so we don't regress when we do ship.

Next month: content expansion (Q2 blog roadmap), dynamic OG via Satori, and content for the zh-CN launch.