Skip to content

Releases: zzm6899/ArcadeTracker

1.3.0

Choose a tag to compare

@zzm6899 zzm6899 released this 26 Feb 03:20

ArcadeTracker v1.3.0 — Discord Bot Overhaul, Timezone Config & QoL Fixes

Release Date: 2026-02-26


✨ New Features

🤖 Discord Bot — New Commands

  • /help — Shows all available commands in a clean embed grid
  • /info — Displays your account status: linked username, card counts, total balance, all-time spending, leaderboard status, and global stats
  • /setup — Context-aware onboarding guide. Shows step-by-step instructions for new users, or a status checklist with next steps for linked accounts

📊 All-Time Spending Tracking

  • /spent now supports an "All Time" period — compare your first-ever balance reading to your latest across all cards
  • /cards shows all-time spending per card (📉 All-time: -$X.XX) when spending data exists
  • /info includes total all-time spending across all cards
  • Card detail page — the "Spent" stat box now dynamically updates when you switch chart periods (24h → 7d → 30d → All Time) instead of always showing 24h

🕐 Quiet Hours Timezone Configuration

  • Quiet hours (pauses Koko polling overnight) now use a configurable timezone instead of UTC
  • New timezone dropdown in the Admin panel quiet hours section with common Australian + global timezones
  • Badge displays the configured timezone (e.g. Australia/Sydney) instead of "UTC"
  • Correctly handles wrap-around midnight schedules (e.g. 11 PM → 6 AM)

👁 Last Seen Tracking

  • New last_seen timestamp on every user, updated on:
    • Any Discord bot command
    • Web login (password or Discord OAuth)
    • Dashboard page load
  • Admin panel shows last seen per user with a 👁 icon — green if seen today, grey otherwise, "Never" if no activity yet

🔒 Persistent Sessions (Session Expiry Fix)

  • Flask secret key is now persisted to /data/.flask_secret_key
  • Previously, the secret key was randomly generated on every app restart, which invalidated all sessions (~7 hour expiry was actually a container restart)
  • Sessions now properly last the full 30 days as configured
  • Can also be set explicitly via SECRET_KEY environment variable

🔧 Fixes & Improvements

Discord Bot — Status Cycling Fix

  • Status loop (Watching 🎮 X cards tracked, etc.) was silently failing because it started in setup_hook() before the Discord gateway connection was ready
  • Moved to on_ready() with a running-state guard — status messages now cycle correctly every 45 seconds

Discord Bot — asyncio Modernization

  • Replaced all asyncio.get_event_loop().run_in_executor(None, ...) calls with asyncio.to_thread(...) (14 total replacements)
  • get_event_loop() is deprecated in Python 3.10+ and fails in newer discord.py versions
  • Removed the run_sync() helper function entirely

Koko Card Default Poll Interval

  • New Koko cards added via the Discord bot now default to 5-minute polling (300s) instead of 60s, matching the web UI default

Timestamp Display

  • All timestamps across card detail, dashboard, and admin pages are now converted to the user's configured timezone client-side
  • Applies to: chart labels, "Last updated" lines, poll log timestamps, transaction history dates, admin tables

📁 Files Changed

File Changes
bot.py Complete rewrite — new commands, status fix, asyncio.to_thread migration, last_seen tracking
app.py Persistent secret key, quiet hours timezone config, last_seen column + migration, user timezone context processor
card_detail.html Dynamic spent stat box synced to chart period, timestamp timezone conversion
dashboard.html Timestamp timezone conversion, fixed Timezone card data-card-ts attribute
admin.html Quiet hours timezone selector, last seen per user, timestamp conversion for admin tables

🚀 Upgrade Notes

  • No breaking changes — all DB migrations run automatically on startup
  • If you had SECRET_KEY set in your docker-compose environment, nothing changes
  • If you didn't, your existing sessions will be invalidated one final time as the persistent key is generated — after that, sessions survive restarts
  • Discord bot slash commands will re-sync automatically (new commands: /help, /info, /setup)

What's Changed

New Contributors

Full Changelog: 1.2.0...1.3.0

1.2.0

Choose a tag to compare

@zzm6899 zzm6899 released this 24 Feb 04:57

Added discord bot / web token integration
Added admin panel and fixed timezone patch

1.0.0

Choose a tag to compare

@zzm6899 zzm6899 released this 23 Feb 15:25
Initial Commit: Koko Tracker