Repository navigation
Releases: zzm6899/ArcadeTracker
Releases · zzm6899/ArcadeTracker
Release list
1.3.0
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
/spentnow supports an "All Time" period — compare your first-ever balance reading to your latest across all cards/cardsshows all-time spending per card (📉 All-time: -$X.XX) when spending data exists/infoincludes 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_seentimestamp 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_KEYenvironment variable
🔧 Fixes & Improvements
Discord Bot — Status Cycling Fix
- Status loop (
Watching 🎮 X cards tracked, etc.) was silently failing because it started insetup_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 withasyncio.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_KEYset 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
- Tz history by @Dablestar in #1
New Contributors
- @Dablestar made their first contribution in #1
Full Changelog: 1.2.0...1.3.0