- SEO#
Phase-1 SEO foundation — 70+ new indexable pages
Phase 1 of the SEO master plan landed in one day. The site is now production-quality across comparison, use-case, industry, persona, and glossary surfaces — each with full schema, internal-linking, and substantive copy (1,400–1,800 words per page).
- /vs/[X] — 18 competitor pages with full payload (TL;DR, 15+ comparison rows, audience breakdown, narrative, 10 FAQs each)
- /alternatives/[X] — 17 listicle pages with Website Killer ranked #1 + 4 alternatives + curated buyer guides
- /use-cases/[slug] — 14 use cases (7 rewritten + 7 new: event, podcast, course, nonprofit, fitness-coach, real-estate, lead-magnet)
- /industries/[slug] — 20 industries (10 rewritten + 10 new: dentists, lawyers, accountants, photographers, therapists, yoga-studios, plumbers, electricians, freelance-developers, freelance-designers)
- /for/[persona] — 12 personas (5 rewritten + 7 new: indie-hackers, solopreneurs, developers, students, content-creators, course-creators, coaches)
- /glossary/[term] — 32 terms with 300–500 words each (14 deepened + 18 new — JAMstack, SSR/SSG, INP, CLS, llms.txt, WCAG, GDPR, SOC 2, programmatic SEO, pillar pages, etc.)
- /learn — 5 pillar guides + hub (AI Website Builder 101, Prompting for Websites, SEO for AI Sites, Design Systems 101, Custom Domains & DNS)
- /tools — index + 1 live (website-cost-calculator) + 13 coming-soon
- /contact, /security, /enterprise, /llms.txt — Phase 1 standalone pages
- Performance#
Build narration v2 + ~110K-token-per-run optimization
Two simultaneous wins. Build narration v2 makes the 8-minute factory run feel like a tracked checklist instead of a frozen progress bar. Cache plumbing fixes saved ~110–150K tokens per run on the codegen pipeline.
- Structured build steps + lucide-icon progress component in ChatPanel (theme-token icons, no green emoji)
- SSE narration event keeps client buildSteps in sync with server
- selectRunScopedDocs caches reference-doc block once instead of per-file
- cachedLayerGuidance lifts route_scaffold's anti-border/palette rules into 2nd cached system block for subpage calls
- IA-plan retry cachedPrefix built once outside loop
- Hero stacking-context fix: App.tsx wrapper and hero sections get relative+isolate+overflow-hidden (fixes invisible Three.js heroes)
- Six new hero patterns wired: TILT3D_AGENCY, KINETIC_SPLIT_REVEAL, SCRAMBLE_DEV, AURORA_LANDING, SCROLL_VELOCITY_KINETIC, PARALLAX_TILT_PORTFOLIO
- Design#
50-style premium taxonomy + mandatory 3D heroes on fullstack
Two large design-quality wins. The style taxonomy expanded from 8 → 52 design systems, each with concrete rules, anti-patterns, named hex palette, and Google Fonts typography pairing. Fullstack-mode sites now ship V1-platform-grade Three.js mouse-interactive heroes (no decorative-only fallback).
- 52 design systems: Linear Clean (new default), Stripe Flow, Raycast Glass, Anthropic Warm, Neo-Brutalist Light, Swiss Grid, Agency Portfolio Dark, Editorial Magazine, Brutalist Dev, Cinematic Showcase, etc.
- Universal polish floor (rounded scale, alpha borders, type scale, spacing scale, button variants) + global anti-pattern denylist injected into every codegen prompt
- Premium utility classes baked into every project's index.css (.heading-tight, .ui-label, .surface-card, .hover-lift, .magnetic-cta, .section-py-*)
- expandCompatibleStyles() auto-surfaces relevant new tracks per archetype id
- Three new fullstack hero shader primitives: LiquidSun (warm sun, simplex noise warp), ConstellationField (drifting orbs + cursor-linked lines), ShaderGradient (3-color noise-warped mesh)
- runFullstackHeroPrimitiveCheck tightened: home MUST import a HEAVY primitive (decorative-only FAILS the gate)
- Import-shape verification gate via ts-morph: blocks build phase on named-import vs export-of-resolved-file mismatch
- Fix#
Six homepage-must-load fixes + resumable factory runs
Six fixes that close 'homepage broken at publish' edge cases — React hooks auto-import, App.tsx structure gate, runtime-fix budget bump. Plus resumable runs that save ~60K tokens on architect-stage failures.
- React hooks auto-import (addMissingReactHookImports for useState/useEffect/etc)
- App.tsx structure gate + auto-rebuild via renderAppShell when missing
- Runtime-fix budget bumped 2 → 5 rounds when home is broken (Home.tsx/App.tsx/main.tsx)
- Architect-stage idempotency guards (ProductSpec/Blueprint/Contract/DesignSystem+IA-plan skip LLM if artifact exists)
- POST /factory/resume API
- factory/start surfaces recent-FAILED runs as resumable via 409 + resumableRunId
- Stale-run watchdog (5-min sweep, stub-and-ship)
- Fix#
3D path Router contract + seeder race fix
- webgl_3d archetype: renderThreeAppTsx now wraps with BrowserRouter (fixes 'useRoutes may be used only in the context of a Router' crash)
- Orchestrator dual-dispatch race fixed with pg advisory-lock claim + soft-skip on illegal-transition
- Architect always-ship hardening: IA-plan synthesizer fallback, broader fullstack downshift trigger, stale-feedback wipe on downshift
- Improvement#
Design OS v2 + Helmet wrap + cleanup-pass chain fix
7-phase premium-quality lift. Brief expansion via Haiku pre-architect, IA-plan richness gate, Premium Taxonomy v2 (heroes + surfaces + motion), Opus homepage by default, motion primitives. Plus a critical fix for the cleanup-pass collision that was clobbering responsive + asset-sync transforms.
- Brief expander (Haiku pre-architect) — short prompts get expanded to architect-grade briefs
- Richness gate (IA-plan validator) — re-runs IA-plan if section density too low
- Premium Taxonomy v2 — heroes + surfaces + motion vocabulary per style
- Opus homepage default — Sonnet stayed uniform for everything else; Opus reserved for home
- Clone rescue — recovers from clone-style prompts mid-architect
- Motion primitives library
- Template main.tsx now wraps <HelmetProvider> (fixes 'helmetInstances undefined' preview crash)
- Pre-verification cleanup chain composes sequentially (was Object.assign-clobbering)
- Responsive + asset-sync transforms added to chain
- Verification thresholds bumped; 5 new FACTORY_FLAGS
- Fix#
Undefined-identifier AST + chat-edit silent-drop fix
- AST flags icon-like identifier references in array/object literals (not just JSX tag names) — fixes runtime FacebookIcon-not-defined ship-through
- Chat-edit fails loudly when ALL files in patch are parse-rejected
- Traefik preview wildcard router gets explicit tls.domains entry
- Feature#
Factory v3 cutover + dependency installer
Factory v3 lands: model router, Apply client, Workspace + Northflank, npm-registry import check, Bootstrap design templates, snapshot APIs. Gated by FACTORY_WORKSPACE flag during rollout.
- Model router with per-stage budget cap + telemetry
- Apply client for atomic file-tree mutations
- Workspace + Northflank container provisioning per project
- npm-registry import check before generation (blocks hallucinated packages)
- Bootstrap design templates per archetype
- Snapshot APIs for rollback and inspection
- Pre-commit installMissingDependencies — chat-edit can npm install new packages into live preview
- --ignore-scripts + peer-dep + lockfile retries; public-scope allowlist; baseline-collision rejection
- Tailwind + shadcn componentStyle path with template primitives
- ChatPanel installer-progress hint
- Fix#
sx={{%',` regex bug fix + factory safety gate
Root cause for systematic JSX syntax break: responsive-repair regex was chopping `'100%'` mid-string. Adds pre-COMMIT revalidation, hardened chat-edit JSON prompt, deterministic unused-import strip. Plus the factory safety gate for the Sagar Tuitions hardening pass.
- Responsive-repair regex bug fix (no longer chops '100%' inside quotes)
- Pre-COMMIT revalidation gate
- Hardened chat-edit JSON prompt with explicit no-truncation rules
- Deterministic unused-import strip via ts-morph
- Pre-write JSX parse gate in mergeStagingFiles
- Landing nav-anchor consistency check
- Fuzzy nav repair
- Tighter flexWrap insertion
- Premium-polish DOS rules
- Performance#
Pipeline hardening + token efficiency
- Codegen stage flow upgrades to eliminate hallucinated imports
- Playwright drift correction
- Token-efficiency improvements via deduplicated dispatches
- Double-dispatch token waste pattern eliminated
- Security#
Redis SLAVEOF crypto-miner incident contained
Redis SLAVEOF crypto-miner attack contained to the Redis container; planted `backup1..4` cron payload keys neutralized; host clean. No data exfiltration; no customer impact. Redis instance now bound to internal-only network with auth.
- Attack surface: public Redis port without auth (now closed)
- Containment: Redis container isolated; cron-payload keys removed
- Verification: host filesystem scan clean; no persistence in /etc/cron* or /var/spool/cron
- Hardening: Redis bound to 127.0.0.1 + requirepass; iptables block on 6379 from public
- Defense-in-depth: ufw allowlist; falco runtime monitoring; weekly host audit
- Fix#
Preview-container Vite/esbuild OOM bumped to 1GB
- Root cause: '[plugin:vite:esbuild] The service is no longer running' was a 512MB-cgroup OOM kill, not a code bug
- Preview containers bumped from 512MB → 1GB memory + 2 cores
- Auto-migration of existing preview containers
- SEO#
Programmatic SEO landing pages
- Shipped /vs/* and /alternatives/* programmatic comparison pages
- Added /use-cases/* surfaces for landing pages, SaaS, portfolio, agency, small business
- Site-wide JSON-LD: Organization, WebSite, SoftwareApplication, FAQPage, BreadcrumbList
- robots.txt + sitemap.xml live
Want to be the first to know when something ships? Follow the changelog RSS at /changelog — the team posts every release here first.