# Changelog All notable changes to Sportray are documented here. ## Unreleased - Replaced external game-page sink substring checks with one exact-host HTTPS admission policy, including executable deceptive-URL boundary coverage. - Fixed the bottom ticker rendering only league headings after games became activatable: the pointer target no longer sits inside the game Row (its fill anchor broke Row layout and collapsed the game text), and league headings keep trim-proof trailing breathing room ahead of the first game. - Made individual bottom-ticker games activatable with explicit owner confirmation: selecting a game with a safe provider link opens its provider game page (ESPN gamecast, MLB.com gameday, or NHL.com gamecenter) through the guarded HTTPS and provider-host source route, while other ticker chrome keeps the panel-open action. Games without a safe link stay neutral and non-activatable. - Restored the default popup border on the main scores panel so it reads as a framed card like other Omarchy popups; bar attachment, zero margin/gap, and the ticker's accent edge are unchanged. - Hardened external game-page links with an HTTPS and provider-host check at the open action, and restricted ESPN team links to the reviewed ESPN game host. - Rendered provider-derived score text as plain text, decoded team logos at a bounded size with caching, coalesced per-league update bursts into one aggregate recompose, and normalized favorite identities once per sort pass. - Omit the clock from ticker live status for untimed baseball games (inning only); timed sports keep their clock. - Refreshed `preview.png` with a current 1280×720 capture of the desktop, scores panel, and ticker. - Replaced the floating ambient game card with a 32-pixel bottom-edge ticker that reserves screen space and continuously scrolls the current slate. Live games lead future schedules, only finals from the last 12 hours remain, and activating the strip opens the normal scores panel. Sport emoji and friendly league headings group adjacent scores without repeating provider IDs, and compact team logos precede team names when available. League transitions use a larger visual gap than games within the same group, whose separators reuse the next game's sport emoji with three spaces on each side. - Assigned the local next release candidate as `1.0.0-rc.8` after the post-`1.0.0-rc.7` hardening work. The tree remains unreleased and untagged; no release date is asserted. - Recorded the owner's confirmation that the personally captured `preview.png` may be submitted as shown, including its visible provider and team marks. - Kept Omarchy's interactive safety confirmations in the documented install and removal commands, and clarified runtime dependencies, network access, privilege boundaries, and retained preference state. - Reduced provider traffic with per-league due checks, bounded five-date and next-game caches, schedule-aware long polling windows, failure backoff, and per-session jitter. Score requests remain whole league/day slates rather than per-game calls, and fresh snapshots survive panel and date navigation. - Removed completed planning records, obsolete QML components, a test-only lifecycle model, machine-specific test paths, and nonessential supporting screenshots from the public tree. - Added repository ignore rules and restricted provider game actions to exact HTTPS ESPN and NHL hosts. - Fixed clean-start popup placement so a right-side tray widget opens beneath its icon instead of being clamped to the top-left corner. - Added inline venue names and restrained home-team color tints to score rows and next-game cards, with validated color and neutral fallback paths. - Added labeled ESPN and NHL.com source actions to game rows and next-game cards. They open the provider game page in the Omarchy browser, with safe provider URL fallbacks when an event omits its optional link. - Added a next-game lookahead for empty league days. The empty message remains first, followed by the first upcoming game and a one-click jump to its active league date. - Added a **Send test notification** action under Settings → Notifications so users can preview the Omarchy alert channel without changing preferences or notification deduplication state. - Temporarily disabled the experimental Calendar route and its background schedule hydration in production while multi-day cache behavior is reworked; daily favorite-team score tracking remains unchanged. ## 1.0.0-rc.7 - Refreshed the local release candidate after provider-efficiency hardening: per-league request admission, bounded score and next-game caches, schedule-aware polling windows, failure backoff, and session jitter remain covered by the verified candidate. - Updated the public preview to a focused 834×962 panel capture. - Prepared the verified candidate and its Git tag for public availability. A GitHub Release and Marketplace submission remain separate publication steps. ## 1.0.0-rc.6 - Completed the public-release UI/UX pass with a current 16:9 Omarchy preview, light-theme, settings, and next-game supporting captures, plus favorite-first, eight-league, and no-account Marketplace copy. - Kept sparse panels compact while resizing after a date or destination fetch settles, so navigating from a short slate to a dense slate grows the attached card without letting ordinary polling churn its height. - Updated the local release candidate metadata to `1.0.0-rc.6`; no tag, push, GitHub release, or Marketplace submission was performed. ## 1.0.0-rc.5 - Added a compact date carousel for previous, current, and upcoming daily score slates; selected dates now drive provider queries and result filtering. - Moved refresh into the fixed header and tightened score/settings hierarchy by removing repeated date, sport, destination, and Following/team labels. - Refined the settings close action, settings helper copy, and score-only refresh visibility for a cleaner utility flow. - Removed the redundant live-scores status row, added relative date labels and a clear return-to-today action, and prioritized the next scheduled favorite game in the ambient bar when available. - Marked the verified local release candidate as a stopping point; no tag, push, GitHub release, or Marketplace submission was performed. ## 1.0.0-rc.4 - Added a bounded vertical sport chooser and virtualized grouped score slate for Following plus all eight supported leagues. - Added stable scoreboard rows for scheduled, live, final, stale, and unavailable states with fixed team/logo and score columns. - Unified sports, favorite-team, and notification preferences behind one settings hub with searchable favorites and canonical IDs. - Added local semantic Omarchy icons, restrained sport atmosphere, and theme-aware light/dark and increased-text-scale layouts. - Refreshed the release preview and completed the U2 actual-Omarchy runtime matrix; direct pointer/wheel injection remains an environment limitation. ## 1.0.0-rc.3 - Added the disabled-by-default MLS league with canonical `usa.1` routing, normalized soccer edge states, a bounded 30-team team catalog, soccer-aware formatting, and isolated polling/recovery. - Added the disabled-by-default NCAA Men's Basketball league with canonical `mens-college-basketball` routing, normalized scheduled/live/halftime/final states, half-based formatting, a bounded 50-team provider-owned catalog, and isolated polling/recovery. - Added the disabled-by-default NCAA Football league with canonical ESPN routing, normalized fixtures, bounded FBS-focused team selection, sport- correct football states, and isolated polling/recovery. - Added the disabled-by-default English Premier League with canonical `eng.1` routing, normalized soccer edge states, a bounded current-season team catalog, soccer-aware formatting, and isolated polling/recovery. ## 1.0.0-rc.2 - Added a favorites-first Following home and stable per-league navigation. - Pinned favorite games above each league slate and refreshed the compact score-card/header visual system. - Separated Teams and notification preferences into nested utility destinations with keyboard focus and Escape restoration. - Added stale-age/retry presentation and completed current-source dense-scroll and four-side Omarchy runtime verification. - Refreshed the Marketplace preview for the redesigned panel. ## 1.0.0-rc.1 - Prepared the first release candidate for final fresh-install and Marketplace verification. ## 0.0.1 - Added a native Omarchy Quattro bar widget and nested scores panel. - Added NHL, NFL, MLB, and NBA normalized scoreboard adapters. - Added favorites, persistent settings, adaptive polling, stale/error isolation, and favorite-team notifications. - Added keyboard navigation, theme-aware layouts, bounded dense panels, and fixture-driven verification. The `v1.0.0-rc.7` Git tag identifies the `1.0.0-rc.7` release-candidate snapshot. The current `1.0.0-rc.8` remains unreleased and untagged. A GitHub Release and Marketplace submission are separate publication steps.