CHANGELOG
View Source1.4.4 - 2025-10-23
Fixed
- Refactor parent project modules identification
- Update OAuth settings UI with new components
- Updated igniter script with more bulletproofing
1.4.3 - 2025-10-22
Fixed
- Installer Robustness - Universal compatibility with complex config files
- Added support for runtime.exs with Dotenvy and environment variables
- Comprehensive error handling prevents crashes on complex syntax
- Smart import_config detection ensures proper configuration order
- Multiple fallback strategies (AST parsing → File operations → manual instructions)
- Duplicate Prevention - Installation now truly idempotent
- Added duplicate detection for all configurations (repo, layout, mailer, Swoosh)
- Integration plug no longer duplicates on multiple installs
- All config checks prevent adding same configuration twice
- Igniter Tracking - Fixed file change tracking warnings
- All file modifications now properly tracked by Igniter
- Eliminated "file changed since read" warnings
Changed
- Error Recovery - Graceful degradation with clear user feedback
- All installer modules wrapped in comprehensive try/rescue blocks
- Clear manual configuration instructions when automatic fails
- IO.warn messages for debugging failed operations
1.4.2 - 2025-10-22
Fixed
- We removed unecessary catch all for routing
- Fixed issue with runtime not working when installing with project is setup to use .env files
1.4.1 - 2025-10-21
Added
- OAuth User Settings - Connected Accounts management interface in user settings
- View all linked OAuth providers (Google, Apple, GitHub, Facebook)
- Connect additional OAuth accounts to existing user profile
- Disconnect OAuth providers with security validation
- User-friendly instructions for OAuth account linking
- Email verification matching for OAuth connections
- OAuth Setup Instructions - In-app Google OAuth configuration guide
- Step-by-step Google Cloud Console setup instructions
- Callback URL display for easy copying
- Collapsible instructions panel in admin settings
- Reverse proxy configuration examples (nginx/apache)
Changed
- OAuth Infrastructure - Automatic HTTPS detection and deployment improvements
- X-Forwarded-Proto header detection for reverse proxies
- OAuth callbacks work out-of-box behind nginx/apache
- Manual oauth_base_url override for edge cases
- OAuth2.AccessToken serialization in JSONB fields
- Email UI - Enhanced table components
- Replace HTML tables with reusable
.table_defaultcomponent - Consistent table styling across email details
- Replace HTML tables with reusable
Fixed
- OAuth Integration - EnsureOAuthScheme plug integration
- Code Quality - Credo readability improvements in OAuth modules
- Icon Management - Centralized all OAuth icons to Core.Icons module
Upgrade Notes
- OAuth providers require matching email addresses between provider and PhoenixKit account
- Users can manage connected accounts at
/users/settings - At least one authentication method (password or OAuth) required for account access
1.4.0 - 2025-10-17
Added
- Pages Content System - Full Markdown-driven site with admin file navigator, metadata-aware editor, and public rendering at
/pages/*routes - User Custom Fields - WordPress ACF-like JSONB custom fields system with column filtering, reordering, and management interface
- Collaborative Editing - FIFO locking system for entities with real-time presence tracking and PubSub event broadcasting
- Content Language Module - Multi-language support with language switcher, locale routing, and language management interface
- User Settings - Default user status on creation, automatic email confirmation for first user, timezone settings with geolocation IP tracking
Changed
- Email Operations - Sender profile configuration, one-click AWS infrastructure setup, prioritized credentials (Settings DB → ENV)
- Developer Experience - OAuth/email dependencies now mandatory,
mix phoenix_kit.* --helpsupport,IgniterCompatfor cleaner installs - Navigation - Admin navigation uses LiveView navigate for instant transitions, disabled long-polling for faster cleanup
Fixed
- Custom Fields - Column updates when deleting custom fields
- Critical Bugs - Ecto.SubQueryError in user role filtering, OAuth checkbox errors, PhoenixKit.Config usage issues
- Email System - AWS credential bugs, SQS message loss, chart initialization, idempotency/deduplication improvements
- Code Quality - Cleaned up Dialyzer/Credo warnings, improved logging, removed excessive debug output
Upgrade Notes
- Run
mix deps.getto install mandatory OAuth/email packages - Enable Pages module from
/admin/modulesto use content management - Custom fields available in user management submenu
1.3.5 - 2025-10-16
Added
- Pages Module - File-based content management system spanning admin and public workflows
- Tree-based navigator in
/admin/pagesfor creating, moving, duplicating, and deleting Markdown content - Full-screen editor with metadata controls (status, timestamps) and unsaved-change safeguards
- Public rendering pipeline that serves published pages at
/pages/*and the catch-all root route
- Tree-based navigator in
- Email Sender Configuration - Dynamic from_email and from_name settings via admin interface
- New Sender Configuration form at
/admin/settings/emails - 3-tier priority system: Settings DB → Config → Defaults
- Live preview showing how emails will appear to recipients
- All outgoing emails now use dynamic sender information
- Settings update immediately without restart
- New Sender Configuration form at
Fixed
- Email Dashboard Chart Initialization - Resolved chart rendering issues on initial page load
- Added Promise-based Chart.js library loading with retry mechanism
- Implemented event buffering for chart data when charts not ready
- Enhanced lifecycle handling with multiple LiveView events
- Added exponential backoff retry (up to 5 attempts)
- Charts now reliably render even with slow network conditions
- Code Quality Issues - Fixed Dialyzer warnings and Credo recommendations
- Resolved nested module aliasing warnings across 26 files
- Fixed function complexity issues (cyclomatic complexity reduced)
- Improved code efficiency with Enum.map_join instead of map + join
- Fixed "last clause in with is redundant" patterns
- Alphabetized module aliases for better organization
Improved
- Documentation - Reduced CLAUDE.md to core guidance and moved module-specific content into Emails/Pages/Entities READMEs plus a new OAuth & Magic Link guide
- Installer Experience - Added an
IgniterCompathelper so installer modules compile quietly even when Igniter isn't installed
1.3.4 - 2025-10-15
Added
- AWS Infrastructure Automation - One-click AWS email infrastructure setup from admin web interface
- New PhoenixKit.AWS.InfrastructureSetup module for automated resource creation
- Creates SNS Topic, SQS Queues, DLQ, and SES Configuration Set with one click
- Idempotent operations (safe to run multiple times)
- Web interface at
/admin/settings/emailswith "Setup AWS Infrastructure" button - Auto-fills AWS settings form with created resource details
- Added
ex_aws_sns ~> 2.3dependency for SNS operations
- Mix Tasks Help System - Comprehensive
--helpflag support for installation and update tasksmix phoenix_kit.install --help- Detailed installation options with examplesmix phoenix_kit.update --help- Update task documentation with CI/CD guidelines- Usage examples, option descriptions, and troubleshooting tips
- Auto-detection capabilities explanation
- Public AWS Credentials API - Centralized AWS credentials management with smart fallback
PhoenixKit.Emails.aws_configured?()- Public function for checking AWS setup- Settings Database as primary source, Environment Variables as fallback
- Improved error messages mentioning both Web UI and ENV configuration
Changed
- AWS Credentials Priority - Settings Database now takes precedence over Environment Variables
- Primary: Settings Database (runtime configuration via Web UI)
- Fallback: Environment Variables (for production secrets)
- Users can configure credentials via Web UI without ENV duplication
- Maintains backward compatibility for ENV-only deployments
- Documentation Updates - Comprehensive guide for AWS setup and credentials management
- CLAUDE.md expanded with 540+ new lines
- Added AWS Credentials Priority section with configuration scenarios
- Removed obsolete config-based email configuration examples
- Added Installation and Update help system documentation
Fixed
- AWS Credentials Configuration Bug - Fixed issue where Settings DB credentials were ignored
get_sqs_config()now uses helper functions with Settings DB → ENV fallbackhas_aws_credentials()properly checks both Settings DB and ENV- SQS Worker now respects Web UI configured credentials
- Test Email URLs - Fixed test email links to use site_url from settings instead of localhost
1.3.3 - 2025-10-14
Changed
- Dependency Management - Made OAuth authentication dependencies mandatory instead of optional
ueberauth,ueberauth_google,ueberauth_apple, andueberauth_githubare now required dependencies- Ensures OAuth functionality works out-of-the-box without manual dependency configuration
- Simplifies installation process for new users
- Email System Dependencies - Added required dependencies for complete email functionality
gen_smtp- Required for Amazon SES SMTP email adaptersaxy- Required for AWS SQS XML response parsingfinch- HTTP client for AWS API communication (already included)- Ensures complete email system support without additional configuration
- Improves reliability of email delivery and event tracking through AWS SES/SQS
Fixed
- AWS Credentials Configuration - Fixed critical issue where AWS credentials entered via Web UI were ignored
- Problem: Settings Database credentials were not being used, system only checked Environment Variables
- Solution: Updated
get_sqs_config()to use Settings DB → ENV fallback pattern - Updated
has_aws_credentials()to properly check both Settings DB and ENV - Made
aws_configured?()public function for use across modules - Enhanced error messages to mention both Web UI and ENV configuration methods
- Added comprehensive documentation in CLAUDE.md about credentials priority system
Improved
- Settings DB Priority System - Clarified and enforced credentials configuration priority
- Primary: Settings Database (runtime configuration via Web UI at
/admin/settings/emails) - Fallback: Environment Variables (for production secrets and legacy deployments)
- Users can now configure credentials via Web UI without ENV duplication
- Maintains backward compatibility for ENV-only deployments
- Primary: Settings Database (runtime configuration via Web UI at
Migration Notes
- Projects upgrading from 1.3.2 must run
mix deps.getto install new required dependencies - OAuth features now work automatically without manual dependency installation
- Amazon SES email adapter now fully functional without additional setup
- AWS credentials can now be configured via Web UI; ENV variables optional
1.3.2 - 2025-10-10
Fixed
Critical: Email System SQS Message Loss Bug - Fixed critical bug where manual email status sync was deleting ALL messages from SQS queue, including non-matching ones
- Issue #1: Non-matching messages now stay in queue for normal SQS worker processing
- Prevents permanent data loss of delivery events from AWS SES
Email Event Deduplication - Added deduplication for events from multiple queues
- Issue #2: Events from both SQS and DLQ are now deduplicated by message_id + event_type
- Prevents duplicate event records when same event exists in both queues
Email Event Idempotency - Enhanced idempotency checks for all event types
- Issue #3: Added duplicate prevention for bounce, complaint, and reject events
- Completes idempotency coverage (delivery, open, click already had checks)
- Prevents duplicate events during retry scenarios and race conditions
SQS Polling Optimization - Reduced AWS API calls by up to 80%
- Issue #4: Manual sync now stops after first match instead of polling all batches
- Saves API costs and reduces latency (from 10s to 2s average)
System Settings Integration - Fixed hardcoded values in manual sync
- Issue #5: Now uses
get_sqs_max_messages()andget_sqs_visibility_timeout()from settings - Issue #6: Visibility timeout increased from 30s to system default (300s)
- Prevents race conditions during long-running operations
- Issue #5: Now uses
Improved
Error Logging - Stacktrace formatting improved for better debugging
- Issue #7: Uses
Exception.format_stacktrace()for readable log output
- Issue #7: Uses
Code Quality - Removed redundant
require Loggerstatements- Issue #8: Single module-level
require Loggerinstead of 11 duplicate requires - Cleaner codebase following Elixir best practices
- Issue #8: Single module-level
Technical Details
- Modified files:
lib/phoenix_kit/emails/emails.ex(77 changes)lib/phoenix_kit/emails/sqs_processor.ex(66 changes)
- All changes verified with successful compilation
- Based on comprehensive code review identifying 8 issues (1 critical, 2 high, 3 medium, 2 low priority)
1.3.1 - 2025-10-07
### Fix: Admin Role Access with Real-time Scope Refresh Implemented a PubSub-based scope refresh system that updates sessions in real-time without forcing logouts:
- New Module:
PhoenixKit.Users.ScopeNotifiermanages user-specific PubSub topics for role changes - LiveView Integration: Sessions automatically subscribe to their user's topic and rebuild the cached scope when roles change
- Admin Demotion Handling: Users who lose admin privileges are immediately redirected from admin pages with clear error messaging
- Transaction Safety: Role mutations use broadcast flags to prevent partial-state notifications during database transactions
Additional Improvements:
- Better Error Messages: Now distinguishes between "not logged in" vs "logged in but insufficient role" scenarios
- Subscription Lifecycle: Proper subscription management when users switch or sessions end
- Safe User Fetching: Added
get_user/1helper that returnsnilinstead of raising exceptions
Technical Details:
- Broadcasts happen on
phoenix_kit:user_scope:#{user_id}topics - LiveViews attach a
:handle_infohook to process{:phoenix_kit_scope_roles_updated, user_id}messages - Scope refresh compares old vs new admin status to trigger redirects only when necessary
- Edge cases handled: user deletion mid-session, owner role protection, non-admin page refreshes
1.3.0 - 2025-10-06
Added
- Magic Link Registration System - Passwordless two-step registration via email
- New
PhoenixKit.Users.MagicLinkRegistrationcontext for registration link management - Magic link request LiveView at
{prefix}/users/register/magic-link - Registration completion LiveView at
{prefix}/users/register/complete/:token - Configurable expiry time (default: 30 minutes)
- Automatic email verification on completion
- Referral code support in registration flow
- Database V16 migration: Modified tokens table to allow null user_id for magic_link_registration context
- Check constraint ensuring user_id required for all non-registration token contexts
- New
- OAuth Provider Validation - Enhanced OAuth request handling with configuration checks
- Provider existence validation before authentication flow
- Helpful error messages when OAuth not configured or provider not found
- Debug logging for OAuth authentication flow
- Graceful fallback to login page with user-friendly error messages
Changed
- OAuth Dependencies Made Optional - OAuth authentication dependencies (
ueberauth,ueberauth_google,ueberauth_apple) are now marked as optional- Reduces dependency bloat for applications not using OAuth
- Applications wanting OAuth must explicitly add dependencies to their
mix.exs - Detailed setup instructions added to CLAUDE.md with step-by-step configuration guide
- Improved referral code handling in OAuth flow with safe fallback when ReferralCodes module not loaded
Improved
- OAuth Documentation - Comprehensive setup guide with environment variable configuration
- Clear dependency installation instructions
- Provider configuration examples for Google and Apple Sign-In
- Environment variable setup guide for development and production
- Migration notes for V16 oauth_providers table and magic link registration
Fixed
- Dialyzer Warnings - Updated line number references for OAuth controller pattern matching
- Entities Menu Navigation - Fixed main Entities menu staying selected when clicking entity submenus by adding
disable_active={true}attribute - New Nav Bar - Added new top nav bar with update interface for comfort and ease of use
UI/UX Improvements
- Hero Icons Migration - Migrated modules page to use Heroicons for consistent icon system
- Replaced custom icon components with hero-icons:
hero-arrow-left,hero-cog-6-tooth,hero-users,hero-envelope,hero-information-circle - Consistent sizing and theming across dashboard and modules pages
- Replaced custom icon components with hero-icons:
1.2.14 - 2025-09-30
Added
- Email Queue LiveView - Complete real-time queue monitoring interface with system status, rate limit tracking, and failed email management
- System status cards showing online status, daily sent count, failed emails (24h), and retention settings
- Rate limit status display with visual progress bars for global, recipient, sender limits and blocklist statistics
- Failed emails management table with individual retry and bulk operations support
- Recent activity table displaying last 20 emails with delivery, open, and click event badges
- Auto-refresh every 10 seconds for real-time monitoring
- Bulk retry and delete operations with confirmation workflow
- Email Blocklist LiveView - Full-featured blocklist management interface with comprehensive filtering and bulk operations
- Statistics dashboard showing total blocks, active blocks, and expired blocks
- Advanced search and filtering by email address, reason, and status (active/expired)
- Add block form with support for temporary blocks (expiration dates) and multiple block reasons
- CSV import/export functionality for bulk blocklist management
- Bulk operations: remove selected addresses and export selected to CSV
- Pagination support (50 entries per page) with navigation controls
- Auto-refresh every 30 seconds with manual refresh option
- Visual status indicators for active and expired blocks
- Template-Mailer Integration - Production-ready template system integration with automatic tracking
- New
PhoenixKit.Mailer.send_from_template/4main API for sending templated emails - Convenience wrapper
PhoenixKit.Emails.Templates.send_email/4for cleaner API - Automatic template loading by name with status validation
- Variable substitution with template rendering
- Automatic usage tracking (usage_count and last_used_at updates)
- EmailLog system integration for delivery tracking
- Support for custom from addresses, reply-to, and metadata
- Comprehensive error handling (template_not_found, template_inactive)
- New
- RateLimiter Blocklist API - Three new public API methods for blocklist management
list_blocklist/1- Query blocklists with filtering (search, reason, status), sorting, and paginationcount_blocklist/1- Count blocked emails with optional filtersget_blocklist_stats/0- Retrieve blocklist statistics including total, active, expired, and by-reason breakdowns
- Emails.delete_log/1 - New public API method for email log deletion with proper error handling
- Email Headers Management - Complete headers tracking system with AWS SES integration
- New
email_save_headerssetting to control headers saving behavior - Headers automatically populated from AWS SES events via SQS processor
- Headers extracted from all SES event types (send, delivery, bounce, complaint, open, click, reject, delay, subscription)
- New API methods:
save_headers_enabled?(),set_save_headers(enabled) - Admin UI toggle for enabling/disabling headers collection
- Headers button in email details hidden when no headers exist
- New
- Emails Advanced Settings - Expanded configuration API for lifecycle and monitoring
set_compress_after_days(days)- Configure email body compression timing (7-365 days)set_s3_archival(enabled)- Enable/disable S3 archival for old email dataset_cloudwatch_metrics(enabled)- Toggle CloudWatch metrics integrationset_sqs_max_messages(count)- Configure SQS polling batch size (1-10 messages)set_sqs_visibility_timeout(seconds)- Set SQS message visibility timeout (30-43200 seconds)- Enhanced Emails Settings LiveView with compression, archival, CloudWatch, and SQS controls
Changed
- Template Editor - Enhanced with test send and draft save capabilities
- Test send functionality now available in both new and edit modes (previously edit-only)
- New "Save as Draft" button in creation mode for saving incomplete templates
- Smart status handling: regular save creates active templates, draft save creates draft templates
- Improved user experience allowing template testing before final save
- Template Variable System - Complete overhaul with automatic management
- Automatic variable extraction from template content (subject, html_body, text_body)
- Smart default descriptions for 20+ common variables (user_name, email, url, etc.)
- Inline editing of variable descriptions with real-time updates
- Variables automatically added to changeset during validation and save
- Removed manual "Add" button workflow in favor of automatic detection
- Visual improvements with better empty states and usage instructions
- Template Editor Preview - Iframe-based isolation for template preview
- HTML preview now rendered in sandboxed iframe to prevent style leakage
- Template styles no longer affect editor UI layout
- Automatic height adjustment based on content
- Improved security with sandbox restrictions
- Template Form Validation - Fixed changeset handling and error display
- Corrected form binding from nested map to direct changeset
- Fixed error extraction using
Keyword.getinstead ofget_in - Applied fixes to all 8 form fields (name, slug, display_name, category, status, description, subject, html_body, text_body)
- Template Slug Auto-generation - Improved logic for reliable slug creation
- Moved slug generation before validation in changeset pipeline
- Enhanced to check both changeset changes and existing field values
- Handles both nil and empty string cases properly
- Made slug field visible on editor form with helper text
Fixed
- Template Creation Errors - Resolved Access.get/3 function clause errors in template editor forms
- Variable Description Editing - Fixed inability to edit variable descriptions after auto-addition
- Template Editor Modal - Removed unnecessary modal step in template creation workflow
- Slug Validation - Fixed "slug can't be blank" errors with improved auto-generation timing
- Code Quality Issues - Fixed all compiler warnings, Credo issues, and Dialyzer errors
- Fixed nested module aliasing in SQS processor (Credo software design warning)
- Removed Logger metadata keys not found in config (compiler warnings)
- Fixed nested code depth issue by extracting helper function (Credo refactoring warning)
- Removed unreachable pattern match clause in email interceptor (Dialyzer error)
Improved
- Emails Code Quality - Enhanced error handling and logging across emails modules
- SQS Processor Architecture - Refactored headers update logic with proper function extraction and reduced nesting depth
- LiveView Performance - Optimized data loading and real-time updates in queue and blocklist interfaces
- User Experience - Streamlined template creation and management workflows
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
- Automatic Variable Extraction - Smart detection and extraction of template variables with intelligent descriptions
- Smart Variable Descriptions - Automatic mapping of common template variables to user-friendly descriptions
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
- Template Editor Workflow - Simplified template creation process with automatic variable detection and validation
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
- Template Slug Generation - Fixed auto-generation logic for better handling of template names and slugs
- Template Validation Flow - Improved validation sequence for better user experience during template editing
Removed
- Modal Template Creation - Removed modal-based template creation interface in favor of simplified direct editor workflow
1.2.12 - 2025-09-27
Added
- Complete Emails 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)
- Emails 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
- Emails 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 Emails:
mix phoenix_kit.email.send_test- Test email sending functionality with system optionsmix phoenix_kit.email.debug_sqs- Debug SQS messages and emails with detailed diagnosticsmix phoenix_kit.email.process_dlq- Process Dead Letter Queue messages and handle stuck events
- Emails Supervisor - OTP supervision tree for SQS worker management with graceful startup/shutdown
- Application Integration Module - Enhanced integration patterns for emails initialization
Improved
- Email Interceptor - Enhanced with provider-specific data extraction for multiple email services (SendGrid, Mailgun, AWS SES)
- Emails API - Added manual synchronization and event fetching capabilities for both main queue and DLQ
- Mailer Module - Improved integration with emails 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
Improved
- Icon System Centralization - Consolidated all inline SVG icons across the codebase into centralized PhoenixKitWeb.Components.Core.Icons module for better maintainability and consistency
- Authentication Pages Icons - Migrated 10 inline SVG icons from login, registration, and magic link pages to centralized icon components (email, lock, user profile, user add, login icons)
- Component Reusability - Migrated 50+ SVG icons from 20+ template files to reusable component functions with configurable CSS classes
- Code Quality - Eliminated duplicate SVG code and standardized icon usage patterns throughout admin interfaces, forms, and user authentication flows
- LiveView Module Organization - Reorganized LiveView modules into logical subfolders for better structure
- Route Organization - Restructured admin routes with improved hierarchical organization
- Email URL Generation - Enhanced Routes.url/1 function to prioritize site_url setting from Settings over dynamic endpoint detection, ensuring consistent email links across PROD and DEV environments
Changed
- User Routes - Moved all user-related routes under
/admin/users/prefix:/admin/roles→/admin/users/roles/admin/live_sessions→/admin/users/live_sessions/admin/sessions→/admin/users/sessions/admin/referral-codes→/admin/users/referral-codes
- Email Routes - Reorganized email routes for better clarity:
/admin/email-logs→/admin/emails/admin/email-logs/:id→/admin/emails/email/:id/admin/email-metrics→/admin/emails/dashboard/admin/email-queue→/admin/emails/queue/admin/email-blocklist→/admin/emails/blocklist
Added
- icon_login Component - Added new login icon component (arrow entering door) to Icons module for authentication pages
- New Icon Components - Added icon_download, icon_lock, and icon_search components to Icons module for comprehensive coverage
- Icon Documentation - Enhanced Icons module with detailed component documentation and usage examples
- HTML Email Templates - Added professional HTML versions for all authentication emails (confirmation, password reset, email update) with responsive design and consistent branding
- Site URL Configuration - Email links now use site_url setting from Settings panel when configured, providing full control over email URLs in production environments
Fixed
- Icon Reference - Fixed incorrect icon_check_circle reference to icon_check_circle_filled in magic_link_live.ex
- Code Readability - Removed unnecessary alias expansion braces for single module imports
1.2.8 - 2025-09-17
Improved
- Asset Build Pipeline - Enhanced asset rebuilding using standard Phoenix asset pipeline (mix assets.build) with intelligent fallbacks to esbuild, tailwind, and npm commands for better compatibility
- Dynamic URL Prefix Handling - Replaced hardcoded /phoenix_kit/ paths with dynamic Routes.path() throughout the codebase for proper prefix support
- Code Quality - Improved code formatting, comment alignment, and whitespace consistency across all modules
- Installation Messages - Enhanced user feedback messages with dynamic prefix support and clearer instructions
Fixed
- Hardcoded Paths - Replaced static URL paths with dynamic prefix resolution using PhoenixKit.Utils.Routes
- Asset Rebuild Process - Asset builder now tries multiple commands in order of preference for maximum compatibility
Removed
- SimpleTest File - Removed unused development test artifact (simple_test.ex)
1.2.7 - 2025-09-16
Added
- Email Navigation - Added Email Metrics, Email Queue, and Email Blocklist pages to admin navigation menu
- Email Blocklist System (V09 Migration) - Complete email blocklist functionality with temporary/permanent blocks, reason management, and audit trail
- Email Routes - Added routes for all Email LiveView pages in admin integration
- Users Menu Grouping - Reorganized admin navigation with expandable Users and Email groups using HTML5 details/summary
- Migration Documentation - Comprehensive migration system documentation with all version paths and rollback options
Fixed
- Email Cleanup Task Pattern Matching - Fixed Dialyzer warning about Emails.enabled?() pattern matching
- Dashboard Add User Button - Corrected navigation from dashboard Add User button to proper /admin/users/new route
- Migration V09 Primary Key - Fixed duplicate column 'id' error in phoenix_kit_email_blocklist table creation
Improved
- Navigation Menu Structure - Replaced custom JavaScript with native HTML5 details/summary for better reliability and performance
- Email Group Organization - Email, Metrics, Queue, and Blocklist now properly grouped under Email section
1.2.6 - 2025-09-15
Added
- Admin Password Change Feature - Direct password change capability for administrators in user edit form
- Username Search Integration - Added username search to referral code beneficiary selection and main user dashboard
- Username Implementation - Added optional username field with automatic generation from email for new user registrations
Fixed
- Form Validation Display Issues - Replaced static validator hints with proper Phoenix LiveView components using phx-no-feedback:hidden
- Dark Theme Compatibility - Improved password management sections with theme-adaptive styling
Improved
- Date Formatting - Updated referral dashboard to use user settings-aware date formatting
- Dynamic Routing - Replaced hardcoded /phoenix_kit/ paths with PhoenixKit.Utils.Routes.path() throughout referral codes
- Admin UI Experience - Enhanced password management with both direct change and email reset options
1.2.5 - 2025-09-12
Added
- Emails Foundation with email logging and event management schemas
- Email Rate Limiting Core with basic rate limiting functionality and blocklist management
- Email Database Schema (V07) with optimized tables and proper indexing
- Email Interceptor System for pre-send filtering and validation capabilities
- Webhook Processing Foundation for AWS SES event handling (bounces, complaints, opens, clicks)
- get_mailer/0 function in PhoenixKit.Config for improved mailer integration
- RepoHelper Integration for proper database access patterns in emails modules
Fixed
- All compilation warnings (40 → 0) - 100% improvement in code cleanliness
- PhoenixKit.Repo undefined references - proper integration with PhoenixKit.RepoHelper
- Unused variable warnings throughout the codebase
- Pattern matching issues in error handling code
- Missing @moduledoc for EmailBlocklist schema
Improved
- Credo warnings (30 → 5) - 83% improvement in code quality metrics
- Dialyzer warnings (40 → 4) - 90% improvement in type checking
- Code formatting with proper number formatting (86_400 vs 86400)
- Code efficiency with optimized Enum operations (map_join vs map + join)
- Function complexity by extracting nested logic into helper functions
- Error handling by replacing explicit try blocks with case/with patterns
- Alias ordering alphabetically in imports
- Trailing whitespace removal across codebase
Technical Improvements
- Memory-efficient patterns preparation for future batch processing
- Comprehensive input validation for emails data
- SQL injection protection with parameterized queries
- Professional code structure following PhoenixKit conventions
- Enhanced error handling with proper rescue clauses and pattern matching
1.2.4 - 2025-09-11
Added
- Complete referral codes with comprehensive management interface
- Referral code creation, validation, and usage management functionality
- Admin modules page for system-wide module management and configuration
- Flexible expiration system with optional "no expiration" support for referral codes
- Advanced admin settings for referral code limits with real-time validation:
- Maximum uses per referral code (configurable limit)
- Maximum referral codes per user (configurable limit)
- Beneficiary system allowing referral codes to be assigned to specific users
- User search functionality with real-time filtering for beneficiary assignment
- Hierarchical navigation structure with "Modules" parent and nested "Referral Codes" item
- Professional referral code generation with confusion-resistant character set
- Settings persistence system with module-specific organization
- Introduced custom prefix in the config (/phoenix_kit to something else)
Changed
- Improved form component alignment and styling in referral code forms
- Updated core input components to fix layout issues with conditional labels
- Reorganized admin settings order for better user experience
- Strengthened form validation with real-time feedback and error handling
Fixed
- Settings persistence ensuring values are properly saved and loaded from database
1.2.3 - 2025-09-11
Added
- Enhanced
mix phoenix_kit.statustask with hybrid repository detection and fallback strategies - Comprehensive status diagnostics with detailed database connection reporting
- Application startup management for reliable status checking in various project configurations
- Intelligent repository detection supporting both configured and auto-detected repositories
- Mailer delegation support with automatic parent application mailer detection
- Comprehensive AWS SES configuration with automatic Finch HTTP client setup
- Finch HTTP client integration for email adapters (SendGrid, Mailgun, AWS SES)
- Auto-detection of existing mailer modules in parent applications
- Enhanced email configuration with configurable sender name and email address
- Production-ready email templates for SMTP, SendGrid, Mailgun, and AWS SES
- Complete AWS SES setup guide with step-by-step checklist and region configuration
- Automatic dependency management for gen_smtp when using AWS SES
- Swoosh API client configuration for HTTP-based email adapters
Changed
- Asset rebuild system simplified to consistently recommend rebuilds for better reliability
- Status task now provides more detailed verbose diagnostics for troubleshooting
- Update task now delegates status display to dedicated status command for consistency
- Removed complex asset checking logic in favor of straightforward rebuild recommendations
- Email system architecture now supports both delegation and built-in modes
- Mailer configuration defaults to using parent application's existing mailer when available
- Installation process automatically configures appropriate email dependencies
- Documentation restructured with detailed provider-specific setup guides
- PhoenixKit.Mailer module enhanced with delegation capabilities
Fixed
- Critical CSS integration bug where regex patterns incorrectly matched file paths containing "phoenix_kit" substring
- CSS integration now properly detects only exact PhoenixKit dependency paths (../../deps/phoenix_kit) and ignores false matches like "test_phoenix_kit_v1_web"
- Improved pattern matching specificity to prevent installation failures in projects with similar naming
- Trailing whitespace issues across multiple files for better code quality
- Unused alias imports in tasks and modules
- Dialyzer warnings by updating ignore patterns for better type checking
- Email sender configuration now properly supports custom from_email and from_name settings
- Production email setup documentation with comprehensive provider examples
- Mailer integration patterns for better parent application compatibility
1.2.2 - 2025-09-08
Added
- Comprehensive asset rebuild system with
mix phoenix_kit.assets.rebuildtask for automatic CSS integration - System status checker with
mix phoenix_kit.statustask for installation diagnostics - Asset management tools for PhoenixKit CSS integration updates and Tailwind CSS compatibility
- Common utility functions in
PhoenixKit.Install.Commonfor version checking and installation management - Helper functions for better code organization and separation of concerns
- Progress tracking and enhanced user feedback for migration operations
- Type specifications for Mix.Task modules and asset rebuild functions
Changed
- CSS integration workflow simplified with better Tailwind CSS 4 support and @source directive optimization
- Migration function refactored to reduce cyclomatic complexity and improve maintainability
- Code organization improved with extraction of helper functions across multiple modules
- Enhanced error handling and user notifications for asset rebuild operations
Fixed
- All Credo static analysis warnings (trailing whitespace, formatting issues, deep nesting)
- All Dialyzer type analysis warnings with proper function specifications
- CSS integration logic and @source directive paths for correct asset compilation
- Complex migration function broken down into smaller, more maintainable functions
- Conditional statements simplified (cond to if) for better code clarity
1.2.1 - 2025-09-07
Added
- Project title customization system with dynamic branding across all admin interfaces
- Project title integration in authentication pages (login and registration)
- Time display enhancement showing both date and time in Users and Sessions tables
- Settings-aware date/time formatting functions for consistent user preferences
Changed
- Date handling moved from PhoenixKit.Date to PhoenixKit.Utils.Date for better organization
- All admin pages now consistently display custom project title instead of hardcoded "PhoenixKit"
- Enhanced admin interface with unified project branding throughout navigation
- Login and registration pages now show custom project title in headings and browser tabs
- Changed config and magic link
Fixed
- Fixed asset rebuilding integration in migration strategy
1.2.0 - 2025-09-03
Added
- User settings system with customizable time zone, date format, and time format preferences
- Comprehensive session management system for admin interface with real-time monitoring
- Live data updates system for admin panels with automatic refresh capabilities
- Automatic user logout functionality when role changes occur for enhanced security
- DateTime formatting functions with Timex library integration for better date/time handling
- Enhanced authentication session management for improved user experience
Changed
- Authentication components updated with GitHub-inspired design and unified development notices
- Date handling refactored into separate PhoenixKit.Date module (aliased as PKDate) for better organization
- User dashboard "Registered" field now uses enhanced date formatting from settings
- Improved code quality and PubSub integration for better real-time communication
Fixed
- Missing admin routes for settings and modules sections
- Dialyzer type errors resolved across the codebase
- Live Activity link in dashboard now correctly navigates to intended destination
- Settings tab information updated with accurate user preferences display
1.1.1 - 2025-09-02
Added
- Profile settings functionality with first name and last name fields
- Profile changeset function for user profile updates
- Complete profile editing interface in user settings
Fixed
- Router integration by removing unnecessary redirect pipe for login route
- Added admin shortcut route for improved navigation
- Enhanced admin dashboard accessibility
1.1.0 - 2025-09-01
Changed
- BREAKING: Simplified role system by removing
is_activecolumn from role assignments - Role removal now permanently deletes assignment records instead of soft deactivation
- All role-related functions updated to work with direct deletion approach
- Improved performance by eliminating
is_activefiltering in database queries - Documenatation link fixed for hex
Added
- V02 migration for upgrading existing installations to simplified role system
- Enhanced migration system with comprehensive upgrade path from V01 to V02
- Pre-migration reporting with warnings about inactive assignments that will be deleted
- Rollback support for V02 migration (though inactive assignments cannot be restored)
Fixed
- Test suite updated to reflect schema new changes
Migration Notes
- Existing V01 installations can upgrade using
mix phoenix_kit.update - V02 migration will permanently delete any inactive role assignments
- New installations will use V02 schema without
is_activecolumn
1.0.0 - 2025-08-29
Initial version with basic functionality, mostly around authorization and user registration with roles. Also admin page for admin users with User section.