All notable changes to Traqify are documented in this file. Format follows Keep a Changelog.
v1.23.0 - 2026-05-20
Documentation
backend/README.md full rewrite with Mermaid diagrams, middleware pipeline, full API reference, and ER diagram
frontend/README.md full rewrite with component architecture, route map, sequence diagrams, and state management reference
SECURITY.md rewritten to reflect all active security controls including tokenVersion, OTP hashing, OAuth code exchange, Paystack verification, and cron protection
v1.22.0 - 2026-05-20
Security — 17 vulnerabilities fixed
OAuth tokens no longer placed in redirect URL; stored in OAuthSession, exchanged via one-time code
tokenVersion added to all JWTs; incremented on logout and password change
OTPs hashed with SHA-256 before storage; only hash persisted
OTP invalidated after 5 failed attempts
Paystack verified amount compared to server-calculated order total
Newsletter subscribers scoped to organization
forgotPassword returns same response whether account exists or not
SSRF guard on downloadable product file URLs
changePassword enforces full complexity rules
acceptInvite password requires special character
upload-file endpoint has explicit MIME allowlist
notFound middleware registered before error handler
Startup validation for 5 required env vars
Removed withCredentials: true from Axios
Morgan uses short format in production
GET /api/staff restricted to AUDITOR+
Deleted unauthenticated POST /api/auth/google endpoint
v1.21.0 - 2026-05-19
Added
Daily Vercel Cron job to prevent Supabase database pausing (GET /api/cron/ping at 06:00 UTC)
CRON_SECRET environment variable with Bearer header validation
Fixed
White navbar now applied immediately on page load for /system, /changelog, /security, /license, /contributing, /privacy, /terms (previously required scroll)
Footer 5-column desktop layout: all five sections now appear in a single row
v1.20.0 - 2026-05-17
Added
Delete confirmation modal on Reviews page
Category pill on store product cards
Total review count on store product cards
Downloadable product email attachments
Invited user registration block
Changed
Google OAuth and email/password login are no longer mutually exclusive
Mobile padding on all landing page sections
Mobile padding on all dashboard pages
Mobile padding on store pages
Hero image column mobile padding
FAQ answers rewritten
Footer mobile layout
Email footer formatting
Fixed
5.0 default rating bug
v1.19.0 - 2026-05-12
Added
Approval/rejection confirmation modals on Reviews page
Mark-delivered confirmation modal on Logistics page
Quick Links card after charts on Overview page
Changed
New manual order initial status is now APPROVED
Traqify brand logo in all platform email templates
Fixed
Report routes audit
v1.18.0 - 2026-05-12
Added
Per-chart independent period filters on Overview page
Quick Links card on Overview page
Fixed
Downloadable file upload 500 error
v1.17.0 - 2026-05-12
Added
Publish confirmation modal on Add Product page
Save confirmation modal on Edit Product page
Dedicated downloadable file upload endpoint
Unified product edit page
Product category immutability
Changed
Products list page
Downloadable file upload
Mobile-first responsive layout across all dashboard pages
Mobile sidebar
Fixed
Upload 400 on downloadable file
v1.16.0 - 2026-05-12
Added
60-day chart period
Revenue growth "New this month" indicator
Changed
getRevenueChart migrated from $queryRaw to findMany
getCustomerChart baseline seeding
createOrder payment is inside the transaction
Overview period change re-fetches KPI cards
Fixed
Customer source on store checkout
Revenue chart missing store-checkout revenue
getCustomerChart Y-axis starting at 0
v1.15.0 - 2025-05-27
Added
Manual order: inline customer creation (Walk-in, Existing, New customer picker)
Manual order: customer confirmation email when new customer provides email
Shared storeOrderConfirmationEmailTemplate for dashboard and store checkout
Product average rating computed from approved reviews on list and store endpoints
Rating displayed as "4.8/5.0" on dashboard, store cards, and product detail page
Changed
All email templates standardised to white mode; emojis removed
Store-facing emails moved to wrapStoreEmail wrapper
Overview charts converted to ComposedChart (Bar + Area gradient)
updateOrderStatus passes org contact to email templates
Fixed
Product star rating showing count instead of average
Store product detail review list format
v1.14.0 - 2025-05-11
Added
Payment auto-backfill: GET /api/payments auto-creates Payment records for COMPLETED/APPROVED orders with no record on first load
Dashboard order creation now immediately creates a COMPLETED Payment record
Changed
Overview revenue aggregates Payment.amount (status=COMPLETED) instead of Order.totalAmount
Revenue and customer charts fill full date range with zeros for missing days
All chart Y-axes start at 0; period change refreshes KPI cards
Window focus refresh re-fetches all overview data
Fixed
Payments page empty for existing orders before Payment model introduction
Revenue chart missing store-checkout revenue
Customer chart starting above 0
v1.13.0 - 2025-05-13
Added
Payments auto-creation on store checkout (PENDING for transfer, COMPLETED for Paystack)
Staff removal notification email
Customer view modal with contact info and up to 5 recent orders