Public beta

Changelog

Dated notes. One static page — no CMS. For contact, use /contact.

  1. Storefront visual bar

    • Three storefront-first styles on /studio/new-store: Clean (Dawn-level restraint), Atelier (serif, earth), Street (heavy type). Each recipe is a full shop anatomy — announcement → sticky header → one-message hero → numbered collection on a contrast band → editorial → trust → newsletter → footer.
    • Product cards are 4:5 with hover, formatMoney, 01/02/03 indexes, and a left/right detail panel. Fake ★★★★★ reviews, SALE spam, and hero carousels are banned.
    • Contrast band is copy-paste classes: store-contrast w-full bg-zinc-950 (clean) / bg-[#1C1917] (atelier) / bg-black (street) plus py-20 md:py-28, inner store-contrast-inner mx-auto max-w-7xl px-6.
    • Preview merge drops leftover .formatMoney tails per file without rebalancing JSX (rebalance was closing functions early → return outside of function). Typed const PRODUCTS: T[] = is extracted so merchant SKUs replace the Northline default catalog.
    • Cheapest real-photo path is the existing Grok Imagine tool (generate_image) — no third-party API. Until a still returns, one coherent inline-SVG language in reserved 4:5 slots.
    • QA score is static+live: an empty/black preview or a compile error cannot grade Good. Chat score updates when the iframe reports mount/fail. Bare `"sku": <svg>` object entries are rewritten per file (not global brace-depth) and fail static QA. Eject catalog.ts uses the merchant PRODUCTS, not Northline $28. Fix-from-QA must not claim the preview compiles — Babel is the gate.
    • Design-quality warnings in the QA pass: timid hero type (no text-5xl+ on a storefront), low-contrast muted text, fixed ≥400px widths (375px scroll risk), <img> without aspect-ratio boxes, hover-less buttons, and 3+ typefaces. Warnings only — they flag the bar, never block a save.
  2. Start a store

    • Guided rail at /studio/new-store: name, products, vibe. Lands in the studio with v1 generating — merchant SKUs, not placeholder SVGs.
    • Preview iframe installs formatMoney / getProduct / createCheckoutSession on window before user code runs (wizard ProductGrid calls window.formatMoney).
    • Toolbar Preview blocked / Publish-disabled clears on a successful iframe paint — stale compile errors no longer stick after the storefront renders.
    • ACP/MCP/UCP and durable store_orders still attach on eject. The general chat builder is unchanged.
  3. Compiler, not a template grid

    • One golden path: Agent-ready store. Admin / Auth / Kanban are ordinary chips.
    • Ejected stores write store_orders to Postgres when DATABASE_URL is set (same shape as Northline). Memory fallback only without it.
    • Canonical origin is shipboard.ca. shipboard.netlify.app 308s there.
  4. Store preview: one PRODUCTS binding

    • Platform catalog is injected once. Generated const PRODUCTS / lib/catalog.ts copies are stripped so Babel no longer throws “already been declared”.
    • Eject-only files (ACP / MCP / UCP routes) stay out of the iframe merge and the iterate prompt, so body.line_items cannot truncate Component.tsx.
    • Ready-to-ship goes red when the iframe fails to compile. Continue is a no-op unless the stream was actually truncated.
  5. Golden path: store that actually renders

    • Agent-ready store no longer crashes on first paint: PRODUCTS is injected when the model forgets the catalog.
    • QA fails Ready-to-ship on runtime exceptions. A store that throws never ships.
    • Generated v1 now includes the agent stack (catalog, /.well-known/ucp, MCP tools, Stripe, ACP stub, channel=).
    • The golden-path card fills the prompt — hit Send. No silent project burn.
  6. Agent-ready store

    • Studio prompt Agent-ready store. Same Ready-to-ship gate.
    • Eject includes a typed catalog, /.well-known/ucp (dev.ucp.shopping over REST + MCP), four MCP tools (search_products, get_product, create_checkout_session, get_order), Stripe Checkout for humans, ACP stub, and orders.channel = chatgpt | gemini | copilot | human.
    • Proof-of-concept store is live at northline-supply.netlify.app — not a real brand. Admin shows the last 20 orders.
  7. Public log

    • This page. Dated entries, listed in the sitemap and the footer. Static — no CMS.
  8. P0 / P1 hygiene

    • Dead discord.gg link removed from studio. Contact is /contact. No public Discord.
    • Eject target is Netlify. Vercel stays a secondary import in the deploy dialog only.
    • BYOB schema map is browser localStorage (Shipboard.studio.settings.v1). Connection string is request-scoped.
    • Ollama is labeled as your machine, not hosted. Gallery titles no longer truncate mid-word. Promo → Pro already existed. Max priority support: hello@shipboard.ca.
    • /about and /contact added.