Changelog
Sliceway, release by release.
The public-facing updates to Sliceway — what shipped, what it replaces, and where to read it in the docs. Newest first; older entries stay viewable so a founder searching a version number lands here directly. Subscribe via the waitlist for the next-release note.
Every public Sliceway surface is now enumerated in /sitemap.xml with a truthful <lastmod> per route — the niche pages, the per-niche seo + communities playbooks, the published launches, the blog, the pricing faq stack trio, and a new /changelog route — and /robots.txt references it. Search engines see the full public surface on the same crawl cycle, so per-niche landings surface in organic search the moment a niche row is reviewed.
- New /changelog page (this one) — release notes as a marketing surface, not a doc
- Per-route <lastmod> driven by max(lastReviewedAt, post.publishedAt, launch.updatedAt) — no Date.now() fudging
- /sitemap.xml now enumerates /p/<slug> for every published launch with a non-null Stripe paymentLink
- Authed, anon-only, and noindex routes (dashboard, launch, spec/new, listing/new, login, signup) stay out of the sitemap
- /robots.txt unchanged — the existing `sitemap:` manifest line still points at the new /sitemap.xml
Every entry on /niches/[slug] now carries an explicit ten-title SEO playbook behind /seo/[slug], so a founder can pick one title and ship a Sliceway-shaped blog post without re-deriving the long-tail set themselves. Placeholder niches still ship ten titles — generated from the tag — with an in-page badge that signals the titles are tag-derived.
- Hand-curated ten-title banks for the ten derived niches, each tuned to the buying-intent angle
- Per-tag synthesised template bank fills the ten placeholder niches so no /seo/<slug> surface lands empty
- Title-to-post match in /seo/[slug] surfaces an existing blog when its title lines up with the playbook
- JSON-LD on /seo/[slug] falls back gracefully when a niche has no playbook entries yet
Each /launch row now provisions a Stripe-hosted checkout URL at createCheckoutSession time, and the success page reads that URL back through verifyCheckoutSession — no inbound webhook, no STRIPE_SECRET_KEY in the codebase, no Stripe SDK. Fulfillment lives where Stripe owns it and Sliceway just renders the receipt.
- POST /api/pricing/checkout returns the Stripe-hosted URL after a server-side createCheckoutSession call
- Success page reads the session back through verifyCheckoutSession before locking the buyer receipt
- Refunded sessions surface as "unpaid" on a re-check, keeping the buyer receipt consistent with Stripe
- Zero new dependencies — the stripe-billing module ships its own SDK-free verifier
The three pages a solo founder lands on after the spec generator are now real surfaces — /stack walks the AI-coding tools a founder already has point at the spec, /pricing hosts the three Stripe-billed tiers, /faq answers the eight questions the founder asks in the loop. No more marketing-deck-tone copy: each page counts the round-trips it actually saves.
- /stack now points at vendor-doc URLs only — no integration claims we cannot run on a fresh checkout
- /pricing mirrors src/app/api/pricing/checkout (CATALOG) verbatim — what the page shows is what buyers are charged
- /faq exports FAQPage JSON-LD inline so Google can render rich results without a sitemap dependency
- All three remain strictly static — no headers(), no cookies(), no prisma.api seam at module scope
The first real product surface: signed-in founders generate a Sliceway-shaped spec markdown at /spec/new and the row persists in SavedSpecsPanel on /dashboard. The Agent API returns a stable seven-section markdown shape per request, so the cursor/v0/lovable round-trip sees the same brief on every regenerate — the user exports, not the AI invents.
- Spec generator emits seven sections — positioning, ICP, feature cut, build vs buy, launch checklist, SEO seed, and pricing rationale
- Saved specs persist per-user, server-scoped with where: { userId: user.id } under a requireAuth() guard
- Marketing pages refactored to share a typed fixture contract with the dashboard panels so copy cannot drift apart