Skip to content

Latest commit

 

History

History
1058 lines (861 loc) · 40.2 KB

File metadata and controls

1058 lines (861 loc) · 40.2 KB

Changelog

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.

[0.1.0] - 2025-12-18

Added

  • Initial MVP release of the DevLovers platform
  • Q&A section with categorized questions
  • Quiz system with dynamic quiz pages
  • Leaderboard with user rankings
  • Blog section with static and dynamic content
  • Static informational pages:
    • About
    • Contacts
    • Terms of Service
    • Privacy Policy
  • Shop section (initial version)
  • Authentication system (login & signup)
  • Multi-language (i18n) support
  • Theme switching:
    • Light
    • Dark
    • System theme
  • Core application layout and routing
  • API routes for authentication and quizzes
  • Database integration using Drizzle ORM
  • PostgreSQL database hosted on Neon
  • Application deployed on Netlify
  • Custom domain configured: https://devlovers.net

[0.2.0] - 2025-12-28

Added

  • Server-authoritative currency handling in Shop based on locale (UAH for uk, USD otherwise)
  • Per-currency product pricing model using product_prices
  • Canonical money handling in integer minor units across orders and carts
  • Centralized money formatting via a single Intl-based formatter
  • Multi-language JavaScript Q&A question base (uk / en / pl)
  • Git Q&A localization with category translations (uk / en / pl)
  • Live tag search suggestions in Blog with Tab auto-complete
  • Enter key support for adding blog filter tags

Changed

  • Shop catalog, cart, and checkout now resolve prices strictly by currency
  • Orders enforce single-currency rule (no mixed-currency orders)
  • Blog card layout redesigned with responsive images and improved visuals
  • Blog filter controls and tag/category styling refined
  • Q&A categories are now driven by structured, localized data
  • Header navigation updated to point to quizzes list instead of a specific quiz

Fixed

  • Removed hardcoded $ usage and float-based price calculations in Shop
  • Eliminated mixed-currency edge cases and rounding risks
  • Fixed duplicated JavaScript Q&A records in the database
  • Hardened Q&A list rendering to prevent crashes on malformed list data
  • Fixed malformed list items in Git question #96
  • Allowed unauthenticated access to Quiz and Leaderboard pages (guest flow)

[0.3.0] - 2026-01-01

Added

  • Social authentication via Google and GitHub (OAuth)
  • System theme–based favicon switching (light / dark via prefers-color-scheme)
  • Quiz cards redesign with categories, progress indicators, and status badges
  • Countdown timer for quizzes with auto-submit on expiration
  • Per-user quiz progress tracking (best score, attempts, completion %)
  • Category-based quiz browsing with responsive tabs
  • Multilingual content additions:
    • HTML questions base
    • React questions base
    • Localized About page (uk / en / pl)
  • Unified platform & shop header with variant-based behavior

Changed

  • Login and signup flows updated to support OAuth providers
  • Authentication UI enhanced with provider buttons and separators
  • Quiz navigation and layout improved for better UX on desktop and mobile
  • Blog and footer text fully localized using i18n strings
  • Header/navigation logic centralized to prevent route-specific inconsistencies
  • Shop pages aligned with unified header and navigation system

Fixed

  • Fixed GitHub OAuth redirect by correctly passing and validating state parameter
  • Improved OAuth security with stronger CSRF protection
  • Removed duplicated and legacy header components
  • Prevented import breakages caused by outdated shop/platform shells
  • Improved robustness of quiz duration calculation with reliable fallbacks
  • Cleaned up redundant files, comments, and unused utilities

[0.4.0] - 2026-01-21

Added

  • Complete authentication lifecycle:
    • Google & GitHub OAuth
    • Email verification
    • Password reset and recovery flows
  • Full internationalization (uk / en / pl) across:
    • Authentication pages
    • Dashboard
    • Contacts
    • About page
    • Blog, Q&A, Quiz
    • Privacy Policy and Terms & Conditions
  • New quiz content:
    • Angular, Vue.js, Node.js quizzes
    • HTML and React question bases
  • Advanced quiz experience:
    • Countdown timer with persistence and auto-submit
    • Encrypted/hashed answers to prevent client-side cheating
    • Session persistence with quit confirmation
    • Guest quiz results synced after authentication
  • Real-time online users counter with animated UI
  • GDPR-compliant cookie consent banner with i18n support
  • Unified platform & shop header system
  • System theme–based favicon switching (light / dark)
  • Initial SVG icon set for UI usage

Changed

  • Quiz UI redesigned:
    • Category-based tabs
    • Consistent QuizCard layout
    • Progress indicators and status badges
  • Q&A UI refreshed:
    • Unified layout with shared background
    • Improved pagination and accordion readability
  • Authentication pages refactored into reusable components
  • Blog experience improved:
    • Redesigned blog page and cards
    • Category pages and header search
    • Recommended posts section
  • Shop UI and layout unified across platform and admin views
  • Tailwind theme tokens centralized for theme-aware styling
  • Database migration history reset to a clean, linear baseline

Fixed

  • Fixed GitHub OAuth redirect and CSRF state handling
  • Fixed quiz timer issues when switching languages
  • Fixed Q&A API caching to always return fresh data
  • Resolved multiple accessibility issues (WCAG, W3C, Lighthouse 100%)
  • Hardened authentication redirects to prevent open-redirect vulnerabilities
  • Stabilized shop checkout, refund, inventory, and webhook flows
  • Improved Neon performance and reduced CU-hours usage
  • Cleaned up redundant files, comments, and legacy code

[0.5.0] - 2026-01-26

Added

  • AI-powered Word Helper for Q&A:
    • Text selection with floating “Explain” button
    • Multilingual explanations (uk / en / pl)
    • Draggable modal with caching and rate limiting
  • Extensive automated testing:
    • 90%+ coverage for Quiz core logic (unit + integration)
    • Full Q&A component, hook, and API test coverage
  • SEO & content enhancements for Blog:
    • Breadcrumb navigation (posts & categories)
    • Schema.org JSON-LD (Article, BreadcrumbList)
    • Improved metadata (descriptions, dates, authors)
  • Improved navigation & UX:
    • Refactored responsive header with clear active states
    • GitHub stars indicator in header
    • Enhanced mobile menu with scroll locking
  • Visual & UX polish across platform:
    • Unified category accent colors across Quiz & Q&A
    • Refined Leaderboard layout and mobile responsiveness
    • Updated About page interactions and game mechanics
  • Infrastructure & environment support:
    • GROQ API integration for AI features
    • New environment variable support and documentation

Changed

  • Quiz UI unified with Q&A design system:
    • Shared CategoryTabButton component
    • Category-based accent colors across full quiz flow
    • Traffic-light countdown timer (green / yellow / red)
  • Blog experience refined:
    • Improved search relevance and filtering UX
    • Better author navigation and category presentation
  • Header, footer, and navigation styles aligned to brand tokens
  • Shop UI polish:
    • Button styles and hero messaging updated
    • Stripe checkout success redirect fixed
  • Removed deprecated Contacts page and all references

Fixed

  • Stabilized Leaderboard layout, spacing, and mobile behavior
  • Fixed quiz timer persistence and anti-cheat messaging UX
  • Improved accessibility and visual consistency across components
  • Resolved locale duplication in Stripe checkout redirects
  • Cleaned up redundant UI states, placeholders, and legacy styles

[0.5.1] - 2026-01-31

Added

  • Enhanced About page experience:
    • Refreshed Features and Pricing sections with clearer messaging
    • Interactive particle-based backgrounds with reduced-motion support
    • New reusable UI components: ParticleCanvas, GradientBadge, SectionHeading
    • Improved mobile responsiveness and layout stability
  • Blog improvements:
    • Dynamic grid backgrounds across blog pages
    • Featured post CTA in blog hero
    • Author filtering via URL with adaptive header behavior
  • Improved 404 error pages:
    • Fully localized (uk / en / pl)
    • Unified global rendering strategy
    • Clear navigation actions back to Home
  • AI Word Helper updates:
    • Switched model to llama3-70b-8192 for improved response quality
  • Accessibility & UX:
    • Better keyboard navigation for highlighted terms
    • Improved touch and mobile interaction handling

Changed

  • Home page refinements:
    • Hero section refactored into smaller reusable components
    • Updated color palette, spacing, animations, and mobile behavior
  • Footer styling updated to match refreshed brand visuals
  • Blog layout aligned with updated design language and spacing rules
  • Default locale updated from uk to en with safer type validation
  • Internal codebase cleanup:
    • Improved i18n defaults and validation
    • Better cache initialization and error handling

Fixed

  • Fixed blog post image rendering for latest posts
  • Resolved layout centering issues on Leaderboard
  • Improved stability of text selection detection for AI helper
  • Fixed social icon hover styles in dark mode
  • Reduced visual overlap issues on small mobile screens

[0.5.2] - 2026-02-01

Added

  • About page enhancements:
    • Refreshed Features and Pricing sections with clearer messaging
    • Interactive particle-based backgrounds with reduced-motion support
    • New reusable UI components: ParticleCanvas, GradientBadge, SectionHeading
    • Improved mobile responsiveness and layout stability
  • Blog improvements:
    • Pagination support for blog listing
    • Dynamic grid backgrounds across blog pages
    • Featured post CTA in blog hero
    • Author filtering via URL with adaptive header behavior
  • AI Word Helper updates:
    • Improved error handling with simplified retry UX
    • Backend refactor for Vercel compatibility
    • Rate limiting enforcement for AI explanation endpoint
  • Caching & performance:
    • Upstash Redis cache for Q&A (cache-aside strategy)
    • Robust cache parsing and invalidation handling
  • Infrastructure & tooling:
    • Netlify deployment configuration updates
    • Redis environment variable support
    • CodeRabbit automated review configuration

Changed

  • Home page UI refinements:
    • Refactored Hero section into reusable components
    • Improved primary CTA button styling and interactions
    • Updated card layouts and online users counter visuals
  • Blog experience refined:
    • Improved text formatting and rendering consistency
    • Better search, filtering, and pagination UX
  • Shop UI updates:
    • Unified storefront styles across components
    • Improved checkout flow state handling
    • Added metadata across shop routes for better SEO
  • Default locale changed from uk to en with safer type validation
  • Internal refactors:
    • Codebase cleanup and structural simplification
    • Improved cache initialization and error handling

Fixed

  • Fixed blog text formatting and latest post image rendering
  • Resolved layout centering issues on Leaderboard
  • Fixed social icon hover styles in dark mode
  • Improved stability of text selection detection for AI helper
  • Fixed locale duplication and routing edge cases
  • Reduced visual overlap issues on small mobile screens

[0.5.3] - 2026-02-04

Added

  • Quiz performance improvements:
    • Redis-based answer verification replacing AES encryption
    • Server-side quiz cache initialization to reduce verification latency
    • Debug endpoints for inspecting and clearing quiz caches (development only)
  • Caching & data layer:
    • Persistent Redis caching for static Quiz and Q&A data (TTL removed)
    • Cache-aside strategy for quiz answers and Q&A content
  • Internationalization & accessibility:
    • Translations for blog categories, CTA variants, and UI components (en / uk / pl)
    • Improved aria-label coverage for navigation, cart, theme toggle, and search
  • Developer experience:
    • Finalized ESLint Flat Config for frontend
    • Stable Prettier + Tailwind class sorting workflow
    • Consistent format-on-save behavior across the team

Changed

  • Quiz system refactor:
    • Simplified answer verification flow using Redis lookups
    • Improved guest session restoration after quiz completion
    • Language switch now preserves quiz results for guest users
  • Layout & UI refinements:
    • Removed duplicate padding on quiz routes
    • Improved mobile alignment for Quiz Rules and headers
    • Refined leaderboard component structure and lint stability
  • Shop module cleanup:
    • Normalized component naming (PascalCase)
    • Reorganized test structure under domain boundaries
    • Unified active-state and hover styling across shop routes
  • Blog UI improvements:
    • Fixed mobile paddings and spacing consistency
    • Improved responsive header and layout behavior

Fixed

  • Fixed mobile layout misalignment on quiz pages
  • Fixed guest language switch issues on quiz result screen
  • Improved WCAG color contrast compliance across quiz UI
  • Fixed ESLint, Prettier, and test configuration inconsistencies
  • Removed unused files, dead code, and outdated utilities
  • Improved reliability of quiz session restoration and state handling

[0.5.4] - 2026-02-05

Added

  • Quiz SEO & performance improvements:
    • Dynamic metadata generation for quizzes list and quiz detail pages
    • i18n-aware meta titles and descriptions (en / uk / pl)
    • Browserslist configuration targeting modern browsers
  • Quiz content updates:
    • Expanded JavaScript Fundamentals quiz from 10 to 40 questions
  • Dashboard UI improvements:
    • New DynamicGridBackground for cleaner visual hierarchy
    • Refined ProfileCard and StatsCard layouts
  • Accessibility & i18n:
    • Improved aria-label coverage across navigation and UI controls
    • Refined English, Polish, and Ukrainian UI copy and punctuation

Changed

  • Quiz UX refinements:
    • Countdown timer animation stabilized on tab switch and session restore
    • Emoji replaced with icon-based indicators for consistent styling
    • Anti-cheat logic improved to distinguish touch vs mouse events
  • Q&A experience improvements:
    • Pagination scroll now targets section instead of page top
    • Mobile tap lock resolved by clearing text selection on interaction
  • Home & layout updates:
    • Improved code card sizing and responsive behavior
    • Online users counter repositioned for better mobile UX
  • Shop UX refinements:
    • Canonicalized legacy “View all” filters
    • Improved cart CTA behavior and badge layering
  • Blog & CMS:
    • Refactored blog image rendering and filtering logic
    • Improved pagination state handling
  • Styling & consistency:
    • Fixed Tailwind v4 canonical class warnings
    • Unified token-based styling across dashboard, 404 page, and controls

Fixed

  • Fixed mobile anti-cheat false positives on quiz pages
  • Removed render-blocking Font Awesome CSS
  • Fixed quiz timer progress bar desynchronization
  • Improved table text contrast in dark mode
  • Fixed cart badge overlay issues in header
  • Resolved multiple mobile spacing and padding inconsistencies

[0.5.5] - 2026-02-06

Added

  • About page UX improvements:
    • Updated icons in pricing and sponsorship sections
    • Renamed “Latest Contributors” to “Open Source Heroes” (en / uk / pl)
    • Improved mobile readability for disclaimers and interactive game text
    • Performance optimization: ParticleCanvas disabled on mobile devices
  • Q&A navigation improvements:
    • Category-aware Git topic navigation
    • Prevented unintended scroll on desktop pagination
  • Platform documentation updates

Changed

  • About page refinements:
    • Improved visual consistency and spacing across sections
    • Optimized theme toggle animation for smoother transitions
    • Updated LinkedIn follower count display
  • Blog layout:
    • Fixed background paddings for better responsive consistency
  • Shop backend behavior:
    • Checkout now hard-blocked when PAYMENTS_ENABLED=false
    • Early 503 response prevents order creation and inventory reservation

Fixed

  • Fixed incorrect Git topic links in Q&A cards
  • Resolved multiple mobile UI issues on About page
  • Prevented checkout edge case creating paid orders when payments are disabled
  • Improved accessibility and readability across updated UI sections

[0.5.6] - 2026-02-06

Added

  • Q&A UI enhancements:
    • Smooth staggered accordion entrance animations after data fetch
    • Shared animated loader component reused across Q&A sections
  • Leaderboard visual improvements:
    • Reused Q&A DynamicGridBackground for visual consistency
    • Enhanced title animation with gradient wave effect

Changed

  • Q&A layout refinements:
    • Removed square backdrop for cleaner visual hierarchy
    • Ensured background fills full viewport height
  • Navigation behavior:
    • Pagination now consistently resets scroll position to the top of content

Fixed

  • Fixed inconsistent scroll behavior when navigating Q&A pages
  • Improved UX predictability across desktop and mobile devices

[0.5.7] - 2026-02-12

Added

  • Monitoring & observability:
    • Production error and performance monitoring via Sentry
    • Global error boundary and release tracking
  • Security & CI:
    • Safe-chain dependency malware protection in GitHub Actions
    • Automated dependency validation on push and pull requests
  • SEO & social metadata:
    • Full Open Graph and Twitter Card support
    • Localized OG metadata and alt text
    • Canonical URL handling via metadataBase
  • Quiz platform improvements:
    • Redis caching for quiz questions to reduce database load
    • Guest warning with Login / Sign up / Continue as guest options
    • Bot protection: single verification per question attempt
  • Shop enhancements:
    • Monobank payment integration (UAH-only, feature-gated)
    • Secure webhook processing with signature validation and idempotency
    • Admin refund and cancel endpoints
  • Platform transparency:
    • Added /public/humans.txt with team, mission, and technology stack

Changed

  • Navigation & UX:
    • Added global page transition loading indicators
    • Context-aware header behavior for Blog and Shop
    • Improved mobile menu interactions and auto-close behavior
  • Leaderboard:
    • User avatars with DiceBear fallback for missing images
  • Home & SEO:
    • Home title standardized to "DevLovers"
    • Subtitle used for OG/Twitter previews
  • Authentication & routing:
    • Improved locale detection and dashboard redirect handling
    • OAuth and database configuration stability improvements

Fixed

  • Fixed missing locale handling for /dashboard redirects
  • Restored authentication flow after environment configuration issues
  • Improved handling of missing or invalid avatar data
  • Fixed OG preview URL resolution issues
  • Improved reliability of environment configuration and credentials

Performance

  • Reduced database load for quiz pages via Redis caching
  • Improved frontend loading experience during navigation

[1.0.0] - 2026-02-14

Added

  • Complete production-ready DevLovers platform:
    • Interactive Home with redesigned Hero and Features sections
    • Full Quiz learning cycle: play, results, review, and dashboard history
    • Quiz integrity system with violations counter and status badges
    • Breadcrumb navigation for quiz review flow
  • Dashboard improvements:
    • Quiz Results history with scores, percentages, and mastery status
    • User avatars with automatic fallback generation
  • Q&A improvements:
    • Next.js category enhancements and optimized loader behavior
    • Configurable pagination size (10–100 items) with URL persistence
  • Leaderboard enhancements:
    • User avatars in podium and table rows
    • Improved layout consistency across devices
  • Platform transparency:
    • Public /humans.txt with team and project information
  • Observability & monitoring:
    • Full Sentry integration for production error and performance tracking
  • CI & supply-chain security:
    • Safe-chain dependency protection in GitHub Actions
  • Shop & payments:
    • Monobank acquiring flow (UAH-only, feature-gated)
    • Webhook verification, idempotent processing, and admin operations
    • Internal Monobank janitor jobs for payment state consistency

Changed

  • Home page redesigned with improved UX, animations, and full localization
  • Header and navigation refined with contextual behavior and loading states
  • Quiz UX improvements:
    • Unified result thresholds (Study / Review / Mastered)
    • Locale switch now preserves result screen
    • Auto-scroll to Next action after answering
  • Mobile experience significantly improved across:
    • Dashboard
    • Leaderboard
    • AI Word Helper
  • SEO & social sharing:
    • Localized Open Graph and Twitter metadata
    • MetadataBase configuration for correct preview URLs
  • Product experience:
    • Multi-language product descriptions
    • Improved rendering and formatting

Fixed

  • Points mismatch between dashboard and leaderboard
  • Locale redirect issues for dashboard and quiz result pages
  • Review cache isolation to prevent cross-user data leakage
  • Quiz result locale switch losing state
  • Multiple Tailwind v4 canonical class warnings
  • Various mobile layout and interaction issues

Security

  • CI dependency scanning with Safe-chain
  • OAuth and environment configuration stabilization
  • Internal operational endpoints protected with secret-based access

Infrastructure

  • Redis caching for quiz questions and review data
  • Environment configuration cleanup and standardization
  • Improved build stability and dependency management

[1.0.1] - 2026-02-15

Added

  • Shop / Payments reliability improvements:
    • Monobank janitor map documentation as a source of truth
    • Internal Monobank janitor endpoint scaffold with strict auth and rate-limit guards
    • Post-redirect payment status UX with secure /status polling (no-store)
  • Homepage engagement:
    • Online users counter popup integrated into Hero section
    • Single fetch per visit to reduce Neon usage

Changed

  • Header responsiveness:
    • Desktop breakpoint adjusted from 1024px to 1050px
    • Reduced glow/shimmer intensity in light theme
  • Navigation and layout polish:
    • Improved loader positioning to avoid overlap with navigation
    • Optimized counter positioning logic

Fixed

  • Q&A data integrity:
    • Fixed duplicated questions in API responses
    • Added Redis cache versioning (qa:v2:*)
    • Implemented automatic deduplication and cache rewrite on inconsistent data
    • Improved pagination total count accuracy
  • Cache stability:
    • Added TTL for Q&A cache
    • Automatic cache invalidation after content seeding
  • Header layout issues after counter integration

Security

  • Hardened Monobank flows:
    • Stronger origin checks and structured logging without PII
    • Ownership protection for /orders/[id]/status (IDOR prevention)
    • Pre-production test gate improvements

Infrastructure

  • Improved Redis cache reliability for Q&A
  • Extended automated tests for caching and payment flows

[1.0.2] - 2026-02-23

Added

  • Dashboard engagement system:
    • Activity Heatmap with daily streak tracking and tooltips
    • Expanded Achievements system (24 badges across multiple categories)
    • Score distribution visualization and improved analytics
  • Profile & account management:
    • User name update with validation
    • Secure password change (bcrypt hashing)
    • Localized system notifications with Notification Center
  • Admin platform expansion:
    • Unified admin panel under /admin with collapsible sidebar
    • Quiz Admin: full create workflow via JSON upload
    • Draft → Ready → Activate publishing flow with translation validation
    • Edit existing quizzes with locale-aware editor and Redis invalidation
  • Content & learning:
    • Added SQL, PostgreSQL, MongoDB category to Q&A
  • User engagement:
    • In-app feedback form with multiple attachments
    • Sponsor recognition and GitHub star achievements
  • Shop UX:
    • “My Orders” summary card on Cart page

Changed

  • Dashboard UX:
    • Unified glassmorphism visual language across cards
    • Clickable stats sections with smooth navigation
  • Leaderboard:
    • Top 15 users with contextual ranking around current user
    • Improved sponsor styling and visual consistency
  • Header & navigation:
    • Unified dropdown styles (Notifications / Profile / Language)
  • Dependencies:
    • Upgraded Next.js to 16.1.6
  • Codebase:
    • Large-scale formatting and structural refactoring

Fixed

  • Dashboard profile logic and statistics inconsistencies
  • Notification rendering and layout issues
  • Quiz editor Save button now disabled when no changes made
  • Admin quiz cache invalidation when status changes
  • Improved mobile menu scroll locking
  • Fixed Vercel build issues and migration conflicts

Performance & Reliability

  • Improved Redis cache invalidation for quizzes
  • Optimized dashboard data fetching
  • Safer database migration handling

Security

  • Stronger password validation and confirmation flow
  • Improved server-side validation and error reporting

[1.0.3] - 2026-02-23

Fixed

  • Blog (Sanity):
    • Fixed images not rendering on Vercel production
    • Improved image optimization across blog pages and components
  • SSR hydration mismatch in AchievementBadge (client/server state sync)
  • Header hardcoded locale issues
  • Notification rendering consistency

Changed

  • Q&A UI:

    • Updated Git category tab color for stronger visual distinction from HTML
  • Header & Localization:

    • Translated all header UI strings (en / uk / pl)
    • Notifications now fully localized with locale-aware relative time
    • LanguageSwitcher and User menu labels localized
  • Dashboard UX:

    • Unified dashboard cards styling using shared dashboard-card class
    • Clickable profile stats with smooth scroll navigation
    • Improved avatar detection logic

Performance & Stability

  • Improved client-render guards using stable subscription pattern
  • Reduced hydration inconsistencies in production

[1.0.4] - 2026-02-26

Added

  • Shop shipping foundation:
    • Nova Poshta delivery support (cities, warehouses, courier)
    • Checkout shipping persistence with PII-safe snapshot
    • Async shipment label creation workflow
    • Admin shipping actions (retry label, mark shipped/delivered)
    • Shipping status and tracking in order details

Changed

  • Performance & cost optimization (Vercel):
    • Blog ISR enabled (revalidate: 3600)
    • Sanity CDN enabled globally
    • Cached blog categories via unstable_cache
    • Notification polling replaced with visibility-based refresh
    • Analytics runs only in production
    • Speed Insights removed

Fixed

  • Reduced unnecessary layout revalidation after notification actions
  • Improved cache consistency for blog content and categories

Performance & Infrastructure

  • Lower Vercel Function Invocations and CPU usage
  • Reduced origin data transfer for blog content
  • Improved overall runtime efficiency

[1.0.5] - 2026-02-26

Added

  • Auth improvements:
    • Cross-tab authentication sync via BroadcastChannel
    • Client-side auth handling in Header for faster UI updates

Changed

  • Quizzes performance:
    • Quizzes page now uses ISR (revalidate: 300)
    • User progress moved from SSR to client-side API (/api/quiz/progress)
    • URL tab sync via history.replaceState without navigation
    • GitHub stars cached in sessionStorage to prevent refetch and re-animation
  • Rendering optimization:
    • Removed force-dynamic from locale layout
    • Reduced authentication overhead and dynamic rendering
    • Replaced nested <main> structure with semantic <section>

Fixed

  • Fixed quiz timer flash when switching language
  • Fixed layout shift on quizzes page (skeleton grid during progress loading)
  • Fixed GitHub star button hover trembling
  • Fixed React 19 useRef render warning (lazy useState initializer)
  • Prevented stale auth state across tabs
  • Eliminated layout shift when switching quiz tabs

Performance

  • Reduced server load by moving auth and progress logic to client
  • Improved ISR caching efficiency for quizzes page
  • Faster navigation and more stable UI during locale and tab changes

[1.0.6] - 2026-03-01

Added

  • New learning categories with visual identity:
    • Django
    • Docker
    • Kubernetes
    • AWS
    • Azure
    • DevOps
  • Category-specific SVG icons with accent styling across tabs, pagination, and controls
  • Improved AWS icon readability in dark mode

Shop (Production Readiness)

  • Audit-driven end-to-end purchase hardening:
    • Canonical append-only event/audit system
    • Async email notifications via outbox worker
    • Persisted checkout legal consent (terms/privacy)
    • Returns & exchanges lifecycle support
    • Admin audit logs for product operations
    • Token-scoped guest order access
  • Improved Monobank webhook retry behavior
  • Added Playwright E2E coverage for Shop flows

Performance & Infrastructure

  • Reduced Neon compute usage:
    • Throttled background janitor jobs (every 30 min)
    • Partial indexes for order sweeps
    • SKIP LOCKED batching to reduce contention
  • Optimized checkout and payment status polling with backoff strategy
  • Lightweight order status view for faster client updates
  • Reduced session activity write frequency

[1.0.7] - 2026-03-08

Added

  • Blog platform migration:
    • Blog content fully migrated from Sanity → PostgreSQL
    • New Drizzle ORM query layer for blog posts, categories and authors
    • Multi-language blog support (uk / en / pl)
    • Portable Text → Tiptap JSON conversion
    • Cloudinary image hosting for blog assets
  • Wallet payments foundation:
    • Monobank Google Pay checkout support
    • Wallet payment adapter and wallet service layer
    • Payment method selection with idempotent checkout flow

Changed

  • Blog architecture:
    • Public blog routes now read entirely from PostgreSQL
    • Removed all runtime calls to api.sanity.io
    • Blog rendering switched to server component BlogPostRenderer
  • Internationalization improvements:
    • Improved locale handling for blog pages
    • Expanded translation coverage across auth and dashboard flows

Fixed

  • Fixed 500 error on blog post pages caused by pt::text() GROQ query
  • Fixed layout issues with ISR/SSG blog rendering
  • Fixed duplicate response handling in order status API
  • Improved error handling and automatic cleanup in order processing
  • Stabilized shipping status transition validation
  • Fixed missing translation keys and raw error strings

Shop & Payments

  • Stabilized checkout compatibility across Monobank and Stripe
  • Added wallet attribution support for Google Pay
  • Hardened Nova Poshta warehouse synchronization and caching
  • Improved webhook retry handling for payment flows
  • Added Google Pay fallback messaging for Monobank checkout

Performance & Infrastructure

  • Added DB indexes for blog queries
  • Optimized blog queries through Drizzle ORM
  • Reduced external API dependencies (Sanity removed from runtime)
  • Improved shipping and payment event processing reliability

[1.0.8] - 2026-03-15

Added

  • Q&A progress tracking:
    • Per-topic viewed progress based on opened accordion items
    • Progress bar and viewed counter above the question list
    • Reset action for current-topic progress
    • Viewed/bookmark persistence in localStorage
    • Viewed and bookmark indicators in accordion rows
    • Localized progress labels and reset action (uk / en / pl)
  • Local Shop smoke coverage:
    • Stable Playwright checkout/shipping smoke scenarios for local verification
    • Deterministic regression coverage for payment, shipping, and wallet flows

Changed

  • Q&A accordion UX:
    • Improved mobile layout for wrapped question titles
    • Restored chevron toggle behavior and open-state rotation
    • Fixed Q&A totals by removing text-based deduplication in the API layer
  • About page:
    • Updated LinkedIn followers fallback display to 1.8k+
  • Shop checkout and payments:
    • Enforced strict shipping/payment coupling for shippable orders
    • Payment page access now requires authorized session or valid scoped token
    • Guest payment-init flows now receive correct token scope
    • Stripe capability checks aligned across cart, checkout, and payment page
    • Monobank invoice flow separated from Monobank Google Pay flow

Fixed

  • Preserved locale during CTA navigation
  • Removed silent Stripe fallback behavior to prevent fake paid order creation
  • Closed shipment processing on refund, cancel, reverse, failure, and other terminal negative payment states
  • Hardened Monobank webhook verification, reconciliation, and wallet retry handling
  • Added validation coverage for invalid city/warehouse, locker, and courier address combinations
  • Prevented janitor cleanup from canceling reconcilable wallet attempts too early

[1.0.9] - 2026-03-22

Added

  • Full Blog Admin in the admin panel:
    • Blog post create, edit, delete, preview, publish, and schedule workflow
    • Tiptap WYSIWYG editor with headings, lists, task lists, code blocks, images, links, and sticky toolbar
    • Cloudinary image upload with preview for blog content
    • Inline author and category creation directly from the post form
    • Locale-aware preview rendering with BlogPostRenderer
    • Blog section in admin sidebar with Posts, New Post, Authors, and Categories
  • Blog content management:
    • Author CRUD with multilingual profiles, profile photo upload, and social links
    • Category CRUD with inline editing and display-order reordering
    • Admin API routes for blog posts, authors, categories, and image upload
    • Zod validation schemas for blog admin forms and mutations

Changed

  • Blog architecture and performance:
    • Replaced force-dynamic blog post rendering with ISR using shared 7-day revalidation
    • Unified cache strategy across blog list, post, category, search, and author routes
    • Cached blog queries with React cache and unstable_cache
    • Public blog pages now revalidate correctly after admin mutations
    • Blog categories on public pages now use cached query variants
  • Shop launch readiness:
    • Checkout provider resolution is now server-authoritative and fail-closed
    • Stripe refunds now enter a contained non-shippable state before reconciliation
    • Admin shipping actions now require a compatible shipment record and centralized eligibility checks
    • Disabled Monobank admin refunds and in-app return refunds for launch

Fixed

  • Fixed inconsistent blog revalidatePath patterns and missing locale-aware invalidation
  • Fixed public blog cache invalidation after post, author, and category updates
  • Removed legacy order creation paths that could persist new orders with paymentProvider='none'
  • Prevented double finalization and double restock during Stripe refund recovery flows
  • Blocked shipment queuing and admin shipping transitions for refund-contained orders
  • Updated Shop regression coverage for checkout fail-closed behavior, refunds, webhooks, and shipping guards

[1.0.10] - 2026-03-30

Added

  • Netlify runtime env resilience:
    • Build-time runtime env generation (generate-env-runtime.mjs) for server-only fallback reads
    • Generated fallback map for safe server env resolution when process.env is partially unavailable
    • Extended explicit runtime allowlist for OAuth, admin visibility, and shop status token keys
    • Hybrid server env resolution with Netlify runtime fallback support
  • Shop PDP merch-ready experience:
    • Multi-image product model with primary image and stable ordering
    • Admin product photo management with upload, reorder, primary selection, and safe removal
    • Interactive PDP gallery with thumbnail-to-main image switching
    • Localized apparel size-guide entry near size selection

Changed

  • Server env resolution:
    • Migrated remaining direct server env reads to readServerEnv(...) across auth, csrf, admin guards, layout admin visibility, and shop status-token flows
    • Added platform-safe fallback behavior for Netlify SSR/functions while keeping Vercel-first behavior intact
    • Updated build/deploy env handling to avoid runtime 502 caused by missing SSR env delivery
  • Shop launch readiness:
    • Hardened checkout provider resolution with fail-closed behavior
    • Tightened Stripe refund containment and reconciliation flows
    • Hardened shipping admin guards with centralized non-shippable eligibility rules
    • Disabled Monobank admin refunds and in-app return refunds for launch scope
  • Platform maintenance:
    • Added missing Tiptap packages required by admin blog editor build
    • Updated CODEOWNERS and refreshed About LinkedIn social-proof metric

Fixed

  • Fixed Netlify SSR runtime env gaps that caused auth/db initialization failures and site-level 5xx/502 on develop
  • Restored GitHub and Google OAuth runtime behavior on Netlify develop
  • Stabilized auth and CSRF secret resolution in SSR runtime using server-safe env reads
  • Fixed Vercel Analytics loading condition to avoid /_vercel/insights/script.js 404 on Netlify
  • Improved Redis client safety path for malformed or missing runtime configuration

[1.0.11] - 2026-04-12

Added

  • Shop launch-readiness hardening (repeat audit integration):
    • Payment correctness protections with webhook-first terminal-state handling
    • Inventory reserve/release integrity and concurrency safeguards
    • Carrier/shipment idempotency protections and explicit lifecycle safety states
    • Expanded checkout idempotency and legal-consent contract coverage
    • Operational runtime safety checks and stricter env validation for critical routes
  • Shop customer communications:
    • Transactional notifications for order_created, order_shipped, order_canceled, and order_returned
    • Fail-closed guest recipient policy and improved notification reliability at business-action boundaries
  • Shop merchandising/admin improvements:
    • Controlled post-order shipping edit flow and expanded shipment visibility
    • Better admin audit/history coverage for product and order operations
    • Size guide UX component decoupled from purchase availability on PDP
  • Platform and content:
    • New Java and Spring categories with icons, seeded data, and category accent styles
    • Seller address env support for legal/seller information surfaces

Changed

  • Commercial policy refactor (CP-01):
    • Locale now controls language only; storefront commercial behavior is policy-driven
    • UAH enforced as canonical storefront currency across locales
    • Checkout/provider selection made locale-agnostic and server-authoritative
    • Admin pricing contract aligned with UAH-required / USD-compatibility-only policy
  • Netlify SSR runtime stability:
    • Runtime env fallback chain and allowlist coverage expanded for auth, admin, and shop flows
    • OAuth provider/env resolution hardened to avoid build/runtime crashes on develop
    • Server env reads unified through readServerEnv(...) in remaining sensitive paths
  • Q&A pagination UX:
    • Replaced native per-page select with custom accessible dropdown
    • Unified page-size control visuals with pagination style
    • Dropdown behavior refined (keyboard navigation, outside click close, chevron state)

Fixed

  • Fixed footer overlap in Q&A per-page control by opening dropdown upward with higher stacking context
  • Fixed stale test helper import (TEST_LEGAL_CONSENT) by switching to runtime consent factory generation
  • Fixed OAuth build/runtime fragility by lazy-loading provider env usage
  • Fixed shop/runtime regressions around env delivery and SSR safety on Netlify develop

[1.0.12] - 2026-04-23

Added

  • New category visual support:
    • Added PHP, Laravel, C#, and .NET category styles and SVG icon mapping
    • Introduced centralized categoryRegistry as a single source of truth for category metadata and style config

Changed

  • Q&A / Quiz category architecture:
    • Refactored categoryData and categoryTabStyles generation to use shared registry-driven definitions
    • Preserved existing style/data APIs (categoryData, categoryTabStyles, getCategoryTabStyle) for compatibility across pages
  • About page social metric:
    • Updated LinkedIn followers fallback target from 1.8k+ to 2k+
    • Normalized compact-number formatting so whole thousands render as 2k+ (without .0)
  • Docs and project presentation:
    • Refreshed README screenshots and dashboard section copy
    • Updated README Blog section to reflect in-house admin workflow (not Sanity CMS)

Fixed

  • Shop cart SSR/runtime capability checks:
    • Restored fail-closed cart provider resolution behavior to prevent SSR crashes when unrelated env is missing
    • Migrated Stripe/Monobank cart capability env reads to runtime-safe server env access for Netlify
  • Category typing robustness:
    • Preserved literal slug/title types in categoryRegistry factory to avoid widening to string
  • UI polish:
    • Brightened Django category accent color for better readability on dark theme