Search documentation of phoenix_kit

# CHANGELOG

View Source

## 1.6.19 - 2025-12-09

- Add smart timestamp URL handling for blog posts

## 1.6.18 - 2025-12-09

- Fix blogging editor issues and add publish button

## 1.6.17 - 2025-12-09

- Fix blog language switcher and update entities module examples (Fix public blog language switcher to only show languages with actual published content, improve editor JS initialization, and replace blog post examples with brand examples in the entities module to avoid confusion.)

## 1.6.16 - 2025-12-07

- Move path functions to the corresponding module
- Improve blog language switcher UI and URL handling
- Remove static Ueberauth configuration requirements
  - OAuth is now fully dynamic - no compile-time Ueberauth config needed
  - Providers loaded from database at runtime via OAuthConfigLoader

## 1.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.update` to 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/1` to handle ExAws automatic XML-to-map conversion
  - Resolved `CaseClauseError` when 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_requirements` config key
  - Default behavior maintains backward compatibility (length validation only)

### Changed

- Password Validation Logic - Refactored `validate_password/2` to 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_logs` table 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
- 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/3` to 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/1` helper extracts context from LiveView socket
  - Automatically captures admin user, IP address, and user agent
  - Seamless integration with existing password update workflow

## 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/3` now returns `{:ok, user} | {:error, reason}` tuple

- Breaking: `register_user/2` accepts optional IP parameter

- Breaking: `deliver_user_reset_password_instructions/2` returns `{:ok, _} | {:error, :rate_limit_exceeded}`

- Updated `generate_magic_link/1` with 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_id` field to `phoenix_kit_email_logs` for 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_events` table for tracking unmatched SQS events
  - Created `phoenix_kit_email_metrics` table for email system metrics and monitoring

### 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

### Fixed

- RateLimiter compilation warnings - Resolved all Elixir compiler and Credo warnings
  - Added `require Logger` to fix Logger.warning/info/error undefined warnings
  - Replaced `Settings.set_setting/2` with correct `Settings.update_setting/2` function
  - Removed unused default value from `monitor_user/3` function signature
  - Fixed Dialyzer warnings for nested module aliases

### 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:

1. Search by internal message_id - Primary lookup (fastest)
2. Search by aws_message_id - Secondary lookup for SQS events
3. Create orphaned event - If no match found, store for future correlation
4. 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

### 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)

### Changed

- Session Management - Enhanced with activity tracking
  - New `last_activity_at` field in sessions table
  - Automatic updates on page navigation and interactions
  - LiveView integration for real-time activity monitoring

### 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 information
  - `ip_address` - Connection IP address
  - `fingerprint` - 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_templates` task 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_ses` task 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 events
  - `mix phoenix_kit.process_dlq` - Dead Letter Queue processing for failed messages
  - `mix 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/1` function 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 options
  - `mix phoenix_kit.email.debug_sqs` - Debug SQS messages and email system with detailed diagnostics
  - `mix 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/-y` flag 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 watching
  - `mix phoenix_kit.dev.watch` - Watch specific paths for changes
  - `mix 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.Date` module 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.update` for 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

← Previous Page PhoenixKit - The Elixir Phoenix Starter Kit for SaaS apps
Next Page → PhoenixKit Integration Guide