All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
v4.0.3 - 2026-02-11
- Replace custom
timingSafeEqual with Node.js crypto.timingSafeEqual in Meta webhook signature verification for stronger timing-attack resistance
- Fix pino logger signatures in
adminUserInsights.ts — use { err: error } pattern for proper stack trace serialization (4 calls)
- Replace 7
console.error calls with serverLogger.error across API routes for structured logging: newsletter/subscribe, form-token, form-token/stats, campaign-application/status, admin/clear-readiness-cache
Compare changes
v4.0.2 - 2026-02-11
- Comprehensive agency module code review and security hardening
- Next.js 16 build compatibility fixes for Turbopack strict mode
- Continued N+1 query elimination across brand and agency DAL layers
- Batch job queries in
getBrandOrders and add Zod validation to admin brand PATCH endpoint
- Remove
middleware.ts conflicting with Next.js 16 proxy.ts (only one middleware entry point allowed)
- Extract non-async utility functions from
'use server' files to fix Turbopack build errors
- Remove non-async re-exports from server action modules (Turbopack treats entire module as empty)
- Harden agency routes: HTML-escape email templates (XSS), tighten Convex validators, fix N+1 queries
- Consolidate duplicate
hashConvexIdToNumber implementation in agency DAL
- Fix
ensureUniqueAgencySlug missing iteration limit (was unbounded while(true))
- Archive unused Drizzle schema files to
_archived/ directory
- Refactor talent actions into modular file structure (
profile.ts, search.ts, gallery.ts, utils.ts)
- Stage uncommitted changes from agency code review and schema migration work
Compare changes
v4.0.1 - 2026-02-11
This patch release focuses on stability and performance across the entire talent experience. 24 fixes address runtime errors caught by Sentry, eliminate N+1 query patterns in the admin DAL and messaging layers, and harden all talent pages with proper error boundaries. The Convex data layer is now significantly more efficient with batch queries replacing individual lookups.
- Harden all talent pages with error boundaries and safe search parameter extraction
- Resolve tier 1 Sentry runtime errors and eliminate messaging N+1 queries
- Eliminate N+1 queries in reviews, featured talent, and messaging DAL
- Eliminate N+1 queries and excessive query limits across admin DAL (50K→500)
- Use direct Convex client for admin messages listing (bypass JWT overhead)
- Respect legacy role during auth migration to prevent role mismatches
- Secure legacy talent APIs and public profile endpoints
- Add error handlers to prevent runtime crashes in talent API routes
- Use direct Convex client and server-side aggregation for messaging stats
- Make environment variable check warn-only instead of blocking builds
- Improve Sentry profile tracking filter and phase 3 instrumentation
- Add comprehensive Sentry error filtering and environment validation
- Remove unused variables flagged by lint in profile page
- Resolve critical Convex and cache errors in production
- Stabilize admin counts and talent listing queries
- Load talent chart data via dedicated API route
- Avoid multi-paginate Convex dashboard queries that exceeded budget
- Load talent chart events via optimized Convex queries
- Paginate dashboard queries safely to stay within Convex limits
- Restore admin talent chart after query refactor
- Harden admin dashboard rendering against data errors
- Avoid Convex auth overhead for dashboard metrics queries
- Backfill visitor metrics and verify Neon parity
- Suppress unnecessary Prisma postinstall warning
- Remove next-intl dependency, replace with lightweight region detection
- Bump @next/third-parties from 16.1.4 to 16.1.6
- Bump react-dom from 19.2.3 to 19.2.4
- Bump @react-email/components from 1.0.6 to 1.0.7
- Bump react-native-screens from 4.16.0 to 4.23.0
- Bump lucide-react from 0.562.0 to 0.563.0
- Bump dev dependencies (8 packages in minor/patch group)
Compare changes
v4.0.0 - 2026-02-06
This is a major breaking release that completes our migration from PostgreSQL to Convex as the primary runtime datastore. This architectural shift brings real-time capabilities, simplified data access patterns, and a more maintainable codebase.
⚠️ Breaking Changes:
- PostgreSQL/Drizzle is now legacy only (used for migration tooling)
- All production data queries now use Convex
- Better Auth fully integrated with Convex
- Server-side data access completely rewritten
Migration Impact:
- No user-facing downtime expected
- All existing data preserved and migrated
- Authentication sessions maintained
- Mobile app compatible with new backend
- Complete database migration from PostgreSQL to Convex
- All data layer rewritten for Convex runtime with real-time capabilities
- Drizzle ORM removed from production code (preserved for migration tooling only)
- Better Auth v1.4.9 integrated with Convex for unified authentication
- All server functions now use Convex queries/mutations for type-safe data access
- Removed ~50+ legacy database helper files and utilities
- Split admin talent creation route - Separate routes for admin vs self-service talent creation
- Add admin talent search path - Dedicated search interface for admin operations with advanced filtering
- Fix admin-only talent search query to properly restrict access
- Align authentication system with schema inventory tests
- Update query builder to use v2 where filter syntax
- Resolve 5 critical bugs:
- Messages not loading properly after authentication
- Applications redirect to incorrect route after submission
- Profile edit redirect broken on save
- Sign-out not clearing session correctly
- Brand dashboard redirect to wrong page
- Fix campaign search redirect to point to correct jobs route
- Handle errors gracefully in onboarding completion flow
- Prevent crashes during onboarding finish step
- Standardize task management frontmatter format
- Allow local builds without requiring production environment variables
- Bump Zod from 4.3.5 to 4.3.6 for schema validation improvements
- Update AWS SDK S3 client from 3.972.0 to 3.980.0
- Update Stripe from 20.2.0 to 20.3.0 for payment processing
- Update AI SDK Anthropic from 3.0.18 to 3.0.35
- Update Expo Router from 6.0.21 to 6.0.23
- Update React Query from 5.90.18 to 5.90.19
- Update React Native SVG from 15.12.1 to 15.15.1
- Update React Native Gesture Handler from 2.28.0 to 2.30.0
- Update Next.js to 16.1.5 for latest stability improvements
- Update Drizzle ORM to latest version for migration tooling
- Archive legacy migration exports and checkpoint work
- Add comprehensive Drizzle schema inventory documentation
- Eliminate outdated TODO comments and archive legacy files
- Add QSTASH environment variables to Turborepo passthrough config
v3.30.0 - 2026-01-12
- Add backfill endpoint for founder welcome scheduled messages - New admin API endpoint to backfill scheduled founder welcome messages for users who signed up before the automated system was implemented. Includes batch processing with configurable limits, dry-run mode for testing, flexible scheduling, and duplicate prevention.
v3.29.1 - 2026-01-12
- Add QStash signature verification support for scheduled messages cron endpoint
- Add EAS base build configuration with Node 20 and pnpm 10
- Configure mobile app package manager and pre-install script
- Update TypeScript configuration to exclude tests from build
v3.29.0 - 2026-01-12
- Add EAS build configuration for Expo mobile builds with Node 22.12.0 and pnpm 10.27.0
- Add error boundaries for messages and profile edit pages with Sentry integration (IDOL-77, IDOL-5W)
v3.28.1 - 2026-01-11
- Zustand persist rehydrate guard to prevent initialization errors
- Meta CAPI event payload structure for accurate event tracking
- Turnstile container existence check before reset
- Gallery 'not found' errors being incorrectly captured in Sentry (IDOL-6J, IDOL-6H)
- Optional chaining for safe .length accesses (IDOL-77)
- Validation errors, hooks, and API failures noise in error tracking
- Server action mismatch and transient infrastructure errors filtering
- Expand error filters for non-actionable issues in Sentry
- Batch preferences fetch to prevent N+1 queries in notifications
- Batch notification insert to prevent N+1 queries
- Batch reorder updates to prevent N+1 queries in gallery (IDOL-5Q)
- Add integration test setup and migration for conversation uniqueness
- Add Claude commands and cursor rules for workflow automation
v3.28.0 - 2026-01-10
- Migrate from Vercel crons to QStash scheduled jobs with config-driven management
v3.27.1 - 2026-01-09
- Centralize scheduled message logic for signup flows
- Add new favicon variants (gem, plushie)
v3.27.0 - 2026-01-09
Major dashboard redesign with compact card layout, new payout dashboard integration, guest job browsing on mobile, and improved responsive spacing.
- Dashboard: Add payout card to web and mobile dashboards
- Dashboard: Redesign all cards with compact layout and metrics
- Dashboard: Hide reviews card when no reviews
- Mobile: Add guest jobs browsing with public API
- Mobile: Add dark mode theming with system/light/dark mode support
- Mobile: Add push notification infrastructure
- Cron: Add QStash support for daily signup summary
- Admin: Add one-time backfill route for founder welcome
- Mobile: Remove double safe area padding on guest jobs page
- Mobile: Fix lint errors (conditional hooks, missing dependencies)
- Mobile: Fix TypeScript errors (missing colors in sub-components)
- Alerts: Hide social account alert for pending verification status
- Remove Cloudflare references from user-facing video upload UI
- Update payout cards to match standard card styling
- Make PayoutCard compact to match other card heights
- Show balance in top right of PayoutCard
- Improve card metrics layout and title sizing
- Add responsive padding using CSS clamp()
- Reduce minimum responsive padding to 4px
- Make remaining spacing responsive to eliminate scroll
v3.26.0 - 2026-01-09
URL-based tab navigation for profile edit page
- Add URL-based tab navigation with nuqs to profile edit page, enabling direct linking via query parameters (?tab=social, ?tab=basic, etc.)
- Social account alert now links directly to the social tab
v3.25.0 - 2026-01-09
- Add earnings dashboard with total balance, lifetime earnings, awaiting payout, and available to withdraw
- Add transaction history page showing all gig payments, commissions, and withdrawals
- Add earnings API endpoints for summary and paginated transactions
- Add EarningsSummaryMini component to web settings page with horizontal stats layout
- Add mobile BalanceCard with gradient design and info tooltips
- Add ProfileHeaderCompact with Jobs, Rating, and Views stats
- Add mobile transaction history screen with filtering
- Restructure mobile Me tab to settings-focused layout
- Rename mobile Profile tab to Me
- Create earnings DAL for aggregating data from orders, commissions, and payouts
v3.24.0 - 2026-01-09
- Add notifications tab to mobile app with real-time feed
- Add notifications and unread-counts API endpoints
- Improve sign-in and signup flows with better error handling
- Consolidate cron jobs into scheduled-messages processor
- Update mobile dashboard and cleanup login
v3.23.0 - 2026-01-09
- Add invitations tab to mobile Jobs page showing campaigns where brands have invited/shortlisted the talent
- Add JobTabBar component with All/Invitations tabs and underline indicator
- Add custom empty state with idol mascot illustration for invitations tab
- Add invited filter to jobs API to filter by JobApplication status
- Add emptyImage and emptyAction props to JobList component for customizable empty states
v3.22.0 - 2026-01-08
- Add ExchangeRate table migration for currency conversion
- Add useFileInput hook for mobile-safe file input triggers
- Add Sentry reporting for silent file input failures
- Add complete mobile onboarding flow with multi-step profile completion
- Add welcome screen with carousel and email verification
- Fix mobile file input dead clicks using useRef pattern
- Resolve lint and TypeScript errors in mobile app
- Fix SharedValue import from react-native-reanimated
- Convert user.id from number to string for authStorage calls
- Merge exchange-rates into midnight cron to stay under Vercel limit
- Remove standalone exchange-rates route
- Consolidate crons and remove dead routes
- Add UniWind (Tailwind CSS 4 for React Native) configuration
- Remove 31 unused imports and variables across onboarding screens
v3.21.0 - 2026-01-08
- Add multi-market currency conversion infrastructure for i18n
- Handle nullable regex capture groups in admin error parser
- Fix admin user conversion deletion logic
- Update documentation
- Fix mobile lint warnings and refactor profile edit tabs
v3.20.0 - 2026-01-07
- Add manual sync retry with toast notifications in scrape monitor
- Add external profile links for talents in CronRunsTable
- Improve error display with parsed error details
- Add FK constraint validation for orders before brand/talent conversion
- Auto-delete likes during user conversion
- Improve follower sync error message format with username and ID
v3.19.0 - 2026-01-07
- Enhance scrape monitor with infinite scroll pagination and filtering by platform and error status
- Add AccountStatusResponse type with pagination support for admin dashboard
- Create useAccountSyncStatus React Query hook for managing paginated data
- Improve error handling in ConvertBrandDialog with proper JSON error parsing and state display
- Improve error handling in ConvertTalentDialog with actual error message display
- Disable retry on conversion validation queries to prevent repeated failed attempts
- Update getAccountSyncStatus() to support page-based pagination with metadata
- Refactor AccountStatusTable component for infinite scroll support
v3.18.0 - 2026-01-07
- Add user conversion dialogs (talent-to-brand and brand-to-talent) in admin panel
- Add scrape monitor dashboard with cron runs, account status, and error tracking
- Add profile reminder platform messages via new systemMessages service
- Add system message context constants for profile reminders
- Improve feedback notification email layout and styling
- Update follower sync service logging
v3.17.0 - 2026-01-07
- Improve founder welcome message with profile completion guidance and clickable links
- Jobs: Update job visibility check from ACTIVE to OPEN
- Turnstile: Prevent hydration mismatch with client-only rendering
- Jobs: Include image in talent jobs feed query
- Hydration: Render year on server instead of null
- Turnstile: Catch reset error to prevent form crash
- Turnstile: Trim secret key to handle whitespace from copy/paste
- Redeploy for environment variable fix
v3.16.5 - 2026-01-06
- Turnstile: Trim sitekey to remove trailing newline - Fixed 'Invalid input for parameter sitekey' error caused by whitespace in environment variable
v3.16.4 - 2026-01-06
- Use global Turnstile API for reset instead of ref
- Add TURNSTILE_SECRET_KEY to Turborepo global pass-through environment
- Ignore Next.js manifest files in Sentry source map upload
v3.16.3 - 2026-01-06
- refactor(turnstile): switch to next-turnstile package
v3.16.2 - 2026-01-06
- sentry: Disable auto-instrumentation for Turbopack compatibility
- talent: Make scheduleReadinessCheck async for server action compatibility
- turnstile: Use ID selector and requestAnimationFrame for reliable rendering
- turnstile: Simplify to basic ref with setTimeout defer
- turnstile: Migrate to @marsidev/react-turnstile package for better integration
v3.16.1 - 2026-01-06
- Simplified Turnstile component to fix race condition in widget rendering
- Used callback ref pattern for reliable Turnstile widget initialization
- Consolidated job status to use 'OPEN' exclusively, removing redundant 'ACTIVE' status
- Exported
scheduleReadinessCheck for cleaner async patterns in talent profile updates
- Updated job status enum to reflect actual usage: DRAFT, OPEN, CLOSED, PAUSED, COMPLETED, CANCELLED
v3.15.1 - 2026-01-05
Bug fixes for Sentry server-side instrumentation and error handling in cached components.
- Sentry: Re-enable server-side auto-instrumentation for Turbopack compatibility
- Error Handling: Improve NotFoundError detection across
use cache boundaries (check error.name in addition to instanceof since class information is lost during serialization)
- Analytics: Update @vercel/analytics import to use 'next' subpath for App Router
v3.15.0 - 2026-01-05
New favourites and delivery APIs with comprehensive mobile app improvements including brands discovery, enhanced UI components, and haptic feedback support.
- Add favourites API and mobile hooks for talent bookmarking
- Add delivery API for booking deliverables management
- Add brands page to mobile jobs tab for brand discovery
- Add VersionSkewAlert component for app version mismatch detection
- Add Skeleton and Toast UI components for mobile
- Add haptics and image picker utilities for mobile
- Refactor v1 API routes (conversations, reviews, bookings, user endpoints)
- Enhance signup notification handling with improved Slack integration
- Bump drizzle-orm/kit to latest beta.8 patch
- Bump react-native to 0.83.1
- Bump zod to 4.3.5
- Bump better-auth to 1.4.10
- Bump react-dom to 19.2.3
- Bump ai SDK packages (@ai-sdk/anthropic, @ai-sdk/openai) to 3.0.2
- Various dependency updates via Dependabot
v3.14.4 - 2026-01-04
Admin sidebar badges now update instantly when reading messages or approving verifications/profiles, eliminating the need to refresh the page.
- Admin Sidebar: Update unread badge immediately when reading messages
- Admin Sidebar: Update badges instantly for social verifications and profile approvals
- Performance: Complete TASK-0212 talent route query optimization (dashboard: 15→5 queries, application: 4→3, media-kit: 3→2)
v3.14.3 - 2026-01-03
TypeScript fixes and mobile UX improvements - autosave hooks refactored for better reusability, iOS Safari form zoom issue resolved, and admin approvals page now mobile-friendly.
- UI: Prevent iOS Safari auto-zoom on form inputs by setting minimum font size
- Admin: Make approvals page mobile responsive with proper layout adjustments
- Forms: Consolidate autosave hooks into shared location (
apps/web/hooks/)
- Forms: Create
useFormAutoSave adapter for React Hook Form with proper TypeScript constraints
- Forms: Simplify profile edit tabs by using consolidated hooks
- Docs: Add auto-save documentation and environment setup guide
- DX: Add husky post-checkout hook for environment management
v3.14.2 - 2026-01-03
Improved autosave stability in talent profile editing and fixed React hook count issues in package management components.
- Refactored
PackageCreationButton to move error toast handling into useEffect for proper side effect management
- Fixed
PackagesList to use a single return pattern, preventing React hook count inconsistencies during conditional rendering
- Enhanced profile edit tabs (
BasicInfoTab, PhysicalAttributesTab, SocialVideoTab) with configurable autosave debounce timing
- Simplified
usePackage hook with cleaner implementation
- Updated integration tests for physical-attributes-tab and edge-cases
v3.14.1 - 2026-01-03
Database query refactoring to use explicit junction table naming conventions for improved code clarity.
- Database: Migrated all SQL queries from legacy implicit Prisma junction tables (
_TalentCategories, _BrandCategories) to explicit naming (talent_categories, brand_categories) with clearer column names (talent_id, category_id, brand_id)
- Completed TASK-0210 documentation for Singapore DB migration
v3.14.0 - 2026-01-03
Major infrastructure upgrade migrating from UploadThing to Cloudflare R2 for file storage, plus security patches and developer tooling improvements.
- Storage Migration: Complete migration from UploadThing to Cloudflare R2/Images/Stream for file uploads, with new R2 upload API endpoint and client utilities
- Developer Tooling: Add latency baseline debug endpoint for API performance monitoring
- Security: Patch qs DoS vulnerability (CVE high severity)
- CI/CD: Enable pnpm 10 via corepack on Vercel for improved build reliability
- Add FloatingHub component replacing SupportMessageLauncher
- Restructure data-fetching documentation into modular format
- Add database migrations for review response indexes and table renames
- Improve session caching and profile readiness logic
- Add backfill scripts for migrating existing media to Cloudflare
- Update environment configuration for Cloudflare services
v3.12.0 - 2024-12-31
Admin UX improvements with better navigation interception and enhanced AI bio generation with first-person perspective support.
- Admin: Added 'Profile Not Found' rejection reason for talent review workflow
- SEO: Added default Open Graph image to all pages for better social sharing
- Admin: Fixed secret navigation shortcut by using onMouseDown to intercept before browser's "open in new tab" behavior
- AI: Corrected bio generation to use first-person perspective with existing bio context support
v3.10.1 - 2025-12-29
Bug fixes and reliability improvements for job applications, messaging, and server actions. Standardizes error handling patterns across the codebase.
- Application validation: Add feedback for disabled apply button to improve UX
- Error handling: Handle 500 errors gracefully with null safety checks
- Database: Increase JobApplication.pitch column to 500 characters
- Build: Remove unused crypto.randomUUID import causing build issues
- Messaging: Show all conversation threads between same brand-talent pair
- Update dev dependencies (dev-minor-patch group)
- Standardize ActionResult pattern across server actions for consistent error handling
v3.10.0 - 2025-12-29
Major agency empowerment release: agencies can now directly edit their linked talent profiles with full audit trails and notifications. Plus significant messaging reliability improvements and admin workflow enhancements.
- Agency talent profile editing - Agencies can now edit profiles for their linked talents with complete audit trails, attribution tracking, and real-time notifications
- Admin brand detail modal - Clickable brand rows open detail modals for quick information access
- Admin job management - Show all job types and enable approval directly from job view with visibility controls
- Messaging unread tab UX - Improved loading states with prefetch for better responsiveness
- Notification integrations - Slack and Pushover notifications for new job drafts
- Agency dashboard - Enhanced routing, invite emails, and dashboard styling improvements
- Messaging reliability - Fixed unread filter not showing conversations correctly
- Messaging filters - Removed redundant client-side unread filtering
- Admin messaging - Fixed unread filter for admin users viewing conversations
- Mark-as-read - Fixed mark-as-read functionality for admin on talent side
- Role-agnostic operations - Use role-agnostic getViewerSide for archive/delete/mute actions
- Unread count - Invalidate unread count query when marking messages as read
- Connection indicator - Show "Online" instead of "Syncing" in connection status
- Agency roster - Added avatar to agency roster table and fixed root tsconfig
- Removed debug logging from messaging system
v3.9.0 - 2025-12-29
Enhanced messaging experience with conversation mute and soft-delete functionality, plus admin visibility improvements for brand welcome conversations.
- Messaging: Added mute and soft-delete functionality for conversations, allowing users to silence notifications or hide conversations while retaining data for compliance
- Admin: Brand welcome conversations now visible in admin panel with improved message handling
- Vercel: Enabled corepack for pnpm 10.x compatibility and fixed Turborepo monorepo configuration
- Turbo: Added globalPassThroughEnv for Vercel build environment variables
- API: Added mobile JWT auth support to dashboard endpoint
- Next.js: Resolved Next.js 16 prerender warnings and improved cron logging
- Dependencies: Regenerated pnpm lockfile for email package compatibility
- Updated React to 19.2.3, react-native, and tanstack/react-query
- Synced auto-generated files after turbopack update
- Configured migrations to run before build when DATABASE_URL is set
v3.8.0 - 2025-12-28
This release marks a major architectural milestone with the restructure to a Turborepo monorepo, enabling mobile app support via a new React Native client and API v1 endpoints. Extensive compatibility work resolves Next.js 16 static generation conflicts with crypto-dependent libraries, improving production reliability.
- Mobile app launch: Complete React Native application using Expo and React Native stack, with JWT-based authentication for mobile tokens
- API v1 endpoints: New REST API routes for mobile and external client access, establishing separate API contracts from web-only routes
- Icons and PWA config: Web app icons and PWA manifest configuration for improved cross-platform support
- Turborepo monorepo restructure: Move Next.js to
apps/web/ (@idol/web), create packages/shared/ for shared types and constants, create packages/email/ for React Email templates. Includes proper dependency configuration and backward compatibility layers.
- Database driver migration: Switch from @neondatabase/serverless to native pg driver for improved Next.js 16 stability and configuration simplicity
- Fix Next.js 16 crypto errors: Lazy-load cuid2, Sentry imports, and Better Auth handler to prevent crypto.randomUUID() calls during static generation, resolving NEXT_STATIC_GEN_BAILOUT errors
- Dynamic rendering improvements: Use
connection() instead of deprecated noStore(), properly mark dynamic routes, and guard against crypto conflicts during prerendering
- Admin UI fixes: Restore sidebar badge counts, fix menu spinner issues, improve chart dimension detection
- Cron timeout increase: Extend profile-reminders timeout to 60 seconds for background job reliability
- Migration hardening: Make startup migrations opt-in and non-fatal to prevent application startup blocking
- Lint-staged optimization: Align with Turborepo by removing TypeScript checks from lint-staged, keep Prettier for JSON/Markdown/YAML
- Post-refactor cleanups: Fix HTTPS certificate paths, update task validation paths, remove stale references, complete task migrations
- Documentation updates: Sync 2025 best practices, document monorepo structure, add migration checklists for developers
v3.7.7 - 2025-12-23
Bug fixes for Sentry configuration and admin dashboard chart rendering issues.
- fix(sentry): Update org and project slugs
- fix(admin): Resolve chart dimension warnings and CSS preload issues
- Fix Recharts width/height warnings by adding explicit dimensions and minWidth
- Prevent CSS preload warnings by disabling SSR for dynamic chart imports
- Improve SafeChartContainer dimension detection with requestAnimationFrame
- Add minWidth prop and min-w-0 class to prevent flexbox shrinking
- Update all chart containers with aspect-auto and w-full classes
v3.7.6 - 2025-12-23
Performance optimization for messaging queries reduces database round-trips, and Sentry trace data handling is fixed to prevent crypto errors.
- perf(messaging): Optimize query fan-out and fix Sentry trace data
- Consolidate
findUserProfiles into single query with joins
- Batch user lookups in
getMessagesSince to reduce round-trips
- Fix Sentry trace data handling with dynamic import to prevent crypto.randomUUID() errors
- Update Next.js type path for routes.d.ts
v3.7.5 - 2025-12-23
- auth: Use PascalCase model names for Better Auth adapter - fixes "model not found" errors
- db: Make baseline migration a no-op to prevent syntax errors during migration
- Restore static lightbox imports for build compatibility with Next.js 16 Turbopack
- Update Drizzle ORM to 1.0.0-beta.4
Full Changelog: https://github.com/pauljohnchamberlain/idol/compare/v3.7.4...v3.7.5
v3.7.4 - 2025-12-23
- Complete Drizzle-only migration with programmatic startup migrations
- Fix for null message content handling in admin moderation
- Complete Drizzle-only migration - remove Prisma and dual-ORM scaffolding
- Add programmatic migrations that run at application startup (production only)
- Inline Drizzle DAL, update types/tests/docs, and drop parity assets
- Handle null message content in admin message-moderation panel
- Fix
'use server' directive placement in favourites-service
- Remove incorrect
server-only imports from client-safe modules
- Update build script to remove manual migration step (now automatic)
- Stage uncommitted changes for release analysis
v3.7.3 - 2025-12-23
- Improved bio auto-generation reliability with concurrency control
- Fixed Sentry module loading errors in profile pages
- Fix dynamic import timing for Sentry-instrumented modules in profile edit page
- Add
await connection() calls before loading server modules
- Bio auto-generation: reduce batch size (50→20) and add concurrency limit (5 parallel)
- Extract single bio processing into dedicated function for better error tracking
- Improve logging for bio generation completion tracking
- Refactor parity test suite for improved maintainability
- Remove duplicate test setup code across parity test files
v3.7.2 - 2025-12-22
- Fix Server Actions build compatibility by updating auth imports - The
'use server' directive requires only async function exports, so requireAuth and AuthenticatedUser are now imported directly from @/lib/db/auth/session instead of re-exported from @/lib/actions
- Prepare cron and Drizzle migration infrastructure (staged for next release)
Full Changelog: https://github.com/pauljohnchamberlain/idol/compare/v3.7.1...v3.7.2
v3.7.1 - 2025-12-22
- AI-powered bio generation with automated cron job for incomplete profiles
- New email templates for delivery, disputes, and moderation workflows
- Drizzle ORM parity improvements for admin and job modules
- Add AI bio generation service with Claude integration (
lib/ai/, actions/ai.ts)
- Add automated bio generation cron endpoint (
/api/cron/bio-auto-generate)
- Add new email templates for delivery auto-approval, dispute resolution, funds release, and moderation warnings
- Fix Drizzle ORM parity issues in disputes, message moderation, and verification modules
- Fix job listing queries to use proper date comparison operators
- Fix email service to handle parallel queue processing correctly
- Update parity test coverage analysis and seed data
- Archive completed task files to
tasks/done/ directory
- Clean up unused task detail files
Compare v3.7.0...v3.7.1
v3.7.0 - 2025-12-22
- Parallel email queue processing for significantly improved throughput
- Multiple React hydration and hook stability fixes for better UX
- Resolution of rage click issues across the platform
- Parallelize email queue processing for improved throughput (IDOL-6X)
- Reduce React #418 hydration errors and fix TS null checks
- Resolve rage click issues across talent and brand pages
- Resolve React hook corruption in useJobs hooks
- Add const assertion to queryKey arrays (IDOL-6R)
- Stage uncommitted changes for release analysis
Compare: v3.6.0...v3.7.0
v3.6.0 - 2025-12-22
- Drizzle ORM and related tooling updated to latest beta versions
- Various dependency updates for security and stability
- Build toolchain improvements
- Update implementation for seed parity test data
- Sync lockfile with package.json to resolve Vercel build failures
- Update drizzle-orm and drizzle-kit to 1.0.0-beta.3
- Update pnpm to 10.26.1
- Update knip to 5.76.2
- Update react-resizable-panels to 4.0.14
Full Changelog: https://github.com/pauljohnchamberlain/idol/compare/v3.5.0...v3.6.0
v3.5.0 - 2025-12-21
- Major Drizzle ORM security hardening for production readiness
- Fixed messaging optimistic updates for instant message appearance
- Admin improvements with clickable user profiles in approvals table
- Security hardening for Drizzle production readiness (#db): Added runtime validation for feature flags, auth schema validation at startup, and schema drift detection script. Invalid feature flag values now log warnings and default to 'false'.
- Clickable user names in admin approvals table (#admin): User names in the approvals table now link to profile pages for easier review.
- TypeScript type narrowing for ConversationsResponse (#messaging): Fixed type narrowing issue after checking 'pages' property in old data.
- Optimistic updates for InfiniteQuery cache (#messaging): Fixed optimistic update in useSendMessage that was failing silently. Now handles both InfiniteData and ConversationsResponse structures, making sent messages appear instantly.
- Invalid PostgreSQL enum casts in social media queries (#admin): Removed invalid enum casts causing 500 errors in production.
- Staged uncommitted changes for release analysis
- Synced lockfile with package.json
- Updated app layout and explore page implementations
- Added unit tests for useSendMessage optimistic updates
Compare v3.4.0...v3.5.0
v3.4.0 - 2025-12-13
Major infrastructure release introducing Drizzle ORM for database abstraction, OAuth-based social media verification, recurring notification system, and multi-tenant payout routing for agency management.
- Drizzle ORM Integration: Added complete Drizzle ORM schema with shadow tracking for safe dual-write migration from Prisma. Includes comprehensive admin query layer with both Prisma and Drizzle implementations.
- OAuth Social Verification: Implemented Instagram, TikTok, and YouTube OAuth verification flows with secure state token handling. Talents can now verify social accounts through official OAuth instead of manual verification.
- Recurring Notifications System: New admin UI for managing recurring OTN (One-Time Notification) topics with cron job support for automated delivery.
- Multi-Tenant Payout Routing: Agency payout routing system that correctly routes payments based on talent-agency relationships, with comprehensive test coverage.
- Agency Management UI: New talent agency dashboard page, agency booking tables, and active agency/pending invite cards for improved talent-agency workflows.
- Health & Geo Endpoints: Added
/api/health for monitoring and /api/geo for geographic data.
- Refactored admin actions to use new database abstraction layer
- Added session cache fields for improved auth performance
- Updated proxy configuration for better request handling
- Added database indexes for agency-talent link queries
- Enhanced messaging channel configuration
v3.3.4 - 2025-12-12
Stability improvements focusing on hydration mismatches, social auth UX, and 404 page handling.
- fix(hydration): Replace
formatDistanceToNow with RelativeTime component in ProgressTimeline to prevent server/client mismatch
- fix(hooks): Always mount
UsageTermField to prevent React hooks order violation during conditional rendering
- fix(hydration): Defer
toLocaleTimeString render until client hydration is complete
- fix(messages): Add defensive null checks to
useInfiniteQuery handlers to prevent runtime errors
- fix(ux): Disable all social auth buttons when one is pending to prevent concurrent auth attempts
- fix(404): Use
notFound() for talent profiles with custom not-found pages for better error handling
- fix(404): Update talent 404 CTA link to
/search/talents for better user navigation
- fix(homepage): Add
connection() for dynamic rendering signal to ensure proper Next.js 16 behavior
v3.3.3 - 2025-12-11
Bug fixes for hydration mismatches and cron job SQL queries.
- Admin Tables: Resolved hydration mismatch issues by replacing
formatDistanceToNow with the RelativeTime client component across all admin tables (TalentTable, and other admin data tables)
- Cron Jobs: Fixed SQL column references in insights precompute job to use correct table and column names
v3.3.2 - 2025-12-10
Resolves React hydration mismatches related to date/time rendering by introducing client-only components and updates several dependencies.
- Hydration safety: Add
CopyrightYear component to prevent server/client date mismatch around midnight on year boundaries
- Hydration safety: Add
RelativeTime component for safe relative time display without hydration warnings
- Messages: Fix hydration issues in conversation list and message thread components
- Gallery: Fix hydration issues in gallery media card and upload components
- Providers: Fix hydration issues in app providers
- Footer: Update footers to use new
CopyrightYear component
- Update
recharts to v3.5.1 and fix TypeScript types in chart component
- Update
framer-motion to 12.23.26
- Update
lucide-react to 0.559.0
- Update
nuqs to 2.8.5
- Update
posthog-js to 1.303.1
- Update
react-email to 5.0.7
- Update
yet-another-react-lightbox to 3.27.0
- Archive completed tasks (TASK-0030, 0051, 0052, 0059, 0128)
v3.3.1 - 2025-12-10
Regenerates all Shadcn UI components for full Tailwind CSS v4 compatibility, ensuring the component library works seamlessly with the latest styling framework.
- Regenerate Shadcn components: Updated 55+ UI components to be compatible with Tailwind CSS v4, including accordion, alert-dialog, button, card, dialog, dropdown-menu, sidebar, and more
- Add sidebar CSS variables: Introduced dedicated sidebar theming variables for both light and dark modes, enabling more flexible sidebar customization
- Add base layer styles: Added foundational CSS layer with border and background utility classes
- Downgrade recharts: Reverted recharts from v3.5.1 to v2.15.4 for improved stability with the current chart implementations
- Clean up task files: Removed completed task file (TASK-0095.md)
v3.3.0 - 2025-12-10
Improved deployment resilience with automatic handling of server action version mismatches, providing a smoother experience for users after new deployments.
- Server Action Version Mismatch Handling: Added automatic detection and graceful refresh when users have cached JavaScript referencing outdated server action IDs after deployments. Users now see a brief "Updating..." toast before the page auto-refreshes to load the new version.
- New
lib/errors/version-mismatch.ts utility for detecting stale server action errors
- Added
VERSION_MISMATCH category to the error classification system
- Integrated auto-refresh handling in onboarding steps (PersonalInfoStep, SocialAccountsStep, TalentFocusStep)
v3.2.0 - 2025-12-10
Improved Stripe checkout reliability with smart polling to handle webhook race conditions, ensuring users always see their booking confirmation immediately.
- Booking reliability: Added server-side
checkApplicationBookingStatus action and client-side polling with exponential backoff (500ms, 1s, 2s, 4s) to detect BOOKED status when Stripe webhook hasn't processed before checkout redirect completes
- UX improvement: Auto-switches to "Booked" tab when booking confirmation detected via polling
- Updated task tracking statuses in todo.md
v3.1.2 - 2025-12-10
Fixed a critical bug where Stripe checkout would redirect users to localhost instead of the production domain (idol.ph) after completing payment.
- Stripe redirect URLs: Fixed
getAppBaseUrl() to prioritize request headers over environment variables. Previously, NEXT_PUBLIC_DEV_URL was checked first (which gets bundled at build time as localhost:3000), causing production Stripe checkouts to redirect incorrectly. Now request headers are used first on Vercel, with env vars as fallback for local development.
- Updated packages and task configurations
v3.1.1 - 2025-12-09
Minor i18n configuration fixes for development workflow and NextIntlClientProvider compatibility.
- i18n Configuration: Fixed NextIntlClientProvider requirement by returning empty messages object, ensuring proper client-side hydration
- Development Domain: Added
dev.kaizenbrands.com to i18n routing for development environment support
- Next.js 16 Types: Updated
next-env.d.ts route types path for Turbopack compatibility (.next/dev/types/routes.d.ts)
v3.1.0 - 2025-12-09
Multi-region expansion with comprehensive Australia support. The platform now supports dual-region operations with domain-based locale detection, region-aware pricing, and localized content.
- Multi-region infrastructure: Add complete region configuration system supporting Philippines (en-PH) and Australia (en-AU) locales with currency, tax, phone, and payment provider settings
- Internationalization routing: Implement next-intl domain-based routing with automatic locale detection via idol.ph and idol.com.au domains
- Region-aware React hook: Create
useRegion() hook for client components to access current region's currency, tax rates, and localized settings
- Currency component: Add
<Currency> server component with proper Intl.NumberFormat for PHP and AUD display
- Enhanced currency formatting: Extend
formatCurrencyValue() utility with multi-currency support and locale-aware formatting
- Australia location data: Add comprehensive AU states, cities, and location utilities for talent profiles
- Phone validation: Implement region-specific phone number validation supporting Philippine (+63) and Australian (+61) formats
- User country code: Add
countryCode field to user schema for region tracking
- Update pricing, fees, and landing pages with region-aware content display
- Integrate Xendit locale support for regional payment processing
- Enhance sitemap generation with multi-region URL support
v3.0.0 - 2025-12-09
Major architectural refactoring that removes the Collaboration model, consolidating all booking/order functionality into a unified Order-based system. This simplifies the data model and improves maintainability.
- Collaboration model removed - The
Collaboration table and all related queries have been deleted. Use the Order model directly for all booking-related functionality.
- Consolidated booking views - Merged brand and talent order routes into unified booking routes (
/brand/bookings, /talent/bookings)
- Simplified actions - Updated delivery, dispute, and review actions to work directly with Order model instead of Collaboration
- Removed unused components - Deleted
RecentCollaborations dashboard component and BookingsClient
- Database cleanup - Added Prisma migration to drop Collaboration table from PostgreSQL schema
- Code cleanup - Removed
useBookings hook, actions/bookings.ts, and collaboration seed data
v2.112.0 - 2025-12-09
Unified the orders management experience for both brands and talents with a new shared OrdersTable component featuring filtering tabs and search functionality.
- Shared OrdersTable Component: Created a unified orders table component (
components/orders/OrdersTable.tsx) that works for both brand and talent views, reducing code duplication
- Tab-Based Filtering: Added status-based filtering tabs (All, In Progress, Awaiting Delivery, Under Review, Completed, Cancelled) to both brand and talent order pages
- Real-Time Search: Implemented client-side search across order numbers, item names, job titles, and party names
- Enhanced Order Queries: Extended
getBrandOrders and added getTalentOrders with matching shapes for consistent data structure across views
- Removed Redundant Component: Deleted talent-specific
OrdersList.tsx in favor of the shared OrdersTable component
- Query Structure Alignment: Updated both brand and talent order queries to include delivery status, job info, and full party details for the unified table display
v2.111.0 - 2025-12-09
Job bookings now integrate fully with the delivery system. Brands can book talents for jobs and both parties can track deliverables through the existing order flow.
- Job booking order integration: Create Order/OrderItem/Delivery records for job bookings (both GIFTING and PAID jobs)
- Delivery flow for jobs: Booked applications now show "Deliver" button linking directly to order page
- Job/Package type badge: Visual distinction between job and package orders in talent orders list
- Updated delivery UI to handle job orders with nullable package field
- Added orderId relation from JobApplication to Order for tracking
- Updated admin orders to support nullable packageId
- Added escrow features infrastructure
v2.110.0 - 2025-12-08
Role switching support with activeRole and identity verification scoring for talent profiles.
- Role System Enhancement: Add comprehensive role-checking utilities (
isAdmin, isBrand, isTalent, requireRole, requireAnyRole) with both async and sync variants
- Active Role Support: Update session checks to respect
activeRole field for seamless role switching
- Identity Verification Scoring: Add ID verification (+5 pts) and NBI clearance (+10 pts) to profile strength calculation
- Talent Type Activation Service: New service to determine displayable talent types based on verified social accounts
- Deprecate legacy
requireAdmin, requireBrand, requireTalent functions in favor of new requireRole pattern
- Update 40+ files to use new role-checking utilities
v2.109.0 - 2025-12-08
Complete identity verification system for talents and brands, enabling trust and authenticity across the marketplace with secure document handling and admin review workflows.
- Identity Verification System: Full verification workflow for talents and brands
- Talent verification with government ID, selfie, and NBI clearance upload
- Brand verification with business registration and authorization documents
- Admin verification queue with document viewer and approval/rejection workflow
- Verification status badges displayed on profiles
- Email notifications for approval, rejection, and NBI expiry reminders
- Automated cron job monitoring NBI clearance expiration dates
- UploadThing integration for secure document storage
- Updated data-fetching documentation with comprehensive patterns and examples
v2.108.4 - 2025-12-05
Configuration fixes and UI polish for the admin talent edit experience.
- Fixed Sentry MCP server configuration type (
url → http) for proper integration
- Removed sticky positioning from admin talent edit tabs for improved layout behavior
- Archived completed tasks (TASK-0142, TASK-0155, TASK-0172, TASK-0173)
v2.108.3 - 2025-12-05
Adds runtime resilience for the messaging system when the isSuperAdminOnly database column is temporarily unavailable.
- Conversations: Add runtime column detection guard to prevent P2022 errors when
is_super_admin_only column is missing
- Database: Fix Prisma migrations path configuration in
prisma.config.ts to correctly point to prisma/migrations
- Cached column existence check via
information_schema query avoids repeated lookups
- Automatic retry without the filter when P2022 error detected
- Super admin conversations endpoint returns empty response gracefully when column unavailable
v2.108.2 - 2025-12-05
Fixes production database migration deployment to ensure Prisma migrations run reliably on every Vercel deploy.
- Database: Add missing
isSuperAdminOnly column migration for Conversation table
- Build: Move
prisma migrate deploy from postinstall to build phase to prevent Vercel cache from skipping migrations
- Remove redundant
build:migrate script (now integrated into main build command)
- Simplify postinstall to only run
prisma generate (safe to cache)
v2.108.1 - 2025-12-05
Performance and cleanup release - removes deprecated dependencies and improves mobile responsiveness through CSS-only layout handling.
- Dependency cleanup: Removed deprecated
@types/tus-js-client package that's no longer needed
- Messages layout refactor: Replaced JavaScript-based window resize listener with Tailwind CSS responsive classes for mobile/desktop layout switching, improving INP performance by eliminating unnecessary JS execution and re-renders
v2.108.0 - 2025-12-05
New super admin messaging interface for content moderation, plus server actions compliance fix for application editing.
- Admin messaging dashboard: Add password-protected super admin message viewing interface with conversation actions for admin message access, updated messaging schema with moderation fields
- Server actions compliance: Make
isApplicationEditable async for proper server actions compliance
- Update dependencies and improve Sentry server configuration
- Fix media kit date rendering and image attachment handling
v2.107.0 - 2025-12-05
Added a proactive profile readiness sync system that detects and fixes drift between stored and actual completion scores, ensuring talents accurately reflect their profile status.
- Profile readiness drift detection cron - New safety-net cron job runs every 4 hours to detect profiles where stored completion score doesn't match reality, automatically triggering recalculation
- Readiness recalculation triggers - Profile readiness now recalculates automatically when:
- Social accounts are verified (follower counts affect 200+ requirement)
- Talent profiles are updated via API
- Follower sync aggregates new totals
- Message thread layout - Full-width containers and proper word-break for long messages
- Error classification - Better pattern matching for Prisma errors (PrismaClient, P2002, unique constraints, etc.)
v2.106.0 - 2025-12-04
Major application experience improvements: talents can now edit their submitted applications, brands receive notifications when applications are updated, and the applicant card UI has been modernized with better visual hierarchy.
- Application editing: Talents can now edit their submitted applications (pitch, why good fit, proposed rate) after initial submission
- Application update notifications: Brands receive in-app notifications and emails when talents update their applications
- Super admin attachment deletion: Added Cmd+Click quick delete for message attachments (super admin only)
- Improved ApplicantCard UI: Modernized design with better spacing, visual hierarchy, and responsive layout
- Image attachment handling: Fixed message attachment display and handling
- Sentry instrumentation: Enhanced replay configuration and error tracking
- Updated application action to include jobId in response
- Added application-updated-email template for brand notifications
v2.105.1 - 2025-12-04
- Brand Jobs: Exclude INVITED status from applicant counts - INVITED talents haven't actually applied yet, so they shouldn't appear in the "new applicants" count on the brand dashboard
v2.105.0 - 2025-12-04
Improved applicant management with dedicated status tabs and visual icons for better workflow organization.
- Applicant tabs refactored - Split the "All" tab into individual status tabs (New, Shortlisted, Booked, Rejected, Invited) with intuitive icons for each status
- INVITED status handling - Invited talents now appear in their own tab with View Profile action only until they apply
- Messaging restrictions - Brands can no longer message invited talents who haven't applied yet
- Updated custom tabs component for horizontal scrolling on mobile
- Improved empty state messaging for individual tabs
v2.104.0 - 2025-12-04
Messages now include their attachments when loading conversations, enabling attachment previews and download functionality in the conversation list view.
- Message Attachments in Conversations: Added attachment inclusion when fetching conversation messages, allowing users to see and interact with file attachments directly from the conversation list (
actions/conversation.ts)
v2.103.1 - 2025-12-04
Simplified dev tools by migrating from cookie-based plan overrides to direct database manipulation, improving reliability and security for admin testing.
- refactor(dev-tools): Migrate plan override from cookies to database - adds server actions for toggling subscription status directly, removes cookie-based system, and simplifies
isPayingBrand and subscription helpers
v2.103.0 - 2025-12-04
Add job context to messaging system, enabling job-specific conversations when brands message applicants from job listings.
- Job-Linked Conversations: Conversations now track which job they originated from, displaying a job badge in the message thread header that links directly to the job posting
- Job-Specific Messaging from Applicants Page: When brands message talent from the job applicants view, conversations are now linked to that specific job via the
forJob URL parameter
- Enhanced Conversation Queries: Include job relation in conversation fetches and types for proper job context display
v2.102.0 - 2025-12-04
Completes super admin message deletion by wiring the isSuperAdmin prop through the admin messages component hierarchy.
- Super admin message deletion UI: Propagate isSuperAdmin flag from admin messages page through MessagesClient to MessageThread, enabling the triple-click delete interface for authorized super admins
v2.101.0 - 2025-12-04
Super admin message deletion with hidden triple-click gesture for elevated moderation capabilities.
- Admin message deletion: Super admins (paul@idol.ph only) can permanently delete messages via hidden triple-click gesture with confirmation dialog
- AuthIdentity email field: Added email to identity object for permission checks
- Messages search spinner: Fixed spinner showing during background refetch when no search term active
v2.100.0 - 2025-12-04
Job application flow now enforces profile approval before talents can apply, improving quality of applications. SSE message broadcasting has been enhanced for better real-time sync.
- Job Applications: Talents with unapproved profiles now see a modal prompting them to complete their profile before applying to jobs
- SSE Message Sync: Message broadcasts now include all message fields for proper real-time synchronization
- Dependencies: Bump Next.js from 16.0.6 to 16.0.7
- Messaging: Skip contact info detection for SYSTEM messages (admin notifications are trusted)
- Documentation: Update TASK-0174 spec with secret deletion feature for super admin
v2.99.1 - 2025-12-03
Major architecture improvement: Split the monolithic Prisma schema (1776 lines) into 9 domain-specific files for better maintainability and developer experience.
- Prisma Schema Reorganization: Split single
schema.prisma into domain-specific files:
auth.prisma - Authentication models (User, Session, Account, Verification)
user.prisma - User extensions (UserProfile, UserSettings)
profiles.prisma - Talent, Brand, and Agency profiles
business.prisma - Orders, packages, payouts, campaigns, jobs
engagement.prisma - Reviews, favourites, notifications
messaging.prisma - Conversations and messages
organizations.prisma - Multi-tenant organization support
enums.prisma - All shared enumerations
schema.prisma - Datasource and generator configuration
- Dev Plan Override: Added utility for local subscription testing
- Checkout Flow: Updated to handle free tier brands correctly
- User Menu: Fixed subscription display logic in navigation components
v2.99.0 - 2025-12-03
File attachments for messages! Brands and talents can now share images, videos, and PDFs directly in conversations with drag-and-drop support.
- Message attachments: Add drag-and-drop file uploader for conversations supporting images, videos, and PDFs
- Attachment components: New ImageAttachment, VideoAttachment, and PdfAttachment display components with proper previews
- Upload infrastructure: UploadThing router endpoint for secure message attachment handling
- Database schema: MessageAttachment model for tracking uploaded files with conversation associations
v2.98.0 - 2025-12-03
- Messages: Add search loading indicator to ConversationList - users now see a sticky "Searching..." banner with spinner while search results are being fetched, with previous results remaining visible during the search (keepPreviousData)
v2.97.0 - 2025-12-03
Full-text search now available for conversations - search by message content, talent name, brand name, or collaboration name with PostgreSQL-powered instant results.
- Message search: Add full-text search for conversations using PostgreSQL GIN index on message content
- Search scope: Search matches across message content, talent names, brand names/companies, and collaboration booking names
- Debounced search: Client-side search input debounced at 300ms for optimal UX
- Cache-aware search: Updated React Query hooks to properly handle search-variant cache keys
- Enable
fullTextSearchPostgres preview feature in Prisma client
- Refactor conversation hooks to use partial query key matching for cache operations
- Add admin page header component for consistent admin UI
v2.96.1 - 2025-12-03
Bug fix and code quality improvements - migrated messages URL state to nuqs for better conversation routing and fixed null-safety issues.
- Add optional chaining for
recommendedMissing.length to prevent null reference errors
- Migrate Messages page URL state from useState/useSearchParams to nuqs useQueryStates for cleaner conversation routing
- Sync conversation ID, scope, and filter parameters directly to URL
- Update support email configuration to paul@idol.ph
- Fix flaky test timeout in edge-cases.test.tsx (5s → 10s)
v2.96.0 - 2025-12-03
Introduces an intelligent talent ranking system that scores profiles based on ratings, job completion, engagement, and follower metrics, with a new profile boost to help fresh talent gain visibility.
- Talent ranking algorithm: New composite scoring system (0-100) weighing average rating, jobs completed, profile views + likes, reviews, and followers
- Creator vs non-creator weighting: Creators get follower impact (15%), non-creators redistribute that weight to ratings and jobs
- New profile boost: Fresh profiles receive up to +20 points that decay linearly over 14 days
- Cron recalculation: Automated 6-hourly batch job recalculates all approved talent rankings
- Search sorting: Talent search now supports sorting by ranking score
- Added ranking score documentation in
docs/talent/ranking-algorithm.md
- Strict gitignore rule for
.env files
v2.95.0 - 2025-12-02
Improved admin user insights table with better responsive design and a new compact time utility for space-constrained UIs.
- Admin user insights table responsiveness - Refactored table headers with fixed column widths and compact labels for better mobile and tablet viewing
- Compact time utility - Added
getTimeAgoCompact() function that returns abbreviated relative times (e.g., "2h", "5d", "3mo") ideal for tables
- Updated e2e test fixture documentation to reflect actual test images (400x400px and 800x800px)
v2.94.0 - 2025-12-02
Adds profile view analytics, admin unapprove workflow, and automated job application confirmation emails for better talent-brand communication.
- Profile view tracking - Records talent profile views with 30-minute deduplication for logged-in users, self-view filtering, and anonymous view support
- Unapprove talent action - Admins can now revert approved profiles back to UNDER_REVIEW status directly from the profile review panel
- Job application confirmation emails - Talents receive email confirmations when applying to jobs, including brand name, job title, and pitch excerpt
- User insights profile linking - Added username links in admin user insights table for quick profile access
- Account deletion feedback emails - Scheduled feedback email 2 hours after account deletion to gather exit feedback
- Message stats accuracy - Fixed admin message stats to source data from MessageDeliveryLog instead of ScheduledMessage for accurate delivery metrics
- Updated test fixtures with proper image files
- Added PostHog server-side analytics documentation
v2.93.0 - 2025-12-02
Introduces a centralized metadata system for consistent SEO across all pages, plus admin gallery tracking to show unread media counts.
- Centralized SEO metadata system - New
lib/metadata.ts with createMetadata(), createDynamicMetadata(), and createProtectedPageMetadata() helpers for standardized page metadata across the platform
- Admin gallery tracking - Added
lastViewedGalleryAt timestamp to track when admins last viewed the gallery, enabling unread media indicators
- New
markGalleryAsViewed action - Server action to update admin gallery view timestamps
- Updated 25+ pages to use the new centralized metadata helpers
- Added layouts for admin automated-messages, brand onboarding, search campaigns, and search talent profile sections
v2.92.0 - 2025-12-02
Added upgrade plan call-to-action when brands hit their invite limit, improving the user experience and conversion path for plan upgrades.
- Invite Limits UX Improvement: Show "Upgrade Plan" button when
INVITE_LIMIT_REACHED error occurs in the talent invite modal
- Reorganized dialog footer with proper flex layout for better button arrangement
- Hide "Try Again" button for limit errors (not recoverable by retry)
v2.91.0 - 2025-12-02
- Application messaging: Add conversation system for brands and talents to communicate through job applications
- Pricing components consolidation: Move pricing components to shared
components/pricing/ directory for better reusability
- Admin insights precompute: Add cron endpoint to precompute user insights metrics
- Auth modal: New
AuthModal component for unified authentication flows
- Invite talents improvements: Enhanced
InviteTalentsModal with better UX and functionality
- Application email: New email template for job application notifications
- Database migration for application messaging system
- Add
prettier-plugin-tailwindcss dependency
- New
pricingStore for state management
v2.90.0 - 2025-12-02
GCash payment support via Xendit, enabling Filipino customers to pay directly with their e-wallet.
- GCash checkout integration: Added new payment method using Xendit Payment Request API
- New checkout route at
/api/cart/checkout/gcash
- Payment method selection UI in checkout (Credit Card or GCash)
- Full webhook handling for
payment.succeeded and payment.failed events
- New database fields:
Order.xenditPaymentRequestId and Order.paymentProvider
- Simplified Prisma pool configuration (hardcoded optimal settings for Neon serverless)
- Improved
executeWithRetry error handling for Neon connection drops
- Extended exponential backoff delays for Neon cold starts (500ms base vs 100ms)
v2.89.2 - 2025-12-02
Enhanced admin insights reliability with database connection resilience and improved error handling for Philippines-based users.
- Admin Insights Resilience: Added page-level error boundary (
error.tsx) to gracefully handle database connection failures and timeouts with retry capability
- Database Connection Retry: Wrapped
getUserInsights action with executeWithRetry for automatic connection recovery
- Timezone Formatting: Updated date formatting to use
Asia/Manila timezone throughout admin insights for Philippines users
- Hydration Fix: Resolved UserAvatar hydration mismatch by initializing state consistently between server and client
- Re-enabled
SupportMessageLauncher component in talent and brand dashboard layouts
- Disabled Sentry
feedbackIntegration in favor of custom support widget for better UX consistency
v2.89.1 - 2025-12-02
- Profile URLs: Corrected talent profile links to use
/profile/{username} path instead of deprecated /{username} format across applicant views
- Profile Image Field: Updated brandJobs action to use
profileImage field instead of legacy image field for consistent avatar display
- Null Safety: Added defensive null checks for optional arrays (
talentTypes, socialAccounts, otherInclusions) to prevent runtime errors
- Applicant Tabs: Optimized ApplicantListPanel to fetch all applicants once and filter client-side, enabling instant tab switching without additional API calls
- Hydration Warning: Fixed sidebar skeleton hydration mismatch with
suppressHydrationWarning
- Dependencies: Updated @vercel/analytics, framer-motion, nuqs, posthog-js, knip, pino-pretty to latest versions
v2.89.0 - 2025-12-01
Improved talent invitation workflow by automatically creating JobApplication records with INVITED status, allowing talents to seamlessly complete their applications after receiving invitations.
- Invitation System Enhancement: When brands invite talents to jobs, the system now creates both a
JobInvite record and a JobApplication record with INVITED status in a single transaction
- Application Completion Flow: Invited talents can now complete their applications by updating the existing
INVITED application record rather than creating a duplicate
- Status Endpoint Update: The campaign application status endpoint correctly treats
INVITED applications as not-yet-applied, allowing the "Apply" button to remain visible
- Messages Components: Added defensive checks for empty message arrays and
suppressHydrationWarning attributes to prevent hydration mismatches on time-sensitive displays
- Cloudflare Images: Image deletion now gracefully handles 404 and "not found" errors, treating already-deleted images as successful deletions instead of errors
v2.88.0 - 2025-12-01
Real-time message polling now fetches actual data from the database, and admins can update profile photos for other users.
- Message polling API: Endpoint now queries real messages and notifications from database instead of returning empty stubs
- Admin profile management: Admins can now update profile images for other users
- Brand avatar auto-save: Brand profile photos are saved immediately on upload instead of requiring a separate save action
- Agency signup: Added agency signup link to footer navigation
- Login error logging: Improved error classification - invalid credentials logged as info (expected behavior), rate limits as warnings, only unexpected errors logged at error level
- Temporarily disabled SupportMessageLauncher component
- UI refinement: Use H4 instead of H2 for account section headings
- Updated dependencies:
next 16.0.5 → 16.0.6
@next/bundle-analyzer 16.0.5 → 16.0.6
@next/third-parties 16.0.5 → 16.0.6
react-day-picker 9.11.2 → 9.11.3
zustand 5.0.8 → 5.0.9
- Various dev dependencies updated
v2.87.1 - 2025-11-29
Filter hydration errors from in-app browsers (Facebook, Instagram, TikTok) in Sentry to reduce noise and improve actionable error visibility.
- Sentry: Filter out hydration errors from in-app browsers (Facebook, Instagram, TikTok, LINE, etc.) that inject DOM elements before React hydrates - these errors are unactionable and caused ~59% of hydration error noise
- Added debug session analysis documenting root cause and fix for JAVASCRIPT-NEXTJS-34 hydration errors
v2.87.0 - 2025-11-29
Added safety net for talent profiles stuck in DRAFT status with 100% completion, plus resync button for admin approvals queue. Also includes hydration and Sentry error filtering improvements.
- Admin approvals safety net - Auto-promote complete profiles stuck in DRAFT status to READY_FOR_REVIEW; include them in admin approvals queue filter; add manual resync button for queue refresh
- UI consistency - Standardize H1 font sizes to
text-lg across admin pages
- Hydration warnings - Suppress body hydration warnings caused by in-app browsers (Instagram, TikTok, Facebook, etc.)
- Sentry filtering - Filter out Vercel
_next-live toolbar errors from error tracking
v2.86.0 - 2025-11-29
Enhanced observability and debugging capabilities with PostHog configuration validation and hydration mismatch detection tools.
- PostHog Runtime Validation: Added configuration guardrails in
instrumentation-client.ts that warn in production for missing/invalid host/key and catch initialization errors before they cause silent failures
- Hydration Debug Logger: Created
HydrationMismatchLogger component to capture and log React error #418 with HTML snapshots for faster debugging
- Session Hydration Fix: Improved
useAppSession hook using useSyncExternalStore to prevent hydration mismatches from Better Auth's session handling
- MessengerOptInCard: Added 3-second fallback timeout when Facebook SDK checkbox fails to render
- DashboardCards: Corrected typography hierarchy by switching from H2 to H4 for card titles
- AlertStack: Removed redundant "Additional alerts are queued" message
- Added PostHog configuration checklist documentation (
docs/analytics/posthog-config.md) with curl-based endpoint validation and allowed-domain guidance
v2.85.0 - 2025-11-29
Server action login with enhanced error handling and streamlined onboarding flow. This release introduces a new login action with proper error mapping, simplifies the onboarding wizard by removing unused steps, and adds a custom ESLint rule to prevent hook-order issues.
- Server action login: Add
loginWithEmail server action with proper Better Auth error mapping and role-based redirects
- Custom ESLint rule: Add
no-early-return-before-hooks rule to prevent hydration issues from conditional returns before hooks
- Signup flow: Enhance
submitCombinedSignup with redirect support and proper role typing
- Auth forms: Simplify LoginForm and CombinedSignupForm with consistent hook-order patterns
- Session hook: Fix hydration stability in
useAppSession with stable state initialization
- Error boundary: Update global error component with improved loading states
- Onboarding steps: Remove unused AchievementsStep, PaymentStep, and VideoAudioStep components
- Dead code: Clean up 700+ lines of unused onboarding wizard code
- Add
useTalentProfileData hook for profile data fetching
- Add ClientLayout test coverage
- Update validation schemas and messages for auth forms
v2.84.3 - 2025-11-29
This patch release focuses on authentication stability, fixing hook-order crashes and hydration mismatches that could cause the login page to fail under certain conditions.
- fix(auth): improve error handling and resolve hook-order stability - LoginForm now uses inline transitions to avoid hook mismatch crashes, CartDrawer properly mounts all hooks before conditional returns, and SentryUserIdentifier is now correctly placed in ClientLayout with auth route exclusion
- fix(auth): resolve hydration mismatch in social login - Fixed hydration issues in social authentication flow
v2.84.2 - 2025-11-29
Comprehensive build and deployment fixes for Prisma migrations, plus client-side hydration and null-safety improvements.
- Build/Prisma: Resolved Prisma migration deployment timing during Vercel builds
- Moved
prisma migrate deploy from postinstall to build phase
- Added support for pooler URL with
DIRECT_URL for migrations
- Fixed migration skip behavior during Vercel builds
- Restored
prisma migrate deploy in postinstall after environment fixes
- Hydration: Fixed hydration mismatch by using only public env vars in
shouldHideSocialLogin()
- Hooks: Moved hooks before early return in
SocialProviderLink component
- Null Safety: Added
.length access null-safety checks throughout codebase
- Triggered rebuilds to apply environment variable fixes (
DIRECT_URL, DATABASE_URL)
v2.84.1 - 2025-11-29
Improves support system resilience by gracefully handling missing support admin configuration.
- Support messaging: Return friendly error when support admin is not configured instead of throwing uncaught exception
- Support profiles: Check support availability before attempting to resolve user participant profiles
v2.84.0 - 2025-11-29
Fixed React 19 hydration errors that prevented users from logging in on production. Removed redundant email verification banner in favor of server-side notification handling.
- fix(hydration): Resolve React hydration bug causing login failures
- Removed
useSearchParams() from ClientLayout that was suspending during hydration
- Deleted redundant
EmailVerificationBanner component (PersonalInfoPage already shows notification server-side)
- Fixes React Error #418 (hydration mismatch) and #300 (fewer hooks than expected)
v2.83.3 - 2025-11-29
Fixes React 19 hydration issues caused by useSession() suspending during hydration with error boundaries.
- Hydration: Add Suspense boundaries around
CartDrawer and SentryUserIdentifier to prevent React 19 hydration failures (facebook/react#33580)
- Add
coverage/ directory to ESLint ignore patterns
- Update recharts dependency to v3.5.1
v2.83.2 - 2025-11-28
Performance optimization for featured talents with cross-request caching and admin error handling improvements.
- Resolved admin panel error handling edge case
- Featured talents caching: Extracted query logic to dedicated
lib/queries/featured-talents.ts module with Next.js 16 'use cache' directive for 4-hour cross-request caching
- Cache invalidation: Added
revalidateTag calls when featuring/unfeaturing talents to ensure cache consistency
- Cache profile: Added
featured-content cache life profile to next.config.ts (4h stale, 1h revalidate, 24h expire)
v2.83.1 - 2025-11-28
Major codebase cleanup removing dead code and improving admin UX with loading states.
- Dead Code Removal: Delete unused Zustand stores (analytics, notification, preferences, search, talent)
- Admin Example Cleanup: Remove example admin pages and unused profile components
- Email Templates: Delete unused react-email starter templates (notion, plaid, stripe, vercel)
- Loading States: Add loading.tsx files for admin pages (brands, dashboard, gallery, jobs, orders, reviews, talent)
- Brand Dashboard: Add brand dashboard loading state
- Database: Add migration for optimized search indexes
- Import Cleanup: Clean up unused imports across 200+ files
v2.83.0 - 2025-11-28
Comprehensive Sentry error tracking integration across the application, enabling better visibility into production errors and user context.
- Sentry error boundaries - Added
Sentry.captureException to all error boundaries (app, brand, talent) with category tagging and digest tracking
- Stripe webhook monitoring - Integrated Sentry error capture for signature verification failures, handler errors, and notification failures
- Error utilities library - Created
lib/sentry-utils.ts with breadcrumb tracking, trackAction, captureBackgroundError, and fireAndForget helpers
- User identification - Added
SentryUserIdentifier component to providers for associating errors with logged-in users
- Query batching - Refactored admin insights queries into 3 batches of 3 to prevent connection pool exhaustion on low-limit databases
v2.82.0 - 2025-11-28
Introduces automated inactive profile management - profiles without photos are now soft-deleted after 28 days with warning emails at Day 21 and Day 27, improving platform quality while giving users ample opportunity to complete their profiles.
- Profile Deletion System: Add cron job for soft-deleting inactive profiles without profile photos after 28 days
- Deletion Warning Email: New email template sent 24 hours before profile deletion with urgent call-to-action
- Day 21 Warning Tracking: Database field to track when deletion warning reminders are sent
- Escalation Logic: Enhanced profile reminder service with progressive warning escalation
- Sentry Observability: Improved error tracking across 40+ server actions
- Job Invite Migration: Database migration for job invite table structure
- Deletion Warning Migration: Database migration for tracking deletion warning timestamps
v2.81.0 - 2025-11-28
Major feature release adding comprehensive admin order management, job booking payment integration with Stripe, and an automated educational email system for user engagement.
- Admin Orders Dashboard: Complete order management system with statistics overview, searchable/filterable table, individual order pages, status management, bulk operations, and CSV export functionality
- Job Booking Payment Flow: Enhanced job booking API with Stripe payment integration, secure webhook handling for payment confirmations, and automatic order creation
- Educational Email System: New automated email service with cron-scheduled delivery, configurable email templates, and educational content sections for user onboarding
- Booking Confirmation Emails: New email templates for both brands and talents upon successful job booking
- Enhanced brand job applicant management with improved actions and list panel
- Added admin message stats API endpoint
- Updated admin sidebar with orders navigation
- Added pending counts for admin dashboard indicators
v2.80.0 - 2025-11-28
Major brand experience update introducing a comprehensive job applicant management system with talent matching UI, enabling brands to efficiently review and manage applicants for their job postings.
- Job applicant management system: New UI components for managing job applicants including
ApplicantCard, ApplicantActions, and ApplicantListPanel for streamlined applicant review
- Job success page: Post-job-creation success flow with matching talents carousel showcasing relevant talent matches
- Enhanced brand dashboard: Improved job management interface with better organization and user experience
- Sentry integration: Updated Sentry and Pino logging integration for better error tracking and observability
- Navigation improvements: Fixed navigation and breadcrumb handling across brand routes
- Security updates: Updated security-related packages
- Applicant status utilities: Added centralized applicant status management (
lib/applicant-status.ts)
- Pricing constants: Centralized pricing configuration (
lib/constants/pricing.ts)
- Analytics improvements: Enhanced Meta CAPI integration
v2.79.2 - 2025-11-28
Fix PostHog session replay capture by following official Next.js 15.3+ initialization pattern.
- Analytics: Move PostHog initialization to
instrumentation-client.ts per official docs, enabling reliable session replay capture in production
v2.79.1 - 2025-11-28
Performance optimization for admin talent table - menu interactions now respond 5-7x faster.
- admin: Optimize TalentActionsMenu INP from 1000-1500ms to under 200ms
- Add
useMemo for platform eligibility calculation
- Wrap component with
React.memo() to prevent cascade re-renders
- Conditionally render dialogs only when open
- Convert fire-and-forget async handlers to React Query mutation
v2.79.0 - 2025-11-27
Major jobs feature enhancement with talent booking and invitation system for the brand marketplace.
- Talent Booking System: Brands can now book applicants directly from job applications with subscription-based limits (Core: 1 per job, Plus: unlimited)
- Invite Talents Modal: New bulk invitation interface from talent search results, allowing brands to invite multiple talents to apply for jobs
- Subscription Utilities: New centralized subscription management library for tier-based feature gating
- Upgrade Page Enhancement: Improved pricing cards and feature comparison for subscription plans
- Navigation Menu Restructure: Enhanced mobile and desktop navigation menus with improved UX
- Sentry Observability: Added metrics helpers and browser profiling for better error tracking
- Added JobInvite model to Prisma schema for tracking brand-to-talent invitations
- Extended brandJobs actions with comprehensive job management capabilities
- Created booking API route (
/api/jobs/[id]/book) for job-talent associations
v2.78.0 - 2025-11-27
Adds comprehensive observability metrics infrastructure with typed Sentry helpers and automatic Prisma query tracking for performance monitoring.
- Observability Metrics Helper: New typed metrics library (
lib/observability/metrics.ts) providing counters, distributions, and gauges for Sentry
- Prisma Query Tracking: Automatic query duration metrics integrated into Prisma client for database performance visibility
- API Metrics Enhancement: Enhanced API metrics with Sentry distribution tracking
- Sentry Test Endpoint: New
/api/sentry-test endpoint for log verification
- Comprehensive Sentry documentation (
docs/observability/sentry.md) covering configuration, sampling rates, noise filtering, and custom metrics usage
v2.77.1 - 2025-11-27
Enhanced Sentry error monitoring with browser profiling, offline support, and improved noise filtering for cleaner error reports.
- Sentry browser profiling: Added JS Self-Profiling API integration with
Document-Policy: js-profiling headers for production performance insights
- Offline error transport: Configured
makeBrowserOfflineTransport to queue errors when users lose connection
- Network detail capture: Session replays now include request/response details for idol.ph domains
- Noise filtering: Added
ignoreErrors and denyUrls to filter browser extensions, ad blockers, and common third-party script errors
- Distributed tracing: Added
Sentry.getTraceData() to generateMetadata() for frontend-backend trace correlation
- Stripe checkout instrumentation: Wrapped checkout flow with Sentry spans for performance monitoring
- Cache invalidation: Added
updateTag() calls to review mutations for proper cache busting
- Extracted review queries to
lib/reviews/queries.ts for better code organization
- Removed Sentry example/test pages after integration verification complete
v2.77.0 - 2025-11-27
Introduces comprehensive error monitoring with Sentry integration for real-time error tracking, performance monitoring, and issue resolution.
- Sentry Integration: Add @sentry/nextjs SDK v10.27.0 with full server, client, and edge runtime support
- Configure server-side error tracking with
sentry.server.config.ts
- Set up client-side monitoring with
instrumentation-client.ts
- Add edge runtime support via
sentry.edge.config.ts
- Include global error boundary with Sentry reporting
- Add example API route and page for testing Sentry integration
- Configure Next.js config with Sentry webpack plugin for source map uploads
v2.76.3 - 2025-11-27
- refactor(cache): simplify caching by removing Redis layer for mutable data
- Remove Redis caching for user profiles and talent profiles (mutable data should not be cached cross-request)
- Use request-scoped caching only (
cachedInRequest) for profile fetches
- Add global state pattern for featured section cache to persist across build workers
- Skip auto-seeding in production builds to avoid slow multi-query operations
- Simplify session cache to use direct session retrieval
- Update organizations cache to use in-memory singleton pattern
- Clean up unused imports and dead code (
seedInitialFeaturedTalents)
v2.76.1 - 2025-11-27
Improved role switching UX by optimizing the order of operations for smoother navigation transitions.
- Optimize role switch order for smoother UX - moved session refresh after navigation and removed redundant router.refresh calls for cleaner role switching flow
v2.76.0 - 2025-11-27
Improved role switching experience with automatic navigation to role-specific dashboards and visual role icons in menus.
- Role switching navigation: Users are now redirected to their role-specific dashboard when switching between roles (Talent, Brand, Admin)
- Role icons in menus: Added visual role icons to both desktop dropdown and mobile user menus for better role identification
- Homepage talent cap increase: Increased talent display capacity from 50 to 100
- Social icons enhancement: Enlarged social media icons in hero banner for better visibility
v2.75.1 - 2025-11-27
Performance optimization release that eliminates duplicate database queries in parallel React Server Components through request-scoped caching and server-side navigation data context.
- Request-scoped caching: Prevent duplicate Prisma queries when multiple RSC components request the same data in parallel
- Server-side nav data context: Pre-fetch navigation data in layouts to avoid redundant queries in child components
- Optimized unread-counts API: Reduce database load for real-time notification counts
- Fix Next.js 16 prerender issue: Add
connection() call on homepage to resolve Prisma instrumentation timing conflict
- Clean up old backup files, migration documentation, and archive files
- Add new task tracking files for ongoing development work
v2.75.0 - 2025-11-26
Renamed "Collab Hub" to "Bookings" throughout the platform and added public job listings with talent application flow.
- Public Job Applications: Talents can now view job details and submit applications from public job pages
- Bookings System: Renamed collaboration system to "bookings" for clearer terminology
- File Validation Utilities: Added comprehensive file validation for uploads
- Session Caching: Enhanced session caching with request-scoped strategy
- Talent Cache Invalidation: Cache now properly clears when username changes, fixing stale profile data
- Lookup Caching: Added 10-minute caching to
getTalentById and getTalentByUsername to reduce database load
- Messaging API: Fixed cache header consistency in polling and SSE routes
- Removed deprecated job edit components and pages (consolidated in bookings flow)
- Improved GalleryUpload error handling
v2.74.1 - 2025-11-26
Improves reliability of follower sync by adding platform-specific timeouts for Apify scrapers.
- follower-sync: Add platform-specific Apify timeouts to handle different scraper performance characteristics
- Instagram: 30s (fast scraper)
- TikTok: 60s (clockworks scraper is slower)
- YouTube: 30s (fallback)
- deploy: Fix Vercel deployment errors
v2.74.0 - 2025-11-26
Updated follower sync service with new Apify actors for more reliable Instagram and TikTok follower count retrieval.
- Follower Sync: Switch to
instagram-followers-count-scraper and clockworks/tiktok-profile-scraper Apify actors for improved reliability
- Follower Sync: Update payload builders and response parsers to match new actor API formats
- Slack: Fix channel format for
ADMIN_MESSAGE_REPLY event (changed from #user-messages to userMessages)
- Add Apify API token configuration to
.env.example
- Add debug script for checking social media account status
v2.73.0 - 2025-11-26
Complete the unified job model migration by removing all Campaign-related Prisma models and consolidating the platform around the Job model. This is a major architectural simplification that reduces code complexity and aligns the data model with business terminology.
- Complete unified job model migration - Remove Campaign, CampaignApplication, and CampaignBrand Prisma models, migrating all functionality to Job-based equivalents
- Admin jobs management - Add full CRUD operations for jobs in admin panel with stats, filters, and bulk actions
- Follower sync service - Automated service to sync social media follower counts for talent profiles
- Monthly engagement notifications - New notification service for monthly engagement summaries
- Enhanced admin charts - Add brand registration and visitor tracking charts to admin dashboard
- Job-based notification system - Update notification workflows to use job-based terminology and actions
- Rename
campaign-flow to job-flow with updated components
- Migrate all campaign-related actions to job-based equivalents
- Remove deprecated
campaign-visibility and unifiedJob lib modules
- Update platform eligibility service for job model
- Clean up unused campaign hooks and types
v2.72.0 - 2025-11-26
Enhanced admin dashboard with improved talent tracking capabilities, adding signups visualization alongside approvals, and introduced a unified job model foundation for future campaign integration.
- Unified Job Model Phase 1: Introduced unified job model with campaign migration support, laying groundwork for streamlined job and campaign management (37f967c7)
- Enhanced Admin Talent Chart: Added signups tracking alongside approvals with time range selector (7d, 30d, 90d), clickable legend for toggling series visibility, and parallel data fetching for improved performance (441d56af)
v2.71.0 - 2025-11-25
Introduces a unified talent jobs feed that seamlessly integrates job discovery alongside campaign opportunities, giving talent a single view of all available work.
- Unified Talent Jobs Feed: Add
getTalentJobsForFeed server action for open job discovery
- Talent Jobs Page: New
/talent/jobs page with campaign listing integration for browsing job opportunities
- Enhanced Campaign Brand Hook: Refactored
useCampaignBrand.ts to support jobs alongside campaigns in the unified feed
- Updated 65 files with consistent naming conventions and UI improvements across admin, brand, and talent portals
- Improved email templates for campaign match and profile reminder notifications
- Enhanced navigation and notification dropdown components
v2.70.0 - 2025-11-25
Enhanced brand business details form with improved location selection using cascading province-city dropdowns, website/social media field, and refined phone input component.
- business-details: Add website/social media field to brand profile for better brand discoverability
- business-details: Replace manual region/city text inputs with cascading province → city dropdowns using LocationCombobox for provinces with search and Select for cities filtered by selected province
- business-details: Replace inline phone input with dedicated PHPhoneInput component for consistent formatting
- ui: Fix LocationCombobox trigger height to h-11 for form field consistency
- loading: Update business details loading skeleton to match new PageLayout variant='narrow' structure
v2.69.0 - 2025-11-25
New reusable image upload components with built-in cropping support streamline the campaign creation workflow and enable consistent image handling across the platform.
- upload: Add
CoverImageUpload component for 16:9 aspect ratio campaign cover images with pan/zoom cropping
- upload: Add
LogoUpload component for 1:1 circular brand logos with cropping support
- upload: Add
ImageCropDialog component using react-easy-crop for intuitive pan/zoom image cropping
- campaigns: Refactor CampaignStep form to use new upload components, improving UX with inline cropping
- campaigns: Update public campaign detail page cover image to use responsive aspect-video ratio
v2.68.0 - 2025-11-25
Enhanced campaign visibility controls allow brand owners to preview their campaigns at any status while keeping strict public access rules for non-owners.
- campaigns: Enhance owner visibility and add isActive field - Brand owners can now view their campaigns regardless of status or active state via the public campaign page. The
isActive field is now exposed in the public campaign response for better visibility control. Server-side logging added for debugging public access denials.
- campaigns: Extract
PUBLIC_CAMPAIGN_STATUSES to shared module (lib/campaign-visibility.ts) for consistent reuse across the codebase.
- auth: Improve owner detection by preferring session
brandId over Prisma lookup for faster page loads.
v2.67.0 - 2025-11-25
- campaigns: Add role-based visibility for public campaign detail page - Campaign owners can now view their campaigns regardless of status, while non-owners only see campaigns with ACTIVE or APPROVED status. This provides a better preview experience for brand managers while maintaining public visibility rules.
v2.66.0 - 2025-11-25
New public campaign detail page enables talents and guests to view full campaign information with role-appropriate actions - owners can edit, talents can apply, and guests are prompted to sign up.
- Public campaign detail page: Add comprehensive
/campaigns/[id] route displaying all campaign requirements, ideal creator criteria, content needs, budget & usage terms, and timeline information
- Role-based CTAs: Display contextual actions based on user role - campaign owners see edit button, talents see apply button, brands see view-only mode, and guests are prompted to sign up
- Server action for public access: Create
getPublicCampaignById action that safely exposes only active campaigns without requiring authentication
- Rich requirements display: Extract and display structured data from campaign requirements JSON including deliverables, content promotion settings, boosting options, exclusivity terms, and talent criteria
v2.65.0 - 2025-11-25
Enhanced campaign detail page to display comprehensive data from the campaign flow form, giving brands a complete view of their campaign requirements.
- Campaign detail page overhaul: Display full requirements data from campaign flow form including:
- Campaign objective, non-negotiables, and brand information
- Content deliverables with platform-specific details and descriptions
- Talent requirements (audience size, engagement preferences, visit location/time)
- Offer details (product description, delivery method, pickup address)
- Usage rights, boosting settings, and exclusivity terms
- Additional timeline fields (content delivery schedule)
- Brand reference links and industry information
v2.64.0 - 2025-11-25
New searchable location combobox component with comprehensive Philippines provinces and cities data, plus pickup location functionality in campaign flow.
- Location Combobox Component: Add reusable
LocationCombobox with search, keyboard navigation, and accessibility support
- Philippines Location Data: Expand
location-data.ts with all 17 regions and their cities/municipalities
- Campaign Pickup Locations: Add province, city, and street address fields for product pickup option in offer step
- Searchable Province Selection: Replace static dropdowns with searchable combobox across campaign flow, cast talent, and search sidebar
- Add null-safety guards for
referenceLinks, referenceMedia, deliverables arrays in campaign flow
- Add null coalescing for optional text fields (
description, additionalPromotion, productDescription)
- Improve radio card visual feedback with
selected prop styling
v2.63.4 - 2025-11-24
Improved null-safety in the campaign flow to prevent potential undefined access errors when toggling content usage locations.
- Campaign Flow (ContentStep): Added defensive null-safety for
usageLocations object to prevent undefined access errors when toggling social, online, and offline usage options
v2.63.3 - 2025-11-24
This patch release improves runtime stability in the campaign flow by adding defensive null-safety checks for the deliverables array, preventing potential crashes when data is unexpectedly undefined.
- Campaign Flow Stability: Added defensive null-safety checks for deliverables array in ContentStep component to prevent runtime errors when deliverables data is undefined or null (#c29de44)
- Ensures consistent array handling throughout the component
- Prevents potential crashes during campaign creation workflow
v2.63.2 - 2025-11-24
Enhanced form layouts and improved null-safety across brand workflows, focusing on post-job and campaign flow components with better spacing, visual hierarchy, and defensive programming.
- refactor(post-job): Improve form layout, spacing, and null-safety
- Added nullish coalescing guards to CampaignForm and ContentStep components to prevent runtime errors
- Redesigned TalentSelectionForm card layout with improved visual hierarchy (icon in rounded container, better spacing and typography)
- Added
md:max-h-[900px] constraint to image collage and vertical centering improvements
- Enhanced defensive programming across form components for better robustness
v2.63.1 - 2025-11-24
Minor UI refinements to the talent selection flow, improving visual layout and reducing interface clutter for a more streamlined job posting experience.
- refactor(post-job): improve layout spacing and visual hierarchy
- Remove redundant descriptive text for cleaner interface
- Add height constraint to image collage for better proportions
- Reduce padding and gaps throughout form for more compact layout
- Align heading vertically at top instead of center
- Streamline talent selection card spacing
v2.63.0 - 2025-11-24
Enhanced talent booking experience with visual role selection cards and expanded talent categories including dancers, singers, and hosts.
- Talent Role Expansion: Added three new talent categories (dancer, singer, host) to the casting flow, expanding booking options for brands
- Visual Selection Cards: Upgraded from simple radio buttons to rich, visual selection cards with role-specific icons (Camera, Clapperboard, Brush, Music2, Mic2, Sparkles, Shirt) and descriptions for better UX
- Responsive Grid Layout: Implemented 2-column card grid that adapts to mobile and desktop viewports, improving visual hierarchy and discoverability
- Test Suite Improvements: Increased test timeouts to 10 seconds for async rendering operations, reducing flakiness in CI/CD pipeline
- Layout Fixes: Changed fixed height (
h-[calc(100vh-64px)]) to min-height for proper scrolling on smaller screens
- Type System Updates: Extended
CastRoleType union across store and form components to maintain type safety with new role options
v2.62.0 - 2025-11-24
This release introduces significant improvements to the campaign creation workflow, enabling brands to build detailed content deliverables, schedule content with CloudFlare uploads, and receive instant notifications when campaigns match with talent.
- Deliverable Builder: Brands can now define multiple content deliverables per campaign with custom specifications including content type, quantity, duration, dimensions, and detailed descriptions
- CloudFlare Upload Integration: Seamless file upload capabilities integrated directly into campaign creation flow for reference materials and content scheduling
- Campaign Match Notifications: Automated notification system queues and sends instant alerts when campaigns transition to ACTIVE status and match with interested talent
- Campaign Requirements Enhancement: Added comprehensive requirements field allowing brands to specify campaign objectives, deliverable specifications, and non-negotiables
- Talent Job Details View: New dedicated page for talent to view detailed job information including deliverables, requirements, and campaign specifications
- Campaign API Endpoints: New RESTful API routes for retrieving and managing individual campaign details
- Country Data Library: Added comprehensive country constants for improved internationalization support
- Enhanced Campaign Forms: Improved UX across all campaign creation steps (OfferStep, ContentStep, TermsStep) with better validation and user guidance
- Email Infrastructure: New campaign match notification email template with React Email for consistent branded communications
- Message Delivery Tracking: Enhanced admin dashboard with delivery logs, charts, and comprehensive message catalog
- Type Safety: Strengthened TypeScript types across campaign flow components and API routes
- Database Schema: Added deliverable tracking and campaign requirements fields to support new features
- Test Coverage: Added comprehensive tests for new campaign notification workflows
Migration Notes:
- Campaigns created before this version will have empty deliverables array - can be populated via edit flow
- New
requirements field on campaigns table supports structured campaign objectives
v2.61.0 - 2025-11-20
Enhanced campaign creation workflow with a sophisticated deliverable builder, direct Cloudflare image uploads, and comprehensive content scheduling capabilities for brands to manage influencer collaborations more effectively.
- Campaign Flow Enhancements: Introduced advanced deliverable builder in ContentStep, enabling brands to specify detailed content requirements across multiple platforms (TikTok, Instagram, YouTube, Facebook) with custom inputs for captions, hashtags, and tags
- Cloudflare Integration: Replaced legacy file uploads with direct Cloudflare image management, including reference link tracking for campaign creative assets
- Content Scheduling: Added ContentUsageSection component with timeline visualization and usage tracking for deliverable management
- Enhanced Campaign Types: Expanded campaign creation with improved form validation schemas and type definitions for better content delivery specifications
- Documentation: Added comprehensive implementation plan for AI chat feature (TASK-0151, TASK-0152)
- Configuration: Updated .env.example with clearer documentation for cron job authentication
- Code Quality: Fixed payout filter values and improved component organization across admin and brand dashboards
v2.60.1 - 2025-11-20
Fixed authentication issues with Vercel Cron scheduled message processing by implementing case-insensitive header validation and Bearer token fallback.
- fix(cron): Enhanced Vercel Cron authentication for scheduled messages endpoint
- Added case-insensitive header check (supports both
x-vercel-cron and X-Vercel-Cron)
- Implemented Bearer token fallback for manual testing and debugging
- Added
CRON_SECRET validation to prevent configuration errors
- Aligned authentication pattern with other working cron endpoints
- Resolves 401 Unauthorized errors in Vercel Cron logs
v2.60.0 - 2025-11-20
Introduces intelligent polling mode for real-time messaging with automatic SSE fallback, resolving Vercel Hobby plan timeout limitations. Enables adaptive polling intervals based on tab visibility and adds comprehensive deployment documentation.
- Polling mode with SSE fallback: Add short-polling endpoint (
/api/messages/poll) for real-time updates, enabling automatic fallback from SSE when timeouts occur on Vercel serverless deployments
- Smart polling intervals: Implement adaptive polling (30s visible tabs, 2min hidden tabs) to optimize serverless function execution and reduce costs
- Connection mode flexibility: Support
auto, sse, and poll connection modes with intelligent switching based on deployment environment
- Enhanced reliability: Resolve SSE timeout errors in production with improved connection stability on free-tier deployments
- Fix Vercel deployment errors related to SSE connection handling
- Add deployment documentation for polling mode configuration
- Add migration guide for transitioning from SSE to polling strategy
- Update real-time messaging implementation with tab visibility detection
v2.59.0 - 2025-11-20
This release focuses on infrastructure resilience with improved Neon database connection management and security updates. Key enhancements include pgbouncer connection pooling configuration, Prisma pool tuning, and UI improvements to the Banner component.
- Enhanced Neon connection stability (26e5b05c)
- Added pgbouncer query parameters and connection timeouts to DATABASE_URL
- Configured Prisma connection pool settings (max=1, keepalive enabled, maxUses=7500)
- Improved Banner component UI with horizontal layout and inline metadata
- Fixed clone-prod-to-dev.sh schema comparison with better normalization
- Documented Neon connection alerts and monitoring strategy
- Resolved Dependabot hono vulnerabilities (fe3adc5a)
- Updated hono dependencies to address security advisories
- Ensures compatibility with latest security patches
- Various deployment configuration adjustments
v2.58.0 - 2025-11-20
Enhanced the automated messaging system and optimized featured talent section initialization for improved performance and caching efficiency.
- Messaging System: Implemented comprehensive automated messaging infrastructure to streamline user communications and engagement workflows
- Featured Talent Optimization: Refactored section initialization logic to conditionally call
ensureDefaultSections only when auto-seed is disabled, reducing unnecessary database operations
- Caching Enhancements: Added
'use cache' directive to getTalentCount action and updated to stable cacheLife API for improved performance and consistency
v2.57.3 - 2025-11-20
This release upgrades Prisma to v7 with the new PostgreSQL driver adapter architecture, enables Cache Components for Next.js 16 validation, and strengthens type safety across the codebase. The upgrade modernizes database connectivity patterns while maintaining full backward compatibility.
Dependencies & Infrastructure
- Prisma 7 Upgrade: Migrate to Prisma 7 with PostgreSQL driver adapter (
@prisma/adapter-pg + pg pool)
- Update
lib/prisma.ts to use PrismaPg adapter with connection pooling
- Update
db/seed.ts for Prisma 7 pool management
- Switch engine type from
library to client in schema
- Expand test mocks for adapter compatibility
Next.js Configuration
- Enable Cache Components: Set
cacheComponents: true in next.config.ts for Phase 1 validation
- Remove environment variable prefixes for development URLs (Better Auth auto-detection)
Caching & Performance
- Profile Page Caching: Implement
"use cache" directive with cacheTag for profile data
- Extract cached data fetcher with talent and review batching
- Apply cache invalidation tags for targeted updates
Layout & Type Fixes
- Async Headers Handling: Refactor root layout to handle async
headers() call with Suspense boundary
- Split into
Shell (sync) and AsyncShell (async) components
- Prevent Next.js 16 prerender timing guard violations
Security
- Timing-Safe Signature Verification: Replace HMAC comparison with
timingSafeEqual in Facebook signature validation
- Mitigate timing attack vectors in webhook processing
Type Safety
- React 19 Compatibility: Fix TypeScript type issues for React 19
- Add explicit type annotation for Prisma mock (
prismaMock: any)
- Remove deprecated route segment configs incompatible with
cacheComponents
Developer Experience
- Update
next-env.d.ts path to use .next/dev/types/routes.d.ts (Next.js 16 convention)
v2.57.2 - 2025-11-20
Upgraded to Prisma 7 with improved configuration architecture, resolved React type conflicts, and modernized form submission hooks for React 19 compatibility.
- Prisma 7 Upgrade: Migrated from Prisma 6.19.0 to 7.0.0 with
engineType = "library" configuration
- Moved datasource URL configuration from schema to
prisma.config.ts
- Updated database scripts and test mocks for Prisma 7 compatibility
- Added migration immutability protection to
.prettierignore
- React Types Alignment: Pinned
@types/react and @types/react-dom to 19.2.2 using pnpm.overrides to resolve peer dependency conflicts
- Form Hook Modernization: Updated
useFormSubmission to use React 19's useActionState API, replacing legacy useTransition/useState pattern
- Database Optimization: Added performance indexes for alert queries (price, status, createdAt, surfaces)
- API Enhancements: Added pagination and cursor support to talent API endpoint
- Dependency Updates: Updated
knip (5.70.1), lint-staged (16.2.7), rimraf (6.1.2), and React Email packages
v2.57.1 - 2025-11-20
Refactored alert system architecture by consolidating alert display from layout-level to dashboard-level components, improving control and preventing duplicate rendering across route boundaries.
- Alert Architecture Refactor: Migrated alert display from layout to dashboard component
- Removed
BrandProfileBanner in favor of reusable AlertStack component
- Removed
LayoutAlertShelf from brand layout level to prevent duplicate alerts
- Added
className prop to AlertStack for flexible positioning control
- Added
showStack prop to AlertHydrator to prevent double rendering
- Fixed potential runtime error with safe
AlertType enum access pattern
- Consolidates alert display logic at dashboard level for better control and maintainability
v2.57.0 - 2025-11-20
Enhanced brand dashboard with profile completion alerts, team avatar display, and conversation sharing capabilities.
- Brand Profile Alerts - New alerting rule to detect incomplete brand profiles and prompt completion
- Avatar Group Component - Reusable component for displaying team members with overlapping avatars
- Share Conversations - New server action to share conversation threads between users
- Dashboard Refactor - Improved dashboard layout components for better organization
v2.56.1 - 2025-11-19
Streamlined featured sections architecture by removing duplicate sections and adopting page-agnostic naming conventions for improved maintainability.
- Featured sections refactor: Consolidated featured talent sections by removing unused
homepage-models and renaming explore-* sections to featured-* for reusability across pages. This eliminates the duplicate "Featured models" pill in the admin panel and simplifies section management.
v2.56.0 - 2025-11-19
This release introduces a comprehensive alert system for contextual user notifications, completes the onboarding completion messaging workflow, and enhances the affiliate program with signup bonus tracking and improved referral management.
- Alert System: Implemented system-wide alert framework with rule-based evaluation, priority handling, and persistent storage. Alerts can be dismissed, snoozed, or acknowledged with full audit trails. Includes UI components (Banner, AlertStack) and hydration logic for seamless user experience.
- Onboarding Completion: Added automated onboarding completion detection with personalized messaging, email notifications, and admin tracking. Includes comprehensive test scenarios and documentation.
- Affiliate Enhancements:
- Added signup bonus tracking with automatic commission generation
- Implemented referral share links with social media integration
- Enhanced affiliate notifications for milestone achievements
- Improved admin dashboard with bonus metrics and commission reconciliation
- Navigation Improvements: Added dynamic "Next Action" CTA in navigation bar that intelligently suggests contextual actions based on user state (profile completion, social verification, etc.)
- Search Enhancements: Improved talent search client with better filtering, sorting, and real-time updates
- Database migrations: Added Alert, AlertDismissal, and affiliate signup bonus tracking tables
- Updated auth utilities with improved identity validation
- Enhanced admin talent management with better filtering and bulk actions
- Improved TypeScript types for navigation domain
- Added comprehensive documentation for alert system and onboarding completion
v2.55.0 - 2025-11-19
Introduced form event token system to prevent duplicate conversion tracking on landing pages, plus message event handling improvements.
- Form Event Token System: Server-side token generation for Meta Pixel tracking deduplication across landing pages (brands, fees, talents). Includes token management API, admin analytics dashboard, automated cleanup, and comprehensive documentation.
- Message Events: Resolved message event handling issue
- Database: Added form event token migrations and session tracking
- Dependencies: Updated package dependencies
- Scripts: Added featured image checker and explore section population utilities
v2.54.0 - 2025-11-18
This release refactors the signup conversion tracking system to be fully compatible with Next.js 16's architectural constraints, ensuring reliable analytics while maintaining framework compliance.
- Analytics System Refactor: Completely redesigned signup conversion tracking to respect Next.js 16 restrictions on cookie writes during Server Component render
- Extracted cookie/database operations into a dedicated Route Handler (
/api/analytics/signup-conversion)
- Split
SignupConversionGate into a lightweight Server Component wrapper and new SignupConversionGateClient for browser interactions
- Maintains 100% functionality while adhering to framework best practices
- Added comprehensive documentation for the new flow architecture
- Explore Page Enhancement: Replaced hardcoded featured talent cards with dynamic, database-driven featured sections
- Configurable section management for creators, models, and photographers
- New utility scripts for talent inspection and section population
- Improved content freshness and maintainability
- Infrastructure Updates:
- Updated Cloudflare image loader configuration for better performance
- Enhanced featured sections config with more flexibility
- Added Facebook provider to trusted auth methods
v2.53.0 - 2025-11-18
Added comprehensive user lifecycle management system with cold signup sunset automation and Facebook data deletion compliance. This release introduces multi-stage reminder flows for inactive users and automated account lifecycle management per platform requirements.
- Cold Signup Sunset System: Automated multi-stage reminder system for incomplete signups with email, in-app, and messaging channel support
- First reminder at 3 days: Welcome message encouraging profile completion
- Second reminder at 7 days: Urgency notification about visibility
- Final reminder at 13 days: Account deactivation warning
- Automatic sunset at 14 days for permanently inactive accounts
- Facebook Data Deletion Webhook: Implemented data deletion callback handler per Facebook Platform Policy requirements with soft-delete audit trail
- Account Lifecycle Management: Added database migrations and tracking fields for cold signup lifecycle stages and soft deletion
- Home Search Component: New search interface with talent filters on homepage for improved discovery
- Search Params Utility: Type-safe URL state management for search and filter functionality
- Facebook Signature Verification: Secure webhook validation using SHA-256 HMAC signatures
- Updated auth service to track cold signup lifecycle timestamps
- Added comprehensive test coverage for lifecycle services (15+ test cases)
- Added lifecycle documentation for account sunsetting process
- Added database clone script for prod-to-dev migrations
- Added new environment variables for Facebook webhook security and cron authentication
v2.52.2 - 2025-01-18
Fixed mobile positioning for the support help button, ensuring it appears correctly in the bottom-right corner on iPhone devices instead of floating in the middle of the screen.
- Support UI: Adjusted "Need help?" button position on mobile from
bottom-24 (96px) to bottom-4 (16px) for proper corner placement on iOS devices
v2.52.1 - 2025-11-18
Analytics event schema consolidation for cleaner tracking and improved Meta/GTM integration. Standardized conversion events across landing pages and onboarding flows to use canonical event names with consistent metadata structure.
- Analytics Refactor: Standardized conversion event names to canonical set (
sign_up, cta, form_started, form_submitted, messenger_optin, onboarding_completed)
- Unified metadata fields across all tracking events (flow, step_id, channel, placement, cta_name)
- Removed redundant event tracking (platform_selected, calculator_used, brief_form_completed)
- Updated brands, talents, and fees landing pages to use consistent event schema
- Aligned onboarding flow events with new naming conventions
- UI Improvements: Simplified search layout by removing unnecessary user profile fetch
- Search Sidebar: Fixed desktop filter sidebar to fill viewport height under navbar
- Dependencies: Updated lucide-react (0.554.0), nuqs (2.8.0), posthog-js (1.294.0), react-hook-form (7.66.1), tus-js-client (4.3.1), typescript-eslint (8.47.0), vitest (4.0.10)
- Task Management: Archived 8 completed tasks (TASK-0019, TASK-0102, TASK-0103, TASK-0121, TASK-0125, TASK-0127, TASK-0134, TASK-0135, TASK-0136)
v2.52.0 - 2025-11-17
This release introduces resumable video uploads via Cloudflare Stream's TUS protocol and establishes Cloudflare Images as the primary image optimization solution. The new infrastructure provides a more reliable upload experience with automatic fallback to direct uploads, while the centralized image loader ensures consistent performance across all images.
- Resumable video uploads with TUS protocol: Implemented Cloudflare Stream TUS client (
utils/stream-tus-client.ts) enabling resumable uploads with automatic fallback to direct uploads. Supports progress tracking, status updates, and graceful error handling.
- Cloudflare Images optimization: Added Next.js image loader configuration (
config/cloudflare-image-loader.ts) and URL generation utilities (utils/cloudflare-images-url.ts) for consistent image optimization across the platform.
- TalentCard component: Created reusable
TalentCard component (177 lines) for displaying talent profiles with platform icons, ratings, and location information. Supports multiple variants (featured, search) and responsive design.
- Centralized featured sections config: Extracted featured talent section configuration to
config/featured-sections.ts, reducing duplication across landing pages and admin interfaces.
- Talent formatters: Added utility functions in
utils/talent-formatters.ts for consistent talent data formatting across components.
- Enhanced video upload components: Updated
StreamVideoUploader and GalleryUpload components to use the new TUS client with improved error handling and status messaging.
- Landing page analytics: Integrated analytics tracking in
BrandHero, TalentHero, and FeesCTA components for better conversion tracking.
- Wrangler configuration: Added
wrangler.toml for Cloudflare Workers configuration supporting the TUS upload infrastructure.
- Task management: Moved 8 completed tasks to done folder (TASK-0104, 0110, 0112-0115, 0118-0119, 0131) and added 3 new task tracking files (TASK-0134, 0136, 0137).
- Documentation updates: Enhanced video upload documentation (
docs/uploads-video-cloudflare-stream.md) and image compression documentation (docs/uploads-image-compression.md).
- Code quality: Fixed TypeScript strict mode errors, removed console statements, and aligned platform icon types across components.
- Dependencies: Added
@types/tus-js-client for TypeScript support (note: deprecated as main package now includes types).
v2.51.1 - 2025-11-17
Minor patch release addressing database migration stability and admin UI cache synchronization. Ensures admin featured talent list reflects real-time changes after feature/unfeature/reorder operations.
- feat(featured): Add cache revalidation for admin list updates
- Added
revalidatePath('/admin/featured-talent') to featureTalent, unfeatureTalent, and moveFeaturedTalent actions
- Ensures admin UI reflects latest state immediately after feature/unfeature/reorder operations
- Resolves stale admin list issues caused by missing cache invalidation
- migration: Database migration stability fix
- Resolved Prisma migration drift issues
- Ensured schema and migration history remain aligned
v2.51.0 - 2025-01-17
This release adds three comprehensive landing pages (brands, talents, and fees) along with a featured talent management system, providing complete transparency and onboarding experiences for both sides of the marketplace.
- Brand Landing Page: Complete brand onboarding experience with hero section, success metrics, case studies, FAQ, pricing transparency, and discovery showcase
- Talent Landing Page: Comprehensive talent recruitment with hero section, how-it-works guide, success stories, FAQ, pricing transparency, and toolkit overview
- Fee Transparency Page: Detailed breakdown of platform costs and pricing structure for complete transparency
- Featured Talent System: New admin interface and database support for managing featured talent sections on the homepage
- Database Enhancements: Added talent_likes and featured_talent_sections tables with migration support
- Admin UI Improvements: Updated multiple admin table components for consistent styling and improved user experience
- Performance Documentation: Added talent like query performance checklist and optimization guidelines
- 42 files changed with 3,023 insertions
- New Prisma migration:
20251117085259_add_featured_sections
- Enhanced PostHog analytics provider configuration
- Type-safe featured talent management actions
- Responsive design for all new landing pages
v2.50.0 - 2025-01-17
Enhanced admin featured talent management with improved UI and added reusable landing page components to support marketing efforts.
- Admin Featured Talent UI: Upgraded featured talent list with user avatars, direct profile preview links, and quick remove button for easier talent curation
- Landing Page Components: Created reusable component library including CTAButton, FAQSection, FeatureGrid, FeeTooltip, and TrustStrip to accelerate landing page development
- Fixed React
act() warning in AdminProfileReviewPanel test by properly wrapping state-changing interactions
- Removed unused UploadThing URL pattern filters from admin gallery query to simplify codebase
- Updated seed data with additional featured talent entries
v2.49.0 - 2025-11-17
This release introduces a complete Featured Talent Management System, empowering admins to curate and showcase top creators on the homepage. Replaces static sample data with dynamic, database-driven content that can be managed through the admin dashboard.
- Featured Talent Management - Complete admin system for featuring/unfeaturing talents
- Database table (
FeaturedTalent) with position-based ordering
- Admin interface at
/admin/featured-talent with sortable talent list
- One-click feature/unfeature actions with Star/StarOff icons
- API endpoints (
POST /api/admin/featured-talent) for programmatic management
- Auto-seeding functionality to populate initial featured talents from approved profiles
- Homepage Integration - Dynamic featured talents section replaces hardcoded sample data
- Server-side rendering with
listFeaturedTalentsForHomepage()
- Respects talent approval status and user active status
- Aggregates follower counts across social platforms
- Derives social platform presence (Instagram, TikTok, etc.)
- Admin Sidebar Navigation - Added "Featured Talent" link to admin dashboard for easy access
v2.48.0 - 2025-11-17
This release introduces Cloudflare Images integration for photo uploads, providing an alternative to UploadThing with built-in image optimization and CDN delivery. The feature is controlled by a feature flag (NEXT_PUBLIC_CF_MEDIA_IMAGES_ENABLED) and includes comprehensive migration utilities for existing media assets.
- Cloudflare Images Integration - New photo upload system using Cloudflare Images API
- Direct upload endpoint for client-side image uploads
- Automatic image optimization and compression
- Global CDN delivery via Cloudflare network
- Feature flag support for gradual rollout (
NEXT_PUBLIC_CF_MEDIA_IMAGES_ENABLED)
- Backwards compatible with existing UploadThing uploads
- Comprehensive storage cleanup handling for both UploadThing and Cloudflare Images URLs
- Migration Utilities - Scripts for migrating existing media to Cloudflare
backfill-images-to-cloudflare.ts - Migrate existing photos to Cloudflare Images
backfill-gallery-videos-to-stream.ts - Migrate videos to Cloudflare Stream
backfill-video-thumbnails-to-cloudflare.ts - Migrate video thumbnails
media-inventory.ts - Audit current media storage usage
cloudflare-cleanup.ts - Clean up orphaned media assets
- Search Improvements - Enhanced talent search with follower aggregation
- Follower count aggregation for better sorting
- Improved pagination with deduplication
- IntersectionObserver for infinite scroll performance
- Admin Dashboard - New dedicated dashboard page
- Dedicated
/admin/dashboard route
- Auto-redirect from
/admin to dashboard
- Improved admin navigation structure
- Updated dependencies in lockfile
- Test coverage updates for new deletion logic
- Environment variable documentation for Cloudflare configuration
v2.47.0 - 2025-11-17
This release introduces comprehensive video upload capabilities via Cloudflare Stream integration and production-ready image compression utilities. Talents can now upload profile intro videos and gallery videos with automatic thumbnail generation, while images are intelligently compressed to optimize storage and performance.
Video Upload System (Cloudflare Stream)
- Direct upload API integration - Implemented Cloudflare Stream direct upload endpoint with user authentication and 60-second duration limits (
app/api/videos/stream/direct-upload/route.ts)
- StreamVideoUploader component - Built React component with drag-and-drop support, upload progress tracking, and automatic thumbnail generation (
components/upload/StreamVideoUploader.tsx)
- Video thumbnail utilities - Created utilities for generating video thumbnails from video files (
utils/video-thumbnail.ts)
- Database schema update - Added
introVideoStreamId field to talent profiles for storing Cloudflare Stream video IDs
Image Compression
- Smart compression utilities - Implemented browser-based image compression with configurable quality presets (high: 0.9, medium: 0.8, low: 0.6) and automatic resolution constraints (
utils/image-compression.ts)
- Test coverage - Added comprehensive unit tests for image compression utilities (
utils/image-compression.test.ts)
UI/UX Enhancements
- Gallery upload improvements - Enhanced gallery media upload component with better validation, error handling, and multi-format support
- Admin profile management - Extended admin capabilities for managing talent profile videos and gallery media
- Profile display - Integrated intro video playback in talent profile views with Cloudflare Stream player
- Upload system guides - Added comprehensive documentation for:
- Gallery media uploads workflow (
docs/uploads-gallery-media.md)
- Image compression implementation (
docs/uploads-image-compression.md)
- Cloudflare Stream video integration (
docs/uploads-video-cloudflare-stream.md)
- Updated
.env.example with Cloudflare Stream configuration variables:
CLOUDFLARE_STREAM_ACCOUNT_ID - Account identifier for Stream API
CLOUDFLARE_STREAM_API_TOKEN - API token for authentication
v2.46.0 - 2025-11-16
Enhanced admin capabilities with phone field support and granular profile status filtering for better user insights and talent management.
- Admin User Insights Enhancement: Add phone field to admin talent approval queries, enabling better contact management and verification workflows
- Profile Status Filtering: Introduce comprehensive profile status filter (APPROVED, READY_FOR_REVIEW, UNDER_REVIEW, DRAFT, REJECTED) for precise user segmentation
- Verification Filter Improvements: Default verification filter to 'ALL' instead of 'VERIFIED' only, providing broader user visibility by default
- Client-Side Sorting: Add client-side sorting for completion score while maintaining server cache efficiency, improving performance and user experience
- Responsive Layout: Improve responsive layout for insights table with hidden columns on small screens, ensuring better mobile usability
- Add test coverage for default verification filter behavior
v2.45.0 - 2025-11-16
Enhanced admin workflow with direct access to profile editing and messaging from the review panel. Admins can now edit talent profiles and send messages without navigating away from the approval review screen, streamlining the review process.
- Admin shortcuts in profile review panel - Added "Edit Profile" and "Message Talent" buttons to the
AdminProfileReviewPanel header, allowing admins to quickly access editing and messaging functionality directly from the review screen
- Consistent messaging experience - Reuses existing
MessageTalentDialog component for seamless integration with established messaging workflows
- Smart button rendering - Buttons conditionally display only when talent ID and user data are available, preventing UI errors
- Comprehensive task documentation - Updated TASK-0102 with admin shortcuts feature details and documented media compression research strategy in TASK-0051
v2.44.0 - 2025-11-16
Enhanced admin talent management with in-context messaging capabilities. Admins can now initiate conversations with talents directly from the profile edit page without switching to separate messaging interfaces.
- Admin messaging integration: Added "Message Talent" button to admin talent edit page (
/admin/talent/[talentId]/edit) enabling direct communication with talents
- Flexible MessageTalentDialog: Generalized dialog component to accept minimal talent shape, allowing reuse across admin surfaces without requiring full
AdminTalent view model
- Messenger notifications: Added notification support for Facebook Messenger platform
- Updated task tracking (TASK-0102) with verification logs and progress notes
v2.43.0 - 2025-11-16
Enhanced WhatsApp Business error diagnostics and added Messenger onboarding planning for improved developer experience and multi-channel messaging capabilities.
- WhatsApp Error Formatting - Added
formatPersonalWhatsAppError() function to surface specific WAHA (WhatsApp HTTP API) failure reasons including HTTP status codes and detailed error payloads from the API response, making configuration issues and send failures easier to debug in admin dialogs
- Messenger Onboarding Task - Added TASK-0128 planning for Meta Messenger integration with founder welcome messages and cron-based follow-ups, extending the unified messaging system to support Messenger alongside existing WhatsApp and email channels
- Marked WhatsApp error formatting task complete in TASK-0127
v2.42.0 - 2025-11-16
This release introduces WhatsApp Business messaging integration for talent engagement, enabling automated follow-ups via WhatsApp template messages for founder welcomes and profile completion reminders.
- WhatsApp Business Integration: Add automated WhatsApp messaging for founder welcome flow and profile readiness nudges
- Implement
founder_welcome_v1 template for welcoming new talents and brands
- Add
profile_readiness_nudge template for second reminder (7-day nudge)
- Fire-and-forget pattern ensures main flows are never blocked
- Scoped to users with ACTIVE WhatsApp profiles only (opt-in based)
- Best-effort delivery with comprehensive error logging
v2.41.0 - 2025-11-15
Enhanced admin user insights with new verification filtering, improved mobile responsiveness, and resolved critical Turbopack bundling issues for production builds.
- Admin User Insights Enhancement - Added verification status filter to differentiate between verified and unverified users, with intelligent client-side profile completion sorting that maps to stable server-side
lastActive sort while maintaining accurate completion ordering. Improved mobile table layout with responsive column hiding for better small-screen experience.
- Turbopack Bundling - Excluded
pino and thread-stream packages from Turbopack bundling to resolve production build issues
- Dependencies - Synchronized
pnpm-lock.yaml with package.json to ensure consistent dependency resolution
- Services Preparation - Added unused import placeholder for future WhatsApp integration feature
v2.40.0 - 2025-11-14
Added support for singer talent type and made social media requirements more flexible for non-creator profiles, improving onboarding experience for performers without large social followings.
- Add SINGER talent type: Expanded talent categories to include singers, with corresponding database migration and schema updates
- Relax social requirements for non-creators: Profile readiness now auto-completes the 200+ follower requirement for talent types that aren't content creators (models, actors, dancers, singers, etc.), making it easier for non-creator talents to complete their profiles
- Update profile readiness test: Fixed test assertion to expect 15% completion for empty profiles (reflecting auto-completed social requirement)
- Updated project dependencies in pnpm-lock.yaml
- Enhanced talent profile readiness service with creator detection logic
- Added comprehensive test coverage for new social requirement behavior
v2.39.1 - 2025-11-13
Minor test update to ensure profileImageUpdatedAt field is properly validated in user profile image update tests.
- test(user): Add profileImageUpdatedAt field to test assertions
- Updated 4 test cases to expect profileImageUpdatedAt in update data
- Ensures tests match implementation tracking image timestamp
- Tests now validate both profileImage and profileImageUpdatedAt fields
v2.39.0 - 2025-01-13
This release introduces timestamp tracking for profile images and brand logos, enabling better cache management and allowing users to see when profile visuals were last updated.
- Media Timestamps: Add
profileImageUpdatedAt and logoUpdatedAt fields to track when profile images and brand logos are updated, improving cache invalidation and providing visibility into content freshness
- Package version synchronization
v2.38.0 - 2025-01-13
This release introduces a comprehensive signup conversion tracking system with Meta Pixel and Conversions API (CAPI) dual tracking for accurate attribution and deduplication. The system tracks email and OAuth signups, issues conversion tokens, and fires events with shared IDs to prevent duplicate attribution. Additionally, founder welcome emails are now automatically sent to new users via a cron job.
- Signup Conversion Tracking with Meta CAPI Dual Tracking: Implemented end-to-end conversion tracking system that issues tokens on signup, redeems them on landing pages, and fires Meta Pixel + CAPI events with shared event IDs for accurate deduplication. Includes support for both email and OAuth signups, with proper async/await patterns for Next.js 16 dynamic APIs (
headers(), cookies()). The system uses TypeScript strict mode with bracket notation for index signature access and proper type casting for Prisma JSON fields.
v2.37.1 - 2025-01-13
Fixed critical TypeScript type errors in analytics tracking system, ensuring type-safe conversion tracking and query key management across the application.
- Analytics Type Safety: Resolved TypeScript errors in ConversionPing component by migrating from invalid
payload prop to proper individual props (eventName, eventType, value, currency, metadata)
- Query Key Immutability: Fixed readonly array type errors in usePackage hooks by ensuring query key functions return mutable arrays, resolving 7 TypeScript compilation errors
- Signup Forms: Updated all signup forms to use corrected ConversionPing interface with explicit property mapping
- Type Compliance: Ensured full TypeScript strict mode compliance across analytics tracking infrastructure
- Components affected:
CombinedSignupForm.tsx, ConversionPing.tsx
- Hooks affected:
usePackage.ts (query key functions)
- All 462 tests passing with zero type errors
v2.37.0 - 2025-11-12
This release introduces comprehensive social account management tools for administrators, enabling direct oversight and maintenance of talent social media profiles including Instagram, TikTok, and YouTube accounts.
- Admin Social Account Management: Add complete CRUD interface for managing talent social media accounts
- Create and update social accounts (Instagram, TikTok, YouTube) with verification status tracking
- Set follower counts and verification states (VERIFIED, PENDING, FAILED, EXPIRED)
- Delete social accounts with proper cleanup
- New
AdminSocialAccountManager component integrated into profile edit workflow
- Server actions:
upsertTalentSocialAccountAsAdmin and deleteTalentSocialAccountAsAdmin
- Comprehensive documentation in
docs/admin/profile-edit.md
v2.36.0 - 2025-11-12
Added support for the Dancer talent type, expanding the platform's talent categorization capabilities.
- Talent Types: Added Dancer as a new talent type option
- Updated Prisma schema enum to include DANCER
- Updated talent type constants for consistent use across the application
- Created database migration to add DANCER to TalentType enum
- Automatically available in profile editing, onboarding, and search filters
v2.35.1 - 2025-11-12
Improved component reusability and maintainability by extracting shared talent management actions into a standalone component, enabling consistent admin workflows across multiple views while enhancing analytics routing for better event tracking consistency.
- Admin Components: Extract TalentActionsMenu component for improved reusability
- Extracted dropdown menu logic from TalentTable into new reusable TalentActionsMenu component
- Integrated TalentActionsMenu into UserInsightsClient for quick access to talent operations
- Reduced code duplication and improved consistency across admin interfaces
- Analytics: Prioritize GTM dataLayer for event tracking
- Updated analytics.ts to route events through GTM dataLayer by default
- Falls back to legacy Segment support and direct gtag calls when GTM unavailable
- Ensures all events flow through GTM's centralized event management system
v2.35.0 - 2025-01-12
Added comprehensive failed and expired verification management for social media accounts, enabling admins to track and manage verification statuses more effectively with dedicated UI components and API endpoints.
- Social Media Admin: Add failed and expired verification management
- New
ExpiredTable component for managing expired social media verifications
- New
FailedTable component for tracking failed verification attempts
- Added API endpoints for
/api/admin/social/expired and /api/admin/social/failed
- Enhanced
VerificationTable with minimum follower count validation (200 followers required)
- Added DELETE method to existing social media admin routes
- Integrated tabbed interface for "Pending", "Failed", and "Expired" verification statuses
v2.34.4 - 2025-11-11
This patch release adds flexible session management for WAHA (WhatsApp HTTP API) integration, enabling administrators to specify custom session names when sending WhatsApp messages.
- WhatsApp Session Override: Add session name override capability for WAHA API
- Administrators can now specify custom session names per message
- Add
sessionOverride parameter to sendPersonalAdminWhatsAppMessage action
- Update API route to accept and forward
whatsappSession parameter
- Add session name input field in admin message interface
- Simplify WAHA API URL construction to use standard
/api/sendText endpoint
- Maintain backward compatibility with default session behavior
v2.34.3 - 2025-11-11
This patch release corrects the WAHA API endpoint URL structure to properly include the session name in the path, ensuring reliable multi-session WhatsApp integration.
- WhatsApp API Endpoint - Fixed WAHA API URL to include session name in path (
/api/{session}/sendText) instead of sending it only in the request body (4a93209)
- Added URL encoding for safe session name inclusion
- Ensures API calls target the correct WAHA session endpoint
- Resolves potential session routing issues in multi-session deployments
v2.34.2 - 2025-11-11
This patch release resolves a critical metadata export issue in brand components and enhances WhatsApp integration with configurable session management.
- Brand Component Fix - Removed invalid metadata export from client component preventing proper Next.js rendering (5f78159)
- WhatsApp Configuration - Added
WAHA_SESSION_NAME environment variable with default fallback, enabling multi-session WAHA deployments (1061760)
- Updated documentation with session-aware examples
- Modified personal WhatsApp service to use configurable session identifier
v2.34.1 - 2025-11-11
Email templates have been consolidated into a shared brand layout component, reducing code duplication and improving maintainability. Checkout fees have been updated to reflect current pricing policies.
- Consolidate email templates with shared brand layout and update checkout fees
v2.34.0 - 2025-11-11
This release introduces two major features enhancing the platform's flexibility and user support capabilities: negotiated packages allowing brands to create custom package offers for specific talents, and an integrated support messaging system providing direct in-app assistance.
- Negotiated Packages System: Brands can now create time-limited custom package offers tailored to individual talents, with support for expiration dates, soft deletes, and automatic filtering from standard package listings to prevent conflicts. Includes comprehensive database schema changes, action handlers with validation, and library utilities for package lifecycle management.
- Support Messaging Integration: Introduced a collapsible support message launcher widget allowing users to initiate conversations with platform support directly from their dashboard. Features rate limiting (1 conversation per minute), admin email configuration, dedicated API routes, and comprehensive test coverage ensuring reliability.
- WhatsApp Business Enhancements: Extended WhatsApp Business API integration with personal messaging capabilities and feature-based routing
- Dynamic Rendering Updates: Multiple pages updated to use
noStore() for proper dynamic rendering in Next.js 16
- UI Component Improvements: Enhanced cart drawer and profile components with better user experience patterns
- Environment Configuration: Updated
.env.example with new support and WhatsApp-related variables
Technical Details:
- Database migration: Added
isNegotiated, createdByBrandId, expiresAt fields to package schema
- New actions:
createNegotiatedPackageOffer(), startSupportConversation()
- New routes:
/api/support/messages, /api/admin/whatsapp/features, /api/admin/whatsapp/personal/send
- Test coverage: Added tests for support messaging and cart drawer functionality
v2.33.0 - 2025-11-10
This release introduces WhatsApp Business API integration with comprehensive template management, enabling automated messaging workflows for admin communications with brands and talent.
- WhatsApp Business Integration: Added complete WhatsApp Business API integration with template creation, approval workflows, and message sending capabilities. Includes admin UI for managing message templates, recipient selection with phone number support, and comprehensive API routes for template submission and message delivery.
- Applied code formatting and updated task documentation for improved codebase maintainability
v2.32.0 - 2025-11-10
Transformed the talent search experience with a modern visual grid layout featuring platform icons, follower counts, and creator badges. Cards now display Instagram, TikTok, YouTube, and Facebook presence at a glance, with "Top Creator" badges for talents with 50K+ followers.
- Visual Grid Redesign: Redesigned talent cards from text-heavy layout to modern visual grid with enhanced metadata display
- Added platform icons (Instagram, TikTok, YouTube, Facebook) with follower count badges
- Implemented "Top Creator" badge for talents with 50,000+ followers
- Added location display with MapPin icon integration
- Enhanced talent type headline formatting for better readability
- Improved database queries to include
socialAccounts and username fields for comprehensive profile data
- Added username validation filters to prevent blank profile listings
- Updated skeleton loaders to match new card design for consistent loading states
v2.31.0 - 2025-11-09
This release introduces a comprehensive multi-role persona system, allowing users with multiple roles (admin, brand, talent) to seamlessly switch between their different personas without logging out. This enhancement significantly improves user experience for team members who operate in multiple capacities within the platform.
- Multi-role persona switching - Users can now have multiple roles (admin, brand, talent) simultaneously and switch between them dynamically. The system includes:
- Database migration adding
roles (JSON array), activeRole, and nullable role fields
- New role-switching server action with validation and session updates
- UI component for persona selection with role-specific styling
- Authentication core overhaul with role normalization logic
- Type-safe role management utilities
- Updated navigation components to support persona switching
- Auth checks now use
activeRole instead of legacy role field
v2.30.3 - 2025-11-09
Improved form UX in agency signup by migrating to new FormField components with built-in icons and better state management.
- refactor(agency-forms): Migrate to FormField components with icons - replaced raw Input, Label, and Textarea components with FormField, FormTextarea, and FormCheckbox for consistent UX and better accessibility
v2.30.2 - 2025-11-09
Profile editing improvements with reusable boost components and enhanced agency signup forms with better UX through form state persistence and validation feedback.
- Profile boost extraction: Extracted strength bonus display logic into reusable
ProfileBoostList component for cleaner code organization
- Agency form improvements:
- Added form state persistence to preserve user input on validation errors
- Improved website input with
https: prefix using InputGroup component
- Added toast notifications for signup success/error states
- Better error handling with scroll-to-error functionality
- Profile readiness refactor: Enhanced
talentProfileReadiness service with comprehensive test coverage (226+ test cases)
- Documentation updates: Updated profile readiness docs with detailed bonus calculation explanations
v2.30.1 - 2025-11-09
Refactored profile readiness system with improved component organization and enhanced agency signup observability.
- Profile Readiness Refactoring: Extracted strength bonus display logic into reusable
ProfileBoostList component for better code organization and maintainability
- Agency Signup Logging: Replaced console statements with structured serverLogger for better production debugging and monitoring
- Social Media Requirements: Lowered follower threshold from 1,000 to 200 for better talent accessibility
- UI Improvements: Simplified profile readiness cards and social verification interface
- Documentation: Added comprehensive documentation for profile readiness strength system
- Test Coverage: Updated test suite to reflect refactored readiness service logic
v2.30.0 - 2025-01-09
Enhanced admin workflows with intelligent profile readiness caching. The system now automatically detects when cached completion scores drift from live calculations and schedules background re-syncs to maintain accuracy without impacting UI performance.
- Profile Readiness Drift Detection: Admin approval workflow and user insights now detect score drift (≥5 points difference) between cached and live readiness calculations
- Automated Background Re-sync: Introduced
scheduleReadinessResync utility that batches and processes drifted talent profiles with configurable concurrency control
- Cache Accuracy Improvements: Drift detection ensures cached profile completion scores stay synchronized with live data without requiring manual cache invalidation
- Added missing import for
scheduleReadinessResync in admin approval workflow
- Fixed duplicate object properties in user insights return statement
v2.29.0 - 2025-12-23
This release strengthens the admin approval workflow with intelligent profile readiness caching and drift detection, ensuring admins always see accurate completion scores. A hydration fix also improves navigation reliability across server and client rendering.
- Admin approval workflow enhancements - Implemented profile readiness caching layer with batch evaluation support (up to 4 concurrent requests), reducing redundant database queries. Added drift detection to identify when stored
profileCompletionScore diverges from live evaluation (alerts when gap >= 5 points). Includes new bulk sync endpoint (/api/admin/profile-sync) for re-evaluating all talents in review queue. Smart score synchronization automatically updates stored completion scores during profile status transitions.
- Navigation hydration - Added hydration check to prevent SSR mismatch warnings in navbar component, ensuring consistent rendering between server and client.
No maintenance updates in this release.
v2.28.0 - 2025-11-09
This release introduces a comprehensive agency public signup flow that allows unauthenticated agencies to apply for access, complete with admin review capabilities. Additionally, we've added bulk profile synchronization tooling and resolved several critical issues with script execution and profile data management.
- Agency Public Signup Flow - Added complete unauthenticated agency onboarding system with public signup form, server action validation, admin review panel, and comprehensive test coverage. Agencies can now apply for access without prior authentication, streamlining the onboarding process.
- Bulk Profile Sync Script - Implemented administrative tooling to synchronize talent user profiles in bulk, enabling efficient profile data management at scale.
- Admin Profile Readiness Sync - Restored profile readiness synchronization in admin talent approval updates, ensuring profile approval status remains consistent across the system.
- Script Runtime Environment - Added NEXT_RUNTIME environment variable configuration for server-only modules in standalone scripts, preventing module loading errors.
- Standalone Prisma Client - Created dedicated Prisma client instance for scripts to prevent conflicts with the main application database connection pool.
- Script Cleanup - Removed one-time bulk profile sync script after successful completion to maintain codebase cleanliness.
v2.27.0 - 2025-11-08
This release introduces a comprehensive agency signup workflow with admin approval system, enabling agencies to register and wait for admin review before accessing platform features. Additionally, authentication code has been refactored to consolidate feature flag logic into a dedicated social-providers module for improved maintainability.
- feat(agency): Add signup workflow with admin approval system - Complete implementation of agency onboarding including signup form, pending status page, admin review interface, database schema for approval tracking, and status verification across dashboard and payout settings
- refactor(auth): Consolidate feature flag logic into social-providers module - Improved code organization by centralizing authentication provider feature flag management
v2.26.0 - 2025-11-08
Authentication improvements with feature flag system for social login visibility and Next.js 16 compatibility fixes.
- Feature flag system for social login: Add
HIDE_SOCIAL_LOGIN environment flag to conditionally hide social authentication buttons across the application. Provides both server-only (HIDE_SOCIAL_LOGIN) and client-exposed (NEXT_PUBLIC_HIDE_SOCIAL_LOGIN) variants for flexible control. New helper module lib/feature-flags.ts centralizes logic with server/client parity.
- Next.js 16 Server Actions: Resolve "Cannot access '...' before initialization" error by relocating package helper functions from
actions/ to lib/ directory, ensuring proper code organization and compatibility with Next.js 16 module resolution.
- Build-time environment replacement: Fix Next.js build-time environment variable replacement by using type assertion pattern
(process.env as {VAR:string}).VAR instead of direct property access, enabling proper static analysis and constant folding during bundling.
v2.25.0 - 2025-11-08
This release introduces a comprehensive hybrid marketplace enabling brands to discover talent, build shopping carts, and complete orders directly on the platform. Additionally, the agency management system foundation is now in place to support talent representation workflows.
- Add hybrid marketplace system with shopping cart, order management, and checkout flow enabling seamless brand-to-talent transactions
- Implement agency management infrastructure with schema foundation and data backfill to support talent representation
- Add temporary production toggle to selectively hide social login options while maintaining full authentication capability
- Replace undefined isJsonObject function with proper type guard implementation in admin area
- Fix email templates by replacing non-existent table components with semantically correct raw HTML
- Update TikTok social media handle configuration to @idoltalent
- Remove work-in-progress adminTalentProfile.ts file from version control
v2.24.0 - 2025-11-08
This release focuses on improving messaging performance and resolving build-time logging issues. The conversation list now features infinite scrolling with virtualization for smooth handling of large datasets, while the logger has been refactored to prevent pino-pretty from causing build failures.
- Messaging Performance: Implemented infinite scroll with virtualization for conversation lists, enabling seamless browsing of large conversation histories with improved rendering performance and memory efficiency
- Logger Build Issues: Prevented pino-pretty from loading during Next.js build process by implementing dynamic require pattern, eliminating parse-time evaluation errors and ensuring clean production builds
- Build Reliability: Removed pino-pretty dependency from build-time execution to prevent module resolution failures in production environments
- Environment Configuration: Simplified
.env.example with clearer documentation and removed redundant variables
- Task Management: Archived completed tasks (TASK-0033, TASK-0034, TASK-0055, TASK-0061, TASK-0067, TASK-0087, TASK-0089, TASK-0100) to
tasks/done/ folder for better organization
v2.23.0 - 2025-11-07
Major architectural refactor of the authentication system, replacing fragmented OAuth implementations with a unified social login architecture powered by Better Auth. This release consolidates provider management, adds comprehensive documentation, and improves developer experience with reusable components and standardized configuration.
- Unified Social Login Architecture - Consolidated fragmented Instagram/Meta OAuth into Better Auth's provider system
- Replaced 930+ lines of legacy OAuth code with 620 lines of maintainable provider architecture
- Standardized social provider configuration for Google, Facebook, and TikTok
- Created reusable
SocialAuthButtons and SocialProviderLink components for consistent UX
- Implemented typed provider management in
lib/auth-client.ts and lib/social-providers.ts
- Added server-side auth utilities with proper session handling
- Security Improvements
- Removed
.env.production.old file containing production secrets
- Added trusted origins support for tunnel/staging environments (ngrok, localtunnel)
- Updated
.env.example with comprehensive provider credential documentation
- Documentation & Testing
- Added comprehensive auth documentation in
docs/auth/ covering configuration and best practices
- Created incident runbook for social login troubleshooting (
docs/runbooks/social-login-incident.md)
- Implemented e2e smoke tests for social login flows
- Added unit tests for auth client functionality
- Developer Experience
- Simplified OAuth provider integration with declarative configuration
- Added Better Auth trusted origins for flexible development environments
- Improved
.env.example with detailed comments and setup instructions
- Created dedicated social login management pages for both brand and talent accounts
v2.22.0 - 2025-11-06
Idol now supports multi-tenant organization management with granular member permissions. Improved cron job reliability with corrected timezone handling for daily signup reports ensures accurate data reporting across all time zones.
- Organization management with member roles and permission controls
- Correct Manila timezone conversion for yesterday calculation in cron jobs
- Ensure daily signup summary always reports previous day's data
- Add diagnostic logging to daily signup report for improved observability
v2.21.1 - 2025-11-05
Minor refactoring to improve UI consistency in the onboarding flow by ensuring all step cards use consistent width constraints.
- Onboarding UI refinement: Added
ViewportShell wrapper component to standardize card width behavior across all onboarding steps, ensuring proper flex layout and minimum width constraints for consistent visual presentation
v2.21.0 - 2025-11-05
Enhanced messaging capabilities with new Messenger opt-in widget, robust retry logic, and improved webhook security.
- Messenger Opt-In Widget: New reusable React component (
MessengerOptInCard) for seamless Messenger checkbox opt-in UI
- Retry Logic: Added retry mechanisms and circuit breaker patterns to messaging channels for improved reliability
- SDK Management: Introduced SDK loading utilities for dynamic script management
- Webhook Security: Enhanced Meta webhook endpoint with signature verification for improved security
- Server Actions: Extended messaging actions with
createMessengerOptInContext for server-side opt-in handling
- Onboarding Integration: Integrated Messenger opt-in flow into talent onboarding process
- Updated documentation with new messaging features and environment variables
- Task management updates (TASK-0094 marked as complete)
v2.20.0 - 2025-11-05
Streamlined the Messenger and WhatsApp notification connection flow by automatically opening the respective platforms when users toggle them on, eliminating extra button clicks and making the opt-in process more intuitive.
- Notifications: Auto-open Messenger/WhatsApp links on toggle (c58d5d3)
- Toggle switches now automatically open Messenger/WhatsApp in new tabs when enabled
- Removed separate Connect/Disconnect buttons for simpler, more intuitive UX
- Added clear helper text explaining toggle behavior
- Improved TypeScript types with ControllerRenderProps for better type safety
- Fixed connection status sync logic to handle bidirectional state changes
- Applied consistent UX improvements to both brand and talent notification displays
v2.19.0 - 2025-11-05
This release introduces comprehensive instant messaging integration with Meta's platforms, enabling direct communication with users through Facebook Messenger and WhatsApp. The system includes webhook handling, session management, opt-in token flows, and seamless notification integration.
- Meta Messaging Integration: Add complete Facebook Messenger and WhatsApp integration with webhook handling
- Unified messaging dispatcher supporting multiple channels
- Session window management (24-hour Meta messaging policies)
- Opt-in token system for secure user linking
- Notification preference controls per channel
- Database schema for MessengerProfile, WhatsAppProfile, and OptInTokens
- Messenger CTA button component for user engagement
- Comprehensive test coverage for dispatcher and webhook handlers
v2.17.0 - 2025-11-05
Enhanced Slack webhook routing with channel-specific delivery for daily reports and improved GA4 analytics type safety. Fixed daily report timing to align with midnight-to-midnight metrics and reschedule execution to 6am Manila time.
- Slack: Add channel-specific webhook routing for daily reports with intelligent fallback logic
- Changelog: Support both 'vX.Y.Z' and 'Version X.Y.Z' formats in version validation
- GA4 Analytics: Resolve strict TypeScript type checking for dateStr with explicit type assertions and non-null assertions
- Slack: Add dailyReports to channelFallback logic for comprehensive webhook coverage
- Daily Reports: Align metrics boundaries to midnight-to-midnight UTC and reschedule delivery to 6am Manila time for improved accuracy
- Testing: Add analytics test utilities and archive completed task documentation
Version 2.16.1 (2025-11-04)
Documentation-only release adding comprehensive Facebook Ads tracking guide with token management and integration procedures.
- Documentation: Added complete Facebook Ads tracking setup guide covering API integration, token management (with 60-day expiry tracking), production deployment procedures, and troubleshooting workflows. Includes detailed instructions for regenerating System User tokens and testing the daily report integration.
Version 2.16.0 (2025-11-04)
Enhanced admin notification system with support for multiple recipients via Pushover, enabling team-wide alerts with parallel delivery and backward compatibility.
- Multi-recipient Pushover notifications: Added support for multiple admin users via comma-separated
PUSHOVER_USER_KEYS environment variable. Notifications are sent in parallel for speed, with graceful fallback to single PUSHOVER_USER_KEY for backward compatibility. Returns success if at least one recipient receives the notification.
v2.14.4 - 2025-11-04
Quick maintenance release with cleanup of test API routes, Playwright debugging artifacts, and task tracking updates.
- Code Cleanup: Removed test Pushover API route (
app/api/test-pushover/route.ts) after successful integration verification
- Debugging Artifacts: Cleaned up Playwright MCP screenshot files from testing sessions
- Task Tracking: Updated task management system with latest development progress
- UI Updates: Minor refinements to explore page component
Full Changelog: https://github.com/pauljohnchamberlain/idol/compare/v2.14.3...v2.14.4
v2.14.3 - 2025-11-04
Maintenance release restoring deleted changelog history and preparing codebase for next development cycle with minor cleanup.
- Documentation: Restored complete changelog history that was accidentally deleted in previous release
- Code Quality: Removed debug console statement from favourites toggle action
- Release Preparation: Staged uncommitted changes for release workflow
Full Changelog: https://github.com/pauljohnchamberlain/idol/compare/v2.14.2...v2.14.3
v2.14.2 - 2025-11-04
Critical hotfix resolving Vercel production build failure caused by TypeScript path mapping conflict between development and production environments.
- Build System: Fixed Turbopack build failure by removing TypeScript path mapping that caused chart component imports to resolve to type-only shim instead of actual implementation
- Type Safety: Resolved Recharts type incompatibilities in chart component by fixing
labelFormatter argument types and ChartLegendContent props
- Configuration: Removed
@/components/ui/chart path mapping from tsconfig.json and restored chart component to TypeScript compilation
- Cleanup: Deleted obsolete
types/shims/chart.ts shim file (no longer needed after removing path mapping workaround)
- TypeScript: Removed
@ts-nocheck directive from chart component, allowing full type checking with Recharts
Technical Details:
- Development builds worked because Next.js module resolution found the real chart file despite path mapping
- Production builds (Turbopack) strictly followed the path mapping, resolving to empty shim file → runtime error
- Fix eliminates development/production divergence by removing the workaround and addressing root type issues
Full Changelog: https://github.com/pauljohnchamberlain/idol/compare/v2.14.1...v2.14.2
v2.14.1 - 2025-11-04
Maintenance release focused on project organization and task management cleanup. Consolidated completed development tasks and archived historical documentation for better project clarity.
- Task Management: Reorganized task tracking system by archiving 8 completed tasks (TASK-0076, 0082-0086, 0088, 0091) and consolidating todo lists (4ff58c0)
- Documentation Updates: Updated agent documentation (AGENTS.md) with latest workflow patterns and enhanced TypeScript strict mode documentation (4ff58c0)
- Configuration Refinements: Improved ESLint configuration and Resend client type safety (4ff58c0)
- Test Infrastructure: Removed obsolete strict TypeScript config in favor of unified configuration approach (4ff58c0)
Full Changelog: https://github.com/pauljohnchamberlain/idol/compare/v2.14.0...v2.14.1
v2.14.0 - 2025-11-04
Integrated Pushover phone notification system for real-time admin alerts with custom sounds per event type, direct profile linking from notifications, and comprehensive test infrastructure.
- Pushover Phone Notifications: Complete integration of Pushover notification service for critical admin alerts (7075b24)
- Real-time notifications for new signups, profile updates, and subscription events
- Custom notification sounds per event type for quick alert identification
- Direct deep-linking from notifications to user profiles
- Test endpoint for verification and troubleshooting (
/api/test-pushover)
- Comprehensive documentation in
docs/pushover-notifications.md
- Enhanced Notification System: Integrated Pushover across signup flow, profile updates, and Stripe webhook events (7075b24)
- Component Refactoring: Removed deprecated notification display and loading components in favor of streamlined architecture (7075b24)
- TypeScript Improvements: Fixed type safety issues in Resend client instrumentation (7075b24)
- Configuration Updates: Added Pushover environment variables to
.env.example for easier setup (7075b24)
Full Changelog: https://github.com/pauljohnchamberlain/idol/compare/v2.13.0...v2.14.0
v2.11.1 - 2025-11-03
Minor maintenance release with UI refinements to the page header component and Slack event handling improvements.
- UI Components: Refined page header component for better visual consistency (052e44d)
- Slack Integration: Updated Slack event handling for improved reliability (052e44d)
Full Changelog: https://github.com/pauljohnchamberlain/idol/compare/v2.11.0...v2.11.1
v2.11.0 - 2025-11-03
Introduced conversation archiving functionality allowing brands to archive completed conversations, keeping the message list organized. Enhanced messaging components with improved real-time updates and updated email templates with new branding assets.
- Conversation Archiving: Added
isArchived field to conversations with database migration, enabling brands to archive completed message threads (9689af0)
- Messaging UI Enhancements: Updated conversation list and message thread components to support archive functionality with improved filtering (9689af0)
- Email Template Updates: Refreshed email templates with new Idol logo assets (no background variant) for cleaner presentation (9689af0)
- Type Safety: Fixed TypeScript test typing issue by properly importing
MockInstance type from Vitest (9689af0)
- Messaging Hooks: Refactored
useConversation and useRealtimeMessages hooks for better state management (9689af0)
- Domain Types: Enhanced messaging domain types to support conversation archiving patterns (9689af0)
Full Changelog: https://github.com/pauljohnchamberlain/idol/compare/v2.10.0...v2.11.0
v2.10.0 - 2025-11-03
Enhanced Slack integration with real-time event tracking and comprehensive email notification system. Added admin notifications for new user signups with Slack channel alerts.
- Slack Integration: Comprehensive Slack client with event tracking, channel posting, and webhook support for team notifications (264dfc1)
- Email Templates: Professional email template system using React Email for new message notifications with brand avatars and rich formatting (264dfc1)
- Admin Notifications: Automated Slack notifications for new brand and talent signups with detailed user information and profile links (264dfc1)
- Dependency Updates: Bumped dev dependencies including type definitions and testing tools (#51)
- Code Refactoring: Improved messaging types and conversation action patterns for better type safety (264dfc1)
Full Changelog: https://github.com/pauljohnchamberlain/idol/compare/v2.9.1...v2.10.0
v2.9.1 - 2025-11-02
Added Google Tag Manager consent mode initialization to ensure proper consent configuration loads before GTM tracking begins, improving privacy compliance and user consent management.
- GTM Consent Integration: Implemented Google Consent Mode v2 with default consent settings (ad_storage, analytics_storage, ad_user_data, ad_personalization) that load before GTM initialization (4baf63a)
- Schema Organization: Reorganized database schema file structure with alphabetically sorted model fields and grouped relation fields for better maintainability (854256b)
Full Changelog: https://github.com/pauljohnchamberlain/idol/compare/v2.9.0...v2.9.1
v2.9.0 - 2025-11-01
Enhanced messaging system with real-time presence indicators, showing users when they're connected and displaying subtle connection status in conversations.
- Connection Indicators: Display subtle connection status in messages for better user awareness (#50)
- Presence Signals: Unified presence signals across messaging system for consistent real-time status (bd5723b)
- Implementation Updates: Core implementation improvements in idol platform (4fb9c13)
Full Changelog: https://github.com/pauljohnchamberlain/idol/compare/v2.8.5...v2.9.0
v2.8.5 - 2025-11-01
Added admin user insights dashboard with comprehensive analytics and fixed TypeScript type safety issues.
- Add admin user insights dashboard with user analytics, engagement scoring, and activity metrics (d417c3d)
- Fix TypeScript type errors in adminUserInsights.ts with proper type annotations for Maps and missing summary fields
Full Changelog: https://github.com/pauljohnchamberlain/idol/compare/v2.8.3...v2.8.5
v2.8.2 - 2025-10-31
Quick maintenance release with OpenGraph image backups and staged updates for layout and task tracking.
- Add backup OpenGraph images for fallback display (3dd3dc9)
- Stage layout and task tracking updates for quick release (aa57f57)
Full Changelog: https://github.com/pauljohnchamberlain/idol/compare/v2.8.1...v2.8.2
v2.8.1 - 2025-10-31
Routine maintenance release with minor updates to landing pages and OpenGraph imagery.
- Stage changes for quick release (833d39b)
Full Changelog: https://github.com/pauljohnchamberlain/idol/compare/v2.8.0...v2.8.1
v2.8.0 - 2025-10-31
This release streamlines the admin interface by removing legacy admin-old components and introduces an enhanced media gallery moderation system with grid views and video preview capabilities for more efficient content management.
- Admin Media Gallery Moderation: New grid-based moderation view with video preview support for streamlined content review (3ecb817)
- Enhanced Gallery Interface: Added comprehensive admin media gallery moderation page with improved UX (10349bd)
- Codebase Cleanup: Removed 6,600+ lines of legacy admin-old directory code, improving maintainability (fd8596e)
- Update LoginForm and proxy configuration for improved authentication flow
Full Changelog: https://github.com/pauljohnchamberlain/idol/compare/v2.7.0...v2.8.0
v2.7.0 - 2025-10-31
This release introduces a comprehensive affiliate management system, bringing powerful tools for tracking commissions, managing referral codes, and monitoring affiliate performance metrics. We've also unified the user avatar implementation across the application and made significant improvements to analytics tracking.
- Affiliate Management System: Complete affiliate infrastructure with commission tracking, referral code generation, and comprehensive metrics dashboard (0d9a1cc)
- Enhanced Admin Capabilities: Expanded admin functionality with profile viewing permissions and improved user management (5e987c3)
- Production Analytics: Integrated Plausible analytics on production domain for better visitor insights (b54e14c)
- Unified Avatar System: Standardized user avatar implementation across all components (#48) (248e571)
- Finalize affiliate merge cleanup for stable release (3b251a2)
- Fix root layout provider wrapping to resolve query client initialization issues (1089713)
- Remove duplicate Plausible loader to prevent double-tracking (bd6ddc3)
- Resolve database schema sync and avatar client-side rendering (00dcd09)
- Correct GTM configuration and initialization (5b7f738)
- Prepare release with all uncommitted changes (225a181)
- Enable admin profile viewing with proper permission checks (947fda3)
- Update analytics tracker configurations for better monitoring (b3bfea8)
- Expand agent documentation and layout improvements (c69ef65)
Full Changelog: https://github.com/pauljohnchamberlain/idol/compare/v2.6.0...v2.7.0
v2.6.0 - 2025-10-29
- Update implementation in idol - adds admin notification system for user signups and talent profile completion
- Resolve TypeScript type errors in signup and admin notification modules
Full Changelog: https://github.com/pauljohnchamberlain/idol/compare/v2.5.4...v2.6.0
v2.5.4 - 2025-10-29
- Fix video playback on mobile devices for profile pages (6 commits)
- Fix Zod schema validation errors (invalid_type_error → message)
- Stage uncommitted changes for release analysis
Full Changelog: https://github.com/pauljohnchamberlain/idol/compare/v2.5.3...v2.5.4
v2.5.3 - 2025-10-28
- Enhanced talent profile system with gallery featured media fields
- Added gallery media card component for improved media management
- Improved talent rating display with new summary component
- Database schema updates for featured gallery functionality (migration: 20251028061810)
Full Changelog: https://github.com/pauljohnchamberlain/idol/compare/v2.5.2...v2.5.3