github bscott/subtrackr v0.4.5
v0.4.5 - Calendar View, iCal Export & More

latest releases: v0.5.7, v0.5.6, v0.5.5...
3 months ago

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

Don't miss a new subtrackr release

NewReleases is sending notifications on new releases.