Commit Graph

3 Commits

Author SHA1 Message Date
rzen f6785321f4 Enlarge logos, tricodes, and inline scores on iPhone rows
Game and series rows now lead with a 40pt logo + title3-monospaced
tricode + bold inline score + tricode + logo, so the matchup fills
the row's vertical space and reads at a glance. For future games the
score is replaced by an "@" separator. Right-side metadata (game number,
status, kickoff time) stays at subheadline/caption2 so it's secondary.

Tricodes and scores get .lineLimit(1).fixedSize() to keep everything
on one line on tighter widths.
2026-04-25 15:19:14 -04:00
rzen 506bea04cc Add team logos and monospaced tricodes to iPhone game/series rows
New TeamLogo view loads bundled TeamLogos/{abbrev}.png with a UIImage
cache so scrolling doesn't repeatedly re-decode. GameRow and SeriesRow
now render [logo] TRI @ [logo] TRI with tricodes in a monospaced font
so columns line up regardless of which letters are present. SF Symbol
fallback when an abbrev has no bundled logo (e.g. "TBD" for unfilled
playoff slots).
2026-04-25 15:14:20 -04:00
rzen aaffa3771c Add iPhone target with shared data layer and persistent cache
Two-target restructure: shared sources (models, services, settings,
extensions, team logos) move into Shared/, consumed by both the
existing macOS menu bar app and a new iOS app. MainService no longer
imports AppKit — platform code attaches via a MainServiceObserver
protocol (MacObserverAdapter wires back to MenuManager / StatusItemManager
/ NotificationManager).

iPhone app is a single SwiftUI page mirroring the macOS menu (playoff
round + yesterday/today/tomorrow), with a gear-icon settings sheet
(display option + IndieAbout for license/changelog). Persistent JSON
snapshot in Application Support paints last-known data on cold launch;
"Updated …" header escalates secondary → orange (>5min) → red (>30min)
so staleness is visually unmistakable. Foreground polling, scenePhase
refresh, and pull-to-refresh; no notifications on iOS in v1.
2026-04-25 06:34:36 -04:00