REPLAYHUB.CLOUD
PLATFORM CHANGELOG · BUILD 2026.08.26.34.21

ReplayHub keeps evolving.

Major workflow releases, safety upgrades, information-architecture changes and documentation updates. The newest release is shown first.

CURRENT BUILD 2026.08.26.34.21LATEST · 3.5POSTGRESQL
LATEST RELEASE · 3.5

Help & Staff Guide Update

The latest release is now taken directly from the platform changelog instead of a hard-coded version, keeping this header aligned with future updates.
3.5

Help & Staff Guide Update

27-08-2026 · CESTLATEST
2 CHANGES
✓Updated the HELP section with new/revised information. (https://replayhub.cloud/help)
✓Updated the Staff Guide section with new/revised information. (https://replayhub.cloud/control/guide)
Messaging & Platform UX · v34.21

Messaging, reports and platform UX use one canonical product surface

26-08-2026 · CEST
6 CHANGES
✓Added canonical Messages and Inbox surfaces for authorized direct, group, team, match, staff and broadcast communication while preserving existing account and role boundaries.
✓Added authorized messaging report and oversight workflows for league staff and Platform Owner without publishing private message bodies to Discord.
✓Reconciled product-facing release metadata and removed internal implementation phase labels from messaging, competition, review, metadata and team surfaces.
✓Verified route, control and entrypoint discoverability with exact source evidence; no confirmed duplicate-control or missing-primary-entrypoint source mutation remained after review.
✓Preserved role-specific routes, existing authentication, permission and CSRF semantics, database schema, worker behavior and notification delivery contracts.
✓Technical deployment and recovery identities remain available in operational evidence while normal product wording is used on user-facing surfaces.
Competition Audit · v34.19

Competition Engine audit evidence is available to staff without enforcement

24-08-2026 · CEST
6 CHANGES
✓Added an explicit staff-controlled Competition audit runner using the existing competition evaluation/findings schema
✓The audit runner evaluates only current-season Archived/Reviewed/Final submissions with replay files and an actual effective competition rule configuration
✓Historical submissions remain read-only and NOT_CONFIGURED submissions are skipped without creating evaluation rows
✓Exact input + engine identity remains idempotent; changed inputs create new current evidence while prior evaluations become STALE and exact input reversion can reactivate matching historical evidence
✓Submission Detail and Review Center expose staff-only audit state while Captain, Player and public views remain unchanged
✓No new SQL migration, worker change, automatic historical backfill, upload rejection, Review completion blocker or Final approval blocker is introduced.
Notifications / Activity · v34.19

Unified player notifications on the existing ReplayHub notification backbone

24-08-2026 · CEST
5 CHANGES
✓Added an authenticated Player Notification Center while reusing CaptainNotification rows through the shared Team Account identity
✓Roster invitations, roster activation/status changes, relevant match updates, replay processing and identity decisions can notify affected Player accounts
✓Upcoming-match player reminders are independently opt-in per league and default OFF; existing Captain/Co-Captain/Admin reminder behavior remains unchanged
✓General Discord fanout is not introduced; existing Reminder Engine Discord delivery remains authoritative
✓No player_notification table, second queue, second worker, historical notification backfill, Competition Engine production backfill, upload rejection or Review/Final guard change is introduced.
Intelligence UI · v34.19

Team & Player Intelligence

24-08-2026 · CEST
4 CHANGES
✓Extended Team Profile with Final-only intelligence, player cards and explicit data coverage.
✓Added public Player Profile by PlayerProfile.public_id with roster/team history.
✓All new statistics use effective metadata; unknown fields are excluded rather than guessed.
✓No SQL migration, no Competition Engine backfill, and no upload/Review/Final enforcement change.
Competition Engine Backend · v34.19

Deterministic competition evaluation backend

24-08-2026 · CEST
6 CHANGES
✓Added append-only competition_evaluation, competition_finding and competition_override evidence models
✓Competition Engine evaluates canonical Submission.id + Submission.version using effective metadata, inherited competition rules, roster and match evidence fingerprints
✓Evaluation lifecycle preserves raw PASS/WARNING/BLOCKED/NOT_CONFIGURED verdicts and supports STALE history without overwriting prior findings
✓Stable finding rule codes distinguish known violations, unknown evidence and not-applicable checks; UNKNOWN evidence can never become BLOCKED solely because data is missing
✓Competition overrides are finding-scoped append-only ACCEPT/REVOKE chains; raw engine result_status remains immutable
✓The evaluation backend has no automatic production backfill, no upload rejection and no Review/Final workflow guard; production behavior remains audit-only and Review/Final guards remain unchanged
Rules Configuration · v34.19

Versioned competition rule profiles are configurable by season, division and round/stage

23-08-2026 · CEST
7 CHANGES
✓Added competition_rule_profile and immutable competition_rule_version configuration layers
✓Rule scope follows Season base → Division override → Round/Stage override inheritance with most-specific configured values winning
✓Map configuration supports NONE, ALLOWED_POOL and FIXED_GAME_ORDER modes plus duplicate-map, ACE and alias configuration
✓Series, roster, player-appearance and future Competition Engine severity settings are stored as validated versioned JSON patches
✓Owner/Admin can create and activate rule versions; Moderator access is read-only and every mutation is POST + CSRF + audit protected
✓Missing keys inherit, false and zero are explicit values, null clears a configured leaf, arrays replace and objects merge recursively
✓Rules Configuration remains configuration-only and does not enable competition evaluation, findings, overrides, upload rejection or Review/Final blocking
Metadata Override UX + Release History · v34.19

Staff can correct supported replay metadata without rewriting parser evidence, and v34.19 release history is fully visible

23-08-2026 · CEST
10 CHANGES
✓Added a staff-only raw-versus-effective replay metadata workspace for each submission version
✓Owner/Admin can create controlled metadata overrides for map, duration, played time, winner and supported player race/result/team fields
✓Every correction derives the original value server-side, requires a reason and is stored in replay_metadata_override instead of modifying raw parser sidecars
✓Replacing an active correction preserves the supersedes chain; revocation deactivates only the overlay and keeps historical evidence
✓Effective metadata remains raw parser evidence plus active metadata overrides plus replay-player resolutions
✓Moderator access is read-only for metadata corrections; Owner/Admin mutation remains POST + CSRF protected
✓Submission Detail and Review Center link directly to the metadata correction workspace
✓Control Center dashboard now exposes the current build, current release and latest changelog milestone
✓Changelog history now includes the completed v34.19 Foundation, Roster Onboarding, Identity/Effective Metadata and Alias Management milestones
✓No SQL migration, worker change, upload validation change, Schedule Mode change, Replay Pack Final-only change, Rules Configuration or Competition Engine behavior was introduced
Alias Management UX · v34.19

Replay identity evidence is manageable from Player, Captain and staff workflows

23-08-2026 · CEST
8 CHANGES
✓Added Player replay-alias create and revoke actions without duplicating the existing account/security stack
✓Players can confirm or reject AUTO replay-identity suggestions tied to their own PlayerProfile
✓Captain and Co-Captain identity resolution is constrained to the exact active league, division and team assignment
✓Staff can review unresolved, conflicting and automatic replay-player identity evidence at league scope
✓Confirmed player-resolution evidence survives later alias reconciliation instead of being silently replaced
✓Alias collisions produce explicit conflict evidence rather than picking the first matching PlayerProfile
✓Submission Detail links identity evidence without rewriting raw replay metadata
✓No Competition Engine, Rules Configuration, intelligence statistics schema or new security-session tables were introduced
Identity / Effective Metadata · v34.19

Replay player identity and metadata corrections now have canonical evidence layers

23-08-2026 · CEST
7 CHANGES
✓Added PlayerAlias as replay-nickname identity evidence distinct from roster membership
✓Added replay_player_resolution as canonical per-submission-version replay/player-slot identity evidence
✓Added replay_metadata_override as an audited overlay for staff metadata corrections while preserving raw parser evidence
✓Added effective_replay_metadata so downstream v34.19 features can consume raw metadata plus active overrides plus player resolutions
✓Unambiguous aliases may create AUTO resolution evidence while collisions remain CONFLICT and unknown names remain UNRESOLVED
✓Confirmed resolutions are explicit evidence and are not silently replaced by later automated reconciliation
✓This release remained additive and did not enable Competition Engine findings or hard upload rejection
Roster Onboarding · v34.19

Player roster onboarding and scoped Captain management are operational

23-08-2026 · CEST
7 CHANGES
✓Added Player roster invitations and activation flows on top of the existing compatible Team/Player account foundation
✓Added the authenticated Player Dashboard for roster status, invitations and account-oriented actions
✓Captain and Co-Captain roster management is restricted server-side to the exact active league, division and team assignment
✓Admin roster management operates at authorized league scope without weakening existing role checks
✓Roster membership history is preserved instead of overwriting previous team/season evidence
✓Existing Captain security sessions, TOTP, recovery codes and notification infrastructure are reused rather than duplicated
✓Roster onboarding did not introduce replay rules, Competition Engine evaluation or public intelligence statistics
Competition Intelligence & Player Registry Foundation · v34.19

Player profiles and roster history establish the foundation for competition intelligence

23-08-2026 · CEST
7 CHANGES
✓Added PlayerProfile as the canonical player/game identity foundation while keeping login/security compatibility separate
✓Added TeamRosterMembership for league, season, division and team membership history
✓Added the compatibility account relationship needed for existing Captain/Team Portal authentication to support player-facing workflows
✓Established additive schema and integrity contracts for later roster, identity and competition capabilities
✓Preserved existing Team Profile, replay upload, Schedule Mode, Review/Final lifecycle and Replay Pack behavior
✓Kept the existing Captain session, TOTP, recovery and security-event stack authoritative instead of creating duplicate player security tables
✓The foundation did not enable league rule profiles, Competition Engine findings or Review/Final blockers
Queue Final Approval Actions v34.18.1.2

MARK REVIEWED and MARK FINAL are available directly in the operational queues

22-08-2026 · CEST
7 CHANGES
✓Kept MARK REVIEWED directly in Control Center Submissions and Admin Review Center for clean Archived submissions
✓Added MARK FINAL directly beside Reviewed submissions in both operational queues while preserving the same server-side Final approval guard
✓Control Center returns to the Submissions tab after queue workflow actions
✓Admin Review Center moves a successful MARK REVIEWED action to the Reviewed view and a successful MARK FINAL action to the Final view
✓Final rows no longer present another Final action and the Control Center mini-workflow now distinguishes Reviewed from Final
✓No Replay Pack readiness rule changed: Reviewed is still not a Replay Pack source and Final-only remains authoritative
✓No database migration, worker change, Schedule Mode change, upload-permission change or auto-publish behavior was introduced
Submission Final Approval v34.18.1.1

Reviewed submissions can now be explicitly approved as Final Replay Pack sources

22-08-2026 · CEST
7 CHANGES
✓Added an explicit MARK AS FINAL action for Reviewed submissions with zero open Issues and an intact replay archive
✓Final approval keeps the submission version and replay archive immutable; it changes workflow status only
✓The Submission Detail workflow now clearly distinguishes Reviewed from Final and explains when Final approval is available
✓Archived submissions can be marked Reviewed from Submission Detail and remain on the same page for the next approval step
✓REQUEST CORRECTION remains the existing Issue Center workflow
✓Replay Pack readiness remains Final-only; Reviewed submissions are never silently treated as Final
✓Final approval refreshes Replay Pack stale state without changing Schedule Mode, upload permission, Match rows, worker code, database schema or publication controls
Season & Division Expectations v34.18.1

Replay Pack completeness can be configured per season and per dynamic league division without making Schedule mandatory

22-08-2026 · CEST
12 CHANGES
✓Added persistent Replay Pack expectations per league, season and scope with AUTO or MANUAL modes
✓Division expectations are generated dynamically from each league configuration; leagues may use three, seven or custom-named divisions without hard-coded Division 1–5 assumptions
✓MANUAL expectations allow Final free-form submissions to satisfy Replay Pack completeness while Schedule Mode is OFF; uploads remain completely independent from expectation settings
✓AUTO division expectations use the official schedule as the completion boundary; an AUTO scope with no schedule remains manual-build capable but is not auto-build/finalize eligible
✓Complete Season AUTO mode resolves from the per-division expectations and checks division distribution rather than trusting only one total
✓Count overage is a blocker so an accidental extra Final submission cannot be silently packed
✓Changing an expectation becomes part of the Replay Pack source fingerprint and makes affected private pack versions STALE; published affected scopes must be made PRIVATE before expectation changes
✓Replay Pack manifests now record the expectation/completion snapshot used to build each immutable version
✓Season Rollover can create season and division expectations for the actual target division set and still starts Schedule Mode OFF
✓Season Templates carry expectation definitions when available; old templates without expectation data remain compatible
✓League Backup format 5 includes Replay Pack expectations; format 4 restore remains supported and does not invent/delete expectation data
✓Existing v34.18 Automation Settings, Final-only source rule, private build result, manual PUBLISH/MAKE PRIVATE, historical packs, Match Timeline, Review Center, Reminder Engine and Captain portal remain unchanged
Replay Pack Automation 2.0 v34.18

Versioned, integrity-verified Replay Pack builds with controlled publication and season-history compatibility

22-08-2026 · CEST
12 CHANGES
✓Added a dedicated Replay Pack Center with strict Final-based readiness for complete-season and per-division pack scopes
✓Replay Packs are now versioned immutable artifacts; new builds never overwrite an existing pack file
✓Added background ReplayPackBuild jobs processed by the existing worker with queued/validation/packaging/checksum/ready/failed lifecycle
✓Each v34.18 pack preserves the existing nested submission ZIP layout and Replay_Pack_Index.txt while adding MANIFEST.json, SHA256SUMS.txt and README.txt
✓New pack metadata stores SHA-256, manifest SHA-256, source fingerprint, version, scope, counts and stale state; ReplayPackItem snapshots preserve exact source submission/replay identity
✓Source-fingerprint comparison provides stale detection when a Final submission/version/replay set changes after a pack was built
✓Automatic build is opt-in per league and always produces PRIVATE/READY artifacts; v34.18 does not implement automatic publication
✓Existing PUBLISH and MAKE PRIVATE behavior is preserved and remains reversible; MAKE PRIVATE never deletes a pack
✓Historical Replay Packs remain manageable after season rollover and public downloads continue to require published=True
✓Publishing a new version only replaces the public version for the same scope (complete season or the same division), allowing several division packs to be public simultaneously
✓Existing legacy SeasonPack rows remain compatible and are not rewritten on disk; legacy historical packs retain Publish/Make Private/Download controls
✓Added an additive migration only; no historical replay archive is regenerated or bulk-backfilled
Match Timeline & Activity Feed v34.17

Match Room gains one chronological operational history without rewriting preserved legacy data

22-08-2026 · CEST
12 CHANGES
✓Added a staff-only Match Timeline / Activity Feed directly inside the existing Match Room; Captain Match Room behavior remains unchanged
✓Timeline normalizes ActivityEvent, Audit, SubmissionVersion, Issue JSON and ReminderEvent into one chronological in-memory feed instead of creating a second audit database
✓ActivityEvent is authoritative for structured v34.16+ events; mirrored legacy Audit entries are suppressed so the same business action is not rendered twice
✓Future Audit + ActivityEvent mirrors now share the exact same timestamp and are marked with source_ref=audit-mirror to make deterministic deduplication simpler without adding a schema migration
✓Legacy Audit history is included only when deterministically linked through the Match submission; unstructured match-only Audit rows are intentionally not guessed onto a Match
✓SubmissionVersion acts as a historical gap-filler and is suppressed when an equivalent replay upload/correction event already exists near the same timestamp
✓Issue JSON supplies timestamped issue/correction lifecycle fallback events only when the equivalent relational activity is absent
✓ReminderEvent remains a first-class structured timeline source with delivery status, recipient counts and Discord queue state
✓Added Match Timeline filters for Match, Replay, Review, Issues, Corrections and Reminders plus source/coverage counters and duplicate-suppression evidence
✓Existing Submission Audit Timeline, Staff Activity, Review Center 3.0, Reminder Center and raw version history remain intact; v34.17 does not replace those specialist views
✓No historical bulk backfill is performed and no new SQL migration is required; the database remains on the v34.16 38-table / 14-migration baseline
✓Worker source, replay validation, Reminder Engine processing, Captain permissions, Caddy and Docker Compose behavior are unchanged
Admin Review Center 3.0 v34.16

Existing review workflows are consolidated into one operational workspace and a structured event backbone prepares Match Timeline v34.17

22-08-2026 · CEST
13 CHANGES
✓Added a dedicated per-league Admin Review Center 3.0 without replacing the existing Dashboard Review Queue 2.0
✓Operational queues are derived from existing Submission status plus Issue/Correction state: Awaiting Review, Correction Required, Correction Received, Reviewed, Final, Exceptions and Trash
✓No new Submission.status values are introduced; Archived, Reviewed, Final, Duplicate, Error and Deleted remain authoritative
✓Correction Received is now a first-class derived work queue so replacement uploads waiting for staff re-review cannot disappear inside generic Archived records
✓Correction Received is tied to the current correction revision, so a later resolve/reopen/revoke cycle does not mistake an older replacement upload for a fresh correction
✓Added server-side guards that block Archived → Reviewed/Final completion while any Issue for that submission is still OPEN; the existing UI-only protection is no longer the sole guard
✓Added filters for Division, Round, Team, replay validation state and submission version plus direct access to Submission, Match Room, Game Explorer and archive ZIP
✓Added additive activity_event storage for normalized future operational events while preserving Audit, SubmissionVersion, Issue JSON and ReminderEvent as existing sources
✓Existing Audit writes now also emit normalized ActivityEvent rows with league/season, optional Match, Submission and Issue identity, actor/category and JSON detail
✓Match schedule/update/delete and Issue/Correction actions provide structured identifiers/payloads to the new activity backbone
✓No historical activity rows are rewritten or backfilled by the migration; v34.17 will merge structured future events with preserved historical sources
✓No bulk mutation actions were added to Review Center 3.0; permissions remain Viewer read-only, Moderator review/correction, Admin/Owner according to existing role rules
✓Worker source, replay validation, Reminder Engine delivery, Captain portal, Caddy and Docker Compose behavior are unchanged
Match Reminder & Escalation Engine v34.15

Per-league deadline automation targets the right Captain, Co-Captain and league staff accounts

22-08-2026 · CEST
12 CHANGES
✓Added per-league Reminder Engine settings with master enable, ReplayHub inbox delivery, optional Discord delivery, 24h/6h/1h pre-deadline reminders, immediate/12h overdue escalation and correction reminders
✓ReplayHub Captain notifications are targeted only to active Captain/Co-Captain assignments matching the exact league, team and division of the official match
✓Captain reminder actions reuse Direct Match Upload v34.14.1 and include the exact Match ID plus the recipient assignment team/division context
✓Added account-specific AdminNotification records for owner/admin league staff and Platform Owner escalation instead of using Discord as the primary notification channel
✓Discord reminders are independently switchable per league; missing/invalid webhooks never block ReplayHub internal notifications and do not create failed reminder queue rows
✓Reminder events are PostgreSQL-idempotent and include the deadline/correction anchor in their dedupe identity so a changed deadline creates a fresh reminder schedule without duplicating old events
✓A late-starting engine emits only the most urgent currently-due threshold and records older missed thresholds as skipped instead of spamming multiple stale reminders
✓Paused, completed, cancelled, finalized, already-submitted and schedule-mode-disabled matches are excluded from reminder delivery
✓Correction workflow keeps the existing immediate correction-request notification and adds 6h/1h reminders without extending the signed 24-hour correction window
✓Added a dedicated per-league Reminder Center with settings, delivery state, recent event history, safe personal inbox test and manual due-check action
✓Reminder scanning runs inside the existing worker with a PostgreSQL advisory lock; no second systemd timer or parallel notification worker is introduced
✓Added one additive managed migration for league_reminder_setting, reminder_event and admin_notification; existing replay submission validation, Direct Match Upload, Caddy and Docker Compose behavior remain unchanged
Direct Match Upload v34.14.1

Captain replay actions can open the exact scheduled match directly

21-08-2026 · CEST
8 CHANGES
✓Captain Command Center SUBMIT REPLAYS links now carry the exact official Match ID in addition to the existing team and division context
✓Team Workspace per-match SUBMIT actions use the same exact-match deep link while the generic UPLOAD REPLAYS action remains unchanged
✓The public upload route accepts an optional match query parameter only as a prefill hint and validates it against the current league open official schedule
✓A requested match is ignored unless it is still open, not already completed/submitted, belongs to the current league/season schedule and is compatible with any supplied team/division context
✓The existing Official Match dropdown remains the single source of client-side matchup selection; Direct Match Upload programmatically selects that same option and dispatches its existing change handler
✓A valid direct match prefill advances the wizard to Step 2 · Teams with Division, Round, Team 1 and Team 2 already populated exactly as if the user selected the Official Match manually
✓Normal Home/League upload behavior is unchanged when no match parameter is supplied
✓No SQL migration, replay validation, final submission, correction workflow, worker, Caddy or Docker Compose behavior changed
Captain Command Center v34.14

Captain Dashboard 2.0 becomes a prioritized cross-team Captain Command Center 3.0

21-08-2026 · CEST
8 CHANGES
✓Upgraded /captain into Captain Command Center 3.0 while preserving every existing Team Workspace, Match Room, notification, security, session, invite and correction route
✓Added NEXT FOCUS that automatically prioritizes correction-required matches, overdue replay sets and the nearest replay deadline across all active Captain and Co-Captain assignments
✓Replaced aggregate-only Action Center hints with concrete match cards that link directly to the assigned Captain Match Room and existing replay upload flow
✓Added an Upcoming Matches queue across assignments with deadline ordering, live server-anchored countdowns and current replay workflow state
✓Added Recent Updates from the existing CaptainNotification table without introducing a second notification system
✓Added a compact account-security strip for TOTP, active SQL-backed sessions and password state while leaving full Security Center controls unchanged
✓Reused existing Match, Submission, Issue, TeamCaptainAssignment, CaptainNotification, CaptainSession and CaptainTwoFactor data; no SQL migration is required
✓No replay validation, review lifecycle, correction workflow, Captain onboarding, worker, Caddy, Docker Compose or database schema behavior changed
Public Platform Status v34.13

Public service status and Platform Owner planned-maintenance publishing

21-08-2026 · CEST
11 CHANGES
✓Added a public /status page backed by the existing PlatformMonitorRun and PlatformIncident records instead of introducing duplicate monitoring
✓Public status exposes only safe aggregated service states; internal check codes, Docker details, database internals, paths, stack traces and incident details remain private
✓The public Status page remains HTTP 200 and reachable while Maintenance Mode is active
✓Status rendering fails soft when monitoring snapshot reads are unavailable instead of exposing an internal exception
✓Added Platform Owner planned-maintenance publishing with title, public message, local start time and approximate end time
✓Planned maintenance is informational only and never automatically enables HTTP 503 Maintenance Mode
✓Expired planned windows automatically disappear from the public page without mutating database state
✓Plan create/update/clear actions are recorded in the existing platform_maintenance_event history
✓Extended the existing platform_maintenance singleton through one additive managed migration; no second maintenance system is introduced
✓Added /status to host monitoring so the public status surface is checked directly
✓No replay lifecycle, league/season data, worker behavior, Caddy configuration or Docker Compose behavior changed
Maintenance Mode v34.12

Planned maintenance can safely pause public and Captain operations without taking ReplayHub offline

21-08-2026 · CEST
9 CHANGES
✓Added Platform Owner Maintenance Center with explicit enable/disable controls and a custom public maintenance message
✓Maintenance state is persisted in PostgreSQL and survives web-container recreation or host reboot
✓Public, Captain, upload, correction and other non-staff routes return a branded HTTP 503 with Retry-After while Maintenance Mode is active
✓Admin login, Control Center, Platform Owner controls, /health and static assets remain available so staff cannot lock themselves out
✓Maintenance enable, update and disable actions are recorded in dedicated platform-level history instead of league-scoped audit records
✓The host monitor recognizes planned HTTP 503 responses for Home and Captain Login while still requiring Admin, Control, Deployment, Backup and Health endpoints to remain available
✓Caddy monitoring treats application-level 503 separately from reverse-proxy failure signals while continuing to detect 502, 504 and connection failures
✓Added platform_maintenance and platform_maintenance_event through one additive managed migration
✓No replay lifecycle, league/season data, backup retention, R2 upload, worker, Caddy configuration or Docker Compose behavior changed
Backup Operations & Verification v34.11

Recovery readiness now combines Platform Safety, off-site and League Backup evidence

21-08-2026 · CEST
9 CHANGES
✓Upgraded Backup & Recovery into a unified Backup Operations Center without introducing a second backup database
✓Added Recovery Readiness with READY, ATTENTION and CRITICAL states derived from the weakest required protection layer
✓Added explicit freshness thresholds for Platform Safety backups, FULL isolated restore verification, off-site R2 snapshots and automatic League Backups
✓Added per-league automatic-backup coverage with physical ZIP, safe-path and backup_manifest.json evidence
✓Added one unified recent protection history across Platform Safety, off-site uploads and League Backups
✓Extended host monitoring with off-site freshness, League Backup freshness/coverage and their systemd timers using the existing incident engine
✓Preserved Platform Safety retention, automatic League Backup KEEP=30 and off-site KEEP=120
✓Preserved existing manual backup creation, QUICK/FULL verification and download actions; no one-click production restore was added
✓No SQL migration, replay lifecycle, permissions, worker, Caddy or Docker Compose behavior changed
Visual Design Polish v34.10.1

ReplayHub visual states now follow one graphite and warm-gold language

21-08-2026 · CEST
7 CHANGES
✓Unified selected staff navigation and Control Center tabs with the canonical dark graphite plus warm-gold active state
✓Added Chrome/Edge autofill styling so secure Admin and Captain login fields no longer switch to browser blue/steel fills
✓Reduced large warning cards to graphite surfaces with restrained amber borders while preserving semantic warning emphasis
✓Recolored remaining search/autocomplete and upload active-state cyan/steel interactions toward ReplayHub gold
✓Polished league logo chrome and public status surfaces without changing their dimensions or layout
✓Kept success green, warning amber and danger red semantics intact
✓No SQL schema, replay data, Match lifecycle, permissions, backup automation, R2, worker, Caddy, Docker Compose or page geometry changed
Visual Design System v34.10

ReplayHub now shares one premium graphite and warm-gold visual language

21-08-2026 · CEST
6 CHANGES
✓Added a central versioned ReplayHub UI stylesheet loaded after page-specific head styles
✓Replaced the previous steel/silver visual identity with graphite-black surfaces, ivory typography and restrained warm-gold accents inspired by the ReplayHub guide artwork
✓Unified global cards, buttons, navigation states, forms, tables, links, focus states, hero surfaces and progress elements without changing page layout
✓Kept success, warning and danger states semantically green, amber and red instead of turning operational status colors into decorative gold
✓Preserved existing grids, spacing, routes, form behavior and responsive structure; this release is a visual-system layer rather than a page-layout redesign
✓No SQL schema, replay data, Match lifecycle, permissions, backup automation, R2, worker, Caddy or Docker Compose behavior changed
Automated League Backups v34.9.2

Every league can receive a protected daily current-season backup automatically

20-08-2026 · CEST
9 CHANGES
✓Added a shared League Backup v4 creator used by both the existing manual CREATE BACKUP action and automation
✓Added a league-backup-all CLI command that creates one current-season backup for every configured league
✓Automatic backups use the dedicated ReplayHub_Auto_Backup_ filename namespace and System · Daily Auto actor marker
✓Automatic retention keeps the newest 30 automatic backups per league across seasons
✓Manual ReplayHub_Backup_ files and manually-created Backup rows are explicitly excluded from automatic retention
✓Added cross-process per-league locking so manual and automatic backup creation cannot write the same league backup concurrently
✓Platform Safety Backup excludes automatic League Backup ZIP binaries to prevent backup-inside-backup storage growth while preserving underlying league data and SQL history
✓Designed for a host systemd timer at 02:30 Europe/Prague with automatic CET/CEST handling
✓No SQL migration, replay lifecycle, permissions, worker, Caddy or Docker Compose behavior changed
Team Identity Polish v34.9.1

Team and league identity marks are larger and easier to recognize

20-08-2026 · CEST
6 CHANGES
✓Increased Team Identity logo sizes across staff Submission Detail and Match Room
✓Increased team logo sizes across Captain Dashboard, Team Workspace and Match Operations
✓Increased league logo sizes in Platform Overview and League Directory
✓Reduced logo image inner padding from 4px to 3px so artwork uses more of the identity badge
✓Public Team Profile now uses the configured team logo with initials fallback instead of a fixed initials avatar
✓No SQL schema, replay data, lifecycle, permissions, worker, Caddy or Docker Compose behavior changed
Team Identity v34.9

Team logos now carry across staff, Captain and public match workflows

20-08-2026 · CEST
8 CHANGES
✓Added league-level Team.logo_url identity metadata so team branding survives season rollover
✓Owner/Admin can add, change or remove a team logo from Control Center → Teams
✓Added team identity marks to staff Match Room and Submission Detail
✓Added team identity marks to Captain Dashboard, Team Workspace and Captain Match Room
✓Added team identity marks to the public Submission page without exposing private replay files
✓Existing league logos are now surfaced in Platform Overview and League Directory
✓League Backup/Restore and team CSV exports preserve team logo URLs with backward compatibility for older backups
✓Added an additive managed PostgreSQL migration; replay data, worker, Caddy and Docker Compose behavior are unchanged
Documentation Label Sync v34.8.2.1

Web Help and Staff Guide labels now match the current downloadable documentation

20-08-2026 · CEST
6 CHANGES
✓Player & Captain web guide label updated from v2.1 to v3.0
✓Public Portal label updated from ReplayHub v34.8.1 to v34.8.2
✓Staff web guide label updated from v3.1 to v4.0
✓Staff guide browser title updated to v4.0
✓Web guide descriptions now identify ReplayHub v34.8.2
✓No guide content, PDF files, SQL schema, replay data, worker, Caddy or Docker Compose behavior changed
PDF Guides Refresh v34.8.2

Downloadable Player/Captain and Staff guides refreshed for ReplayHub v34.8.1 workflows

20-08-2026 · CEST
8 CHANGES
✓Published Player & Captain Guide v3 in Czech and English
✓Published Staff Guide v4 in Czech and English
✓New PDFs combine real ReplayHub UI screenshots with premium visual workflow pages
✓Player PDF now covers Captain Invite onboarding, TOTP 2FA, Schedule Mode, linked Match completion, corrections and common messages
✓Staff PDF now covers Schedule Mode, Match lifecycle, Platform Backup & Recovery, Deployment Safety, Monitoring & Error Center and current permissions
✓Replaced legacy PDF buttons in Help and Staff Guide with current v3/v4 downloads
✓Previous v2/v3 PDF files remain on disk so old direct links do not break
✓Documentation-only release: no SQL migration, replay data change, worker change, Caddy change or Docker Compose change
Help & Staff Guide Sync v34.8.1

Player and staff documentation now matches the current production workflows

20-08-2026 · CEST
10 CHANGES
✓Updated public Player & Captain Help for Official Schedule Mode ON/OFF, free-form uploads, closed/occupied Match behavior and Reviewed workflow semantics
✓Documented Captain Invite onboarding alongside temporary-password fallback, Team Portal TOTP 2FA, recovery codes and Captain security
✓Updated Staff Guide season workflow to SETUP → SCHEDULE → ENABLE MODE → OPERATE → VERIFY → FINALIZE → ROLLOVER
✓Documented the difference between Public uploads enabled and Official Schedule Mode, including the four-state upload behavior matrix
✓Documented Reviewed → exact linked Match COMPLETED and the one-way no-auto-reopen lifecycle rule
✓Added Schedule Mode and Captain Invite permissions to the staff role matrix
✓Expanded staff recovery documentation for Platform Backups, Deployment Safety and Monitoring & Error Center
✓Clarified that new seasons start with Schedule Mode OFF while existing Schedule data remains preserved across mode changes
✓Existing downloadable Player Guide v2 and Staff Guide v3 PDFs are labeled as legacy snapshots so the web guides remain the authoritative current documentation
✓Documentation-only release: no SQL migration, replay data change, worker change, Caddy change or Docker Compose change
Match Lifecycle & Schedule Mode v34.8

Schedule enforcement is now season-scoped and reviewed uploads complete linked matches

20-08-2026 · CEST
10 CHANGES
✓Added explicit per-season Official Schedule Mode instead of deriving upload enforcement from the mere existence of Schedule rows
✓Disabling Schedule Mode restores free-form replay submissions without deleting or altering the stored official Schedule
✓Completed, cancelled and already-submitted official Matches are removed from the public Official Match selector while Schedule Mode is enabled
✓Server-side preflight and final upload validation reject completed or cancelled official Matches when Schedule Mode is enabled
✓Marking a linked replay Submission as Reviewed automatically marks its exact linked official Match as COMPLETED
✓Match lifecycle automation is one-way: changing a Submission away from Reviewed never automatically reopens a Match
✓New seasons start with Schedule Mode disabled; existing seasons with official Schedule rows are backfilled enabled to preserve pre-v34.8 behavior
✓Schedule Mode controls are available in Season Command Center and Schedule, while League Settings shows the current season upload mode
✓Schedule Mode state is included in season snapshots and league backup/restore metadata
✓No worker, Caddy or Docker Compose behavior changed
Captain Invite + Onboarding System v34.7

Secure one-time Captain onboarding without temporary-password sharing

20-08-2026 · CEST
10 CHANGES
✓Added league-scoped secure Captain / Co-Captain invites for new Team Portal accounts
✓Invite secrets are high-entropy bearer tokens stored only as SHA-256 hashes; the admin sees the private invite link once
✓Invite links carry the raw secret in the browser URL fragment, keeping it out of the HTTP request URL and normal reverse-proxy access logging
✓Captains choose a personal password directly during onboarding; invite acceptance creates the account and assignment atomically
✓Invite acceptance snapshots the target team/division/role slot and refuses stale invites when staff changed that slot after issuance
✓Existing Captain usernames continue to use the established Assign / Replace workflow, preventing invite-based takeover of an existing account
✓Invites support 1, 3, 7 or 14 day expiry, explicit staff revocation, recent invite history and safe public IDs
✓After activation the Captain is signed in and routed to Captain Security where standard TOTP remains optional and recommended
✓The existing temporary-password assign/reset workflow remains available and unchanged for compatibility
✓Added captain_invite table; worker, Caddy, Docker Compose, replay upload and existing Captain TOTP/session behavior are unchanged
Monitoring & Error Center v34.6

Structured platform monitoring, incident fingerprints and safe error references

20-08-2026 · CEST
12 CHANGES
✓Added Platform Owner Monitoring & Error Center inside the existing Platform Health family
✓Added platform_monitor_run history for structured host-side health snapshots
✓Added platform_incident with stable fingerprints, OPEN/RESOLVED lifecycle, occurrence counts and component/severity metadata
✓Added a host-side replayhub_monitor.py collector for Docker service state, PostgreSQL, Discord queue, Platform Safety Backups, deployment safety, disk capacity, backup timers, public HTTP endpoints and recent Caddy reverse-proxy errors
✓Collector-owned incidents automatically resolve when the monitored condition clears; repeating events increment the same incident instead of generating duplicates
✓Unhandled HTTP 500 responses now receive a short ERR-XXXXXXXX reference while internal details remain private
✓The public 500 page exposes only the error reference; no traceback, request headers, cookies, TOTP secrets or recovery codes are shown
✓Added Platform Owner resolve/reopen controls for incident workflow; active collector conditions may reopen on the next monitoring run
✓Added staged systemd monitoring service/timer designed for a five-minute cadence
✓The web container does not receive Docker socket access; host-level inspection remains isolated to the VPS collector
✓Existing Notification, PlatformBackupRun and DeploymentCheckRun records remain authoritative and are read rather than duplicated
✓No worker, Caddy, Docker Compose or replay/archive behavior changed
Migration + Deployment Safety System v34.5

Migration checksums and deploy readiness are now enforced

20-08-2026 · CEST
11 CHANGES
✓Added schema_migration registry with immutable filename + SHA-256 evidence and explicit BASELINED versus APPLIED states
✓Historical migration files are baselined only after their required tables, columns and indexes are verified in PostgreSQL; original historical apply timestamps are intentionally not fabricated
✓Added host-side replayhub_deploy_safety.py controller for migration status, one-time baseline, managed apply, PREDEPLOY and POSTDEPLOY checks
✓Registered migration file deletion, checksum mutation or missing expected DB objects blocks deployment readiness
✓Future automatic migration apply requires a replayhub-managed marker, a fresh Platform Safety Backup and rejects destructive SQL plus transaction-control statements
✓Managed migration SQL and its registry entry are committed atomically in one PostgreSQL transaction under an advisory lock
✓PREDEPLOY checks Python syntax, PostgreSQL, migration integrity, backup freshness, disk space, backup timers, restore cleanup, candidate source hash, SECRET_KEY continuity and candidate self-test
✓POSTDEPLOY checks migration integrity, backup safety, timers, restore cleanup, live source, live self-test and key public/admin/captain HTTP routes
✓Added Platform Owner read-only Deployment Safety page with migration registry and deployment check history
✓No migration can be applied from the browser; deployment mutations remain explicit VPS host operations
✓Worker and Caddy behavior are unchanged
Automated Backup & Recovery Center v34.4

Platform-level disaster recovery with verifiable backups

20-08-2026 · CEST
11 CHANGES
✓Added Platform Safety Backups containing a PostgreSQL custom-format dump, persistent ReplayHub data snapshot and SHA-256 manifest
✓Added Platform Backup Run history with SUCCESS/FAILED state, source, size, checksum, verification result and retention state
✓Added Platform Owner Backup & Recovery Center with RUN BACKUP NOW, QUICK VERIFY, FULL ISOLATED RESTORE VERIFY and protected download
✓Quick verification validates the bundle, manifest, component hashes, pg_restore catalog and safe data archive paths
✓Full verification restores PostgreSQL into a generated replayhub_verify_* temporary database, checks required tables/counts and always removes that isolated database; production is never a restore target
✓Added local retention policy preserving daily 7, weekly 4 and monthly 12 generations while always protecting the newest successful backups
✓Added disk-space guard and cross-process file locking so concurrent Platform Safety Backups cannot run
✓Added systemd unit templates for daily scheduled backup and weekly full isolated verification; installation remains an explicit host operation
✓Existing league Backup v4 create/restore workflow remains compatible and existing off-site S3 history/uploader remains separate but visible in the unified Recovery Center
✓Off-site runner now uploads the same Platform Safety Backup bundle instead of constructing a second duplicate platform archive
✓No worker or Caddy behavior changed
Captain / Co-Captain TOTP 2FA v34.3.1

Standard authenticator-app 2FA for Team Portal accounts

20-08-2026 · CEST
9 CHANGES
✓Added optional standard 6-digit / 30-second TOTP two-factor authentication to Captain and Co-Captain accounts
✓Compatible with Authy, Google Authenticator, Microsoft Authenticator, 2FAS, Aegis and other standard TOTP apps through QR or manual setup key
✓Captain TOTP secrets use the same encrypted-at-rest keyring as Admin TOTP while Captain recovery codes remain isolated in separate tables
✓Added 10 one-time Captain recovery codes, TOTP replay protection, rate-limited two-factor login challenges and security event history
✓Added Captain Security Center for enrollment, recovery-code rotation, disable flow and active-session visibility
✓Captain 2FA is account-wide across every league/team assignment and remains optional in v34.3.1
✓Added Admin/Owner recovery action and protected server CLI reset for Captain 2FA; resets revoke all active Captain sessions
✓Temporary-password onboarding remains enforced before a Captain may configure 2FA
✓Added captain_two_factor, captain_recovery_code and captain_security_event tables; no replay, league, season, worker or Caddy behavior changed
Admin Authentication & TOTP 2FA v34.3

Standard authenticator-app 2FA and smoother staff session continuity

20-08-2026 · CEST
8 CHANGES
✓Added standard RFC 6238-style TOTP two-factor authentication for Admin accounts using 6-digit 30-second authenticator codes
✓Compatible with Authy, Google Authenticator, Microsoft Authenticator, 2FAS, Aegis and other standard TOTP apps via an otpauth QR code or manual setup key
✓TOTP secrets are encrypted at rest and recovery codes are stored only as one-way hashes
✓Added one-time recovery codes, TOTP replay protection, rate-limited 2FA login challenges and server-side emergency 2FA reset tooling
✓Added Admin Security Center for enabling/disabling TOTP, QR enrollment, recovery-code rotation and security/session visibility
✓Fixed public-site to Control Center continuity: Admin Control Center links now use /control, already-authenticated users skip /login, and post-login redirects return to the originally requested internal page
✓Enabling or disabling 2FA revokes other Admin device sessions while preserving the current trusted session
✓Added admin_two_factor and admin_recovery_code PostgreSQL tables; no replay, league, season, worker or Caddy data model change
Notification Read State v34.2.5

Admin notification badges now represent unseen operational changes

20-08-2026 · CEST
6 CHANGES
✓Added per-admin notification seen state so each staff account tracks its own Operational Inbox baseline
✓Opening Notification Center records the currently visible audit activity, failed Discord deliveries, overdue matches and finalize-ready seasons as seen
✓The top NOTIFICATIONS badge now counts only newly unseen operational items instead of repeatedly showing the full current inbox count
✓Previously seen items remain visible in Operational Inbox history; reading notifications never deletes audit or operational data
✓Notification state is independent for every Admin account
✓Database migration adds admin.notification_seen_state JSONB; no worker or Caddy change
Captain Access Card v34.2.4

Captain and Co-Captain management is visible again as a dedicated System card

20-08-2026 · CEST
5 CHANGES
✓Added a dedicated Captain & Team Access card to the league System tab for Owner/Admin users
✓Surfaced the existing Captain / Co-Captain management route without changing account, assignment or permission logic
✓The card explains Division + Team assignment, Captain / Co-Captain role slots and password/session security
✓Added direct actions for Manage Captains and Captain Login
✓Dashboard-only UI release: no SQL migration, worker or Caddy change
League Identity v34.2.3

League logos now give public league pages a stronger visual identity

20-08-2026 · CEST
5 CHANGES
✓Added league logos to HOME league cards using the existing league.logo_url value
✓Added league identity logos to the public League Overview header and hero area
✓Added compact initials-based fallbacks for leagues without a configured logo
✓Added responsive logo sizing for desktop and mobile layouts
✓Template-only release: no app.py, SQL, worker, Caddy or database change
Control Center UI Polish v34.2.2

League Control Center is cleaner, denser and easier to scan

20-08-2026 · CEST
6 CHANGES
✓Redesigned the league Control Center header with league identity, logo, live state and concise season/role context
✓Moved Public League, Account and Log Out into a clean dedicated action area while preserving the existing staff navigation and permissions
✓Reduced sticky-header vertical density so more operational content remains visible while scrolling
✓Increased staff navigation label size for better readability without increasing overall header height
✓Compacted Season Operations cards so Reviewed, Awaiting, Corrections and Overdue read as secondary operational KPIs instead of oversized panels
✓Dashboard-only UI release: no SQL migration and no worker/Caddy change
Permanent Delete Safety Fix v34.2.1

Permanent deletion is transactional and handles submission versions safely

20-08-2026 · CEST
6 CHANGES
✓Fixed HTTP 500 when permanently deleting a submission that has relational SubmissionVersion history
✓Explicitly removes ReplayFile and SubmissionVersion dependencies and detaches Audit references before deleting the submission
✓Database commit now happens before archive ZIP, replay metadata, version-directory and issue-record cleanup
✓A failed database transaction no longer deletes submission files first
✓Filesystem cleanup failures are logged and surfaced as a warning instead of corrupting database state
✓No SQL migration required and no worker/Caddy change
Documentation & Guides v34.2

Current web help, staff manual and downloadable CZ/EN PDF guides

19-08-2026 · CEST
5 CHANGES
✓Updated public Help to Player & Captain Guide v2.0 for the v34.1 public navigation and Season Coverage layout
✓Updated integrated Staff Guide to v3.0 for Platform Overview, League Directory, Search & Explore and the Season/System split
✓Added four downloadable PDF manuals: Staff CZ/EN and Player & Captain CZ/EN
✓Refreshed the changelog with the v34/v34.1 information-architecture releases
✓Documentation-only release: no SQL migration and no worker/Caddy change
UI / IA Polish v34.1

Navigation, density and duplication cleanup across staff and public workflows

19-08-2026 · CEST
10 CHANGES
✓Unified the global staff navigation with clear active states
✓Platform Overview is the primary cross-league command center; League Directory is a directory instead of a second dashboard
✓Platform Health groups service health, storage and recovery while Data Integrity remains separate
✓Search & Explore combines broad entity search with the Replay Explorer lens
✓Season Command Center 2.1 focuses on readiness, history, templates, Replay Packs and rollover
✓General league settings moved from Season to System
✓Public League Overview no longer repeats KPI blocks; Season Coverage shows division distribution and pack state
✓Latest Submissions expands to full width when no open matches exist
✓Compare Teams is presented inside the League Analytics family
✓No SQL migration required
UI / Information Architecture v34

Platform, league, captain and public information architecture unified

19-08-2026 · CEST
10 CHANGES
✓Promoted /control/overview to the main cross-league command view
✓Converted the former Your Leagues page into League Directory at /control/leagues
✓Reframed Platform Control as Platform Management
✓Grouped Platform Health, Storage Explorer and Off-site Backups as one infrastructure family
✓Grouped Global Search and Replay Explorer as Search & Explore
✓Grouped League Stats and Compare Teams as League Analytics
✓Grouped Season History, Templates and Rollover as one Season Workspace
✓Integrated public Status into League Overview with compatibility redirect
✓Expanded the shared UI consistency component layer
✓No SQL migration required
Operations Experience v33

Captain operations, Match Room and upgraded league workflows

19-08-2026 · CEST
10 CHANGES
✓Captain Dashboard 2.0 with cross-assignment Action Center
✓Team Workspace 2.0 with live match, replay and review states
✓New shared Match Room for staff and assigned Captains
✓Submission Workflow 2.0 derived from existing validation, Issue Center and review state
✓League Overview / Operations 2.0 with division health and season KPIs
✓Submissions / Review Queue 2.0 integrated into the existing dashboard tab
✓Season Command Center 2.0 integrated into the existing Season tab
✓Platform Overview 2.0 with cross-league operational metrics
✓Replay Packs UI 2.0 with archive-level statistics
✓No SQL migration required
Captain Security & Workflow v32

Server-side Captain sessions, forced password change and Team notifications

19-08-2026 · CEST
7 CHANGES
✓SQL-backed Captain sessions with per-device revoke and session history
✓Temporary Captain passwords are now mandatory-change before Team Portal access
✓Captain and Admin password resets immediately revoke affected authenticated sessions
✓Captain Account Management 2.0 with account detail, enable/disable and session controls
✓Captain Notification Center with assignment, replay, correction and security events
✓Automated read-only self-test command for database, templates, routes, storage and relational integrity
✓Manual PostgreSQL migration retained; Alembic is intentionally not used
Team Operations & UI Consistency v31

Unified layouts, Captain Portal polish and documentation refresh

19-08-2026 · CEST
7 CHANGES
✓Platform-wide equal two-column grids and adaptive metric cards across 51 UI templates
✓Consistent high-contrast links, overflow handling and equal card heights
✓Replay Game Explorer 50/50 game cards with three equal metadata fields
✓Captain Portal link readability and Team Portal polish
✓Player & Captain Guide v1.1 with Captain account, Team Portal, Game Explorer and version history
✓Staff Guide v2.1 with Captain management, Season Templates, SQL security state and off-site backup
✓Updated PDF handbooks and quick guides in Czech and English
Operations Intelligence & UI Suite

Analytics, priority operations, session security and UI consistency

19-08-2026 · CEST
7 CHANGES
✓Replay Analytics with map/race/matchup statistics
✓Priority-based Action Center and cross-league operational summaries
✓Active Sessions and Login History with remote-session revoke
✓Filtered visual league calendar
✓Public Team vs Team comparison
✓Platform build/version panel
✓Cross-platform UI consistency pass
Replay Intelligence Suite

Replay metadata, calendar and correction workflow

19-08-2026 · CEST
5 CHANGES
✓SC2 replay metadata parsing and Replay Validation 2.0
✓Public league calendar with .ICS export
✓Expanded team operational statistics
✓Submission Issue Center
✓24-hour signed Captain Correction links with version-preserved replacement uploads
Platform Tools Suite

Operations, integrity and data portability

19-08-2026 · CEST
8 CHANGES
✓Data Integrity Center with QUICK/FULL archive verification
✓Bulk team and schedule import with preview-before-apply
✓Central Export Center and export bundle
✓Public Help and Submission Lookup
✓Discord Integrations Center
✓Platform Storage Explorer
✓League Replay Policy pages
✓Global admin search
Public Experience Suite

Public portal and safer season finalization

19-08-2026 · CEST
7 CHANGES
✓League Overview pages
✓Five-step replay upload wizard and preflight validation
✓Signed Submission Receipts
✓League statistics and expanded team profiles
✓Notification Center
✓Ready to Finalize and backup-age checks
✓Custom 403/404/500 pages
Operations Suite

Long-term league operations

19-08-2026 · CEST
8 CHANGES
✓Season History
✓Action Center
✓Dashboard tabs
✓Season Rollover Wizard
✓Replay Explorer
✓Staff Activity
✓Platform Health
✓Integrated Staff Guide
Replay Packs

Published end-of-season archives

18-08-2026 · CEST
4 CHANGES
✓Private generated season packs
✓Owner Publish / Make Private controls
✓Global public Replay Packs library
✓Previous-season pack management