1. 17 Apr, 2026 28 commits
  2. 16 Apr, 2026 12 commits
    • Your Name's avatar
      Update pyproject.toml to version 0.99.28 · ee9c9c2b
      Your Name authored
      ee9c9c2b
    • Your Name's avatar
      Bump version to 0.99.28 · 34a0d4e6
      Your Name authored
      All fixes verified and packaged:
      - Admin settings page os context fix
      - Consolidation settings UPSERT persistence
      - Prominent top-center notification alerts
      - Live crypto prices for BTC, ETH, USDT, USDC
      - ENCRYPTION_KEY management UI
      - All templates and code correctly packaged
      34a0d4e6
    • Your Name's avatar
      Improve notification visibility with prominent top-center alerts · 455e310e
      Your Name authored
      - Changed from small bottom-right toast to large top-center alert
      - Added gradient backgrounds (green for success, red for error, orange for warning)
      - Added large icons (check circle, exclamation circle, warning triangle)
      - Centered at top of page with 400-600px width
      - Smooth slide-down animation on appear, slide-up on dismiss
      - Auto-dismisses after 4 seconds
      - Much more noticeable for important actions like saving settings
      455e310e
    • Your Name's avatar
      Fix template error: add os to settings save response context · 8e689156
      Your Name authored
      - Added 'os': os to dashboard_settings_save template context
      - Fixes jinja2.exceptions.UndefinedError: 'os' is undefined
      - Template needs os.environ to get USER for tor hidden service path
      - GET endpoint already had it, POST endpoint was missing it
      8e689156
    • Your Name's avatar
      Use UPSERT for consolidation settings to handle missing records · e780ad68
      Your Name authored
      - Changed UPDATE to INSERT...ON DUPLICATE KEY UPDATE (MySQL)
      - Changed UPDATE to INSERT...ON CONFLICT DO UPDATE (SQLite)
      - Ensures records are created if they don't exist yet
      - Fixes issue where UPDATE fails silently on missing records
      - Handles both database types correctly
      e780ad68
    • Your Name's avatar
      Add logging and visual feedback for consolidation settings · 29d64814
      Your Name authored
      - Added detailed logging to track consolidation updates
      - Logs received config, rows affected, and commit status
      - Returns success:false on errors for proper frontend handling
      - Frontend now shows toast notifications on save success/failure
      - Added console logging for debugging
      - Checks rowcount to detect if records exist in database
      29d64814
    • Your Name's avatar
      Fix consolidation settings not saving · eb05beac
      Your Name authored
      - Updated API endpoint to handle simple key-value format from frontend
      - Endpoint now accepts both old format (consolidation_settings array) and new format (btc/eth/usdt/usdc keys)
      - Maps lowercase keys to uppercase crypto_type in database (btc -> BTC, etc)
      - Only updates threshold_amount, preserves admin_address and is_enabled
      - Fixes issue where changing page would reset values to defaults
      eb05beac
    • Your Name's avatar
      Expand crypto price display to show BTC, ETH, USDT, USDC · f0f3d96f
      Your Name authored
      - Updated UI to show prices for all 4 supported cryptocurrencies
      - Each crypto has its own section with color-coded borders
      - Shows prices from Coinbase, Binance, and Kraken for each
      - Displays average price (applied) for each cryptocurrency
      - New API endpoint: GET /api/admin/crypto/prices (returns all 4 cryptos)
      - Legacy endpoint /api/admin/crypto/btc-prices still works (redirects)
      - Handles stablecoin pricing correctly (USDT/USDC near 1.00)
      - Auto-refreshes all prices every 60 seconds
      - Single refresh button updates all cryptocurrencies
      f0f3d96f
    • Your Name's avatar
      Add live BTC price display in admin payment settings · 79a2e226
      Your Name authored
      - Added live BTC price section showing prices from Coinbase, Binance, and Kraken
      - Displays average price calculated from enabled sources
      - Shows prices in configured currency (USD by default)
      - Auto-refreshes every 60 seconds
      - Manual refresh button available
      - New API endpoint: GET /api/admin/crypto/btc-prices
      - Fetches real-time prices from exchange APIs
      - Gracefully handles disabled sources and API errors
      - Shows 'Disabled' for unchecked sources, 'Error' for failed fetches
      79a2e226
    • Your Name's avatar
      Fix payment system API endpoints to use correct table names · de387e96
      Your Name authored
      - Fixed /api/admin/payment-system/status to query user_crypto_wallets instead of non-existent crypto_addresses table
      - Fixed /api/admin/payment-system/status to query payment_transactions instead of non-existent payments table
      - Fixed /api/admin/payment-system/config to query crypto_price_sources correctly (by name, not crypto_type)
      - Removed duplicate/orphaned SQL code that was causing syntax errors
      - Added try-catch blocks to gracefully handle missing tables during initial setup
      - API now returns proper data structure matching frontend expectations
      de387e96
    • Your Name's avatar
      Add ENCRYPTION_KEY management UI in admin dashboard · b8011207
      Your Name authored
      - Added encryption key configuration section in admin payment settings page
      - Encryption key can now be set/viewed in admin UI instead of only env var
      - Key is stored in admin_settings table with get/save methods in database.py
      - Startup loads key from: 1) database, 2) environment, 3) generates temporary
      - Added API endpoints: GET/POST /api/admin/settings/encryption-key
      - UI shows key status (database/environment/temporary) and allows generation
      - Includes security warnings about not changing key after master keys generated
      - Fixes issue where temporary key was regenerated on every restart
      b8011207
    • Your Name's avatar
      fix: correct RenewalProcessor constructor arguments · 51d67426
      Your Name authored
      - RenewalProcessor expects 5 args: db_manager, stripe_handler, paypal_handler, crypto_wallet_manager, price_service
      - service.py was only passing 2 args: db_manager, subscription_manager
      - Fixed to pass all required arguments
      - Fixes 'missing 3 required positional arguments' error
      51d67426