• v0.4.5 bae34cb58f

    bscott released this 2025-11-13 22:03:48 -05:00 | 18 commits to main since this release

    SubTrackr v0.4.5 Release Notes

    🎉 Overview

    This release brings significant improvements to email notifications, UI polish, and visual enhancements with subscription icons. We've revamped the SMTP configuration system, fixed dark mode issues (Issue #48), added automatic logo fetching for subscriptions (Issue #6), introduced table sorting functionality for better subscription management (Issue #27), added Quarterly schedule support (Issue #49), implemented automatic renewal date updates (Issue #29), and added a comprehensive calendar view with iCal export functionality.

    New Features

    📧 Enhanced Email Notifications

    • SMTP TLS/SSL Support (PR #51, Resolves #50)

      • Added comprehensive TLS/SSL support for SMTP connections
      • Supports both STARTTLS (ports 587, 25, 2525, 8025, 80) and implicit TLS/SSL (ports 465, 8465, 443)
      • Improved error messages to distinguish between SSL and STARTTLS failures
      • Fixed authentication issues with SMTP2Go and similar providers
      • Added loading spinner to test connection button for better UX
    • Email Notification System

      • Added "To Email" field to SMTP configuration for notification recipient
      • Implemented high-cost alert emails (>$50/month) when creating or updating subscriptions
      • HTML email templates with subscription details (name, cost, category, renewal date, URL)
      • Emails sent automatically when subscriptions become high-cost
      • Respects "High Cost Alerts" setting in preferences

    🎨 Subscription Icons/Logos (Resolves #6)

    • Automatic Logo Fetching

      • Automatic favicon fetching from subscription website URLs
      • Uses Google's favicon service for reliable logo retrieval
      • Supports URLs with or without protocol (auto-adds https://)
      • Logos automatically update when subscription URL changes
      • Logos displayed in subscription lists and dashboard
    • UI Enhancements

      • Icons appear next to subscription names in all lists
      • Graceful fallback to status dot if logo fails to load
      • Works seamlessly in both light and dark modes
      • Responsive design maintained

    📊 Subscription Table Sorting (Resolves #27)

    • Sortable Columns

      • Click any column header to sort subscriptions
      • Sortable by: Name, Category, Cost, Schedule, Status, Renewal Date
      • Toggle between ascending and descending order
      • Visual indicators (arrows) show current sort column and direction
      • HTMX-powered sorting (no page reload required)
    • Table View

      • Converted subscription list from card layout to table format
      • Better data organization and readability
      • Maintains responsive design with horizontal scroll on small screens
      • Full dark mode support
      • Sort state persists during page interactions

    📅 Quarterly Schedule Support (Resolves #49)

    • New Schedule Option
      • Added "Quarterly" as a subscription schedule option
      • Quarterly subscriptions renew every 3 months
      • Properly handles month-end dates (e.g., Jan 31 → Apr 30)
      • Cost calculations updated for quarterly subscriptions
      • Annual cost: 4x quarterly cost
      • Monthly cost: quarterly cost / 3
      • Category statistics correctly include quarterly subscriptions

    🔄 Automatic Renewal Date Updates (Resolves #29)

    • Smart Date Management

      • Renewal dates automatically update when they pass (for active subscriptions)
      • Renewal dates recalculate when start date changes
      • Renewal dates recalculate when schedule changes
      • Updates happen automatically when subscriptions are loaded from database
      • Uses GORM hooks (AfterFind, BeforeUpdate) for seamless updates
      • No manual intervention required - dates stay current automatically
    • UI Improvements

      • Added info tooltip to "Next Renewal" field explaining auto-update behavior
      • Tooltip clarifies that renewal date updates after clicking Update button
      • Better user understanding of automatic date management

    📅 Calendar View & iCal Export

    • Interactive Calendar

      • New calendar page showing all subscription renewal dates
      • Month view with navigation between months
      • Visual highlighting of days with renewals
      • Subscription icons displayed next to names
      • Renewal amounts shown for each subscription
      • Click any subscription to edit it directly from the calendar
      • Full dark mode support
      • Responsive design
    • iCal Export

      • Export all subscription renewals to standard iCal format (.ics file)
      • Compatible with Google Calendar, Apple Calendar, Outlook, and other calendar apps
      • Includes recurrence rules based on subscription schedule (Daily, Weekly, Monthly, Quarterly, Annual)
      • Event descriptions include subscription details (name, cost, schedule, URL)
      • One-click download from calendar page

    🐛 Bug Fixes

    Dark Mode Improvements (Resolves #48)

    • Fixed SMTP configuration section dark mode styling
    • Fixed categories section dark mode visibility
    • Fixed API keys section dark mode colors
    • Fixed API documentation section dark mode support
    • Fixed email message templates for dark mode
    • All input fields and labels now properly visible in dark mode

    JavaScript Fixes

    • Fixed syntax error in subscription form (extra closing braces causing HTMX errors)
    • Improved form initialization and event handling

    Dashboard Improvements

    • Removed 5-subscription limit on dashboard
    • Dashboard now displays all subscriptions (matching subscriptions page)
    • Better consistency across views

    Date Calculation Improvements

    • Enhanced date calculation logic for all schedule types
    • Robust handling of month-end dates (e.g., Jan 31 → Feb 28/29)
    • Quarterly renewals properly handle edge cases
    • Start date changes now trigger renewal date recalculation
    • Past renewal dates automatically advance to next occurrence

    🔧 Technical Improvements

    Database

    • Added icon_url column to subscriptions table with automatic migration
    • Migration handles existing databases gracefully

    Code Quality

    • Created reusable LogoService for favicon fetching
    • Extracted duplicate logo fetching logic into helper methods
    • Improved error handling and logging
    • Better separation of concerns

    Architecture

    • Email service with TLS/SSL support
    • Logo service with URL normalization and domain extraction
    • Synchronous logo fetching for immediate display
    • Preserves existing logos when updating subscriptions
    • Repository layer supports flexible sorting with column validation
    • Service layer abstraction for sorted data retrieval
    • GORM hooks (AfterFind, BeforeUpdate) for automatic date management
    • Enhanced date calculation with month-end date handling
    • Quarterly schedule support throughout the application stack
    • Calendar view with client-side rendering for performance
    • iCal export with RFC 5545 compliant format
    • Template function support for date formatting in navigation

    📋 Future Enhancements

    Email Notifications

    • Renewal reminder emails
      • Automatic emails before subscription renewals
      • Configurable reminder timeframe (e.g., 7 days before)
      • Support for multiple reminder intervals
      • Note: Auto-update of renewal dates (Issue #29) is now implemented
    • Customizable email templates
      • User-defined email templates
      • Template variables and customization
    • Email notification preferences per subscription
      • Per-subscription notification toggles
      • Granular control over alert types
    • Batch email sending for multiple alerts
      • Digest emails for multiple high-cost subscriptions
      • Daily/weekly summary emails

    Subscription Icons

    • Manual logo upload option
      • Allow users to upload custom logos
      • Override automatic favicon fetching
      • Support for image formats (PNG, JPG, SVG)
    • Logo caching/memoization for performance
      • Cache domain-to-logo mappings
      • Reduce redundant API calls
      • In-memory or database caching
    • Background job to refresh missing logos
      • Periodic refresh of logos for existing subscriptions
      • Retry failed logo fetches
      • Update logos when favicons change
    • Support for alternative favicon services
      • Fallback to multiple favicon APIs
      • Icon Horse, Favicon.io, etc.
      • Service rotation for reliability
    • Local file storage option for logos
      • Download and store logos locally
      • Reduce dependency on external services
      • Better privacy and performance
    • Logo optimization and resizing
      • Automatic image optimization
      • Consistent sizing across subscriptions
      • Support for different display sizes

    SMTP

    • OAuth2 authentication support
      • Gmail OAuth2 integration
      • Microsoft 365 OAuth2 support
      • Improved security for email sending
    • Multiple SMTP provider presets
      • Pre-configured settings for popular providers
      • One-click setup for Gmail, Outlook, etc.
    • SMTP connection pooling
      • Reuse connections for better performance
      • Reduced connection overhead
    • Email delivery status tracking
      • Track email delivery success/failure
      • Retry failed email sends
      • Delivery reports and analytics

    🔄 Migration Notes

    • Automatic Migration: The icon_url column is automatically added to existing subscriptions
    • No Data Loss: All existing subscriptions remain intact
    • Backward Compatible: Existing SMTP configurations continue to work

    📝 Breaking Changes

    None - This release is fully backward compatible.

    🙏 Acknowledgments

    • PR #51 contributors for SMTP TLS/SSL improvements
    • Community feedback on dark mode issues (Issue #48)
    • Inspiration from Wallos project for logo implementation approach (Issue #6)
    • Community request for subscription sorting functionality (Issue #27)
    • Community request for Quarterly schedule support (Issue #49)
    • Community feedback on renewal date management (Issue #29)

    📚 Documentation

    • Updated settings page with "To Email" field
    • Improved SMTP configuration UI with better error messages
    • Enhanced subscription forms with logo preview capability
    • Added info tooltip to renewal date field explaining auto-update behavior
    • Version number updated to v0.4.5 in About section
    • New calendar navigation in main menu
    • Calendar page with month navigation and subscription details

    Release Date: TBD
    Git Tag: v0.4.5
    Branch: v0.4.5