• v0.4.1 38165f9b88

    bscott released this 2025-08-23 12:52:40 -04:00 | 47 commits to main since this release

    What's Changed

    🐛 Bug Fixes

    • Fixed issue #35: Subscription updates now properly save all fields including dates
    • Subscription form date fields are now correctly parsed during PUT requests

    Improvements

    • Settings page now displays the actual git commit SHA as the version
    • Added Makefile for consistent builds with automatic version injection
    • Version information is now dynamically generated at build time

    🔧 Build System

    • New Makefile with targets for building, testing, and multi-platform releases
    • Build process automatically injects git commit SHA into binaries
    • Added make build-all for cross-platform builds (macOS, Linux, Windows)

    📝 Technical Details

    • Added internal/version package for version management
    • Updated UpdateSubscription handler to include date field parsing
    • Modified settings template to display dynamic version

    Installation

    Using Make

    make build
    ./subtrackr
    

    Direct Build

    go build -o subtrackr cmd/server/main.go
    ./subtrackr
    

    Full Changelog

    https://github.com/bscott/subtrackr/compare/v0.4.0...v0.4.1

  • v0.4.0 b2260a5865

    bscott released this 2025-08-09 20:47:41 -04:00 | 48 commits to main since this release

    SubTrackr v0.4.0 - License Change & Bug Fixes

    🔄 Major Changes

    License Update

    • Changed from MIT to AGPL-3.0: This ensures that any modifications to SubTrackr, including hosted versions, must remain open source and share improvements with the community.

    🐛 Bug Fixes

    Fixed SMTP Configuration Issues (#26)

    • SMTP Username Validation: Removed email format requirement from SMTP username field
    • Better Provider Support: Now supports SMTP providers like Resend that use non-email usernames (e.g., "resend" + API key)
    • Improved UX: Updated placeholder text to clarify "username or email" format

    Enhanced Template Loading (#13)

    • ARM64 Compatibility: Added robust template loading with better error handling for ARM64 architecture
    • Fallback System: Implements graceful fallback to ensure application continues working even with template parsing issues
    • Detailed Logging: Better error messages for troubleshooting template problems

    Currency Display Consistency (#16, #14)

    • Fixed Hardcoded Symbols: Replaced hardcoded "$" with dynamic currency symbols from settings
    • Global Consistency: All subscription cost displays now respect user's currency preference

    Documentation Improvements (#32)

    • Known Limitations: Added clear documentation about price history limitations
    • User Guidance: Explains that annual calculations use current prices, not historical spending data

    🔧 Development Improvements

    CI/CD Pipeline Optimization

    • Efficient Builds: Docker images now only build/push on merge to main and version tags, not on PRs
    • Proper Tagging: Version tags (e.g., v0.4.0) now create corresponding Docker tags (0.4.0, 0.4)
    • PR Testing: Separate workflow for PR validation with Go tests and Docker build verification
    • Resource Optimization: Reduced unnecessary Docker builds on pull requests

    Testing Infrastructure

    • Playwright Integration: Added comprehensive end-to-end testing with Playwright
    • Automated Validation: Tests for subscription calculations, form submissions, and UI consistency
    • Multi-browser Support: Configured for Chrome, Firefox, and WebKit testing

    📊 Verified Calculations

    • Monthly/Annual Totals: Confirmed accuracy of subscription calculations including annual subscriptions converted to monthly equivalents
    • Category Breakdown: Verified that spending by category correctly shows monthly equivalents (e.g., $37/year → $3.08/month in Education category)

    🔗 Docker Images

    This release is available as multi-platform Docker images:

    # Latest version
    docker pull ghcr.io/bscott/subtrackr:0.4.0
    docker pull ghcr.io/bscott/subtrackr:0.4
    
    # Always latest from main branch
    docker pull ghcr.io/bscott/subtrackr:latest
    

    🙏 Acknowledgments

    Thanks to all community members who reported issues and provided feedback to make SubTrackr better!

  • v0.3.0 63d1a4d996

    bscott released this 2025-08-03 19:22:38 -04:00 | 0 commits to v0.3.0 since this release

    Migration Required; Please read the full release notes before upgrading!

    🎉 Highlights

    This release introduces a powerful Dynamic Categories System that allows users to create, edit, and manage their own subscription categories. A huge thank you to @Klick3R-1 for the excellent PR (#22) that made this feature possible! 🙏

    New Features

    Dynamic Categories System

    • Custom Categories: Create, edit, and delete your own categories through the Settings page
    • Category Management UI: Intuitive interface for managing categories
    • Smart Validation: Categories with active subscriptions cannot be deleted
    • Auto-Migration: Existing subscriptions automatically migrate to the new system

    Extended Schedule Options

    • Added support for Weekly subscriptions (billed every 7 days)
    • Added support for Daily subscriptions (billed every day)
    • Improved cost calculations for all schedule types

    Database Migration System

    • New extensible migration framework for smooth upgrades
    • Automatic schema updates without data loss
    • Future-proof architecture for upcoming features

    🔄 Breaking Changes

    API Changes

    The API now uses `category_id` instead of `category` string:

    Before (v0.2.x):
    ```json
    {
    "name": "Netflix",
    "category": "Entertainment"
    }
    ```

    After (v0.3.0):
    ```json
    {
    "name": "Netflix",
    "category_id": 1
    }
    ```

    To get available categories:
    ```bash
    curl http://localhost:8080/api/categories
    ```

    🛠️ Technical Improvements

    • Proper foreign key relationships between subscriptions and categories
    • Enhanced data integrity with referential constraints
    • Improved repository pattern with category preloading
    • Better error handling for category operations

    📋 Default Categories

    On first run after upgrade, these categories are automatically created:

    • Entertainment
    • Productivity
    • Storage
    • Software
    • Fitness
    • Education
    • Food
    • Travel
    • Business
    • Other

    🚀 Upgrading

    Please see MIGRATION_v0.3.0.md for detailed upgrade instructions.

    Quick Upgrade Steps:

    1. Backup your data (Settings → Create Backup)
    2. Pull the v0.3.0 release
    3. Restart SubTrackr
    4. Verify your subscriptions and categories

    🙏 Contributors

    Special thanks to:

    📝 Full Changelog

    Added

    • Dynamic categories with CRUD operations
    • Category management UI in settings
    • Weekly and Daily schedule options
    • Database migration system
    • Category deletion validation
    • Migration documentation

    Changed

    • API now uses category_id instead of category string
    • Improved cost calculations for all schedule types
    • Enhanced subscription forms with dynamic category selection

    Fixed

    • Schedule validation now includes all schedule types
    • Proper handling of category relationships
    • Migration of existing data to new schema

    Full Changelog: v0.2.0...v0.3.0

  • v0.2.0 f792c7061b

    bscott released this 2025-07-13 14:13:18 -04:00 | 74 commits to main since this release

    🎨 What's New in v0.2.0

    Logo Integration

    • Brand new SVG logo now appears in the header across all pages
    • Replaced text-based "SubTrackr" with professional logo design
    • Improved visual consistency and brand recognition

    I want to thank Ethan at Selfh.st Newsletter for cleaning up the SVG logo 🤟🏾
    Speaking of which, were now listed in Apps on Selfh.st!

    📊 Spending Visualization Fixes

    • Fixed spending by category charts that were previously showing as grey bars
    • Proportional bar charts now accurately represent spending amounts
    • Enhanced color coding with reliable blue progress bars
    • Better visual feedback for subscription spending breakdown

    🏗️ Infrastructure Improvements

    • Created proper static assets directory structure (web/static/images/)
    • Improved template rendering with explicit CSS styling
    • Streamlined Cost Analysis section for better layout

    🔧 Technical Details

    • Moved logo from assets/ to web/static/images/logo.svg
    • Fixed Go template math calculations for percentage-based bar widths
    • Replaced Tailwind CSS classes with inline styles for better browser compatibility
    • Updated all page templates (dashboard, subscriptions, analytics, settings)

    📸 Screenshots

    The spending by category visualization now properly shows:

    • Entertainment spending as proportional blue bars
    • Productivity spending with accurate width calculations
    • Clean, professional visual design

    Full Changelog: https://github.com/bscott/subtrackr/compare/v0.1.0...v0.2.0

  • v0.1.0 f30654ba42

    bscott released this 2025-07-04 21:24:58 -04:00 | 87 commits to main since this release

    🎉 SubTrackr v0.1.0 - Initial Release

    SubTrackr is a self-hosted subscription tracking and management application that helps you monitor your recurring subscriptions and visualize spending patterns.

    Features

    • 📊 Subscription Management: Track monthly and annual subscriptions
    • 💰 Multi-Currency Support: Support for USD ($), EUR (€), and PLN (zł)
    • 📈 Analytics Dashboard: Visualize spending patterns and trends
    • 🔔 Email Notifications: Get reminders for upcoming renewals
    • 📱 Mobile Responsive: Works great on all devices
    • 🔒 Privacy First: Self-hosted with complete data ownership
    • 📤 Data Export: Export your data in CSV or JSON format
    • 🔑 Secure Authentication: Built-in user authentication system

    💱 Supported Currencies

    This release includes support for the following currencies:

    • 🇺🇸 USD - US Dollar ($)
    • 🇪🇺 EUR - Euro (€)
    • 🇵🇱 PLN - Polish Złoty (zł)

    🐳 Deployment

    SubTrackr is available as a Docker container:

    docker run -d \
      --name subtrackr \
      -p 8080:8080 \
      -v subtrackr_data:/app/data \
      ghcr.io/bscott/subtrackr:v0.1.0
    

    Or use Docker Compose:

    version: '3.8'
    services:
      subtrackr:
        image: ghcr.io/bscott/subtrackr:v0.1.0
        ports:
          - "8080:8080"
        volumes:
          - subtrackr_data:/app/data
        restart: unless-stopped
    
    volumes:
      subtrackr_data:
    

    📋 Requirements

    • Docker or Docker Compose
    • Port 8080 available
    • SMTP server for email notifications (optional)

    🚀 Getting Started

    1. Deploy using Docker or Docker Compose
    2. Access the application at http://localhost:8080
    3. Create your account
    4. Start adding your subscriptions
    5. Configure email notifications (optional)

    📖 Documentation

    See the README for detailed documentation including:

    • API endpoints
    • Configuration options
    • Security recommendations
    • Deployment guides for various platforms

    🙏 Acknowledgments

    Built with Go, Gin, GORM, SQLite, HTMX, and Tailwind CSS.

    Special thanks to our contributors:

    • Brian Scott (@bscott)
    • CyberL1 (@CyberL1) - PLN currency support
    • Andre Saddler (@andre-saddler)

    Full Changelog: https://github.com/bscott/subtrackr/commits/v0.1.0