Skip to content

Releases: bscott/subtrackr

v0.5.2 - Currency Improvements

06 Jan 00:15
Immutable release. Only release title and notes can be modified.
920a995

Choose a tag to compare

What's New

New Currency Support

  • Added Colombian Peso (COP) as a supported currency (#78)

Bug Fixes

  • Fixed currency conversion display in subscription list to match dashboard behavior (#79)
  • Fixed missing currency symbols for BRL (R$) and CHF (Fr.) in display

UX Improvements

  • Added info icon (ⓘ) with tooltip next to converted currency amounts
  • Clicking the info icon links to Fixer.io to explain the conversion source
  • Tooltip explains "Original amount before conversion (rates from Fixer.io)"

Currency Conversion Setup

To enable automatic currency conversion between different currencies, set up a Fixer.io API key:

# Set the environment variable before starting SubTrackr
export FIXER_API_KEY=your_api_key_here

Without a Fixer API key, subscriptions will display in their original currency without conversion.

Issues Addressed

  • Closes #78 (COP currency support)
  • Closes #79 (Currency display in subscription list)

New Issues Created

  • #80 - Multi-language support (i18n)
  • #81 - Telegram notification support

v0.5.1 - Dark Classic Theme & Calendar Fixes

21 Dec 18:49
Immutable release. Only release title and notes can be modified.
a0152d5

Choose a tag to compare

What's New

Dark Classic Theme

  • Added Dark Classic theme option that restores the original Tailwind dark mode
  • Set as the default theme for new installations
  • Provides the familiar dark mode experience from previous versions

Calendar Improvements

  • Fixed calendar event styling in dark themes
  • Calendar events now have proper dark backgrounds in Dark and Midnight themes
  • Improved contrast and readability for subscription events

Bug Fixes

  • Eliminated white flash when loading pages in Dark Classic theme
  • Fixed white background issue on calendar event cells
  • Improved consistency across all theme options

Available Themes

  • Default (Light)
  • Dark
  • Dark Classic (Default)
  • Christmas
  • Midnight
  • Ocean

Upgrade Notes

Important: Back up your data before upgrading.

Download a backup from Settings → Data Management → Download Backup before updating.

v0.5.0 - Optional Login Support 🔐

21 Dec 18:10
Immutable release. Only release title and notes can be modified.
7194d7f

Choose a tag to compare

SubTrackr v0.5.0 introduces optional authentication to protect your subscription data, while maintaining our commitment to simplicity and privacy-first design.

⚠️ Important: Backup Your Data

Before upgrading, we strongly recommend backing up your data:

  1. Navigate to Settings → Data Management
  2. Click "Download Backup" to save your database
  3. Store the backup file in a safe location

This ensures you can restore your data if anything goes wrong during the upgrade.

🎉 New Features

🎄 Holiday Themes (New!)

Spread holiday cheer with our new theming system!

  • 5 Beautiful Themes: Default, Dark, Christmas, Midnight, Ocean
  • 🎅 Christmas Theme: Festive red & green colors, gold accents, and gentle snowfall animation ❄️
  • Easy Switching: Change themes instantly from Settings → Appearance
  • Persistent: Your theme choice is saved automatically
  • Accessible: Respects prefers-reduced-motion for animations

Perfect for the holiday season! Switch to the Christmas theme and enjoy the festive atmosphere while tracking your subscriptions.

Optional Authentication System

  • OFF by default - Zero breaking changes for existing installations
  • Single-user authentication with bcrypt password hashing
  • Session-based login with secure cookies (HttpOnly, SameSite)
  • "Remember me" option (30-day sessions)
  • SMTP prerequisite check - ensures password recovery is always available

Password Reset Flow

  • Complete forgot password → email reset link → set new password flow
  • 1-hour token expiry for security
  • Works seamlessly with existing SMTP configuration

CLI Password Reset (Perfect for Docker!)

  • Reset admin password without email: ./subtrackr --reset-password
  • Non-interactive mode: ./subtrackr --reset-password --new-password "yourpassword"
  • Disable authentication: ./subtrackr --disable-auth
  • Essential for Docker deployments when SMTP isn't configured

Security Section in Settings

  • Easy toggle to enable/disable authentication
  • Shows current authentication status
  • Warns if SMTP is not configured (required for password recovery)
  • Disable authentication option preserves credentials for re-enabling

🔒 Security Improvements

This release includes fixes for several security vulnerabilities identified during security review:

  • Fixed: Open redirect vulnerability in authentication handlers
  • Fixed: Timing attack in CLI password confirmation (now uses constant-time comparison)
  • Fixed: Timing attack in token validation (constant-time string comparison)
  • Fixed: Username enumeration via timing (always validates both username and password)
  • Fixed: Password validation order in reset handler (prevents information leakage)
  • Improved: Redirect URL validation with length limits (max 2048 characters)
  • Improved: Error handling prevents authentication bypass

All authentication operations now use constant-time comparisons via crypto/subtle to prevent timing-based attacks.

📝 How to Enable Authentication

  1. Configure SMTP first (Settings → Email Configuration)

    • Required for password recovery
    • Cannot enable login without email configured
  2. Enable Login (Settings → Security)

    • Toggle "Require Login"
    • Set username and password (min 8 characters)
    • Click "Enable Authentication"
  3. You'll be redirected to login on next page load

🐳 Docker Best Practices

Version Pinning (Recommended)

Always pin to specific versions instead of using latest:

# ❌ NOT RECOMMENDED - unpredictable updates
image: bscott/subtrackr:latest

# ✅ RECOMMENDED - controlled, predictable deployments
image: bscott/subtrackr:v0.5.0

Why Pin Versions?

  1. Predictability - Know exactly what version is running
  2. Stability - Avoid unexpected breaking changes
  3. Reproducibility - Same image across all environments
  4. Rollback Safety - Easy to revert to previous version
  5. Testing - Test specific versions before upgrading production

Version Update Strategy

# docker-compose.yml
services:
  subtrackr:
    image: bscott/subtrackr:v0.5.0  # Pin to specific version
    volumes:
      - ./data:/app/db
    ports:
      - "8080:8080"
    restart: unless-stopped

Upgrade process:

  1. Backup your data (via Settings UI)
  2. Update version in docker-compose.yml
  3. Pull new image: docker-compose pull
  4. Recreate container: docker-compose up -d
  5. Verify everything works
  6. Keep backup until confident in new version

Using latest (Not Recommended)

Only use latest if you:

  • Are testing/development (not production)
  • Want automatic updates (understand the risks)
  • Have good backup/restore procedures
  • Monitor for breaking changes in releases

Even then, consider using version tags for better control.

Docker CLI Commands

# Reset Password (when locked out)
docker exec -it subtrackr /app/subtrackr --reset-password

# Disable Authentication
docker exec -it subtrackr /app/subtrackr --disable-auth

🔄 Upgrade Instructions

Standard Installation

# Backup your data first (via Settings UI)
# Then pull the latest version
git pull
go build -o subtrackr ./cmd/server
./subtrackr

Docker (Pinned Version)

# 1. Backup your data first (via Settings UI)

# 2. Update docker-compose.yml to new version
#    image: bscott/subtrackr:v0.5.0

# 3. Pull new image
docker-compose pull

# 4. Recreate container
docker-compose up -d

# 5. Verify logs
docker-compose logs -f subtrackr

⚙️ Technical Details

  • Zero Breaking Changes - Authentication is OFF by default
  • Backward Compatible - Existing installations work without modification
  • Session Secret - Auto-generated 64-byte random key stored in database
  • Password Hashing - bcrypt with DefaultCost (10 rounds)
  • Token Security - Constant-time comparisons prevent timing attacks
  • Public Routes - Login, password reset, and static assets remain accessible

🐛 Bug Fixes

  • Fixed public routes not including forgot password pages
  • Fixed middleware redirect parameter encoding
  • Fixed error handling in authentication username retrieval

📚 Dependencies

  • Added golang.org/x/term for secure CLI password input
  • Added crypto/subtle for constant-time comparisons (standard library)

🔮 What's Next?

Future enhancements being considered:

  • CSRF protection
  • Rate limiting for auth endpoints
  • Account lockout after failed attempts
  • Stronger password requirements

🎁 Happy Holidays!

We hope SubTrackr helps you manage your subscriptions effortlessly as we head into the new year. Try out the festive Christmas theme and enjoy the snowfall while you work! ❄️🎄

Wishing you and your loved ones a wonderful holiday season and a prosperous 2026!


Full Changelog: v0.4.9...v0.5.0

v0.4.9 - New Currencies & UX Improvements

12 Dec 17:23
Immutable release. Only release title and notes can be modified.
ade832a

Choose a tag to compare

Release Notes - v0.4.9

🎉 New Features

New Currency Support

  • Swiss Franc (CHF): Added Fr. CHF to supported currencies with proper symbol display
  • Brazilian Real (BRL): Added R$ BRL to supported currencies
  • Both currencies fully integrated with Fixer.io exchange rate API for automatic conversions

Inline Category Creation (#67)

  • Create categories on-the-fly: New "+" button next to the category dropdown in the subscription form
  • Seamless workflow: Create a new category without leaving the subscription form
  • Instant availability: New category is immediately selected after creation
  • No more workflow interruption: Users no longer need to create categories before adding subscriptions

🐛 Bug Fixes

Status Change No Longer Resets Renewal Date (#68)

  • Fixed: Changing subscription status (Active, Cancelled, Paused, Trial) no longer recalculates the renewal date
  • Previous behavior: Changing status would reset renewal date to today + billing cycle
  • New behavior: Status and renewal date are now independent - only changing the billing schedule recalculates the renewal date

📦 Files Changed

  • internal/service/currency.go - Added CHF and BRL to SupportedCurrencies
  • templates/settings.html - Added CHF and BRL currency options with symbols
  • templates/subscription-form.html - Added inline category creation, fixed status/renewal date bug, added CHF/BRL options

🔄 Migration Notes

No database migrations required. This is a feature addition that works with existing data.

⚠️ Breaking Changes

None. All changes are backward compatible.

Note: Always create a database backup before updating to a new version. You can export your data from Settings → Data Management → Backup Data.


Closes #63, #66, #67, #68

v0.4.8 - Renewal Reminders & Improved Notes Display

09 Dec 05:52
Immutable release. Only release title and notes can be modified.
a5b568c

Choose a tag to compare

Release Notes - v0.4.8

🎉 New Features

Renewal Reminder Emails

  • Automatic renewal reminders: SubTrackr now sends email reminders for upcoming subscription renewals
  • Configurable reminder window: Set how many days in advance to receive reminders (default: 7 days)
  • Daily scheduler: Background process checks for upcoming renewals daily and sends reminder emails
  • Smart filtering: Only active subscriptions with renewal dates are included in reminders
  • Email template: Beautiful HTML email template with subscription details and renewal date

Improved Subscription Notes Display

  • Hover tooltip: Subscription notes are now displayed in a compact tooltip on hover instead of a separate row
  • Eye icon indicator: Small eye icon appears next to edit/delete buttons when a subscription has notes
  • Auto-sizing tooltip: Tooltip width automatically adjusts to match the note text length
  • Better UX: Cleaner table layout with notes accessible on demand

🔧 Technical Improvements

  • Added SendRenewalReminder() method to EmailService
  • Added GetSubscriptionsNeedingReminders() method to SubscriptionService
  • Implemented background scheduler with daily checks
  • Added comprehensive test suite for renewal reminder functionality
  • Improved template structure for better maintainability

🧪 Testing

  • Added 13 test cases covering renewal reminder functionality
  • Tests cover edge cases, boundary conditions, and error scenarios
  • All tests passing

📝 How to Use

Renewal Reminders

  1. Configure SMTP settings in Settings page
  2. Enable "Renewal Reminders" toggle in Settings
  3. Set "Reminder Days" (how many days before renewal to send reminder)
  4. Ensure subscriptions have renewal dates set
  5. Reminders will be sent automatically via email

Subscription Notes

  • Notes are now visible via hover tooltip on the eye icon
  • Tooltip appears when hovering over the eye icon in the Actions column
  • No changes needed - works automatically with existing notes

🐛 Bug Fixes

  • Fixed subscription notes display taking up unnecessary table space
  • Improved tooltip positioning and sizing

📦 Files Changed

  • cmd/server/main.go - Added renewal reminder scheduler
  • internal/service/email.go - Added SendRenewalReminder method
  • internal/service/subscription.go - Added GetSubscriptionsNeedingReminders method
  • internal/service/renewal_reminder_test.go - Comprehensive test suite
  • templates/subscriptions.html - Updated notes display with tooltip
  • templates/subscription-list.html - Updated notes display with tooltip

🔄 Migration Notes

No database migrations required. This is a feature addition that works with existing data.

⚠️ Breaking Changes

None. All changes are backward compatible.

v0.4.7 - Mobile Navigation Improvements

14 Nov 23:55
Immutable release. Only release title and notes can be modified.
cca25da

Choose a tag to compare

🎉 What's New

📱 Mobile Navigation (Resolves #39)

  • Hamburger Menu: Implemented responsive hamburger menu for mobile devices
  • Mobile Menu Overlay: Slide-in panel with backdrop for easy navigation
  • Full Navigation Access: All pages (Dashboard, Subscriptions, Analytics, Calendar, Settings) now have mobile menu support
  • Add Subscription: Accessible directly from mobile menu
  • Keyboard Support: Escape key closes mobile menu
  • Body Scroll Lock: Prevents background scrolling when menu is open
  • Dark Mode: Full dark mode support for mobile menu

🎨 UI Improvements

  • Updated README with mobile screenshot
  • Consistent mobile experience across all pages
  • Improved mobile responsiveness

🔧 Technical Details

  • Updated templates: analytics.html, calendar.html, dashboard.html, settings.html, subscriptions.html
  • Added mobile menu JavaScript functions
  • Responsive breakpoints using Tailwind CSS md: classes

📝 Notes

Any AI-generated code or notes were reviewed by a human developer :)

v0.4.6 - Docker Healthcheck & CI/CD Improvements

14 Nov 18:23
Immutable release. Only release title and notes can be modified.
047adbe

Choose a tag to compare

SubTrackr v0.4.6 Release Notes

🎉 Overview

This release focuses on Docker improvements and CI/CD pipeline optimization. We've added Docker healthcheck support (Issue #47), simplified Docker image tagging, and optimized the build pipeline to only create images on Git tags.

✨ New Features

🐳 Docker Healthcheck (Resolves #47)

  • Container Health Monitoring

    • Added HEALTHCHECK instruction to Dockerfile
    • Monitors application health every 30 seconds
    • 3-second timeout per health check
    • 5-second start period to allow application initialization
    • 3 retries before marking container as unhealthy
    • Uses curl to check /healthz endpoint with database connectivity verification
    • Verifies both HTTP server and database availability
    • Enables better container orchestration and monitoring
  • Health Endpoint

    • New /healthz endpoint (Kubernetes convention)
    • Checks database connectivity in addition to HTTP server availability
    • Returns 200 OK with {"status": "healthy"} when healthy
    • Returns 503 Service Unavailable when database is unavailable
  • Runtime Dependencies

    • Added curl to runtime dependencies for healthcheck support
    • Minimal impact on image size (~180MB total)

🔧 CI/CD Pipeline Improvements

  • Simplified Docker Image Tagging

    • Only creates exact version tag (e.g., v0.4.6) and latest
    • Removed major and minor version tags (v0, v0.4)
    • Cleaner image registry with fewer redundant tags
    • Easier to identify specific versions
  • Optimized Build Triggers

    • Docker images only build on Git tag pushes (v*)
    • Removed automatic builds on main branch pushes
    • Reduces CI/CD resource usage
    • Manual builds still available via workflow_dispatch
    • More efficient and cost-effective pipeline

🔧 Technical Improvements

Docker

  • Healthcheck configuration following Docker best practices
  • Multi-stage build maintained for optimal image size
  • All runtime dependencies properly included

GitHub Actions

  • Streamlined workflow configuration
  • Reduced unnecessary build triggers
  • Better resource utilization

Project Configuration

  • Updated .gitignore with additional entries
  • Improved project organization

🔄 Migration Notes

  • Docker Images: Existing images continue to work
  • CI/CD: Pipeline changes only affect new builds
  • Health Endpoint: If you're using the /health endpoint for monitoring, update to /healthz

📝 Breaking Changes

Health Endpoint Change

  • /health endpoint removed: The previous /health endpoint has been replaced with /healthz
  • Action Required: If you have monitoring systems, health checks, or load balancers configured to use /health, update them to use /healthz instead
  • Reason: The new /healthz endpoint provides better health verification by checking both HTTP server and database connectivity, following Kubernetes conventions
  • Impact: Low - Only affects systems actively monitoring the health endpoint

🙏 Acknowledgments

  • Issue #47 contributor for Docker healthcheck request
  • Community feedback on CI/CD optimization

📚 Documentation

  • Docker healthcheck follows Docker documentation
  • Updated workflow documentation for tag-based builds

Release Date: 11/14/25
Git Tag: v0.4.6
Branch: v0.4.6

v0.4.5 - Calendar View, iCal Export & More

14 Nov 03:04
bae34cb

Choose a tag to compare

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 ...
Read more

v0.4.4 - Enhanced Currency Support & Renewal Date Fixes

26 Sep 21:03
a3a91fe

Choose a tag to compare

🚨 IMPORTANT: Backup Your Data Before Upgrading

This release includes database schema changes. Please backup your data directory before upgrading:

# Stop SubTrackr
docker-compose down

# Create backup
cp -r ./data ./data-backup-$(date +%Y%m%d)

# Then proceed with upgrade
docker-compose pull
docker-compose up -d

What's being added to your database:

  • New exchange_rates table for currency conversion (optional feature)
  • New date_calculation_version column for improved date handling
  • All existing data remains unchanged and fully compatible

🎯 What's New

✨ New Features

  • Advanced Currency Support: Added comprehensive currency conversion system with support for USD, EUR, GBP, JPY, RUB, SEK, PLN, and INR
  • Real-time Exchange Rates: Integration with Fixer.io API for up-to-date currency conversion (completely optional)
  • Currency Settings: New settings page to configure your preferred base currency
  • Enhanced Date Handling: Improved renewal date calculations with robust edge case handling
  • Migration System: Added versioned date calculation system for better reliability

🐛 Bug Fixes

  • Renewal Date Calculation: Fixed issues where renewal dates weren't being calculated correctly for new subscriptions
  • Month-end Edge Cases: Improved handling of subscriptions starting on month-end dates (Jan 31, Jul 31, etc.)
  • Leap Year Support: Enhanced leap year date arithmetic for accurate billing cycles
  • API Response Format: Fixed API endpoints returning HTML instead of JSON in some cases

🔧 Technical Improvements

  • Comprehensive Test Suite: Added extensive unit tests covering edge cases and currency functionality (55.6% coverage)
  • Database Migrations: Enhanced migration system for schema updates
  • Carbon Date Library: Integrated robust date arithmetic library for better date handling
  • Performance Optimizations: Improved database queries and caching for currency rates

🔑 Currency Conversion is Optional

SubTrackr works fully out-of-the-box with no external dependencies required. The Fixer.io API integration is completely optional:

  • Without API key: Full multi-currency support with manual selection
  • With API key: Automatic real-time currency conversion

🙏 Thanks to Contributors

Special thanks to @amitsingh-007 for contributing INR currency support in PR #45!

📈 Stats

  • Test coverage increased to 55.6%
  • Added 90+ new test cases
  • Enhanced edge case handling for date calculations
  • Improved currency conversion accuracy

Full Changelog: v0.4.3...v0.4.4

v0.4.3 - API Response Fix

29 Aug 16:15

Choose a tag to compare

What's Changed

Bug Fixes

  • Fixed API endpoint returning HTML instead of JSON (#42) - The /api/v1/subscriptions endpoint now correctly returns JSON data for API consumers

Contributors

A big thank you to @Klick3R-1 for identifying and fixing this important API issue! 🎉

Full Changelog

v0.4.2...v0.4.3