Changelog — PHX SaaS Starter
All notable changes to this product are documented here. This project follows
Semantic Versioning. Breaking changes link to an upgrade
note in docs/upgrading.md.
[2.2.0] — 2026-07-10
Changed
- Complete overhaul of the logged-in experience: a modern fixed app shell (glassy deep-navy sidebar with brand mark, workspace switcher, sectioned navigation with active-state indicators, user block with plan and quick actions) plus a breadcrumb top bar with theme toggle and profile menu.
- Dashboard, organization, settings, and the admin hub restyled to one token language: rounded glass cards with hover lift, mono micro-labels, dashed empty states, consistent dark tables and badges.
-
Subtle motion: content panes fade in on mount (disabled under
prefers-reduced-motion).
[2.1.0] — 2026-07-10
Added
-
Signature animated hero: a three.js GPU particle “signal wave” field.
three r165 is vendored (
assets/vendor/three/, MIT) so fresh clones build offline; the scene ships as its own esbuild entry (js/hero.js) and is lazy-loaded by theHeroSceneLiveView hook only on pages that render the hero canvas. It pauses when off-screen or the tab is hidden, honoursprefers-reduced-motion(single static frame), and degrades to the CSS gradient when WebGL is unavailable. -
New brand identity: signal-pulse logo mark (reusable
logo_mark/1component) plus an SVG favicon.
Changed
- Landing hero redesigned as a dark signature band: new headline and copy, eyebrow badge, legibility vignette, restyled CTAs and social proof. The leftover decorative blur-blob elements were removed.
- Dashboard greeting no longer relies on an emoji glyph.
[2.0.1] — 2026-07-10
Added
-
LICENSEfile carrying the PhxTemplates Commercial Licence (v2.0) summary with a pointer to the authoritative tier terms. - README rewritten from the generated Phoenix stub: real quickstart (env files, mix setup, seeded logins), feature map, and runtime configuration reference.
[2.0.0] — 2026-07-10
Fixed (final release hardening)
- Email delivery worked only by accident: Mailgun credentials were read at compile time but set at runtime, so registration/confirmation emails crashed in dev and would crash in compiled releases. The mailer now reads its config at runtime and surfaces {:error, …} instead of crashing.
- Authenticated pages no longer render a stray “false” below the layout.
- Navbar link ids are unique (LiveView DOM patching correctness).
- Admin error-log rows no longer link to a nonexistent route.
- Pricing, features and testimonial placeholder copy replaced (no more lorem ipsum); logged-out pricing CTA no longer crashes.
-
mix setupinstalls assets/ npm dependencies, so a fresh clone builds CSS out of the box; the dev server port is PORT-overridable.
Security
- Removed all distributed credentials; secrets now load from the environment. Any key previously shipped in an archive must be treated as compromised and rotated (see the storefront security incident record).
Changed
-
Standardised setup,
.env.example, formatting, and the release gate against the shared PHX engineering baseline. -
Added
AGENTS.md/CLAUDE.mdagent-readiness guides.
Added
-
SECURITY.md,SUPPORT.md, and this changelog.