v3.6.3 8 February 2026 Fix Improvement

Early Access Live Counter & Pricing Fixes

Early Access Live Counter

  • Homepage pricing section — Replaced static “first 50 users receive a 90-day free trial” text with live counter fetched from API (“49 of 50 early access spots remaining — 90-day free trial”)
  • PricingCard API URL — Fixed incorrect /api/v1/stats/early-access/api/v1/early-access/stats
  • PricingCard response mapping — Fixed totalSpotstotal field mismatch and unwrapped { success, data } response envelope

Early Access Query

  • Accurate signup counting — Changed early access stats query from COUNT(*) FROM organisations to count only verified, non-admin users. Test and admin accounts no longer inflate the claimed count

API Fixes

  • Public route auth bypass — Added /api/v1/early-access/stats to publicAuthPaths with correct full path (was matching prefix only, returning 401)
  • Fastify 5 type fixdecorateRequest('audit', null as any) for v5 reference type restriction

Hydration

  • Homepage flash fix — Reverted PricingSection from client:only="react" back to client:load to eliminate footer layout jump. No hydration mismatch because early access text renders from state (null on SSR, populated after fetch)