# Changelog

All notable changes to Pagemage. Buyers: your download link always serves the
latest version here — re-download any time from your success page.

## v1.38 — August 29, 2026

- The post-purchase upsell is now tier-aware: Standard buyers see the Pro
  upgrade, Pro buyers are pointed at Agency (white-label rights) instead of
  being asked to buy what they already own, and Agency buyers see no upgrade
  note at all. An upgrade is only advertised when the store actually sells
  that tier

## v1.37 — August 29, 2026

- The buyer archive now ships `api/dfy-intake.js` — the brief form is in
  the archive, so the endpoint that receives it must be too (buyers keeping
  a service offer get a working intake out of the box)
- Done-for-you briefs remember their campaign: a `?ref=` from an outreach
  or demo link is carried into the stored brief, so the owner can see which
  channel produces which briefs
- The package buttons in the done-for-you section now open the brief form
  with that package preselected (the form still works without JavaScript,
  and email remains the fallback), instead of starting an empty email draft

## v1.36 — August 29, 2026

- Buying works even before Stripe keys are set: while checkout is
  unconfigured, the pricing buttons offer an email path ("Email us to get
  it") instead of a dead end, and a not-configured checkout response offers
  the same — a payment link goes out by reply
- The done-for-you section gained a real intake form (name, email, package,
  timeline, offer details): briefs land in `api/leads/dfy-briefs.json` when
  the discount-list token is set, and fall back to a pre-filled email when
  it isn't. Works without JavaScript too
- Smoke tests cover the intake endpoint's unconfigured, invalid-input, and
  honeypot paths

## v1.35 — August 29, 2026

- Three complete demo storefronts: a contractor (Sand), a digital-product shop
  (Plum), and a consulting practice (Midnight) — fictional businesses built
  entirely from stock Pagemage sections, so you can see the starter wearing
  your industry before you buy. Store-side pages, sitemapped, and linked from
  the done-for-you section and the field guide

## v1.34 — August 29, 2026

- The post-purchase poll counter is scoped per checkout session — a
  returning customer's second purchase can never inherit a previous
  unfinished session's poll count

## v1.33 — August 29, 2026

- npm run setup: an interactive pre-flight check for the store owner —
  validates the Stripe key against the live API, confirms the price is
  active with its real amount, and prints the exact environment block to
  paste into Vercel. Ships in the buyer archive so their stores get it too.
  (Masked key entry; nothing written to disk.)

## v1.32 — August 29, 2026

- rss.xml: the build-in-public log as a followable feed, generated
  automatically from CHANGELOG.md on every build (autodiscovered on the
  home page and the experiment page)

## v1.31 — August 29, 2026

- build-in-public.html: the live log of the experiment — an AI agent
  operating this store under a revenue-first mandate. Documents the
  operating rules, everything shipped, and the honest scoreboard
  (starting from zero). Store-side page, sitemapped and cross-linked
  from the technical tour and field guide

## v1.30 — August 29, 2026

- AGENTS.md: a machine-oriented operating guide shipped in the archive —
  architecture map, API contract, non-negotiable invariants (CSP rules,
  server-verified delivery, token system), change workflow, and a
  customization map, so AI coding agents can safely retheme and rewrite
  the store. Pagemage is now explicitly agent-native.

## v1.29 — August 29, 2026

- Done-for-you packages on the home page: Quick Launch ($299, 48 hours),
  Complete ($499, 2–4 days), and Premium ($999, about a week) — send your
  content, get a launch-ready site on your domain with Stripe wired up
- Every package includes the license; service work is approval-gated and
  the 14-day guarantee covers the license itself
- FAQ and analytics events added (dfy-click-*)

## v1.28 — August 29, 2026

- Three-tier pricing ladder: Standard (one project), Pro (unlimited
  personal projects), and the new Agency tier (unlimited client
  projects + white-label rights + priority updates). Set
  STRIPE_PRICE_ID_AGENCY in Vercel and the Agency card appears
  automatically; license, terms, and FAQ updated to match

## v1.27 — August 29, 2026

- "Copy download link" button on the post-purchase page — one tap copies
  the save-forever URL, which matters most on mobile where selecting a
  long address is fiddly

## v1.26 — August 29, 2026

- The pricing-tiers template now documents exactly how the amounts
  populate (live from Stripe when pasted inside #pricing-cards, manual
  edits anywhere else), and the discount form promise reads naturally:
  "unsubscribe any time"
- The sales page's no-JS changelog fallback text refreshed to the
  current releases

## v1.25 — August 29, 2026

- After joining the discount list, visitors get a one-tap share prompt
  (native share sheet on mobile, copy-link on desktop) — word of mouth
  captured at the moment of maximum goodwill; share clicks are tracked

## v1.24 — August 29, 2026

- Checkout robustness: a hung checkout request now times out after
  15 seconds with a clear message and working retry buttons, instead of
  leaving them disabled forever; the post-purchase page stops
  auto-refreshing after five checks and offers the support path instead

## v1.23 — August 29, 2026

- First-time visitors with dark mode enabled at the OS level now get the
  Midnight theme automatically (until they pick a palette themselves) —
  the site respects how you've set up your device

## v1.22 — August 29, 2026

- The field guide (sell-online.html) now carries the discount-list form
  too — content-page readers who aren't ready to buy can still join the
  list (store-side page; requires the discount list to be enabled to appear)

## v1.21 — August 29, 2026

- The "free updates" strip on the sales page now renders itself from
  CHANGELOG.md, so it always shows the two most recent releases without
  anyone remembering to update it

## v1.20 — August 29, 2026

- Section library gained its most-requested block: `pricing-tiers.html`,
  the full Standard/Pro pricing section as a standalone paste-in with
  checkout already wired to your own Stripe prices

## v1.19 — August 29, 2026

- Each pricing card now states "Cards · Apple Pay · Google Pay" right under
  the buy button — Stripe Checkout supports them automatically, and saying
  so at the point of click removes the last payment hesitation

## v1.18 — August 29, 2026

- Abandoned-checkout recovery: visitors who return from an unfinished
  Stripe checkout are tracked (checkout-cancelled event) and, when the
  discount list is enabled, gently guided to it with the email field
  pre-focused — the warmest non-buyer segment, met instead of lost

## v1.17 — August 29, 2026

- /api/setup-status: the store owner can visit one URL during setup and see
  exactly which checks pass — keys present, each tier's price status,
  discount-list enabled (booleans only; never secrets)
- While checkout is unconfigured, the store functions as a pre-launch page:
  pricing buttons automatically become "Get the launch discount" links to
  the discount list, and flip back to real checkout the moment Stripe keys
  go live

## v1.16 — August 29, 2026

- Design polish pass across the whole site:
  - Hero now shows a floating "Payment verified — download ready" toast,
    telling the product's story at a glance; the illustration gently floats
  - Subtle paper-grain texture, text selection color, keyboard focus rings
  - Buttons gained shadows and press states; feature, pricing, and FAQ
    cards lift on hover; the featured plan carries a gold ring
  - FAQ markers replaced with animated chevrons; comparison table rows
    highlight on hover
- All animation respects prefers-reduced-motion; print output unchanged

## v1.15 — August 29, 2026

- Three new palettes: Sand (terracotta), Slate (steel blue), and Forest —
  six themes now ship, all in the live switcher
- Section library for your own store: paste-in testimonials, compact FAQ,
  newsletter signup, and about-strip blocks that use the existing styles
  (see sections/README.md)
- The setup guide gained a troubleshooting section: the four most common
  setup failures and their fixes

## v1.14 — August 29, 2026

- Vercel Web Analytics ships on every page: same-origin, cookieless, zero
  extra accounts — enable it in the Vercel dashboard to see visitors,
  referrers, and the funnel
- Funnel events wired: checkout clicks per tier, discount-list signups, and
  completed purchases (by tier) land as analytics events
- Privacy policy updated to describe the cookieless counting
- The validator also guards duplicate ids, unlabeled checkout buttons, and
  nameless structured-data blocks

## v1.13 — August 29, 2026

- Fixed a critical bug found in pre-launch review: the post-purchase
  verification script was inline, which our own Content-Security-Policy
  blocked — buyers would have been stuck on "confirming your payment"
  with no download button. The flow now lives in success.js (external,
  CSP-compliant) and was verified against production
- The error state gained a working "Try again" button
- LICENSE.txt is now tier-aware: Standard (one project) and Pro
  (unlimited client projects) in one document
- The validator also guards accessibility basics: lang, viewport, alt
  text, input labels, and heading order

## v1.12 — August 29, 2026

- Once a price is configured, the sales page injects live Product structured
  data (real price and currency from Stripe) for product rich results
- `/api/products` caches prices for five minutes per instance — faster
  pricing rendering, fewer Stripe calls
- The post-purchase page names the license tier you bought
- favicon.ico added for browsers without SVG favicon support

## v1.11 — August 29, 2026

- CUSTOMIZATION.md: a pre-launch checklist shipping inside the archive —
  every item to swap (domain, support email, name, price, theme, legal
  pages, release flow) is a listed find-and-replace
- Referral attribution: ?ref=code links persist and ride into the checkout
  session's Stripe metadata, ready for affiliate deals
- Checkout adapts its language to the customer automatically (locale auto)
- Success page is excluded from search at the header level too
  (X-Robots-Tag), not just the meta tag

## v1.10 — August 29, 2026

- HowTo structured data on the setup guide (seven steps, matching the page)
- TechArticle schema and full social-share cards on the how-it-works page
- Social share cards added to the guide page too — links posted anywhere now
  get a proper preview
- No-JS fallback on the post-purchase page: instructions plus support email
  when scripting is unavailable
- The repository validator now also proves pages inside the buyer archive
  never link to pages outside it

## v1.9 — August 29, 2026

- New technical deep-dive: how-it-works.html walks through the
  payment-verified delivery loop, the zero-dependency zip builder, and the
  zero-third-party architecture (store-side page, not part of buyer copies)
- Downloads are now version-stamped: the archive carries a VERSION file and
  the served filename includes it (e.g. pagemage-starter-1.9.0.zip)
- Permissions-Policy header added (camera/mic/geolocation off,
  FLoC opted out)
- Product version tracks the changelog from package.json

## v1.8 — August 29, 2026

- Print/PDF stylesheet: previously, sections waiting for their scroll reveal
  printed invisible — printing or saving as PDF now shows every section
  (pricing included) in a clean ink-on-white layout
- FAQ answers auto-expand when printing
- Content is never invisible when JavaScript is disabled
  (`scripting: none` fallback)
- The discount form now uses native browser email validation
- Both above-the-fold fonts preloaded; theme-color meta on every page

## v1.7 — August 29, 2026

- Optional discount-list email capture: a "get the launch discount" form that
  stores signups in your own private repo via the GitHub Contents API — no
  third-party email service, invisible until you add `LEADS_GITHUB_TOKEN`
- Honeypot spam protection and duplicate suppression built in
- Smoke tests cover the new endpoint's unconfigured, invalid, and bot paths

## v1.6 — August 29, 2026

- Palette choice now follows visitors across every page (previously only
  the sales page remembered your theme)
- The post-purchase page offers the Pro upgrade only when a Pro tier is
  actually configured, so the link can never dead-end
- New repository validator (`npm run validate`, part of `npm run check`):
  checks every internal link and anchor, JSON files, font references, and
  FAQ/structured-data sync before anything ships

## v1.5 — August 29, 2026

- FAQ grew to twelve answers: do you need to code, changing your price
  later, and handling sales tax / VAT (structured data synced)
- Post-purchase page links new buyers straight to the setup guide
- Apple touch icon for iOS home-screen bookmarks
- Sitemap gained lastmod dates

## v1.4 — August 29, 2026

- Fonts are now self-hosted: zero third-party requests while browsing,
  faster first paint, and a stricter Content-Security-Policy
- The hero font is preloaded for quicker headline rendering
- Font files ship inside the product archive (`npm run fonts` to refresh)
- Browser theme-color now follows the palette switcher
- Privacy policy updated to reflect the zero-third-party setup

## v1.3 — August 29, 2026

- Public setup guide (`guide.html`): every step from purchase to taking
  payments, visible before you buy — requirements, commands, env vars,
  test-card instructions, go-live checklist
- FAQ structured data now covers all nine on-page questions
- Keyboard users get a skip-to-content link
- Setup guide linked from the FAQ, launch steps, and every page footer

## v1.2 — August 29, 2026

- Three full color palettes now ship inside `styles.css`: Paper (default),
  Midnight (dark), and Plum (warm) — each is one token block
- Live palette switcher on the sales page (visitors can try every theme;
  choice is remembered)
- Branded 404 page
- Richer Open Graph image metadata

## v1.1 — August 29, 2026

- Added "How it works" launch checklist to the sales page
- Added alternatives comparison table (build vs designer vs no-code)
- Added "Who it's for" section for freelancers, founders, and digital sellers
- Sticky header keeps the buy button in reach on long scrolls
- Expanded FAQ: subscriptions, selling your own products, support
- Post-purchase page now offers a Pro upgrade path
- Added this changelog, shipped inside the product archive

## v1.0 — August 29, 2026

- Initial release
- Conversion-focused sales page (hero, features, what's included, pricing,
  14-day guarantee, FAQ)
- Stripe Checkout integration with optional Pro tier via `STRIPE_PRICE_ID_PRO`
- Payment-verified instant delivery (`/api/verify-session`, `/api/download`)
- Live pricing endpoint (`/api/products`) — the page shows real Stripe amounts
- Legal pages: terms, privacy, refunds; buyer license included
- SEO kit: sitemap, robots.txt, favicon, OG image, FAQ structured data
- Security headers via Vercel config
