2026-01-05T19:18:22Z - 2026-04-05T19:18:22Z
Overview
18 Releases published by 1 user
Published
2026.3.13
Published
2026.3.12
Published
2026.3.11
Published
2026.3.10
Published
2026.3.9
Published
2026.3.8
Published
2026.3.7
Published
2026.3.6
Published
2026.3.5
Published
2026.3.4
Published
2026.3.3
Published
2026.3.2
Published
2026.3.1
Published
2026.2.5
Published
2026.2.4
Published
2026.2.3
Published
2026.2.2
Published
2026.2.1
65 Pull requests merged by 2 users
Merged
#122 feat: enforce FA lock deadline after week 14
Merged
#116 perf: eliminate redundant API calls in trade views (#94)
Merged
#112 perf: eliminate redundant GET after create/update and parallelize stats (#95)
Merged
#118 perf: parallelize N+1 player/creator lookups with asyncio.gather (#89)
Merged
#121 feat: enforce trade deadline in /trade commands
Merged
#119 fix: update chart_service path from data/ to storage/
Merged
#117 hotfix: make ScorecardTracker methods async to match await callers
Merged
#115 ci: add release script for tag-triggered deployments
Merged
#114 fix: update deploy script for tag-triggered releases
Merged
#113 ci: switch to tag-triggered releases with production Docker tag
Merged
#111 Merge next-release into main
Merged
#105 cleanup: remove dead maintenance mode artifacts in bot.py (#104)
Merged
#106 perf: parallelize independent API calls (#90)
Merged
#107 perf: cache inspect.signature() at decoration time (#97)
Merged
#108 perf: use channel.purge() instead of per-message delete loops (#93)
Merged
#110 ci: only build Docker images on merge to main/next-release
Merged
#109 perf: replace json.dumps serialization test with isinstance fast path (#96)
Merged
#86 fix: split read-only data volume to allow state file writes (#85)
Merged
#100 perf: cache user team lookup in player_autocomplete, reduce limit to 25
Merged
#101 perf: replace Redis KEYS with SCAN for cache invalidation (#98)
Merged
#103 perf: parallelize schedule_service API calls with asyncio.gather
Merged
#102 perf: replace sequential awaits with asyncio.gather()
Merged
#83 fix: replace broken interaction_check decorator with MaintenanceAwareTree subclass
Merged
#81 Merge next-release into main
Merged
#72 fix: re-fetch existing transactions on each validation
Merged
#80 fix: prevent partial DB writes on scorecard submission failure
Merged
#71 fix: prefix trade validation errors with team abbreviation
Merged
#77 chore: pin all Python dependency versions in requirements.txt (#76)
Merged
#75 fix: trailing slash on all collection POST calls
Merged
#74 fix: targeted trailing slashes for POST endpoints (hotfix)
Merged
#73 fix: add trailing slashes to prevent 307 redirects dropping POST bodies
Merged
#64 feat: add is_admin() helper to utils/permissions.py (#55)
Merged
#70 fix: show validation errors in trade embed Quick Status
Merged
#68 ci: Use docker-tags composite action for multi-channel release support
Merged
#67 test: implement test_validate_transaction_exception_handling (#35)
Merged
#66 fix: reuse persistent aiohttp.ClientSession in GiphyService (#26)
Merged
#65 refactor: extract duplicate command hash logic into _compute_command_hash (#31)
Merged
#63 fix: update roster labels to use Minor League and Injured List (#59)
Merged
#69 fix: replace create_item_in_table placeholder with direct endpoint call (#30)
Merged
#62 fix: implement actual maintenance mode flag in /admin-maintenance (#28)
Merged
#60 fix: refresh roster data before validation to prevent stale cache
Merged
#58 refactor: move 42 unnecessary lazy imports to top-level
Merged
#56 fix: auto-detect player roster type in trade commands
Merged
#53 feat: add team ownership verification to /injury commands (closes #18)
Merged
#52 fix: key plays score text shows "tied at X" correctly (closes #48)
Merged
#51 next-release
Merged
#50 fix: roster validation includes org affiliate transactions
Merged
#47 next-release
Merged
#46 feat: include current week number in weekly-info channel post
Merged
#45 fix: use explicit America/Chicago timezone for freeze/thaw scheduling
Merged
#42 next-release
Merged
#14 fix: ContextualLogger crashes when callers pass exc_info=True
Merged
#13 ci: Fix act_runner auth for composite actions
Merged
#12 fix: Use Gitea API for CI tag creation
Merged
#11 ci: Switch to CalVer (YYYY.MM.BUILD) with auto-generated versions
Merged
#10 ci: Switch to CalVer versioning
Merged
#9 fix: roster validation includes pending trades, fixes sWAR field
Merged
#8 Fix thaw report channel lookup
Merged
#7 fix: add stadium image link to weather command
Merged
#6 chore: Compress CLAUDE.md from 775 to 67 lines
Merged
#5 ci: switch Docker build cache to type=registry
Merged
#4 Raise exception on spreadsheet errors instead of silently skipping
Merged
#3 fix: Validate and sanitize pitching decision data from Google Sheets
Merged
#2 chore-cc-update
Merged
#1 bugfix/injury-team-null-errors
2 Pull requests proposed by 2 users
Proposed
#120 perf: add caching for frequently-accessed stable data (#91)
Proposed
#123 fix: add missing logger to SubmitConfirmationModal
45 Issues closed from 1 user
Closed
#94 perf: double API calls in trade views (validate_trade and _get_user_team)
Closed
#95 perf: redundant GET after create/update in custom_commands_service
Closed
#89 perf: N+1 sequential player/creator lookups in loops
Closed
#104 cleanup: remove dead maintenance mode artifacts in bot.py
Closed
#90 perf: parallelize independent API calls (team lookups, injury cmds, trade validation)
Closed
#97 perf: cache inspect.signature() at decoration time in logged_command and cache decorators
Closed
#93 perf: use channel.purge() instead of per-message delete loops
Closed
#96 perf: JSON log formatter tests serializability of every field on every log call
Closed
#29 Implement dynamic roster type detection in /trade add-player
Closed
#85 bug: read-only volume mount prevents scorecard tracker from persisting state
Closed
#99 perf: autocomplete fires two API calls per keystroke; cache user team lookup
Closed
#98 perf: replace Redis KEYS command with SCAN for cache invalidation
Closed
#88 perf: N+1 sequential API calls in schedule_service (up to 18 per request)
Closed
#87 perf: fix false parallelism — sequential awaits disguised as concurrent
Closed
#82 bug: maintenance mode interaction_check is never registered (no-op)
Closed
#78 bug: failed scorecard submission — CLS vs MKEA (2026-03-10)
Closed
#55 Add is_admin() helper to utils/permissions.py
Closed
#35 Implement test_validate_transaction_exception_handling
Closed
#30 Replace create_item_in_table placeholder with proper table-specific endpoint logic
Closed
#76 chore: pin all Python dependency versions in requirements.txt
Closed
#26 Reuse a persistent aiohttp.ClientSession in GiphyService
Closed
#31 Extract duplicated command hash logic into a shared helper in bot.py
Closed
#59 Update CLI Tool / Team Roster Labels
Closed
#36 Remove or replace TODO-commented test stubs in test_commands_dropadd.py
Closed
#28 Implement actual maintenance mode flag in /admin-maintenance
Closed
#18 Add team ownership check in /injury set-new
Closed
#17 Add team ownership verification to /injury set-new
Closed
#48 Post-Game Summary - Key Plays Log Error
Closed
#49 Roster validation doesn't include org affiliate transactions (trades invisible to MiL count)
Closed
#43 fix: UTC timezone conversion breaking time-based features
Closed
#40 Live Scorecard Not Being Posted
Closed
#38 Use timezone-aware datetime.now(UTC) in TransactionFreezeTask.weekly_loop
Closed
#27 Change testing config default to False
Closed
#25 Replace asyncio.get_event_loop() with asyncio.get_running_loop()
Closed
#32 Replace MD5 with SHA-256 for command change detection hash
Closed
#24 Guard interaction.guild access in has_player_role
Closed
#23 Replace bare except: with except Exception: and log errors
Closed
#22 Avoid leaking internal exception details to Discord users
Closed
#21 URL-encode Giphy search phrase before building request URL
Closed
#20 URL-encode query parameter values in APIClient._add_params
Closed
#19 Remove hardcoded Giphy API key from config.py
Closed
#39 /scorebug Command Win Probability Display Error
Closed
#16 Clean up obsolete MoveAction test stubs in test_commands_dropadd.py
Closed
#37 Fix stale comment about moveid format in transaction_freeze.py
Closed
#33 Remove 226 unused imports across the codebase
6 Issues created by 1 user
Opened
#34 Resolve @requires_team decorator mock barrier to re-enable integration tests
Opened
#41 Prettify /team Embed
Opened
#54 Extract shared player ownership verification utility
Opened
#57 refactor: review remaining justified lazy imports for dependency injection
Opened
#91 perf: add caching for frequently-accessed stable data
Opened
#92 perf: blocking synchronous file I/O on async event loop