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_urlcolumn to subscriptions table with automatic migration - Migration handles existing databases gracefully
Code Quality
- Created reusable
LogoServicefor 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_urlcolumn 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