CHANGELOG

View Source

1.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_default component
    • Consistent table styling across email details

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.* --help support, IgniterCompat for 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.get to install mandatory OAuth/email packages
  • Enable Pages module from /admin/modules to 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/pages for 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
  • 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

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 IgniterCompat helper 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/emails with "Setup AWS Infrastructure" button
    • Auto-fills AWS settings form with created resource details
    • Added ex_aws_sns ~> 2.3 dependency for SNS operations
  • Mix Tasks Help System - Comprehensive --help flag support for installation and update tasks
    • mix phoenix_kit.install --help - Detailed installation options with examples
    • mix 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 fallback
    • has_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, and ueberauth_github are 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 adapter
    • saxy - Required for AWS SQS XML response parsing
    • finch - 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

Migration Notes

  • Projects upgrading from 1.3.2 must run mix deps.get to 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() and get_sqs_visibility_timeout() from settings
    • Issue #6: Visibility timeout increased from 30s to system default (300s)
    • Prevents race conditions during long-running operations

Improved

  • Error Logging - Stacktrace formatting improved for better debugging

    • Issue #7: Uses Exception.format_stacktrace() for readable log output
  • Code Quality - Removed redundant require Logger statements

    • Issue #8: Single module-level require Logger instead of 11 duplicate requires
    • Cleaner codebase following Elixir best practices

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.ScopeNotifier manages 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/1 helper that returns nil instead of raising exceptions

Technical Details:

  • Broadcasts happen on phoenix_kit:user_scope:#{user_id} topics
  • LiveViews attach a :handle_info hook 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.MagicLinkRegistration context 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
  • 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

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/4 main API for sending templated emails
    • Convenience wrapper PhoenixKit.Emails.Templates.send_email/4 for 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)
  • RateLimiter Blocklist API - Three new public API methods for blocklist management
    • list_blocklist/1 - Query blocklists with filtering (search, reason, status), sorting, and pagination
    • count_blocklist/1 - Count blocked emails with optional filters
    • get_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_headers setting 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
  • 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 data
    • set_cloudwatch_metrics(enabled) - Toggle CloudWatch metrics integration
    • set_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.get instead of get_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_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
  • 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_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:
  • 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/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 Emails:
  • 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/-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

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.status task 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.rebuild task for automatic CSS integration
  • System status checker with mix phoenix_kit.status task for installation diagnostics
  • Asset management tools for PhoenixKit CSS integration updates and Tailwind CSS compatibility
  • Common utility functions in PhoenixKit.Install.Common for 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_active column 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_active filtering 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_active column

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.