541aa3d52c
Playoffs: - List every round played so far (Round 1 → current) instead of only the current round, on both macOS menu and iPhone - Strike through the eliminated team's tricode in a finished series and drop the now-redundant "(Final … wins)" tag on completed earlier rounds - Refetch the bracket when a finished game implies more completed games than the cached bracket records, so the series score and round no longer get stuck on stale data after cold launch or the NHL bracket endpoint's lag API robustness: - Tolerate optional gameCenterLink/startTimeUTC on TBD playoff matchups so the scoreboard decode no longer aborts - Reject API state regressions via a monotonic FUT→…→OFF progression rank so a brief glitch can't downgrade a finished game back to "-:-"
40 lines
3.7 KiB
Markdown
40 lines
3.7 KiB
Markdown
# Changelog
|
||
|
||
## May 2026
|
||
|
||
- Mark the result of a finished playoff series by striking through the eliminated team's tricode, and drop the redundant "(Final … wins)" tag on completed earlier rounds (both macOS menu and iPhone)
|
||
- Playoff section now lists every round played so far (ROUND 1 → current), in ascending order, instead of just the current round — on both macOS menu and iPhone
|
||
- Re-fetch the playoff bracket whenever a finished game in the window implies more completed games than the cached bracket records, so the ROUND series score and round advancement no longer get stuck on stale data after a cold launch or the NHL bracket endpoint's post-final update lag
|
||
- Tolerate optional `gameCenterLink` and `startTimeUTC` on TBD playoff matchups so the scoreboard decode no longer aborts (was leaving in-memory state frozen and showing stale yesterday rows)
|
||
- Reject API state regressions: never let a known game downgrade along the FUT→PRE→LIVE→CRIT→OVER→FINAL→OFF progression, so a brief `/scoreboard/now` glitch can't turn a finished game back into "-:-" on iOS cold launch
|
||
|
||
## April 2026
|
||
|
||
- New iPhone target (`IceGlass-iOS`): single-page SwiftUI app mirroring the macOS menu's playoff round + yesterday/today/tomorrow content, with a gear-icon settings sheet (display option + IndieAbout)
|
||
- Persistent JSON cache (`Shared/Services/NHLDataCache.swift`) stored in Application Support so iPhone cold launches paint last-known data immediately; surfaced with a stale-aware "Updated …" header (secondary → orange after 5 min → red after 30 min)
|
||
- Shared code refactored into a top-level `Shared/` directory consumed by both targets; introduced `MainServiceObserver` protocol so `MainService` no longer imports AppKit
|
||
- Team logo download pipeline now produces 128×128 transparent squares directly (via a new `Scripts/square_logo.swift` helper called from `download_team_logos.sh`), so notification attachments can ship the bundled PNG as-is and the banner thumbnail renders crisply without runtime compositing
|
||
- Game state tag (PRE / LIVE / CRIT / OVER / FINAL / OFF) now surfaced on each daily game row and on live series rows in the ROUND block
|
||
- Playoff series rows in the ROUND block are always clickable (open the NHL series page) and mark completed series as "Final"
|
||
- Goal notifications now include the scorer's sweater number, name, and strength tag (PPG / SHG / EN) when available (derived from `/gamecenter/{id}/play-by-play`)
|
||
- Regular-season game rows now show the league-wide game number (derived from the NHL gameId)
|
||
- New PLAYOFFS ROUND section lists every active series with series score, next game number, and upcoming tip-off time
|
||
- Playoff bracket fetched from `api-web.nhle.com/v1/playoff-bracket/{year}` only when needed (initial load and after a playoff game finalizes)
|
||
- Removed Team filter option (per-team filtering and team-specific menu bar icon)
|
||
- Initial project setup with macOS menu bar app
|
||
- NHL scoreboard API integration showing yesterday/today/tomorrow games
|
||
- Dynamic polling based on game state (7s live, 10min game day, 1hr idle)
|
||
- Click game to open NHL GameCenter, option-click for NHL Videocast
|
||
- NHL shield icon in menu bar
|
||
- About window using IndieAbout
|
||
- Launch at Login support
|
||
- Game start notifications (triggered on FUT→LIVE state transition)
|
||
- Goal scored notifications with scoring team logo
|
||
- 32 team logos downloaded from NHL CDN (SVG + PNG)
|
||
- Logo download script for seasonal updates (Scripts/download_team_logos.sh)
|
||
- Display Options: Yesterday/Today/Tomorrow, Today/Tomorrow, or Today only
|
||
- Game count shown next to menu bar icon
|
||
- Game count shown per day in dropdown headers
|
||
- Menu item format: "NYR @ WAS 0:2 (FINAL)" / "DAL @ TOR Today @ 7:30 PM"
|
||
- NHL shield renders with full color (not template silhouette)
|