Changelog

A history of updates, improvements, and new features in IceTrack.

Public Changelog and Admin Publishing

Introduced a public changelog to document major IceTrack product updates in chronological order. Administrators can publish entries with a title and a longer technical description, optionally attaching an image to illustrate the change. Entries are stored in a dedicated changelog table and displayed through a public page, while a protected admin page supports publishing and deleting updates. Changelog links were added to the public and administrative navigation.

Highlight Indicators on Match Lists

Added a small, muted camera icon to match cards on the homepage and the full match list when video highlights are available for that match. The indicator is driven by highlight records grouped by match ID, so it appears only for matches that have associated clips. The query is handled defensively so match lists can continue rendering if the highlights migration has not yet been applied.

Streamlined Administration Dashboard

The administration dashboard has been reorganized around management tasks, providing direct access to player, team, match, highlight, changelog and news management, as well as ELO recalculation.

Improved Changelog Management

Administrators can now edit existing changelog entries without recreating them. Images can be attached, replaced or removed while preserving the original entry.

Easier Match Highlight Discovery

Match cards now display a camera indicator immediately before the match ID when video highlights are available. The indicator is consistent across the homepage, featured matches and the full matches list, making recorded footage easier to identify.

Match Video Highlights

Added a highlights section to individual match pages so recorded video clips can be played directly alongside the match information. The associated admin interface supports uploading multiple clips to a match, storing their metadata in a dedicated match_highlights table and deleting individual clips. Clip titles can be edited after upload, allowing the displayed label to describe the recording instead of relying on the original filename. The upload directory is also protected against PHP execution.

Player Profile and Career Analytics Polish

Further refined player profiles and career analytics, including the presentation of rating information and historical statistics. The objective was to make a large amount of player data easier to interpret without duplicating the same value across multiple profile components. ELO tier styling was also applied more consistently to player rating pills, connecting the numerical rating system with the visual hierarchy used throughout the player interface.

League-Aware Records and Data Quality

Reworked the records system to reduce duplicate and invalid record values and introduced league filtering backed by the application’s league data. The calculation and presentation logic was refined to preserve legitimate zero and negative values, clarify streak definitions and qualify efficiency-based records more precisely. These changes improve both the accuracy of the records catalogue and the ability to analyze a specific league without mixing unrelated competition data.

Homepage Match Layout Improvements

Repositioned recent matches alongside the standings to improve the homepage information hierarchy and make current results easier to scan. Match cards were also updated to show team abbreviations on mobile screens, where full team names may not fit comfortably. These presentation changes retain the existing match data and scoring logic while improving the layout across desktop and mobile viewports.

News Feed and Pagination

Added a public match-recap news feed and surfaced recent recaps on the homepage. The news interface was subsequently improved with pagination and layout refinements so longer headlines and descriptions can fit their cards without being unnecessarily truncated. Administrative news management and database-backed template controls provide a way to maintain the feed and its generation rules.

Automated Match News and Recaps

Introduced a database-backed news system for match recaps, including reusable text templates and category-specific wording. Match results can be turned into readable recap articles using match context and supported placeholders, rather than requiring every recap to be written from scratch. Recaps are synchronized when matches are created or edited, and existing matches can be backfilled with generated news. The feature includes public news presentation and administrative management for news posts and templates.

Team Profiles and Descriptions

Added dedicated team detail pages and editable team descriptions managed through the administration area. Team cards can link to the corresponding profile, where the team has a more complete identity beyond its name, abbreviation and logo. The feature required updates to the team data layer and validation for description updates, and the responsive team-profile layout was refined after the initial implementation.

Reproducible ELO Progression and Rating Tiers

Refined the ELO engine to make rating progression reproducible from ordered historical results and to apply outcome-based win and loss changes with streak modifiers. Added ten visual rating tiers so ELO values can be interpreted through a consistent progression system. The tier presentation was integrated into player rating badges, giving ratings a clearer visual hierarchy while keeping the numeric ELO value available.

Player Form and Context-Aware ELO

Added player-form indicators based on recent match results and refined the ELO model to account for additional match context, including player overall-rating snapshots. Historical OVR snapshots allow calculations and match details to use the rating context associated with the relevant match rather than accidentally substituting a player’s current value. This helps preserve the integrity of historical calculations when player ratings change over time.

Multi-League Support

Expanded IceTrack beyond its original league scope by adding KHL and TELH support and strengthening the underlying league system. Teams and matches can now be organized within multiple league contexts, providing a foundation for league-aware filtering and statistics. The team-selection workflow was also reinforced as the application expanded, helping the same core features work with a larger and more varied set of teams.

ELO Calculation Refinements

Refined the ELO progression model to handle wins and losses more deliberately, including asymmetric rating changes, streak modifiers and match-context effects. Follow-up changes improved sequential win- and loss-streak handling and introduced a revised calculation model. The implementation also received regression tests for rating behavior, helping keep the derived ratings reproducible as historical match data is recalculated.

TrackPuck Rebranded to IceTrack

The project was rebranded from TrackPuck to IceTrack on October 6, 2026. The new name established a clearer identity for the hockey statistics platform, bringing its team rankings, player profiles, match records, ELO rating system, and league-based statistics under a unified brand. This milestone marked a naming and identity update while preserving the project’s core purpose: tracking hockey performance and providing detailed statistical analysis across supported leagues.

Localized Match Times

Standardized match-time presentation around the Europe/Bratislava timezone. Explicit timezone handling makes displayed match times more predictable for the application’s intended audience and reduces confusion caused by server timezone differences or implicit date parsing. This is a presentation-layer improvement; it does not change the recorded score or the historical outcome of a match.

Player ELO Rating System

Introduced a player ELO rating system derived from chronological match history. The system calculates ratings from match outcomes rather than treating a manually entered rating as the sole source of truth. Player pages gained rating badges and historical rating visualizations, making it possible to examine both the current rating and how it has evolved across recorded matches. The implementation was subsequently refined with reproducibility, outcome weighting and streak modifiers.

Duplicate Match Detection and Review

Introduced duplicate-match detection and an administrative review workflow for identifying potentially duplicated match records. Administrators can review candidate duplicates and use controlled merge or deletion operations. The related database operations were designed to be transactional so that resolving a duplicate does not leave related records in an inconsistent state. This helps preserve the quality of the match history used by downstream statistics and analytics.

Advanced Player Comparison Metrics

Expanded player comparison with additional advanced statistics and rate-based measures. Rate metrics provide context beyond raw totals, which can be influenced by how many matches a player has participated in. The comparison interface was refined to make these measures easier to examine together and to improve its usability on smaller screens.

Matchup Forecasts and Expected Results

Added matchup forecasting based on the teams’ previous five matches, alongside an Expected vs Actual presentation on match pages. The feature uses recent performance data to provide context for a matchup and compare the expected outcome with the recorded result. It adds an analytical layer to match details while keeping historical results as the source of truth for actual outcomes.

Administrative Security Improvements

Strengthened sensitive administrative workflows with improved session initialization and session handling, login CSRF protection and CSRF validation for state-changing actions such as resetting the team picker. These protections help ensure that administrative operations originate from legitimate application requests and that session state is handled more consistently. The goal was to improve security without changing the intended behavior of normal admin workflows.

Safer Match Editing and Deletion

Improved administrative match management by introducing transactional match deletion and centralized validation of submitted match data. Transactions help keep related database changes consistent when a match is removed, while centralized payload validation gives match-creation and editing workflows a common place to validate incoming values before they are persisted. These changes reduce the risk of inconsistent records caused by incomplete or invalid administrative submissions.

Records Expansion and Match Pagination

Expanded the records catalogue by approximately 60–70 additional records and organized the available statistics into categories. Match-list pagination was also corrected so users can navigate through larger match histories more reliably. Together, these changes increased the amount of historical information available while making large result sets more manageable to browse.

Match Detail and Display Refinements

Refined the presentation of teams and results across match and records pages, including corrections to team display and the mobile match-detail layout. These changes improved consistency between the match list, individual match pages and historical records, helping ensure that team identities and score information remain understandable across different screen sizes.

Head-to-Head Records

Expanded the records system with a head-to-head view that focuses on historical results between selected teams rather than displaying only global or all-time records. This provides a more specific way to explore matchup history and compare teams using their recorded meetings. The records interface was also refined to improve readability and reduce unnecessary visual clutter.

All-Time Records

Introduced a public records page that calculates and presents historical records from the available match and player data. The records experience was expanded with additional record categories, improved match-result presentation and a head-to-head mode for examining records between teams. Later maintenance increased the number of available records substantially and refined the display of record values and match details.

Mobile Match Scoreboards

Improved match-card and scoreboard rendering on mobile screens, including correcting the team order and score layout so the displayed result remains clear at narrow viewport widths. Additional responsive refinements were applied to match and record displays. These changes focused on presentation and usability while preserving the underlying match results and statistical calculations.

Featured Matches

Added featured-match selection functionality for highlighting important upcoming or selected games. The feature supports Match of the Day and Match of the Week presentations, giving the homepage a way to emphasize particular matchups instead of treating every match identically. The display and selection logic were subsequently refined alongside other homepage and player-comparison improvements.

Secure Pre-Match Team Picker

Introduced a dedicated pre-match team-selection workflow for choosing the teams involved in a match. The picker uses a structured selection process and supports persistence of the selected teams, reducing the need to manually re-enter the same information in separate steps. Follow-up improvements strengthened the reset flow and its request validation, helping prevent unintended or unauthorized state changes.

Player Profile Redesign and History

Reworked the player profile layout to improve the organization of player information, statistics and analytics. Added chronological player-history analytics so performance can be examined across a sequence of matches rather than only through aggregate totals. Subsequent refinements improved the profile interface and made the statistical presentation more suitable for detailed career analysis.

Player Comparison

Introduced a public player-comparison page and comparison controls from player profiles. The feature allows player statistics to be examined side by side, making differences in performance easier to evaluate than by navigating between separate profiles. The comparison experience was subsequently refined for mobile layouts and expanded with additional advanced statistics and rate-based metrics.

Player Analytics Charts

Added chart-based player analytics using Chart.js to visualize player statistics over time. Instead of presenting every statistic exclusively as a number or table cell, the profile can communicate trends through graphical data series. This introduced a more analytical view of player performance and established a reusable approach for presenting time-dependent statistics on public player pages.

Expanded Player Statistics

Expanded the statistical information shown on player pages and corrected the construction of player loss statistics so cached or derived values could be displayed consistently. This improved the usefulness of player profiles as statistical summaries and helped ensure that the displayed win-loss record was aligned with the underlying match data rather than relying on an incorrect cached value.

Validated Team Logo Management

Added support for storing and editing team logo URLs through the administrative team forms, with validation before accepting the supplied URL. This enabled team branding to be managed through the application instead of requiring hard-coded image references. The logo data can then be reused across team listings, match cards and other public pages that display team identities.

Transactional Match Creation

Improved match creation by grouping related database operations into a transaction. This helps ensure that a match is not left partially saved if a dependent operation fails. The change established a safer foundation for match-management workflows, where a single submission may affect multiple database records and consistency is more important than simply completing individual SQL statements independently.

Shared Navigation and Responsive Administration

Introduced reusable navigation components for the public website and administration area, including accessible navigation menus and consistent page-to-page navigation. Administrative player and match lists were also adapted for smaller screens with responsive card-based layouts. This reduced dependence on wide desktop tables and made common administrative workflows easier to use on mobile devices while keeping the underlying PHP-rendered pages and existing data operations intact.

IceTrack Development Begins

Development of the project began on 22 September 2026, initially under the TrackPuck name. The application was built around a PHP and MySQL backend for storing hockey teams, players, match results and statistical data. The initial direction was to create a dedicated hockey statistics platform with public-facing pages, administrative management tools and reusable data-access logic, rather than a static collection of match results.