AppendixChangelog

Deploy — June 26, 2026 (d07c618)

Fix live subscription checkout currency


Deploy — June 25, 2026 (a22da00)

Fix paid tier schema test fixtures


Deploy — June 24, 2026 (c90717e)

Fix auth blockers and upgrade billing surfaces


Deploy — June 18, 2026 (cae7959)

Fix public event UI, exports, and walk-in dashboard


Deploy — June 18, 2026 (d789437)

Fix walk-in poster sharing and admin health checks


Deploy — June 18, 2026 (d9b2047)

Add pricing rollout gating and PAYG billing authorization


Deploy — June 18, 2026 (ae39a00)

Fix walk-in sharing flow and update confirmation copy


Deploy — June 18, 2026 (3193b5e)

Polish walk-in sharing, dashboard mobile spacing, and marketing updates


Deploy — June 17, 2026 (315db6c)

Align active event limits with dashboard counts


Deploy — June 16, 2026 (74f4aea)

Fix pricing, billing, and calendar config flows


Deploy — June 16, 2026 (cdc30f1)

Split Cloud Run secret cleanup from deploy


Deploy — June 16, 2026 (3f6c6fb)

Fix Cloud Run env var type conflicts


Deploy — June 16, 2026 (612c8e3)

Fix Cloud Run deploy env var quoting


Deploy — June 16, 2026 (6723f8d)

Integrate IntaSend payments and fix CI issues


Deploy — June 16, 2026 (98384a0)

feat: add walk-in event checkins system


Deploy — June 16, 2026 (2152862)

Add email OTP auth flow and 2FA settings


Deploy — June 16, 2026 (85b7c5c)

feat: finish paid event waitlist payments and ticket admissions


Deploy — June 15, 2026 (3910fd1)

chore: commit local workspace changes and prepare Cloud Run deployment


Deploy — June 08, 2026 (c3710bd)

feat(pricing): add subscription, PAYG, and plan tables to Prisma schema (MD1)


Deploy — June 08, 2026 (3148b48)

fix: include @react-pdf modules in standalone output for PDF export route; increase Node.js heap in Dockerfile


Deploy — June 04, 2026 (e877d1b)

fix: use eslint-disable comment for renderToBuffer type cast


Deploy — June 04, 2026 (7a95942)

fix: resolve lint errors in PDF export route (unused vars, no-explicit-any)


Deploy — June 04, 2026 (bfcbbd7)

fix: resolve TypeScript errors in PDF export route and component


Deploy — June 04, 2026 (ebdf606)

feat: add CSV, Excel, and PDF (individual responses) export for registrations - Upgrade CSV export route: status=all support, registrationNumber column, cleanValue type safety, UTF-8 BOM, CRLF line endings - Add Excel (.xlsx) export route: frozen header, lime/dark theme, zebra rows, status colour-coding, Summary sheet (exceljs) - Add PDF export route + RegistrationResponsesPdf component: Google Forms-style layout with one page per attendee, questions listed vertically, full answers, DPA footer on every page, response counter (N / total) - Add RegistrationsPdf component (cover page + per-attendee card fallback) - Add export buttons to Confirmed and Waitlist tab headers in organiser dashboard: CSV, Excel, and PDF (Individual responses) for confirmed / waitlist / all


Deploy — June 04, 2026 (9f6a27c)

feat: add CSV download button on individual response view


Deploy — June 04, 2026 (9689d37)

feat: individual response view - View link in reg tables, detail page with neighbours nav


Deploy — June 04, 2026 (bab028b)

feat: individual registration detail + neighbours API routes


Deploy — June 04, 2026 (3a03fe2)

fix: normalise http:// Meet links, team invite 201 fallback + copy link UI, cloudrun RESEND_FROM + QR_SECRET


Deploy — June 04, 2026 (bbc6873)

test: add comprehensive tests for tickets API, QR, encryption, event schema, and isAdmin


Deploy — June 04, 2026 (62ed98d)

fix: include @react-pdf deps in standalone output for Cloud Run ticket PDF


Deploy — June 02, 2026 (e5e0a9c)

feat: restore Pricing link in public navbar


Deploy — June 02, 2026 (d254c66)

fix: ticket PDF 500, QR cut-off, Meet link normalisation, admin mobile, assistant language - fix(tickets): add serverExternalPackages for @react-pdf/renderer in next.config.mjs to resolve 500 on PDF download route - fix(tickets): wrap generateTicketPDF in try/catch in /api/tickets/[confirmationCode]/route.ts - fix(tickets): replace Next.js Image with plain img in ConfirmationTicket.tsx so html2canvas captures QR correctly; widen right panel to 168px - fix(tickets): remove duplicate width/height from react-pdf page style in lib/ticket.tsx to prevent QR clip - fix(events): normalise Google Meet links entered without https:// (meet.google.com/… now accepted) in schema, API route, and create page input - fix(admin): make AdminSidebar mobile-friendly with hamburger drawer - fix(admin): update admin layout.tsx for mobile top bar padding - fix(assistant): rewrite SWAHILI_RULES with positive-only framing; move language rule to position [0] in prompt assembly - feat(cloudrun): add ENCRYPTION_KEY, GROQ_API_KEY, NEXT_PUBLIC_APP_URL, RESEND_FROM to cloudrun.yaml - docs(payments): add v2 four-tier pricing strategy with tiered commission model and pay-as-you-go design


Deploy — May 27, 2026 (5a832d3)

Fix admin access, event routing, billing copy, and env logging


Deploy — May 26, 2026 (09befdd)

fix(admin): show country intelligence from existing users before cron snapshot


Deploy — May 26, 2026 (bd9c72d)

fix(lint): resolve remaining warnings and TS prop usage


Deploy — May 26, 2026 (bcc0d5b)

fix(types): resolve TypeScript errors — use named exports, fix toast hook, make role optional in hasOrganiserAccess - GoogleCalendarConnect and AddToCalendarButton: switch to named exports - profile page: remove incorrect toast calls (useToast hook takes ToastData object, not strings) - hasOrganiserAccess: make role property optional to match Session type with optional role field


Deploy — May 26, 2026 (ddc6ca3)

fix: remove duplicate modal code in ScannerHome.tsx that caused TypeScript errors


Deploy — May 26, 2026 (2c43079)

chore: save all local changes


Deploy — May 25, 2026 (1d8465d)

feat: team page shows event name chips per member instead of count badge


Deploy — May 25, 2026 (1b0d814)

fix: referral tracking for OAuth, comms date filter, Pioneer modal polish - Add POST /api/user/claim-referral: reads eventslot_ref cookie and calls processSignupReferral for the current session user. Fixes referral counts not updating when users sign up via Google OAuth (cookie was set on /join redirect but never consumed in the OAuth flow). - Call claim-referral from dashboard _shell.tsx on first authenticated load so the cookie is always processed regardless of signup method. - Filter /api/comms GET to only return messages created >gt;= user createdAt, so new users don’t see announcements from before they joined. - Pioneer modal: mobile-responsive sizing (p-5 sm:p-8, h-16 sm:h-24 trophy), concise copy, backdrop click to dismiss (marks hasSeenCongratulations).


Deploy — May 25, 2026 (de32673)

feat: Pioneer badge for all early users + visible trophy + no count in descriptions


Deploy — May 25, 2026 (93186ff)

fix: resolve all ESLint errors and warnings


Deploy — May 25, 2026 (984fad2)

fix: resolve all TypeScript errors (TS2339, TS7022, TS7006, TS2352, TS2353, TS2304)


Deploy — May 25, 2026 (5e985bf)

docs: update CHANGELOG and FEATURES for Phase 3 M1-M4 + Phase 4


Deploy — May 25, 2026 (97a0076)

Implement Phase 3 (M1-M4) + Phase 4 AI action card M1: Comparative performance vs organizer average in analytics API + UI card M2: Waitlist intelligence widget in Overview tab M3: Real-time registration ticker with 30s polling + new API route M4: Post-event summary email cron route + summaryEmailSent schema field Phase 4: AI 4th insight card type action in generateInsightCards.ts


Deploy — May 25, 2026 (94e28b0)

Implement H1-H6 insights and analytics expansion


Deploy — May 23, 2026 (9f6b2a2)

fix: correct whatsapp route context typing


Deploy — May 23, 2026 (5ee28bf)

fix: correct faq suggestions route context typing


Deploy — May 23, 2026 (21acb98)

fix: unblock cloud build for faq route typing


Deploy — May 23, 2026 (07b6729)

fix: resolve tokens build break and include FAQ onboarding hardening


Deploy — May 23, 2026 (2cc56be)

feat(MD-COMMUNITY-03): Weekly ranking popup + Monday cron - Add WeeklyRankingNotification model to schema (userId+weekKey unique) - GET /api/user/weekly-ranking: returns unseen notification for prev week - POST /api/user/weekly-ranking/dismiss: marks notification seen, records sharedAt - POST /api/cron/weekly-ranking-notifications: Monday cron generates notifications from leaderboard entries - WeeklyRankingPopup component: medal display, share message preview, share/skip actions - Pioneer modal takes priority (checked via /api/user/pioneer-status before showing) - Inline SVG icons (no lucide-react); shows once per week; dismiss on share or skip - Dashboard layout: mount WeeklyRankingPopup alongside PioneerCongratulationsModal


Deploy — May 23, 2026 (adf7c4f)

feat(MD-COMMUNITY-02): Leaderboard UI full redesign - Period tabs: This Week / This Month / All Time - Type sub-tabs: Overall / Top Referrers / Top Organisers - Top 3 podium with gold/silver/bronze styling - Positions 4-50 compact list with current user highlighted in lime - Avatar component with image or initial fallback - Fetch from /api/leaderboard (new period-based endpoint) - Inline SVG icons (no lucide-react), no SWR - Retained pioneer banner, badges section, referral list - User ID sourced from useSession() for self-highlight


Deploy — May 23, 2026 (ab450e3)

feat(MD-COMMUNITY-01): Period-based leaderboard system with full scoring logic - Replace single-row LeaderboardEntry with period-based model (userId+period compound unique) - Add PeriodType enum (WEEK/MONTH/ALL_TIME) and STARRED_ORGANIZER/COMMUNITY_BUILDER to BadgeType - Create lib/leaderboard.ts: getWeekKey, getMonthKey, recalculateLeaderboard from source data - Create /api/leaderboard: public GET endpoint with period/type filtering - Create /api/cron/recalculate-leaderboard: hourly cron recalculates all three periods - Update /api/community/leaderboard: period-based model, O(1) own-rank lookup - Update /api/cron/reset-leaderboard: badge-awarding only (no more score resets) - lib/referral.ts: updateLeaderboardScore is now a no-op (scores computed by cron)


Deploy — May 23, 2026 (14c33b5)

fix(MD-FIX-08): Pioneer badge backfill + auto-award on OAuth signup + BadgeDisplay component - POST /api/superadmin/badges/backfill-pioneers: backfills PIONEER badge to first 150 users (protected by CRON_SECRET) - lib/auth.ts createUser event: calls checkAndAwardPioneerBadge for OAuth sign-ups (was only called in email/password signup route) - components/BadgeDisplay.tsx: reusable pill badges for PIONEER, STARRED_ORGANIZER, COMMUNITY_BUILDER, GROWTH_BUILDER, COMMUNITY_CHAMPION, HALL_OF_FAME


Deploy — May 23, 2026 (4877947)

fix(MD-FIX-07): Replace all NEXTAUTH_URL refs with APP_URL from lib/config - Create lib/config.ts: APP_URL skips 0.0.0.0/localhost values, hard fallback to https://www.eventsslot.com - Replace process.env.NEXTAUTH_URL in 13 files with APP_URL from @/lib/config - Fix lib/openrouter.ts: was using wrong domain ‘eventslot.app’ as fallback - Fix missing www in attendance/confirm and register/success pages - Remove unnecessary NEXTAUTH_URL guard in report-downloads/purchase - Add NEXT_PUBLIC_APP_URL=https://www.eventsslot.com to cloudrun.yaml


Deploy — May 23, 2026 (fc04dd2)

feat(MD-GLOBAL-02): Country intelligence - GeoIP capture, snapshots, admin dashboard, AI geo context


Deploy — May 23, 2026 (e12ace1)

feat(MD-GLOBAL-01): USD as base currency — coin packages, exchange rate caching, localised display


Deploy — May 22, 2026 (1cb1b2e)

fix: campaign emails always FAILED — missing explicit from address + Promise.allSettled for resilience


Deploy — May 22, 2026 (540e4c7)

docs: add whole-system competitive analysis and improvement roadmap


Deploy — May 22, 2026 (95749e8)

fix: remove dead QR scan code from JoinEventButton (lint); add insights dashboard improvement report


Deploy — May 22, 2026 (b55e74e)

feat: per-event team invites, waitlist promotion email, email campaigns tab visibility


Deploy — May 22, 2026 (f23f5ac)

feat: add Pricing, How it works, For Universities to public nav; Profile + Billing in user dropdown


Deploy — May 22, 2026 (280a232)

fix: tickets on by default, virtual check-in auto-redirect, mobile image height, duplicate countdown


Deploy — May 22, 2026 (4ec6cea)

fix: resolve lint errors - escape quotes in emails page, remove unused AlignmentType import


Deploy — May 22, 2026 (d1130fa)

fix: resolve TS2345 in lib/email.ts - use InternalEmailOptions type for sendEmail


Deploy — May 22, 2026 (ff25a45)

fix: remove orphaned return block from ReportDownloadModal (TS1128)


Deploy — May 22, 2026 (ad45b22)

feat: MD-NEW-02 Organiser Email Dashboard (bulk email to attendees)


Deploy — May 19, 2026 (3cbca15)

feat: Word export matches PDF - Calibri font, horizontal borders, explicit cell padding, document styles


Deploy — May 19, 2026 (0261629)

fix: Word doc readability - white shading on data cells, theme-matched AI section headers, markdown strip


Deploy — May 18, 2026 (07b9ad1)

Merge branch ‘main’ of github.com:Officialkid/event-slot


Deploy — May 18, 2026 (065fcd5)

Merge branch ‘main’ of github.com:Officialkid/event-slot


Deploy — May 18, 2026 (fd44a57)

Merge branch ‘main’ of github.com:Officialkid/event-slot


Deploy — May 18, 2026 (10339da)

Merge branch ‘main’ of github.com:Officialkid/event-slot


Deploy — May 18, 2026 (0abf315)

fix: replace Resend proxy with explicit object to prevent build-time throw


Deploy — May 18, 2026 (570ae4d)

feat: complete rollout and fix digest schedule visibility and api reliability


Deploy — May 18, 2026 (71e7216)

harden-shared-link-route-fallback


Deploy — May 18, 2026 (23c7a27)

mobile-ux-banner-assistant-nav-share-refinements


Deploy — May 18, 2026 (41aa43e)

fix-banner-frequency-badge-visibility-and-community-nav


Deploy — May 18, 2026 (163fbaf)

fix-broadcast-audience-updates-and-permissions-policy


Deploy — May 18, 2026 (f6424e3)

fix-unify-events-dynamic-segment-for-cloudrun


Deploy — May 18, 2026 (c90431b)

fix-route-conflict-and-deploy-ignore


Deploy — May 18, 2026 (8470aaa)

feat-legal-brand-pioneer-security


Deploy — May 15, 2026 (5e50a8d)

Implement assistant memory API/UI, docs context RAG, proactive insights, and middleware API auth handling


Deploy — May 15, 2026 (c1fe7af)

Improve export formats/layout and smooth admin compatibility fallbacks


Deploy — May 15, 2026 (76f163b)

Fix admin conversations/comms 500 handling and resend readiness messaging


Deploy — May 15, 2026 (2487e1d)

Harden assistant APIs and deepen AI report analytics layout


Deploy — May 14, 2026 (5bd2c86)

fix: align route typing for tsc


Deploy — May 14, 2026 (9c889f0)

feat: add CSV/Word attendee export and resolve lint blockers


Deploy — May 14, 2026 (f397389)

feat(assistant): greeting-first UX, always-visible input bar, hold-to-record mic


Deploy — May 14, 2026 (a075c85)

fix(assistant): restore template literals mangled by PS heredoc; complete MD2 token economy


Deploy — May 14, 2026 (1ee2e73)

feat: persist chat history, rename/delete sessions, hide devtools for auth users


Deploy — May 14, 2026 (312bfeb)

Merge branch ‘main’ of github.com:Officialkid/event-slot


Deploy — May 14, 2026 (469b9f0)

fix: add OPENAI_API_KEY to cloudrun.yaml; wrap transcribe in top-level error handler


Deploy — May 14, 2026 (33b6c19)

fix: hide assistant widget for guests; fix transcribe 500; lift mobile nav


Deploy — May 14, 2026 (98802e7)

feat: redesign chatbot as full-page assistant with session history; add to dashboard nav


Deploy — May 14, 2026 (d243999)

fix: enable RUN_DB_MIGRATIONS=true in Cloud Run to apply pending migrations


Deploy — May 14, 2026 (f10bc07)

fix: add idempotent migration for token economy and assistant sessions Applies changes from loose SQL files (add_token_economy.sql, manual_assistant_sessions.sql) that were never tracked by Prisma. Fixes production 500 errors: - Message.authorId does not exist (admin/comms POST) - Message.authorId does not exist (comms page findMany) Migration is fully idempotent - safe to run on DBs where some or all changes were already applied manually.


Deploy — May 11, 2026 (3a6f26c)

fix(docker): upgrade to node:22-alpine and npm ci —legacy-peer-deps


Deploy — May 11, 2026 (529dffa)

fix(build): move OpenAI instantiation inside handler to avoid build-time init error


Deploy — May 11, 2026 (6b5f4ee)

fix(types): await Promise params in assistant session end route (Next.js 16)


Deploy — May 11, 2026 (335f671)

fix(deps): add missing @testing-library/dom dependency


Deploy — May 11, 2026 (e66f12e)

fix(ci): upgrade all workflows to Node 22 + npm ci —legacy-peer-deps


Deploy — May 11, 2026 (59e57c9)

fix(ci): use npm ci —legacy-peer-deps to match lock file generation


Deploy — May 11, 2026 (bbe0454)

fix(lint): rename useFeature->gt;consumeFeature, fix hook order in conversations, remove unused import, bump deps


Deploy — May 11, 2026 (3bad1ba)

feat(md2): token economy, AI assistant, security hardening - Token economy: lib/tokens.ts, lib/voice-quota.ts, lib/payments.ts - Voice quota system with monthly reset cron - Document generation token gate on report download - Paystack webhook (hard-gated behind PAYMENTS_ENABLED) - Token top-up page (Coming Soon state) - Super admin revenue dashboard with token economy metrics - AI assistant widget + chat/transcribe API routes - Admin conversations page + session management - Rate limiting (DB-backed): chat 60/hr, transcribe 30/hr, reports 10/hr - Security headers in middleware (CSP, X-Frame-Options, etc.) - Expanded middleware route protection - Admin sidebar: added Documentation link - Prisma schema: TokenBalance, TokenTransaction, VoiceQuota, RateLimitLog


Deploy — May 11, 2026 (1c31a35)

fix(ci): use dummy env vars in PR build check to remove secret dependency


Deploy — May 11, 2026 (8e2da3a)

fix(report): show full EventSlot name on cover page and add logo to all page headers


Deploy — May 11, 2026 (f1be75d)

fix(api): allow team members to toggle ticketsEnabled on events they have access to


Deploy — May 11, 2026 (f93d467)

fix(ci): use dummy DATABASE_URL for prisma validate/generate, remove unused GITLEAKS_LICENSE


Deploy — May 11, 2026 (a3c5b00)

fix(ci): allow scheduled issue creation and suppress known gitleaks false positives


Deploy — May 11, 2026 (f3120e1)

fix(docs-update): escape commit message HTML before prepending changelog


Deploy — May 11, 2026 (e8db407)

fix(ci): rewrite OAuth secret validation to use raw binary —out-file

The previous check used bash command substitution () which strips null bytes, and ‘grep -q $''' which is always true because the C runtime treats the null byte as end-of-string (empty pattern matches everything).

New approach:

  • gcloud secrets versions access —out-file=<tmpfile> for raw binary output
  • od -An -tx1 produces a clean hex dump with no bash string handling
  • All checks (null bytes, BOM, leading/trailing whitespace) operate on hex strings, not raw bytes, so they work correctly in all cases

Deploy — May 11, 2026 (2eaea67)

chore: remove all Vercel dependencies and fix OAuth secrets

  • Swap @vercel/og for next/og (built into Next.js), change runtime to nodejs
  • Uninstall @vercel/analytics and @vercel/og from main app (17 packages)
  • Delete docs-site/vercel.json (project is deployed via Cloud Run/Docker)
  • Update docs-site/README.md: Docker/Cloud Run deployment instructions
  • Update docs/SYSTEM.md: Hosting row changed to Google Cloud Run
  • Remove ‘Cloud Run vs Vercel’ section from architecture.mdx
  • Regenerate docs-site/package-lock.json (removes stale @vercel entries)
  • Add clean-oauth-secrets.ps1: re-uploaded GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET to GCP Secret Manager without null bytes

Deploy — May 11, 2026 (2a88d5a)

feat: implement fixes 1-4 (docs SEO, report copy, R2 images, ticket toggle & lookup)



title: Changelog - EventSlot Docs description: Official EventSlot documentation for Changelog.

Deploy - May 10, 2026 (b3f0dc8)

fix: purge event cache on delete; safe blue-green deployment; lint fixes


Deploy - May 10, 2026 (90aeaf3)

fix: add inverse user-message relation


Deploy — May 10, 2026 (0277102)

feat: ship comms hub, platform notifications, and consent updates


Deploy — May 09, 2026 (20bc5ba)

fix(ci): retry docs metadata push on non-fast-forward


Deploy — May 09, 2026 (94e7b15)

fix: resolve typecheck and audit blockers


Deploy — May 09, 2026 (8636f54)

fix: unblock docs update workflow push


Product Changelog

[!NOTE] This appendix changelog summarizes product evolution. Canonical deployment metadata is auto-updated in docs/EVENTSLOT_SYSTEM_DOCUMENTATION.md.

v0.4.0 - May 2026

Added

  • Official docs-site architecture with expanded technical and product docs
  • Waitlist promotion email diagnostics and improved admin/report operations
  • Security hardening layers across permissions and rate limiting

Changed

  • Documentation moved to canonical system-first source model
  • Operational guidance aligned to Cloud Run deployment path

Fixed

  • Multiple docs/runtime mismatches around feature gating and payment provider assumptions

v0.3.0 - Q1 2026

Added

  • Report-download wallet and purchase transaction tracking
  • Admin report generation by event link
  • Enhanced dashboard analytics and insight flows

Changed

  • Billing focus shifted toward report-download purchases

Fixed

  • Stability improvements in report generation fallback behavior

v0.2.0 - Q4 2025

Added

  • Waitlist automation and capacity promotion workflows
  • Team collaboration models and event-level access links
  • Notification and feedback operational surfaces

Changed

  • Event operations expanded from simple registration to full organiser dashboard controls

Fixed

  • Data integrity edge cases around registration lifecycle updates

v0.1.0 - Q3 2025

Added

  • Initial EventSlot release with event creation, registration, and organiser basics
  • Public event pages and attendee registration forms
  • Core auth, persistence, and deployment pipeline foundations

Changed

  • Product direction refined toward African market launch priorities

Fixed

  • Early onboarding and route-protection defects from initial launch iterations

Auto-update note

Canonical deploy timestamp and revision history are auto-updated on production deploy in docs/EVENTSLOT_SYSTEM_DOCUMENTATION.md via CI workflow.