CHANGELOG
View Source1.6.15 - 2025-12-05
Added
- Sitemap Module - Complete sitemap generation system for SEO
- XML sitemap generation following sitemaps.org protocol
- HTML sitemap with 3 display styles (hierarchical, grouped, flat)
- Automatic sitemap index for large sites (>50,000 URLs)
- Multiple content sources: Blogging, Entities, Pages, Static routes
- Router discovery - automatic detection of parent app routes
- XSL stylesheets for beautiful XML rendering (table, cards, minimal)
- ETS-based caching for fast repeated access
- Oban worker for scheduled automatic regeneration
- Admin UI for sitemap settings configuration
- Routes:
/sitemap.xml,/sitemap.html,/sitemap.xsl
Changed
- Update blogging editor to use markdown image syntax instead of custom component
1.6.14 - 2025-12-02
- Refactor Endpoint usage
- Fixes to admin languages, fixes oban implemntation and support for ipv4 and v6
- Making sure that admin panel langauge list cannot be empty
- Fixed issue with application.ex igniter implementation of oban
- Fixed issue with support for IPv4 and IPv6
- Fixed issues with dialyzer
- Fix Oban config, OAuth auto-confirm, and AWS email settings
- Fix Oban configuration loading in parent app supervisor child spec
- Add auto-confirm email for OAuth authentication
- Fix AWS settings validation and form event handling
- Fix SES configuration set creation for existing sets
1.6.13 - 2025-11-26
- Fixed issue with locales not working correctly on fresh install
1.6.12 - 2025-11-26
- Fixed locale switching to correct base codes
1.6.11 - 2025-11-25
- Fix OAuth buttons generating incorrect URLs with locale prefix
1.6.10 - 2025-11-25
- Added language dialects, more locations to timezones, graying out main menu buttons when inside submenus
- Remove critical_warmer parameter: Simplified cache initialization to load all data in single operation instead of loading critical settings first then remaining settings
- Add retry mechanism: Implement exponential backoff retry logic for empty cache results (repository not ready yet)
- Improve handle_continue: Load all settings data synchronously when sync_init is enabled, preventing overwrites from async operations
1.6.9 - 2025-11-24
- Fix critical supervisor ordering issue in application.ex
- Fixed username generation
- Improve blogging and entity UX with autosave, slug handling, and module page polish
- CRITICAL: Supervisor Ordering - Fixed startup crashes caused by incorrect supervisor order in application.ex
- PhoenixKit.Supervisor and Oban now correctly start AFTER Repo instead of before
- Added explicit positioning using
after: [repo]in Igniter installation logic - Replaced text-based supervisor injection with proper Igniter.Project.Application API
- Added automatic fix in
mix phoenix_kit.updateto correct existing installations - Prevents crashes: "Repo not ready" errors when loading Settings cache or Oban jobs
- Ensures correct order: Repo → PhoenixKit.Supervisor → Oban → Endpoint
1.6.8 - 2025-11-23
- Fix Oban configuration detection and automatic restart
- Improve status check messages to include Oban configuration
- Fix database connection check in phoenix_kit.status
1.6.7 - 2025-11-22
- Fixed redundant copies, label and database file_location row generation issue when uploading images
- Refactor Application usage and Modules names
1.6.6 - 2025-11-20
- Refactor ueberauth config usage
- DevAdd SEO module, blogging editor improvements, and navigation UX enhancements
- Media page fixes, and removal of timex
- Install igniter by default
1.6.5 - 2025-11-17
- Fixed readme versions
- Refactor Config and repository usage
- Added media selector modal window
- Improve blogging editor UX and component rendering
- Polish the featured-image selector with clearer labels, preview states, and mobile-friendly actions.
- Add LiveView + JS tooling for inserting images/videos, simplify the toolbar, and debounce content updates.
- Fix markdown rendering so block components (e.g., ) parse correctly alongside self-closing tags, ensuring inserted video snippets display as expected.
- Updated unique key to file_user_checksum instead of file_checksum, to allow duplicates but by different users
1.6.4 - 2025-11-15
Fixed
- AWS Credentials Verification - Fixed STS response parsing to support ExAws map format
- Added support for both XML string and parsed map responses from AWS STS
- Fixed
parse_sts_response/1to handle ExAws automatic XML-to-map conversion - Resolved
CaseClauseErrorwhen verifying credentials with valid AWS keys - Added comprehensive error handling for all AWS verification failure types
Changed
- AWS Region Selection UX - Streamlined region input workflow from 7 steps to 4
- Replace dropdown-only region field with text input by default
- Add optional "Load regions" button to fetch and display region dropdown
- Enable manual region entry without waiting for region list loading
- Remove requirement for double-saving credentials and region
- Update setup instructions to reflect simplified workflow
- Code Quality - Refactored AWS credentials verification handler
- Extract verification logic into separate helper functions
- Reduce cyclomatic complexity from 14 to acceptable level
- Improve code readability and maintainability
1.6.3 - 2025-11-12
Added
- Configurable Password Requirements - Comprehensive password strength validation system with customizable requirements
- Optional uppercase character requirement
- Optional lowercase character requirement
- Optional digit requirement
- Optional special character requirement (!?@#$%^&*_)
- Configurable minimum and maximum password length
- Application-wide configuration via
:password_requirementsconfig key - Default behavior maintains backward compatibility (length validation only)
Changed
- Password Validation Logic - Refactored
validate_password/2to use configurable requirements instead of hardcoded validations - User Schema Documentation - Enhanced documentation with detailed password requirements configuration examples
1.6.2 - Unreleased
Added
- Audit Logging System - Comprehensive audit trail for administrative actions with detailed context tracking
- Migration V22 Enhancement - Added audit log entries table with optimized indexes
- Added
phoenix_kit_audit_logstable for tracking administrative actions - Records admin user, target user, action type, IP address, and user agent
- JSONB metadata field for flexible additional context
- Optimized indexes for querying by user, action, and timestamp
- Composite indexes for common query patterns
- Added
- Admin Password Reset Logging - Automatic logging of password resets with full audit trail
- WHO: Admin user ID and email
- WHAT: Password reset action
- WHEN: Timestamp with microsecond precision
- WHERE: IP address of the admin
- HOW: User agent string
Changed
- Admin Password Update - Enhanced
admin_update_user_password/3to accept optional context parameter- Backward compatible - context parameter is optional
- Non-failing design - logging errors don't prevent password updates
- Records complete audit trail when context is provided
- User Form - Updated to pass admin user and IP context when updating user passwords
- New
build_audit_context/1helper extracts context from LiveView socket - Automatically captures admin user, IP address, and user agent
- Seamless integration with existing password update workflow
- New
1.6.1 - 2025-11-11
Added
- Rate Limiting System - Protection for authentication endpoints using Hammer library (login: 5/min, magic link: 3/5min, password reset: 3/5min, registration: 3/hour per email + 10/hour per IP)
- PhoenixKit.Users.RateLimiter - Module for rate limit management with admin reset/inspection functions
- Security Logging - Rate limit violations logged for monitoring
Changed
Breaking:
get_user_by_email_and_password/3now returns{:ok, user} | {:error, reason}tuple- Breaking:
register_user/2accepts optional IP parameter Breaking:
deliver_user_reset_password_instructions/2returns{:ok, _} | {:error, :rate_limit_exceeded}- Updated
generate_magic_link/1with rate limiting - Enhanced controllers and LiveViews with rate limit error handling
Fixed
- Brute-force attack, token enumeration, and email enumeration vulnerabilities
- Timing attacks with consistent response times
1.6.0 - 2025-11-11
Added
- Migration V22: Email System Improvements - Enhanced email tracking and AWS SES integration
- Added
aws_message_idfield tophoenix_kit_email_logsfor AWS SES message ID correlation - Added event timestamp fields:
bounced_at,complained_at,opened_at,clicked_at - Added partial unique index on
aws_message_id(WHERE aws_message_id IS NOT NULL) to prevent duplicates - Added composite index
(message_id, aws_message_id)for fast message correlation - Added composite index
(email_log_id, event_type)for 10-100x faster duplicate event checking - Created
phoenix_kit_email_orphaned_eventstable for tracking unmatched SQS events - Created
phoenix_kit_email_metricstable for email system metrics and monitoring
- Added
Changed
- Dual Message ID Strategy - Comprehensive documentation for email tracking
- Internal
message_id(pk_XXXXX format) - generated before sending, always unique - Provider
aws_message_id- obtained after sending, used for AWS SES event correlation - 3-tier search strategy for matching SQS events to email logs
- Enhanced debugging capabilities with both IDs stored in metadata
- Internal
Fixed
- RateLimiter compilation warnings - Resolved all Elixir compiler and Credo warnings
- Added
require Loggerto fix Logger.warning/info/error undefined warnings - Replaced
Settings.set_setting/2with correctSettings.update_setting/2function - Removed unused default value from
monitor_user/3function signature - Fixed Dialyzer warnings for nested module aliases
- Added
Technical Details
Database Schema Changes:
phoenix_kit_email_logs:
+ aws_message_id (string, nullable, unique when present)
+ bounced_at, complained_at, opened_at, clicked_at (naive_datetime)
+ Index: (aws_message_id) partial unique
+ Index: (message_id, aws_message_id) composite
phoenix_kit_email_events:
+ Index: (email_log_id, event_type) composite (10-100x performance)
phoenix_kit_email_orphaned_events: NEW
+ id (pk)
+ aws_message_id, event_type, event_timestamp
+ raw_data (map/jsonb)
+ matched_at (when orphan matched to log)
phoenix_kit_email_metrics: NEW
+ id (pk)
+ metric_name, metric_value
+ dimensions (map/jsonb for filtering)
+ recorded_at (timestamp)Event Processing Flow:
- Search by internal message_id - Primary lookup (fastest)
- Search by aws_message_id - Secondary lookup for SQS events
- Create orphaned event - If no match found, store for future correlation
- Match orphans periodically - Background job to link late-arriving logs
Benefits:
- No false positives in duplicate detection (was catching different events with same type)
- 10-100x faster duplicate checking with composite indexes
- Reliable event matching with dual-ID strategy
- Complete audit trail with orphaned events tracking
- Better debugging with aws_message_id correlation
1.5.0 - 2025-11-10
Added
- Migration V21: Enhanced Security - Indexes on security-critical fields for performance
- Index on
phoenix_kit_users(email)for faster authentication queries - Index on
phoenix_kit_user_tokens(user_id)for efficient token lookups - Index on
phoenix_kit_sessions(user_id)for session management - Index on
phoenix_kit_sessions(token)for active session verification - Index on
phoenix_kit_user_role_assignments(user_id)for role checks - Index on
phoenix_kit_settings(key)for settings lookups
- Index on
Changed
- Performance: Authentication and authorization queries optimized with proper indexing
- Security: Faster session validation and token verification
1.4.0 - 2025-11-09
Added
- Idle Session Timeout - Automatic logout after 30 minutes of inactivity
- Configurable via
:idle_timeout_minutes(default: 30 minutes) - Warning modal appears 2 minutes before logout
- Countdown timer shows remaining time
- Optional auto-renewal on user activity
- Grace period for network latency (3 seconds)
- Configurable via
Changed
- Session Management - Enhanced with activity tracking
- New
last_activity_atfield in sessions table - Automatic updates on page navigation and interactions
- LiveView integration for real-time activity monitoring
- New
Fixed
- Session Security - Inactive sessions now automatically expire
1.3.0 - 2025-11-08
Added
- Session Fingerprinting - Enhanced security with device fingerprinting
- User agent tracking for device identification
- IP address monitoring for location changes
- Browser fingerprint detection using ClientJS
- Session invalidation on suspicious activity
- Automatic security alerts for users
Changed
- Session Schema - New fields for fingerprinting
user_agent- Browser and device informationip_address- Connection IP addressfingerprint- Unique browser fingerprint hash
Fixed
- Session Hijacking Protection - Multiple security enhancements
- Detects session stealing attempts
- Validates device consistency
- Monitors IP address changes
- Alerts users to suspicious activity
1.2.13 - 2025-09-29
Added
- Email Template Management System - Complete database-driven template system with CRUD operations and variable substitution
- Template Editor Interface - Full-featured LiveView editor with HTML structure, preview, and test functionality
- Template List Interface - Comprehensive template management with search, filtering, and status management
- Mix Task for Template Seeding - New
mix phoenix_kit.seed_templatestask for creating default system templates - Migration V15 - Database tables for email template storage with system template protection
- Version Tracking in Migrations - Enhanced migration system with PostgreSQL table comments for version tracking
- Debug Logging for Email Metrics - Enhanced error handling and debugging for chart data preparation
Changed
- Mailer Integration - Updated to use database templates with fallback to hardcoded templates for backward compatibility
- User Notifier - Enhanced to support template-based email generation with variable substitution
- Email Metrics Dashboard - Improved chart data initialization and error handling for better reliability
- Email Templates Search - Simplified search form layout for better user experience
Fixed
- Email Metrics Chart Data - Fixed initialization errors and null value handling in chart data preparation
- Migration Rollback - Added proper version tracking for migration rollback operations
- Linter Issues - Resolved alias ordering and function complexity issues for better code quality
- Pre-commit Hooks - Enhanced pre-commit validation with proper error handling
1.2.12 - 2025-09-27
Added
- Complete Email System Architecture - New email_system module replacing legacy email_tracking with enhanced AWS SES integration and comprehensive event management
- AWS SES Configuration Task - New
mix phoenix_kit.configure_aws_sestask for automated AWS infrastructure setup with configuration sets, SNS topics, and SQS queues - Enhanced SQS Processing - New Mix tasks for queue processing and Dead Letter Queue management:
mix phoenix_kit.process_sqs_queue- Real-time SQS message processing for email eventsmix phoenix_kit.process_dlq- Dead Letter Queue processing for failed messagesmix phoenix_kit.sync_email_status- Manual email status synchronization
- V12 Migration - Enhanced email tracking with AWS SES message ID correlation and specific event timestamps (bounced_at, complained_at, opened_at, clicked_at)
- Email System LiveView Interfaces - Reorganized email management interfaces with improved navigation and functionality
- Extended Event Support - Support for new AWS SES event types: reject, delivery_delay, subscription, and rendering_failure
- Enhanced Status Management - Expanded email status types including rejected, delayed, hard_bounced, soft_bounced, and complaint
Changed
- Email Architecture Refactoring - Complete transition from email_tracking to email_system module for better organization and AWS SES integration
- Email Event Processing - Enhanced event handling with provider-specific data extraction and improved error recovery patterns
- Database Schema - Updated email logging with aws_message_id field and specific timestamp tracking for different event types
- LiveView Organization - Reorganized email-related LiveView modules under email_system namespace for better structure
Removed
- Legacy Email Tracking Module - Removed entire email_tracking module and all associated files in favor of new email_system architecture
- Old Email LiveView Interfaces - Removed legacy email_tracking LiveView components and templates
- Deprecated Email Processing - Removed outdated email event processing and archiver implementations
Fixed
- Email System Integration - Improved integration patterns for better performance and reliability
- SQS Message Processing - Enhanced message processing with proper error recovery and retry mechanisms
- Email Event Handling - Better handling of AWS SES events with improved message parsing and validation
1.2.11 - 2025-09-24
Added
- AWS SQS Integration - Complete SQS worker and processor for real-time email event processing from AWS SES through SNS
- Manual Email Sync - New
sync_email_status/1function to manually fetch and process SES events for specific messages - DLQ Processing - Dead Letter Queue support for handling failed messages with comprehensive retry mechanisms
- Mix Tasks for Email System:
mix phoenix_kit.email.send_test- Test email sending functionality with system optionsmix phoenix_kit.email.debug_sqs- Debug SQS messages and email system with detailed diagnosticsmix phoenix_kit.email.process_dlq- Process Dead Letter Queue messages and handle stuck events
- Email System Supervisor - OTP supervision tree for SQS worker management with graceful startup/shutdown
- Application Integration Module - Enhanced integration patterns for email system initialization
Improved
- Email Interceptor - Enhanced with provider-specific data extraction for multiple email services (SendGrid, Mailgun, AWS SES)
- Email System API - Added manual synchronization and event fetching capabilities for both main queue and DLQ
- Mailer Module - Improved integration with email system and enhanced error handling patterns
- Email Event Processing - Better handling of AWS SES events with improved message parsing and validation
Fixed
- Email Status Processing - Improved handling of delivery confirmations, bounce events, and open management
- SQS Message Handling - Enhanced message processing with proper error recovery and retry logic
Added
- Update Task Enhancement - Added
--yes/-yflag for skipping confirmation prompts and automatic migration execution
1.2.10 - 2025-09-21
Improved
- Authentication UI Consistency - Unified design across all authentication pages (login, registration, magic link, account settings) with consistent card layouts, shadows, and spacing
- Icon Integration - Added icon slot support to input component enabling consistent iconography throughout forms using PhoenixKit's centralized icon system
- User Experience - Enhanced interaction feedback with hover scale animations and focus transitions on buttons and form elements
- Visual Cohesion - Removed background color inconsistencies and standardized visual hierarchy across all authentication flows
- Development Documentation - Comprehensive contributor guide with Phoenix built-in live reloading (primary method), custom FileWatcher fallback, GitHub workflow, and complete CONTRIBUTING.md documentation
Added
- Magic Link Integration - Added Magic Link authentication option to login page with elegant divider and themed button
- Account Settings Redesign - Complete visual overhaul of settings page to match authentication pages design language
- Flash Message Auto-dismiss - Implemented automatic flash message dismissal after 10 seconds for improved user experience
- Form Field Icons - Email, password, and profile fields now display contextual icons (email, lock, user profile) for better visual clarity
Changed
- Magic Link Page Layout - Redesigned magic link page with card-based layout matching login and registration pages
- Settings Page Structure - Restructured account settings with centered layout, improved typography, and consistent spacing
- Input Component Enhancement - Extended core input component to support icon slots while maintaining backward compatibility
1.2.9 - 2025-09-18
Added
- Auto-dismiss Flash Messages - Flash messages now automatically dismiss after 5 seconds for improved UX
- Smooth Animations - Added fade-out transition effects for flash message dismissal
- Manual Dismiss - Retained close button functionality for immediate dismissal
Changed
- Flash Message Component - Enhanced with JavaScript hooks for auto-dismiss functionality
- Timer Behavior - Timer resets on mouse hover, pauses dismissal until mouse leaves
1.2.8 - 2025-09-15
Added
- File Watcher System - Custom file watching for automatic compilation and reloading during development
- Live Reload Support - Real-time updates when PhoenixKit files change in parent applications
- Development Mix Tasks:
mix phoenix_kit.dev- Start development mode with file watchingmix phoenix_kit.dev.watch- Watch specific paths for changesmix phoenix_kit.dev.compile- Manual compilation trigger
Improved
- Developer Experience - No need to restart server after PhoenixKit changes
- Integration Testing - Easier to test PhoenixKit changes in parent applications
1.2.7 - 2025-09-12
Added
- Role System - Complete role-based access control
- Three system roles: Owner, Admin, User
- Many-to-many role assignments with audit trail
- First registered user automatically becomes Owner
- Admin dashboard with system statistics
- User management interface
- Admin Dashboard - Built-in dashboard at
{prefix}/admin/dashboard - User Management - Complete interface at
{prefix}/admin/users
Changed
- User Registration - Integrated with role system
- Authentication Scope - Enhanced with role checks
1.2.6 - 2025-09-08
Added
- Settings System - Database-driven configuration management
- Time zone configuration (UTC-12 to UTC+12)
- Date format preferences (6 formats supported)
- Time format options (12/24 hour)
- Settings Interface - Admin settings page at
{prefix}/admin/settings - Date Utilities -
PhoenixKit.Utils.Datemodule for formatting
Fixed
- Date Display - Consistent formatting across all pages
1.2.5 - 2025-09-05
Added
- Magic Link Authentication - Passwordless login via email
- Magic Link Routes - Integrated into router macro
Changed
- Email Templates - Added magic link email template
1.2.4 - 2025-09-02
Fixed
- Layout Integration - Improved parent app layout support
- Asset Loading - Better handling of CSS/JS assets
1.2.3 - 2025-08-30
Added
- Theme System - daisyUI integration with 35+ themes
- Theme Configuration - Customizable via application config
1.2.2 - 2025-08-25
Fixed
- Migration System - Improved idempotent operations
- Prefix Support - Better PostgreSQL schema isolation
1.2.1 - 2025-08-20
Added
- Professional Migrations - Oban-style versioned migration system
- Update Task -
mix phoenix_kit.updatefor existing installations
1.2.0 - 2025-08-15
Added
- Installation System - Igniter-based installation for new projects
- Repository Auto-detection - Automatic Ecto repo discovery
Changed
- Breaking: New installation process via
mix phoenix_kit.install
1.1.0 - 2025-08-10
Added
- Email Confirmation - User email verification workflow
- Password Reset - Secure password recovery via email
1.0.0 - 2025-08-05
Added
- Initial Release - Complete authentication system
- User Schema - Email-based authentication with bcrypt
- Session Management - Secure session handling
- LiveView Components - Registration, login, account settings