Changelog

What's new in OverBot.

Release notes, new features and fixes.

7.2.4

v7.2.4
October 11, 2026

New Features

  • mark bot restarts in the shard history and skip their warm-up (#48) (b1b161c)

7.2.3

v7.2.3
October 10, 2026

New Features

  • refresh linked profiles on demand (#47) (86b8c86)

7.2.2

v7.2.2
October 8, 2026

Bug Fixes

  • handle gateway latency before the first heartbeat ACK (#46) (7150056)

7.2.1

v7.2.1
October 5, 2026

Bug Fixes

  • offer Premium in /premium only to members who do not have it (#45) (78d551c)

7.2.0

v7.2.0
October 5, 2026

New Features

  • leave the owner's servers out of the supporters list (#42) (47acdfc)

Bug Fixes

  • keep the premium start date when the owner relabels a target (#43) (a5d3f79)
  • name the repo when a GitHub releases fetch fails (#41) (b6b2af2)

7.1.1

v7.1.1
October 5, 2026

New Features

  • expose each supporter's premium type (#40) (62d7f69)

7.1.0

v7.1.0
October 5, 2026

New Features

  • owner-only admin overview API for the dashboard (#38) (f4924b3)
  • sell Personal Monthly as the subscription (#36) (64bc236)
  • tease saved season history to free users (#34) (d0bd682)
  • open the server newsboard to every server (#33) (4542fff)
  • show the full hero meta to every user (#32) (7ea99fb)
  • server card colour with personal precedence (#31) (02302a4)
  • expose the website releases through the API (555b375)
  • log every owner revoke as a revoked event (255ed9b)
  • credit Blizzard and OverFast as the stats source (68132c3)
  • add ranks, winrate and progress series to dashboard profiles (4e316cf)
  • add newsboard test post and recent posts endpoints (84202ec)
  • tag API responses and logs with a request ID (eab2396)
  • report autocomplete and value ranges for command options (1b2aa11)
  • serve the application emoji URLs on GET /emojis (c0fb2ca)
  • export the stats and esports V2 payloads from fixtures (d2a4bac)
  • add a View Ratings user context menu (2104080)
  • expose the full command contract on GET /commands (2c62c6c)
  • add server lifetime premium bound to a guild from the dashboard (473ddb3)
  • choose the SKU when creating a test entitlement (218094c)
  • add lifetime premium purchase for users (6e94e1b)

Bug Fixes

  • publish the reconcile restore through the ticketed guild caches (#24) (56f1104)
  • limit team DM alerts to Personal Premium (#29) (e59af9a)
  • collapse the separators left by removed rows in frozen views (#28) (ca4b2f8)
  • order release notes by user impact and render scopes once (6d47c68)
  • publish guild caches before the pool releases the connection (7a2e468)
  • publish guild caches after commit in lock order (9d46a56)
  • publish guild caches under the row lock before commit (ace36a8)
  • cache the stored guild state after a revoke or refund (2d40e9c)
  • clear the caches when the owner revoke finds no stored premium (ce54da5)
  • match unlabelled premium rows when resolving the revoke target (eb98cb2)
  • lock the purchase before the guild in the owner revoke (9f1c8c6)
  • lock the guild and own its caches in the owner revoke (d8449ae)
  • unbind the server lifetime when the owner revokes its guild (2ea770f)
  • keep free transfers when support moves a server lifetime (33f201c)
  • keep a bound guild out of subscription expiry when its restore fails (67a5950)
  • confirm server lifetime refunds even when Discord lists no entitlements (d8320af)
  • leave a guild bound to a server lifetime to the restore step (51122e4)
  • keep reconciling when one server lifetime restore cannot reach the database (9288124)
  • decide a server lifetime restore on the stored label alone (fb1884e)
  • keep a server lifetime when its lookup lacks an application ID (6dbf740)
  • alert the owner when a server lifetime stays unconfirmed for a day (dff1141)
  • count every paid bound server lifetime in the reconcile (6d18b2e)
  • revalidate a server lifetime binding under lock before restoring it (b463f43)
  • keep a server lifetime when its lookup fails to connect (2b527f6)
  • confirm a server lifetime refund with Discord before releasing it (58eb924)
  • restore the lifetime label on guilds bound to an active server lifetime (c66ff2f)
  • normalize the allowed dashboard origins (184ac87)
  • require an Origin header on dashboard writes (1c351a2)
  • check the origin on public state-changing routes too (fbdbbf7)
  • reject cross-site state-changing dashboard requests (c75107f)
  • keep the support role while another server lifetime remains (b9d5017)
  • keep the outcome log when the role check cannot reach the database (3c28bc1)
  • time out the subscription check on a lifetime refund (fca59e7)
  • keep the support role while the buyer owns a server lifetime (1ec5478)
  • resolve entitlement targets by ID instead of the user cache (ba06331)
  • hide the stats source while a profile switch loads (19ecd92)
  • drop the private profile claim from the Battle.net hint (4228063)
  • shorten the player not found message (912a459)
  • apply the slash command cooldowns to the stats context menus (#18) (3462fdd)
  • drop em dashes from the bot's message copy (f25aa40)
  • read underflowing snapshot numbers as NULL (41abfb0)
  • settle stale pending test posts when listing a guild's posts (1631275)
  • retry recording a sent test post and report an unknown outcome if it fails (f1437a0)
  • return the settled outcome when completion waited on a concurrent settlement (6e3e524)
  • reject guild IDs above the snowflake range (6fb17dc)
  • read out-of-range snapshot numbers as NULL (9a7782b)
  • keep the send error when settling an interrupted test post fails (fe10c78)
  • keep a settled test post outcome when the original request completes late (ee7fce6)
  • settle every stale pending test post of the guild, not only a replayed key (14b2b35)
  • read snapshot numbers as NULL when the JSON is not a number (695008d)
  • reject guild_id 0 on routes that require a guild (7f6cfa8)
  • reject idempotency keys with a trailing newline (1efac27)
  • rank emerald and ultimate correctly in season peaks (6f19c16)
  • reject profile IDs outside the column range on the progress route (87d8746)
  • count failed newsboard test posts toward the guild cooldown (c0711ae)
  • settle newsboard test posts left pending by an interrupted request (03ea714)
  • build the newsboard test message before claiming the idempotency key (1c455be)
  • rate-limit and cache the public command and emoji endpoints (eafc919)
  • give exported components stable custom IDs (22f7577)
  • keep guild-only commands out of DMs and group DMs (a80b536)
  • open View Ratings on a platform that has a rank (7159523)
  • expire LFG listings even when a message edit fails (7178b1b)
  • skip a failed meta snapshot insert instead of refetching every hero (f4cef8c)
  • deactivate expired LFG listings only after updating their messages (ba3cafe)
  • let a retried premium reconcile finish what a database error interrupted (38470f8)
  • retry database loops on pool exhaustion and closed connections (a7af718)
  • read news recipients before recording the article as posted (14577ef)
  • resolve esports alert channels before sending any alert (7b37943)
  • mark a live match as alerted only after its subscriber lookups (110ff95)
  • retry database loops on server shutdown errors too (a8f36d6)
  • mark live matches as alerted before sending (4f2ecfa)
  • fit webhook error tracebacks within the message text limit (422c2f9)
  • keep database background loops alive through connection errors (38f127d)
  • keep the oldest commit in generated release notes (7fd0f5e)
  • send live match alerts as a layout view (0798324)
  • correct the user lifetime SKU ID (6da0e9e)
  • keep premium when the subscription check fails on a lifetime refund (7f1c99a)
  • keep premium from an active subscription when a lifetime is refunded (708c3cb)

Performance

  • match the guild posts index to the recent posts query (c52765b)
  • limit progress hero playtime to the ten heroes played most (9259f45)
  • compute season peaks in SQL instead of fetching all rank history (bf6c339)
  • index rating snapshots by player and time for progress charts (7c697c7)

7.0.8

v7.0.8
September 8, 2026

7.0.7

v7.0.7
September 8, 2026

Bug Fixes

  • align competitive divisions with the OverFast ladder (ecb8e62)
  • run CI on nightly instead of the nonexistent next branch (2b51664)
  • raise cryptography and lxml ceilings to clear remaining advisories (57f762b)
  • upgrade dependencies to clear 32 security advisories (0d2a8bb)

7.0.6

v7.0.6
August 23, 2026

New Features

  • record when premium started and when it renews (5a6eedb)
  • track subscription renewals and cancellations (6ad01d0)
  • reconcile premium state with Discord entitlements (37ca4b4)

Bug Fixes

  • mount the migrations directory for the upgrade container (abf15c6)
  • resolve premium renewal dates per subscription (9378cb8)
  • clear stale loading card when a deferred command errors (4d2eaf0)

7.0.5

v7.0.5
June 26, 2026

New Features

  • exclude private profiles from name-based linking and explain public requirement (3e1b3de)
  • add open queue role icon and rank coverage (bb5d986)

7.0.4

v7.0.4
May 2, 2026

New Features

  • dockerize bot and migrate CI/CD from Supervisor to Docker (7370ca0)

Bug Fixes

  • ensure db upgrade uses configured database uri (8199bb3)
  • prevent repeated re-sending of overwatch news (eddf5fa)
  • restore asyncio import removed during pygit2 cleanup (eaf5d4b)

7.0.3

v7.0.3
March 18, 2026

Bug Fixes

  • update terms and privacy URL paths (bb64dc5)

7.0.2

v7.0.2
March 15, 2026

New Features

  • add shard history endpoint for latency trends (6902f0a)

7.0.1

v7.0.1
March 14, 2026

Bug Fixes

  • only count true failures in command success rate (0eec3d7)
  • use type 2 subscription SKUs for test entitlements (d399971)

7.0.0

v7.0.0
March 14, 2026

New Features

  • add loading text indicator in StatsView (665121c)
  • add observability stack with Grafana, Loki, and Promtail (7408855)
  • add GitHub releases and beta changelog API endpoints (636c6e7)
  • expose bot creation date in stats endpoint (ea960b2)
  • track user-install context in commands and interactions (af827a9)
  • add API timeout retry flow for stats commands (6b08b7d)
  • add shard snapshot telemetry (b8642e3)
  • track command execution duration (183720a)
  • add guild-scoped esports channel and subscriptions (65ba16e)
  • improve esports team subscription UX (c1ab754)
  • add rank display and filtering to LFG listings (345004d)
  • cycle bot presence through multiple activities (34c5312)
  • add endorsement level emoji icons (c402cb5)
  • add team nickname and esports notification tracking (61a7330)
  • add notification delivery tracking for news (15c2d1f)
  • add profile switching to stats view (4c3b5bf)
  • add premium event history API and starts_at tracking (635e759)
  • expose subscription dates and cancellation info in premium status (63580a3)
  • enhance esports subscriptions with team metadata and dashboard API (d5852ea)
  • add personal newsboard slots and premium gating (70794e4)
  • add migrations for newsboard source, esports teams, and guild tracking (3f0d390)
  • add purge-emojis CLI command (5175a79)
  • show loading view during async operations (6c394c0)
  • refresh app emoji icons and replace link/plus with log_out (9600f43)
  • improve live matches display and subscription notifications (49ad7bc)
  • improve esports round scores and role display (f4cd544)
  • add period filtering and user rank to trivia leaderboard (cc3722f)
  • enhance esports match details and add subscription prompt (ce3d925)
  • add View Stats and Compare Stats context menus (17224df)
  • add premium-aware dynamic cooldowns (eec07ac)
  • unify esports into tabbed championship view (ecd30f6)
  • unify stats subcommands into a single tabbed view (a6072e2)
  • add championship filter and pagination to results command (66937b1)
  • add hero selection to career stats view (e8cc030)
  • support blizzard_id disambiguation in profile linking (072340e)
  • add 6 new trivia question categories (5b4ee2a)
  • add in-memory TTL response cache to OverFast API client (df368ea)
  • manage premium role on entitlement and member join (834930a)
  • add hit/miss tracking to ExpiringCache (f69c0b5)
  • rewrite standings as interactive StandingsView with lazy loading (d67f5f7)
  • add message_view helpers and remove cooldown refresh (7acc09f)
  • rewrite dashboard sessions and harden API layer (55d9761)
  • add interactions tab to analytics dashboard (48fa253)
  • track component interactions across all cogs (eb85783)
  • add interaction tracking infrastructure (69a63e0)
  • update player data on stats fetch (c0e6724)
  • add unlink confirmation and inline OAuth result handling (9b284c3)
  • add pending links future for OAuth callback communication (6db71f7)
  • add player identity table and service (e8410af)
  • redesign profile list with per-profile pages and inline actions (6b18b20)
  • add player search endpoint and pre-resolved profile linking (319b66c)
  • add avatar, namecard, and title columns to profile (2ce536f)
  • replace static meta view with interactive MetaView (4155ecd)
  • show bot creation date in info command (b6171dc)
  • redesign hero meta views with progress bars (ffb5313)
  • add progress bar emojis and helper method (23780d5)
  • consolidate /profile link into single /profile command (5854f8d)
  • register search application emoji (9d46931)
  • show season peak ranks in competitive stats (436ff0c)
  • register faceit_points application emoji (111c1e3)
  • add hint text to loading view (9580a9f)
  • prefer exact name match in player search results (dc48186)
  • add upcoming tournaments command (aa5b0f9)
  • add hero portrait emojis to meta and stats views (1f5addc)
  • store distributed news articles in DB (f6b0f7f)
  • remember and apply preferred platform selection (2c60bde)
  • track error messages in command analytics (7d3e949)
  • replace info subcommands with unified /info browser (4f29064)
  • add rounds column and update_match_rounds to EsportsService (6976b86)
  • show warning when profile is not found on Blizzard's systems (5d68635)
  • add go-to-page modal for paginated views (119f234)
  • improve profile list buttons with emojis and refresh (eda9fc6)
  • add plus icon asset and download script (0997d8a)
  • add security headers and improve CORS middleware (f28676d)
  • add separate rate limiting for trivia routes (855a0bc)
  • add session indicator cookie (ff6b7c4)
  • add web trivia API endpoints (76c2b96)
  • add cooldown system to random command (cc8db81)
  • add inline profile linking to profile list view (4df4ec5)
  • add newsboard and channels dashboard endpoints (dfa1b2b)
  • add player_id backfill mode to verify_profiles script (3ec1ce3)
  • add player_id columns to profile and stats tables (e82bbc4)
  • add premium application emoji to help command (e1d5c56)
  • add comparison arrows to stats and per-platform compare (651fa83)
  • add platform parameter to summary fetch (a8eee69)
  • register arrow and action app emojis (9cbc226)
  • relax LFG to accept any linked profile (afe39ba)
  • add stale profile detection and auto-removal (571e5cf)
  • apply BattletagTransformer to stats commands (5770c92)
  • verify battletag exists before linking or updating (ae567fa)
  • expose stat_namecard in profile query and API response (de42462)
  • add guild-aware premium to dashboard routes (1142ae7)
  • integrate token manager and harden API middleware (2d152d5)
  • add encrypted Discord OAuth token persistence (723162e)
  • improve API middleware and OAuth redirect for dashboard (e8c6e1b)
  • support guild-aware profile limits in dashboard (caa9059)
  • add web-origin OAuth verification flow (c0a3211)
  • add guilds endpoint and persist Discord OAuth tokens (e1dd210)
  • add web dashboard with Discord OAuth2 auth (179c688)
  • add season select menu for ratings view (7df5302)
  • add OverFast API attribution to bot info (c1e0d6e)
  • validate OAuth settings coherence (d70dfd5)
  • add color preset autocomplete and ephemeral responses (54d454a)
  • add is_closed field to shard stats (735e477)
  • show loading state during profile selection (011bf1b)
  • add Battle.net verified profile indicator (44076b1)
  • add env emoji to about/webhook and make about work in DMs (4daa39d)
  • add confirmation checkbox to profile unlink modal (5362993)
  • add group selection to LFG leave and simplify listings (774b665)
  • refactor event logging and add shard lifecycle events (22a961d)
  • freeze interactive views on timeout instead of deleting (01951bb)
  • add error handling and nullable team IDs for esports matches (7b67936)
  • persist esports match results (393f1de)
  • add stats snapshots and background tasks (ba2b859)
  • wrap newsboard setup in container (9ff4051)
  • add terms and privacy links to about command (40cba62)
  • enrich profile list with stats metadata (c42aa8b)
  • enforce verified profiles in LFG (083659c)
  • add verified profile check (76ec13f)
  • add subscription management view to esports notify command (9cbfeaf)
  • add release CLI command (b327306)
  • rewrite esports cog with interactive match and player views (bc9a4cb)
  • add FACEIT API methods for search, history, and championships (3b0f377)
  • add version bump CLI command (32ad218)
  • add news article excerpts and improve news display (72a376a)
  • add SKIP_SYNC env var and sync logging (9ee493a)
  • enhance stats with rank emojis and compare autocomplete (e4594ec)
  • add rank emoji cache for competitive ratings (e0a28af)
  • add trivia answer tracking and stats reset (7def1e0)
  • add season history to competitive ratings (4f4f0ed)
  • add cog file watcher for dev mode (cd9805e)
  • redesign help command with pagination and navigation (cd44a50)
  • add cog display names and expose in commands API (a712957)
  • add analytics top owner command (fa317e0)
  • add test entitlement management commands (97a2df4)
  • enrich supporters endpoint with subscription metadata (749663b)
  • consolidate OAuth and tasks cogs into unified API cog (5bac2f9)
  • display first command timestamp in about and stats (5272cea)
  • add schema cleanup migration (282682e)
  • add GitHub Actions CI/CD workflows (6811dae)
  • make OAuth server bind host configurable (104d64a)
  • add Battle.net OAuth profile verification (41bd75b)
  • add /random meme command (162f55d)
  • add one-off script to verify and prune stale profiles (d3bedbc)
  • add migration to clean up and constrain profile battletags (d631e81)
  • validate battletag format on link and update commands (8c537c9)
  • support author icons and title URLs in paginator layout (0e62c98)
  • add match detail buttons to esports schedule and results (3d1a2aa)
  • remove /info status command (ff30194)
  • overhaul owner cog with analytics and premium subgroups (1384e5e)
  • rewrite help command with interactive category browser (bfb7c61)
  • add OWCS esports integration via FACEIT API (1f676d1)
  • add hero background image and stadium powers (40f859e)
  • add LFG (looking for group) system (4ca28dc)
  • add profile compare command (4c7ce84)
  • add premium type distinction (legacy vs subscription) (616593e)
  • add health diagnostics command (dad5618)
  • log premium subscription events (20e0edc)
  • soft-delete servers instead of hard-deleting (8bc4a4c)
  • track error types in command logging (31ee6d6)
  • track member activity timestamps (daed3d2)
  • add V8 database migration (e9c91dd)
  • add hero meta command with pick and win rate stats (5ab62d2)
  • add page counter to paginator (150d850)
  • migrate views to Components v2 layout (b8ebcc6)
  • track per-question trivia statistics (f1a0d90)
  • persist summary data alongside player stats (eee166b)
  • track failed command invocations (e1fa1a2)
  • migrate trivia questions from JSON file to database (2a41522)
  • handle 429, 502, 503 API response codes (b8ff528)
  • configure allowed contexts and install types (d147220)

Bug Fixes

  • evict stale command start times in refresh_caches (e085526)
  • drop batch records after consecutive insert failures (7e9bcb5)
  • cap shared guild cache at 2048 entries (cdd8531)
  • clean up pending OAuth link on timeout (3c96530)
  • mark trivia token as used before processing answer (fe1a761)
  • guard against missing "offense" key in emoji assets (f26f4b8)
  • include battletag in OAuth callback error responses (74f978f)
  • re-send view on cooldown to reset button states (150efe7)
  • guard guild.me access against None in dashboard routes (d8e79a3)
  • narrow JSON parse exception to ValueError in dashboard routes (3fcadf7)
  • skip heroes and categories with empty stat data (c69d1ea)
  • sort stat keys consistently when comparing with counterpart (382426f)
  • return loading state instead of 503 for guilds endpoint (20e3e32)
  • cap command/interaction batch requeue size (e7393f7)
  • address inspection findings and add resolve_player tests (ed8cf2e)
  • prevent data loss in command/interaction bulk insert (bf31e5a)
  • rename OAuth profile route to match frontend endpoint (ad5b55b)
  • use SameSite=None for cookies in cross-origin deployments (fd31bf5)
  • cap rate limiter tracked IPs to prevent unbounded memory growth (c2edc61)
  • redact secrets and sensitive params from error logs (94d8e80)
  • fall back to profile fields when stat fields are null (fe16770)
  • handle errors gracefully in MetaView (6ad2ccc)
  • fallback to player table columns for profile avatar/namecard/title (f59b25d)
  • use EXCLUDED in player upsert COALESCE (b2e3f68)
  • register retry mocks for all attempts in overfast tests (1533829)
  • strip discriminator before exact match comparison (138a086)
  • add static.playoverwatch.com to allowed emoji hosts (ba10b9e)
  • unquote blizzard_id in player search results (1a8178f)
  • decode pre-encoded player_id values in profile table (2985d54)
  • update region values and remove map filter from meta command (a061c81)
  • sync commands to test guild in non-dev environments (b2d0017)
  • add PATH export and remove verbose flag in deploy workflow (e9aa36a)
  • move OverBot import after env var setup in test conftest (d8b5e2c)
  • use separate deploy user secrets for beta and production (eda1d5e)
  • enforce permission checks on guild dashboard routes (663da4f)
  • handle empty X-Forwarded-For header safely (b0078fa)
  • correct deploy directories for beta and production (0f5996f)
  • update stale test assertions to match current exception messages (2b97991)
  • handle non-JSON responses in OverFast client (1a59ffe)
  • resolve premium unlock button race condition (6d332fc)
  • restrict premium unlock button to invoking user (5c23535)
  • improve user-facing error messages (33218e3)
  • use null-safe dict access for API response data (436974c)
  • validate battletag and use case-insensitive duplicate check (b4f7802)
  • case-insensitive battletag matching in OAuth callback (03cb6bf)
  • clear loading message content when replacing with view (7cbaae1)
  • return user_id as string in auth/me response (6a87cd5)
  • add migration gap detection (239836e)
  • add response size limits to news scraper (412031d)
  • cast interval parameter in stats snapshot query (b50999f)
  • prevent KeyError on embed color reset (3208ea7)
  • move LFG deactivation inside transaction (6065cfb)
  • improve user-facing messages across commands (7abc383)
  • improve overwatch command UX and remove newsboard restriction (1412d48)
  • replace Tailscale ping gate with ssh-keyscan retry loop (060a175)
  • accept DERP relay as successful Tailscale route check (42e25b6)
  • wait for Tailscale route before ssh-keyscan in deploy workflow (314d260)
  • improve snapshot error handling and add rate limiting (1092e25)
  • move usage stats command to top-level group (85f01dd)
  • add defensive data access in Profile service (723062a)
  • harden external API clients (e208294)
  • improve error handling and sanitize user input (1985da5)
  • enforce ownership on profile mutations (89d1041)
  • check cache before DB write on embed color reset (c9a2889)
  • prevent race condition in LFG join with transaction (914536a)
  • add null-safety guards and correct profile limit check (dc26701)
  • harden bot startup tasks and shutdown sequence (7247f5e)
  • patch faceit_api_key in test client factory (5132c03)
  • use correct FACEIT leaderboard API for standings and stats (de63887)
  • tests (baa81f1)
  • await async build_news_view in owner news command (70ec055)
  • sort supporters by subscription date descending (d92d054)
  • wrap hero info default view in Container (d32768d)
  • remove SQL string interpolation in premium commands (d33e174)
  • rename caller job keys to avoid repetitive GitHub Actions display (f83ab0f)
  • use sudo for supervisorctl in deploy workflow (47f8b78)
  • log response body before raising on token exchange failure (e3b933b)
  • escape LIKE pattern in V12 migration (23cf496)
  • improve error handling for expired interactions and handler detection (9a470d1)
  • only send online log on first ready event (7740ced)
  • resolve N+1 query in /trivia best with asyncio.gather (1149774)
  • correct news ID extraction and harden news broadcast task (06e9a6b)
  • disable powers button when stadium powers data is missing (2132977)
  • unpack value from ExpiringCache tuple in getitem (6628381)
  • handle missing time_played in most played hero lookup (ef1dac8)
  • flush command batch on shutdown (3de4444)
  • add missing command parameter to app_command_completion listener (25c2bdb)
  • add type annotation for Commands cog reference (8cfa670)
  • exclude venv and cache directories from SLOC count (128c103)
  • target root logger for handler cleanup (71991ed)
  • handle request timeout in OverFast API client (88739c8)
  • strip timezone from interaction created_at (f0475d2)
  • include exc_info in command batch insert error log (58e1dfb)
  • handle private API request failures gracefully (f39c1a8)
  • handle missing guild icon in usage embed (11c1d25)
  • assign view.message from interaction response (ca74c12)
  • start enumerate indices at 1 in stats commands (5cdaf3c)
  • correct typos and misspellings (49eec2f)
  • resolve SecretStr in database URI property (fde886d)
  • use append mode for log rotation and close migration connection (8426122)
  • skip stats posting when API URL is not configured (eebbd18)
  • handle pg_dump subprocess errors (b1fdb36)
  • use correct interaction timestamp for command logging (aa2032a)
  • improve hero name formatting in stats display (47540ea)
  • remove premium from cache on entitlement deletion (b69ef76)
  • correct null handling and data access in Profile (247a03e)

Performance

  • batch-evict rate limit store entries (4adfc79)
  • reduce database connection pool size (0028142)
  • increase connection pool and cache limits (7725c3e)
  • increase connection pool and per-host limits (7e37b06)
  • increase connection pool limits (fe2ea52)
  • batch LFG member count queries (44c3f15)
  • batch member count query in LFG expiry check (a3b389c)
  • optimize bot startup with connection tuning and parallel caching (7022d79)
  • parallelize API cache refresh with asyncio.gather (49f0138)
  • parallelize profile and summary data fetching (a6b5a77)
  • parallelize command usage DB queries with asyncio.gather (a8ba99b)
  • optimize command tracking with COPY and in-memory count (4541c54)
  • add database indexes for query performance (15a3b5b)
  • load trivia questions at init and prefer cached user lookup (8648bdf)
  • use executemany for bulk command inserts (4f6e5ee)
  • cache normalized battletag and update account API URL (a165f4e)