Changelog
All notable changes to the storefront platform are documented here.
The format follows Keep a Changelog, and the project uses Semantic Versioning.
Release conventions
- Releases are tagged
vMAJOR.MINOR.PATCH(e.g.v1.2.0) onmain. - Every release gets a GitHub Release with these notes and a downloadable
source zip. Update entitlements follow the license terms — see
docs/UPDATING.mdfor how to pull a release into your fork. - MAJOR — breaking changes to
site.config.ts, theme contracts, or data schemas that require a migration step (each ships with migration notes). - MINOR — new features, new themes, new feature modules; backwards compatible.
- PATCH — bug fixes, dependency bumps, performance and accessibility improvements.
[Unreleased]
Changes merged to main but not yet tagged.
[1.0.3] — 2026-07-10
Fixed
- Rebrand setup now consumes the public
@appy-days/configAPI instead of importing across workspace source boundaries. - Merchant return-policy URLs reject protocol-relative values, preventing a configured policy path from resolving to another host.
- Redirect configuration rejects indirect cycles in addition to duplicate rules and self-redirects.
[1.0.2] — 2026-07-10
Added
- Commercial readiness contract (
docs/COMMERCIAL-READINESS.md) covering source checks, all-on/all-off builds, preview commerce, accessibility, performance, technical SEO, monitoring, rollback, established-site migration, and buyer handoff evidence. - Buyer-configured internal redirect map (
site.redirects) for cutovers. It rejects external destinations, duplicate sources, and redirect loops. - Opt-in Organization-level merchant return-policy JSON-LD. The markup remains absent until a store enters terms matching a public policy page.
release:verifyandrelease:verify:buildcommands for deterministic source validation and capability-state builds.
Changed
- PR CI now invokes
release:verify, keeping its source-validation contract in lockstep with the documented release procedure. - Runbook, update guide, README, and theme status documentation now distinguish source health from real-store launch evidence and accurately describe partial theme archetype fallbacks.
Changed
LICENSE-COMMERCIAL.mdis now the v1.0 Commercial License Agreement (previously a non-binding placeholder scaffold): tier grants (Single / All Access / Lifetime), client-work rights, perpetual-per-version expiry semantics, 30-day refund, warranty/liability terms, NSW (Australia) governing law.- Documentation truth pass.
FEATURES.md: Subscribe & save reworded as a Shopify selling-plans pass-through (no billing engine / subscriber portal); bundle & build-your-own-box pricing flagged display-only (checkout enforcement needs a Shopify automatic discount); one-click upsell marked standalone-Stripe-only; the PH pack no longer implies wired SMS/Messenger (email-only today).docs/THEMES.mdstatus tables updated to reality — the 12 token presets and the four non-editorial archetype packages ship (as partials), and thesuperstore/dropsprofiles now exist. /theme-galleryis now buyer-facing — the internal "visual QA · mock data" framing is replaced with "Explore all 12 themes" showcase copy. Per-theme anchors and the demo-mode gate are unchanged.
Added
docs/RUNBOOK.md— operational runbook: deploy model, environment matrix, the mode-driven auth seam, moderation commands, demo seeding, PH COD-ops, and the CI gate.- Skip-to-content link (WCAG 2.4.1 Bypass Blocks) — visually hidden until keyboard
focus, jumps to the
<main id="main-content">landmark. Covered by an axe e2e test. - Global
prefers-reduced-motion: reducerule inglobals.cssthat shortens transitions/animations (incl. the Radix Sheet/Dialog overlays) to near-instant — the Sheet/Dialog "respects reduced-motion" comments are now backed by real CSS. - Non-blocking preview-smoke CI (
.github/workflows/preview-e2e.yml): after a Vercel deployment succeeds, runs the@preview-tagged Playwright tests (public landing shell + Convex health check) against the deployed URL. The expected store title is now env-driven (E2E_STORE_NAME, defaulting to the dev store), so the same specs pass locally and against the demo deployment.
Fixed
pnpm rebrand(scripts/setup.ts) now accepts every shipped profile — the--profileallow-list was hardcoded todtc-consumablesand rejected the other five. It now derives fromPROFILE_NAMES/MARKET_NAMESin@appy-days/configso it can't drift.- Public demo footer showed PH-specific payment badges (GCash/Maya/GrabPay/COD)
from the
phmarket — replaced with neutral international badges (Visa/Mastercard/Amex/PayPal) in the demo overlay (site.config.demo.ts).
[1.0.1] — 2026-07-04
Fixed
convex/ESLint upgraded from the narrow error-swallow-guard config to fullrecommendedTypeChecked+@convex-dev/eslint-plugin's recommended rules, and a realtypes:check(tsc --noEmit) gate was added — the repo previously relied on ESLint alone, which is not a substitute for a real compiler check. No functional/runtime changes; internal type-safety only.
[1.0.0] — 2026-07-03
This repository is now the canonical development home of the storefront
platform. All platform development, releases, and issue tracking happen here;
consuming forks pull tagged releases per docs/UPDATING.md.
Added
- CI gate suite on every pull request and
mainpush: install, lint, formatting, import boundaries, manifest drift, Convex service guard, typecheck, unit tests, and the coverage gate. - Standing leak guard in CI: fail-closed content + filename sweep keeping upstream-vendor internals out of the repository.
- Branch protection on
main: the gate suite is required before merge.
[0.9.0] — 2026-07-02
Pre-release baseline. The platform architecture is complete:
Added
- Config-driven storefront: one
site.config.tsdrives branding, feature toggles, and theme selection; every feature ships off by default. - Two runtime modes behind one adapter seam:
headless-shopify(Shopify Storefront API + hosted checkout) andstandalone(Convex catalog/cart + Stripe checkout). - Theme engine with slot-based composition and a 12-theme catalog
(
packages/themes/*), previewable via the demo-gated/theme-galleryroute. - Feature modules: reviews, wishlist, loyalty, referrals, upsells, bundles, popups, product showcase — each independently toggleable.
- Package architecture:
@appy-days/{config,domain,adapters,ui,core,themes}plus per-feature packages underfeatures/*.