From aaffa3771c8766439a3d3d25440849c607836528 Mon Sep 17 00:00:00 2001 From: rzen Date: Sat, 25 Apr 2026 06:34:36 -0400 Subject: [PATCH] Add iPhone target with shared data layer and persistent cache MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- CHANGELOG.md | 3 + IceGlass-iOS/App/ContentView.swift | 14 ++ IceGlass-iOS/App/IceGlassApp.swift | 32 ++++ .../AccentColor.colorset/Contents.json | 11 ++ .../AppIcon.appiconset/Contents.json | 14 ++ .../AppIcon.appiconset/icon-ios-1024.png | Bin 0 -> 216386 bytes IceGlass-iOS/Assets.xcassets/Contents.json | 6 + IceGlass-iOS/Info.plist | 34 ++++ .../ViewModel/ScoreboardViewModel.swift | 103 ++++++++++++ IceGlass-iOS/Views/GameDaySection.swift | 52 ++++++ IceGlass-iOS/Views/GameRow.swift | 78 +++++++++ IceGlass-iOS/Views/MainView.swift | 82 ++++++++++ IceGlass-iOS/Views/PlayoffRoundSection.swift | 33 ++++ IceGlass-iOS/Views/SeriesRow.swift | 75 +++++++++ IceGlass-iOS/Views/SettingsSheet.swift | 54 +++++++ IceGlass-iOS/Views/UpdatedHeader.swift | 81 ++++++++++ IceGlass/AppDelegate.swift | 30 ++++ IceGlass/Managers/MenuManager.swift | 26 +-- README.md | 28 ++-- .../Extensions/Date+easternTimeZone.swift | 0 .../Extensions/Date+etCalendar.swift | 0 .../Extensions/Date+formatDateET.swift | 0 .../Extensions/Date+gameWindow.swift | 0 Shared/Extensions/Game+nextGameLabel.swift | 38 +++++ .../TimeInterval+humanReadableTime.swift | 0 .../Extensions/Timer+startTimer.swift | 0 {IceGlass => Shared}/Lib/IceGlassLogger.swift | 0 .../Models/BracketModel.swift | 0 {IceGlass => Shared}/Models/GameState.swift | 0 .../Models/PlayByPlayModel.swift | 0 .../Models/ScoreboardModel.swift | 0 .../Models/StandingsModel.swift | 0 .../Resources/TeamLogos/ANA.png | Bin .../Resources/TeamLogos/BOS.png | Bin .../Resources/TeamLogos/BUF.png | Bin .../Resources/TeamLogos/CAR.png | Bin .../Resources/TeamLogos/CBJ.png | Bin .../Resources/TeamLogos/CGY.png | Bin .../Resources/TeamLogos/CHI.png | Bin .../Resources/TeamLogos/COL.png | Bin .../Resources/TeamLogos/DAL.png | Bin .../Resources/TeamLogos/DET.png | Bin .../Resources/TeamLogos/EDM.png | Bin .../Resources/TeamLogos/FLA.png | Bin .../Resources/TeamLogos/LAK.png | Bin .../Resources/TeamLogos/MIN.png | Bin .../Resources/TeamLogos/MTL.png | Bin .../Resources/TeamLogos/NJD.png | Bin .../Resources/TeamLogos/NSH.png | Bin .../Resources/TeamLogos/NYI.png | Bin .../Resources/TeamLogos/NYR.png | Bin .../Resources/TeamLogos/OTT.png | Bin .../Resources/TeamLogos/PHI.png | Bin .../Resources/TeamLogos/PIT.png | Bin .../Resources/TeamLogos/SEA.png | Bin .../Resources/TeamLogos/SJS.png | Bin .../Resources/TeamLogos/STL.png | Bin .../Resources/TeamLogos/TBL.png | Bin .../Resources/TeamLogos/TOR.png | Bin .../Resources/TeamLogos/UTA.png | Bin .../Resources/TeamLogos/VAN.png | Bin .../Resources/TeamLogos/VGK.png | Bin .../Resources/TeamLogos/WPG.png | Bin .../Resources/TeamLogos/WSH.png | Bin .../Services/ApiService.swift | 5 +- .../Services/MainService.swift | 150 +++++++++++++++--- Shared/Services/NHLDataCache.swift | 68 ++++++++ .../Services/PollingInterval.swift | 0 .../Settings}/AppSettings.swift | 5 + project.yml | 54 ++++++- 70 files changed, 1011 insertions(+), 65 deletions(-) create mode 100644 IceGlass-iOS/App/ContentView.swift create mode 100644 IceGlass-iOS/App/IceGlassApp.swift create mode 100644 IceGlass-iOS/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 IceGlass-iOS/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 IceGlass-iOS/Assets.xcassets/AppIcon.appiconset/icon-ios-1024.png create mode 100644 IceGlass-iOS/Assets.xcassets/Contents.json create mode 100644 IceGlass-iOS/Info.plist create mode 100644 IceGlass-iOS/ViewModel/ScoreboardViewModel.swift create mode 100644 IceGlass-iOS/Views/GameDaySection.swift create mode 100644 IceGlass-iOS/Views/GameRow.swift create mode 100644 IceGlass-iOS/Views/MainView.swift create mode 100644 IceGlass-iOS/Views/PlayoffRoundSection.swift create mode 100644 IceGlass-iOS/Views/SeriesRow.swift create mode 100644 IceGlass-iOS/Views/SettingsSheet.swift create mode 100644 IceGlass-iOS/Views/UpdatedHeader.swift rename {IceGlass => Shared}/Extensions/Date+easternTimeZone.swift (100%) rename {IceGlass => Shared}/Extensions/Date+etCalendar.swift (100%) rename {IceGlass => Shared}/Extensions/Date+formatDateET.swift (100%) rename {IceGlass => Shared}/Extensions/Date+gameWindow.swift (100%) create mode 100644 Shared/Extensions/Game+nextGameLabel.swift rename {IceGlass => Shared}/Extensions/TimeInterval+humanReadableTime.swift (100%) rename {IceGlass => Shared}/Extensions/Timer+startTimer.swift (100%) rename {IceGlass => Shared}/Lib/IceGlassLogger.swift (100%) rename {IceGlass => Shared}/Models/BracketModel.swift (100%) rename {IceGlass => Shared}/Models/GameState.swift (100%) rename {IceGlass => Shared}/Models/PlayByPlayModel.swift (100%) rename {IceGlass => Shared}/Models/ScoreboardModel.swift (100%) rename {IceGlass => Shared}/Models/StandingsModel.swift (100%) rename {IceGlass => Shared}/Resources/TeamLogos/ANA.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/BOS.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/BUF.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/CAR.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/CBJ.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/CGY.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/CHI.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/COL.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/DAL.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/DET.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/EDM.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/FLA.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/LAK.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/MIN.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/MTL.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/NJD.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/NSH.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/NYI.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/NYR.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/OTT.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/PHI.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/PIT.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/SEA.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/SJS.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/STL.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/TBL.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/TOR.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/UTA.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/VAN.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/VGK.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/WPG.png (100%) rename {IceGlass => Shared}/Resources/TeamLogos/WSH.png (100%) rename {IceGlass => Shared}/Services/ApiService.swift (87%) rename {IceGlass => Shared}/Services/MainService.swift (71%) create mode 100644 Shared/Services/NHLDataCache.swift rename {IceGlass => Shared}/Services/PollingInterval.swift (100%) rename {IceGlass/Managers => Shared/Settings}/AppSettings.swift (98%) diff --git a/CHANGELOG.md b/CHANGELOG.md index f6ef6b4..c65d095 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ## 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" diff --git a/IceGlass-iOS/App/ContentView.swift b/IceGlass-iOS/App/ContentView.swift new file mode 100644 index 0000000..84b1613 --- /dev/null +++ b/IceGlass-iOS/App/ContentView.swift @@ -0,0 +1,14 @@ +// +// ContentView.swift +// IceGlass-iOS +// +// Copyright 2026 Rouslan Zenetl. All Rights Reserved. +// + +import SwiftUI + +struct ContentView: View { + var body: some View { + MainView() + } +} diff --git a/IceGlass-iOS/App/IceGlassApp.swift b/IceGlass-iOS/App/IceGlassApp.swift new file mode 100644 index 0000000..43776a2 --- /dev/null +++ b/IceGlass-iOS/App/IceGlassApp.swift @@ -0,0 +1,32 @@ +// +// IceGlassApp.swift +// IceGlass-iOS +// +// Copyright 2026 Rouslan Zenetl. All Rights Reserved. +// + +import SwiftUI + +@main +struct IceGlassApp: App { + @State private var viewModel = ScoreboardViewModel() + @Environment(\.scenePhase) private var scenePhase + + var body: some Scene { + WindowGroup { + ContentView() + .environment(viewModel) + .onAppear { viewModel.attach() } + .onChange(of: scenePhase) { _, newPhase in + switch newPhase { + case .active: + viewModel.handleScenePhaseActive() + case .background, .inactive: + viewModel.handleScenePhaseInactive() + @unknown default: + break + } + } + } + } +} diff --git a/IceGlass-iOS/Assets.xcassets/AccentColor.colorset/Contents.json b/IceGlass-iOS/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/IceGlass-iOS/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/IceGlass-iOS/Assets.xcassets/AppIcon.appiconset/Contents.json b/IceGlass-iOS/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..e0830a0 --- /dev/null +++ b/IceGlass-iOS/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,14 @@ +{ + "images" : [ + { + "filename" : "icon-ios-1024.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/IceGlass-iOS/Assets.xcassets/AppIcon.appiconset/icon-ios-1024.png b/IceGlass-iOS/Assets.xcassets/AppIcon.appiconset/icon-ios-1024.png new file mode 100644 index 0000000000000000000000000000000000000000..3f6fa3d30d3b154950ce89ad40755c3c1d688011 GIT binary patch literal 216386 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�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 z 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

sV0?YH8iT+uS06_L5zZnF)SeprvdON-?& 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�r$PR8H35pz9|sTL!Fm{aLVkVT~%)Vam&lg>dCyQ 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
to^m(Pu{G@%f_nY@Y}`yN&Y^s6VWi8UcWo;3}Mk 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 H5&FLXynXTF literal 0 HcmV?d00001 diff --git a/IceGlass-iOS/Assets.xcassets/Contents.json b/IceGlass-iOS/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/IceGlass-iOS/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/IceGlass-iOS/Info.plist b/IceGlass-iOS/Info.plist new file mode 100644 index 0000000..f8872a1 --- /dev/null +++ b/IceGlass-iOS/Info.plist @@ -0,0 +1,34 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundleDisplayName + IceGlass + CFBundlePackageType + APPL + CFBundleShortVersionString + $(MARKETING_VERSION) + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + LSRequiresIPhoneOS + + UILaunchScreen + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + + UIRequiresFullScreen + + + diff --git a/IceGlass-iOS/ViewModel/ScoreboardViewModel.swift b/IceGlass-iOS/ViewModel/ScoreboardViewModel.swift new file mode 100644 index 0000000..9f8acfe --- /dev/null +++ b/IceGlass-iOS/ViewModel/ScoreboardViewModel.swift @@ -0,0 +1,103 @@ +// +// ScoreboardViewModel.swift +// IceGlass-iOS +// +// Copyright 2026 Rouslan Zenetl. All Rights Reserved. +// + +import Foundation +import Observation + +/// Bridges MainService → SwiftUI. Re-published whenever data lands so views +/// re-render. Owns refresh kick-off on scene activation and pull-to-refresh. +@Observable +@MainActor +final class ScoreboardViewModel { + /// Bumped on every observer callback; views read it implicitly via the + /// Observation framework so the entire tree re-evaluates. + private var revision: Int = 0 + + /// Tracks the most recent successful fetch time for the "Updated …" header. + var lastUpdated: Date? + + /// Toggled by pull-to-refresh; views can show a spinner. + var isRefreshing: Bool = false + + /// Settings — surfaced separately so the settings sheet can bind directly. + var displayOption: AppSettings.DisplayOption { + get { + _ = revision + return AppSettings.shared.displayOption + } + set { + AppSettings.shared.displayOption = newValue + revision += 1 + } + } + + var gamesByDate: [Scoreboard.GameDay] { + _ = revision + return MainService.shared.gamesByDate + } + + var currentRoundSeriesItems: [MainService.RoundSeriesItem] { + _ = revision + return MainService.shared.currentRoundSeriesItems + } + + var currentRoundNumber: Int? { + _ = revision + return MainService.shared.bracket?.currentRound + } + + /// Bridge object that forwards MainService callbacks back to this view model. + /// Held strongly so MainService's weak observer reference stays alive. + private var bridge: ObserverBridge? + + init() {} + + /// Wire this view model up to MainService. Idempotent; called from `.onAppear`. + func attach() { + guard bridge == nil else { return } + let bridge = ObserverBridge { [weak self] in self?.handleUpdate() } + self.bridge = bridge + MainService.shared.observer = bridge + // Initial sync — MainService may have already loaded a cached snapshot. + handleUpdate() + } + + private func handleUpdate() { + lastUpdated = MainService.shared.lastUpdated + revision += 1 + } + + func refreshNow() async { + isRefreshing = true + await MainService.shared.fetchAll() + isRefreshing = false + } + + func handleScenePhaseActive() { + MainService.shared.resumePolling() + Task { await refreshNow() } + } + + func handleScenePhaseInactive() { + MainService.shared.suspendPolling() + } +} + +/// Class adapter so MainService's `weak var observer` has something to hold; +/// @Observable view-model classes don't compose cleanly with weak refs. +@MainActor +private final class ObserverBridge: MainServiceObserver { + private let onUpdate: () -> Void + + init(onUpdate: @escaping () -> Void) { + self.onUpdate = onUpdate + } + + func mainServiceDidUpdate() { + onUpdate() + } +} diff --git a/IceGlass-iOS/Views/GameDaySection.swift b/IceGlass-iOS/Views/GameDaySection.swift new file mode 100644 index 0000000..b81ade9 --- /dev/null +++ b/IceGlass-iOS/Views/GameDaySection.swift @@ -0,0 +1,52 @@ +// +// GameDaySection.swift +// IceGlass-iOS +// +// Copyright 2026 Rouslan Zenetl. All Rights Reserved. +// + +import SwiftUI + +struct GameDaySection: View { + let gameDay: Scoreboard.GameDay + + var body: some View { + VStack(alignment: .leading, spacing: 8) { + HStack(alignment: .firstTextBaseline) { + Text(headerText) + .font(.caption) + .fontWeight(.bold) + .foregroundStyle(.secondary) + Spacer() + } + + if gameDay.games.isEmpty { + Text("No games scheduled") + .font(.subheadline) + .italic() + .foregroundStyle(.tertiary) + .padding(.horizontal, 14) + .padding(.vertical, 12) + .frame(maxWidth: .infinity, alignment: .leading) + .background(Color(uiColor: .secondarySystemGroupedBackground)) + .clipShape(RoundedRectangle(cornerRadius: 12)) + } else { + VStack(spacing: 0) { + ForEach(Array(gameDay.games.enumerated()), id: \.element.id) { idx, game in + GameRow(game: game) + if idx < gameDay.games.count - 1 { + Divider() + } + } + } + .background(Color(uiColor: .secondarySystemGroupedBackground)) + .clipShape(RoundedRectangle(cornerRadius: 12)) + } + } + } + + private var headerText: String { + let label = Date.fullDateLabel(for: gameDay.date) + return "\(label) (\(gameDay.games.count))" + } +} diff --git a/IceGlass-iOS/Views/GameRow.swift b/IceGlass-iOS/Views/GameRow.swift new file mode 100644 index 0000000..1b9f039 --- /dev/null +++ b/IceGlass-iOS/Views/GameRow.swift @@ -0,0 +1,78 @@ +// +// GameRow.swift +// IceGlass-iOS +// +// Copyright 2026 Rouslan Zenetl. All Rights Reserved. +// + +import SwiftUI + +struct GameRow: View { + let game: Scoreboard.Game + + var body: some View { + Button(action: open) { + HStack(spacing: 12) { + if game.gameType == 2 { + Text("#\(game.seasonGameNumber)") + .font(.caption2.monospacedDigit()) + .foregroundStyle(.tertiary) + .frame(width: 44, alignment: .leading) + } + + Text("\(game.awayTeam.abbrev) @ \(game.homeTeam.abbrev)") + .font(.body) + .fontWeight(.medium) + .foregroundStyle(.primary) + + Spacer() + + rightContent + } + .padding(.horizontal, 14) + .padding(.vertical, 10) + .contentShape(Rectangle()) + } + .buttonStyle(.plain) + } + + @ViewBuilder + private var rightContent: some View { + let state = game.parsedGameState + VStack(alignment: .trailing, spacing: 2) { + if state.isFuture { + Text(game.startTimeET.trimmingCharacters(in: .whitespaces)) + .font(.subheadline.monospacedDigit()) + .foregroundStyle(.secondary) + } else { + Text(scoreText) + .font(.body.monospacedDigit()) + .fontWeight(.semibold) + .foregroundStyle(.primary) + Text(statusLine) + .font(.caption2) + .foregroundStyle(state.isLive ? .red : .secondary) + } + } + } + + private var scoreText: String { + let a = game.awayTeam.score ?? 0 + let h = game.homeTeam.score ?? 0 + return "\(a) – \(h)" + } + + private var statusLine: String { + let state = game.parsedGameState + let tag = state.shortTag + let time = game.startTimeET.trimmingCharacters(in: .whitespaces) + if tag.isEmpty { return time } + if state.isLive { return tag } + return tag + } + + private func open() { + guard let url = URL(string: game.gameCenterUrl) else { return } + UIApplication.shared.open(url) + } +} diff --git a/IceGlass-iOS/Views/MainView.swift b/IceGlass-iOS/Views/MainView.swift new file mode 100644 index 0000000..ffbbf70 --- /dev/null +++ b/IceGlass-iOS/Views/MainView.swift @@ -0,0 +1,82 @@ +// +// MainView.swift +// IceGlass-iOS +// +// Copyright 2026 Rouslan Zenetl. All Rights Reserved. +// + +import SwiftUI + +struct MainView: View { + @Environment(ScoreboardViewModel.self) private var viewModel + @State private var showingSettings = false + + var body: some View { + NavigationStack { + ScrollView { + LazyVStack(alignment: .leading, spacing: 16, pinnedViews: []) { + UpdatedHeader( + lastUpdated: viewModel.lastUpdated, + isRefreshing: viewModel.isRefreshing + ) + .padding(.horizontal) + + if !viewModel.currentRoundSeriesItems.isEmpty, + let round = viewModel.currentRoundNumber { + PlayoffRoundSection( + round: round, + items: viewModel.currentRoundSeriesItems + ) + .padding(.horizontal) + } + + let gameDays = viewModel.gamesByDate + if gameDays.isEmpty && viewModel.currentRoundSeriesItems.isEmpty { + emptyState + .padding(.horizontal) + .padding(.top, 40) + } else { + ForEach(gameDays, id: \.date) { gameDay in + GameDaySection(gameDay: gameDay) + .padding(.horizontal) + } + } + } + .padding(.vertical) + } + .refreshable { + await viewModel.refreshNow() + } + .navigationTitle("IceGlass") + .navigationBarTitleDisplayMode(.inline) + .toolbar { + ToolbarItem(placement: .topBarTrailing) { + Button { + showingSettings = true + } label: { + Image(systemName: "gearshape") + } + .accessibilityLabel("Settings") + } + } + .sheet(isPresented: $showingSettings) { + SettingsSheet() + } + } + } + + private var emptyState: some View { + VStack(spacing: 8) { + Image(systemName: "hockey.puck") + .font(.system(size: 40)) + .foregroundStyle(.tertiary) + Text("No games scheduled") + .font(.headline) + .foregroundStyle(.secondary) + Text("Pull down to refresh") + .font(.subheadline) + .foregroundStyle(.tertiary) + } + .frame(maxWidth: .infinity) + } +} diff --git a/IceGlass-iOS/Views/PlayoffRoundSection.swift b/IceGlass-iOS/Views/PlayoffRoundSection.swift new file mode 100644 index 0000000..c6dde5e --- /dev/null +++ b/IceGlass-iOS/Views/PlayoffRoundSection.swift @@ -0,0 +1,33 @@ +// +// PlayoffRoundSection.swift +// IceGlass-iOS +// +// Copyright 2026 Rouslan Zenetl. All Rights Reserved. +// + +import SwiftUI + +struct PlayoffRoundSection: View { + let round: Int + let items: [MainService.RoundSeriesItem] + + var body: some View { + VStack(alignment: .leading, spacing: 8) { + Text("ROUND \(round)") + .font(.caption) + .fontWeight(.bold) + .foregroundStyle(.secondary) + + VStack(spacing: 0) { + ForEach(items, id: \.series.seriesLetter) { item in + SeriesRow(item: item) + if item.series.seriesLetter != items.last?.series.seriesLetter { + Divider() + } + } + } + .background(Color(uiColor: .secondarySystemGroupedBackground)) + .clipShape(RoundedRectangle(cornerRadius: 12)) + } + } +} diff --git a/IceGlass-iOS/Views/SeriesRow.swift b/IceGlass-iOS/Views/SeriesRow.swift new file mode 100644 index 0000000..4d187df --- /dev/null +++ b/IceGlass-iOS/Views/SeriesRow.swift @@ -0,0 +1,75 @@ +// +// SeriesRow.swift +// IceGlass-iOS +// +// Copyright 2026 Rouslan Zenetl. All Rights Reserved. +// + +import SwiftUI + +struct SeriesRow: View { + let item: MainService.RoundSeriesItem + + var body: some View { + Button(action: open) { + HStack(alignment: .center, spacing: 12) { + VStack(alignment: .leading, spacing: 2) { + Text(matchupText) + .font(.body) + .fontWeight(.medium) + .foregroundStyle(.primary) + Text(scoreText) + .font(.caption) + .foregroundStyle(.secondary) + } + Spacer() + VStack(alignment: .trailing, spacing: 2) { + Text(statusText) + .font(.caption) + .fontWeight(.medium) + .foregroundStyle(.secondary) + if let trailing = trailingText { + Text(trailing) + .font(.caption2) + .foregroundStyle(.tertiary) + } + } + } + .padding(.horizontal, 14) + .padding(.vertical, 10) + .contentShape(Rectangle()) + } + .buttonStyle(.plain) + } + + private var matchupText: String { + let top = item.series.topSeedTeam?.abbrev ?? "TBD" + let bottom = item.series.bottomSeedTeam?.abbrev ?? "TBD" + return "\(bottom) @ \(top)" + } + + private var scoreText: String { + "\(item.series.bottomSeedWins) – \(item.series.topSeedWins)" + } + + private var statusText: String { + if let winner = item.series.winner { + return "Final · \(winner) wins" + } + if let n = item.series.nextGameNumber { + return "Game \(n)" + } + return "" + } + + private var trailingText: String? { + guard item.series.winner == nil else { return nil } + return item.nextGame?.nextGameLabel + } + + private func open() { + guard let urlString = item.series.fullSeriesUrl, + let url = URL(string: urlString) else { return } + UIApplication.shared.open(url) + } +} diff --git a/IceGlass-iOS/Views/SettingsSheet.swift b/IceGlass-iOS/Views/SettingsSheet.swift new file mode 100644 index 0000000..8487f68 --- /dev/null +++ b/IceGlass-iOS/Views/SettingsSheet.swift @@ -0,0 +1,54 @@ +// +// SettingsSheet.swift +// IceGlass-iOS +// +// Copyright 2026 Rouslan Zenetl. All Rights Reserved. +// + +import IndieAbout +import SwiftUI + +struct SettingsSheet: View { + @Environment(ScoreboardViewModel.self) private var viewModel + @Environment(\.dismiss) private var dismiss + + var body: some View { + @Bindable var vm = viewModel + NavigationStack { + Form { + Section("Display") { + Picker("Days shown", selection: Binding( + get: { vm.displayOption }, + set: { newValue in + vm.displayOption = newValue + MainService.shared.updateUI() + } + )) { + ForEach(AppSettings.DisplayOption.allCases, id: \.self) { option in + Text(option.title).tag(option) + } + } + .pickerStyle(.inline) + .labelsHidden() + } + + Section { + IndieAbout(configuration: AppInfoConfiguration( + showDeviceInfo: false, + documents: [ + .license(filename: "LICENSE", extension: "md"), + .custom(title: "Changelog", filename: "CHANGELOG", extension: "md") + ] + )) + } + } + .navigationTitle("Settings") + .navigationBarTitleDisplayMode(.inline) + .toolbar { + ToolbarItem(placement: .topBarTrailing) { + Button("Done") { dismiss() } + } + } + } + } +} diff --git a/IceGlass-iOS/Views/UpdatedHeader.swift b/IceGlass-iOS/Views/UpdatedHeader.swift new file mode 100644 index 0000000..38d807e --- /dev/null +++ b/IceGlass-iOS/Views/UpdatedHeader.swift @@ -0,0 +1,81 @@ +// +// UpdatedHeader.swift +// IceGlass-iOS +// +// Copyright 2026 Rouslan Zenetl. All Rights Reserved. +// + +import SwiftUI + +/// "Updated 2 min ago" + "as of Apr 24, 4:32 PM ET" header. +/// Color escalates as data ages: secondary → orange (>5min) → red (>30min or never). +/// Self-refreshes every 30s via TimelineView so the relative label stays current +/// without a network call. +struct UpdatedHeader: View { + let lastUpdated: Date? + let isRefreshing: Bool + + var body: some View { + TimelineView(.periodic(from: .now, by: 30)) { context in + HStack(alignment: .firstTextBaseline, spacing: 8) { + VStack(alignment: .leading, spacing: 2) { + Text(relativeLabel(now: context.date)) + .font(.subheadline) + .fontWeight(.medium) + if let absolute = absoluteLabel() { + Text(absolute) + .font(.caption) + .foregroundStyle(.tertiary) + } + } + .foregroundStyle(staleness(now: context.date).color) + + if isRefreshing { + ProgressView() + .controlSize(.small) + } + Spacer() + } + } + } + + private enum Staleness { + case fresh + case warm // >5 min + case stale // >30 min or no data + + var color: Color { + switch self { + case .fresh: return .secondary + case .warm: return .orange + case .stale: return .red + } + } + } + + private func staleness(now: Date) -> Staleness { + guard let lastUpdated else { return .stale } + let age = now.timeIntervalSince(lastUpdated) + if age > 30 * 60 { return .stale } + if age > 5 * 60 { return .warm } + return .fresh + } + + private func relativeLabel(now: Date) -> String { + guard let lastUpdated else { return "Never updated" } + let age = now.timeIntervalSince(lastUpdated) + if age < 60 { return "Updated just now" } + let formatter = RelativeDateTimeFormatter() + formatter.unitsStyle = .abbreviated + return "Updated \(formatter.localizedString(for: lastUpdated, relativeTo: now))" + } + + private func absoluteLabel() -> String? { + guard let lastUpdated else { return nil } + let formatter = DateFormatter() + formatter.dateFormat = "MMM d, h:mm a" + formatter.timeZone = TimeZone(identifier: "America/New_York") + let stamp = formatter.string(from: lastUpdated) + return "as of \(stamp) ET" + } +} diff --git a/IceGlass/AppDelegate.swift b/IceGlass/AppDelegate.swift index a55fffc..c66d7b7 100644 --- a/IceGlass/AppDelegate.swift +++ b/IceGlass/AppDelegate.swift @@ -16,11 +16,15 @@ class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCenterDele ) private var mainService = MainService.shared + private let observerAdapter = MacObserverAdapter() func applicationDidFinishLaunching(_ notification: Notification) { logger.info("applicationDidFinishLaunching") UNUserNotificationCenter.current().delegate = self + // Install MainService → AppKit bridge before any data flows in. + mainService.observer = observerAdapter + // Force re-register with Launch Services to refresh cached icon LSRegisterURL(Bundle.main.bundleURL as CFURL, true) @@ -48,3 +52,29 @@ class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCenterDele completionHandler() } } + +/// Bridges MainService callbacks to the macOS-only managers so MainService +/// stays AppKit-free and shareable with the iOS target. +@MainActor +final class MacObserverAdapter: MainServiceObserver { + func mainServiceDidUpdate() { + StatusItemManager.shared.updateStatusText(MainService.shared.statusBarText) + MenuManager.shared.scoreboardChanged() + } + + func mainServiceDidDetectGameStart(_ game: Scoreboard.Game) { + NotificationManager.shared.notifyGameStarted(game) + } + + func mainServiceDidDetectGoal( + _ game: Scoreboard.Game, + scoringTeam: Scoreboard.Game.Team, + scorer: GoalScorer? + ) { + NotificationManager.shared.notifyGoalScored(game, scoringTeam: scoringTeam, scorer: scorer) + } + + func mainServiceDidDetectGameEnd(_ game: Scoreboard.Game) { + NotificationManager.shared.notifyGameEnded(game) + } +} diff --git a/IceGlass/Managers/MenuManager.swift b/IceGlass/Managers/MenuManager.swift index d8209ff..d642056 100644 --- a/IceGlass/Managers/MenuManager.swift +++ b/IceGlass/Managers/MenuManager.swift @@ -366,7 +366,7 @@ class MenuManager: @unchecked Sendable { trailing = "" } else if let n = series.nextGameNumber { statusTag = "(Game \(n))" - trailing = roundItem.nextGame.map { Self.nextGameLabel(for: $0) } ?? "" + trailing = roundItem.nextGame?.nextGameLabel ?? "" } else { statusTag = "" trailing = "" @@ -381,28 +381,4 @@ class MenuManager: @unchecked Sendable { return item } - private static func nextGameLabel(for game: Scoreboard.Game) -> String { - let state = game.parsedGameState - if state.isLive { - return state.shortTag - } - let dayLabel: String - switch game.gameDate { - case Date.todayET: dayLabel = "Today" - case Date.tomorrowET: dayLabel = "Tomorrow" - case Date.yesterdayET: dayLabel = "Yesterday" - default: - let formatter = DateFormatter() - formatter.dateFormat = "yyyy-MM-dd" - formatter.timeZone = TimeZone(identifier: "America/New_York") - if let date = formatter.date(from: game.gameDate) { - dayLabel = date.formatDateET(format: "EEE") - } else { - dayLabel = "" - } - } - let time = game.startTimeET.trimmingCharacters(in: .whitespaces) - let base = "\(dayLabel) \(time)" - return state == .pre ? "\(base) (PRE)" : base - } } diff --git a/README.md b/README.md index ea5f791..2a41d6e 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,10 @@ # IceGlass -A macOS menu bar app for NHL game situational awareness. +NHL game situational awareness for macOS (menu bar) and iPhone (single-page app). ## Key Features +### macOS menu bar app - NHL shield icon in the menu bar with game count - Shows games from yesterday, today, and tomorrow grouped by date (configurable) - Regular-season rows show league-wide game number (`#547 NYR @ WAS …`) @@ -11,28 +12,37 @@ A macOS menu bar app for NHL game situational awareness. - Game format: `NYR @ WAS 0:2 (FINAL)` / `DAL @ TOR Today @ 7:30 PM` - Click a game to open NHL GameCenter; option-click for NHL Videocast - Goal scored notifications with scoring team logo -- Game start notifications on FUT→LIVE state transition +- Game start / game ended notifications - Dynamic polling: 7s during live games, scales back when idle - Display Options: choose which days to show (yesterday/today/tomorrow) - Refresh Now (⌘R) for immediate updates - Launch at Login support - About window via IndieAbout +### iPhone app +- Single scrollable page mirroring the macOS menu's content +- "Updated …" header showing relative + absolute ET timestamps; turns orange after 5 min, red after 30 min +- Persistent JSON cache in Application Support so cold launches paint last-known data instantly +- Pull-to-refresh, plus auto-refresh on scene activation and foreground polling timer +- Settings sheet (gear, top-right): display option picker + IndieAbout (license + changelog) +- Tap a game to open NHL GameCenter; tap a series to open the NHL series page + ## Building Requires XcodeGen to generate the project: ```bash xcodegen generate -xcodebuild -scheme IceGlass -configuration Debug build +xcodebuild -scheme IceGlass -configuration Debug build # macOS +xcodebuild -scheme IceGlass-iOS -configuration Debug -destination 'platform=iOS Simulator,name=iPhone 17 Pro' build ``` ## Architecture -Menu bar app using singleton services pattern: -- **MainService** — polls NHL scoreboard API, manages game data -- **MenuManager** — builds dropdown menu with date-grouped games -- **StatusItemManager** — manages menu bar icon -- **NotificationManager** — game start and goal scored notifications with team logos +Two targets sharing a common data layer (`Shared/`) and platform-specific UI: -Uses the NHL Web API (`api-web.nhle.com/v1/scoreboard/now`) for league-wide schedule and score data. +- **Shared/** — `MainService`, `ApiService`, `AppSettings`, `NHLDataCache`, models, Date/Time/Logger helpers +- **IceGlass/** — macOS-only managers (MenuManager, StatusItemManager, NotificationManager, AboutWindow) +- **IceGlass-iOS/** — SwiftUI views, ScoreboardViewModel (`@Observable`) + +`MainService` exposes a `MainServiceObserver` protocol; each platform installs its own adapter to bridge data updates into AppKit (macOS) or `@Observable` invalidation (iOS). Data is fetched from the NHL Web API (`api-web.nhle.com/v1/scoreboard/now`, `/standings/{date}`, `/playoff-bracket/{year}`). diff --git a/IceGlass/Extensions/Date+easternTimeZone.swift b/Shared/Extensions/Date+easternTimeZone.swift similarity index 100% rename from IceGlass/Extensions/Date+easternTimeZone.swift rename to Shared/Extensions/Date+easternTimeZone.swift diff --git a/IceGlass/Extensions/Date+etCalendar.swift b/Shared/Extensions/Date+etCalendar.swift similarity index 100% rename from IceGlass/Extensions/Date+etCalendar.swift rename to Shared/Extensions/Date+etCalendar.swift diff --git a/IceGlass/Extensions/Date+formatDateET.swift b/Shared/Extensions/Date+formatDateET.swift similarity index 100% rename from IceGlass/Extensions/Date+formatDateET.swift rename to Shared/Extensions/Date+formatDateET.swift diff --git a/IceGlass/Extensions/Date+gameWindow.swift b/Shared/Extensions/Date+gameWindow.swift similarity index 100% rename from IceGlass/Extensions/Date+gameWindow.swift rename to Shared/Extensions/Date+gameWindow.swift diff --git a/Shared/Extensions/Game+nextGameLabel.swift b/Shared/Extensions/Game+nextGameLabel.swift new file mode 100644 index 0000000..f4fc9ff --- /dev/null +++ b/Shared/Extensions/Game+nextGameLabel.swift @@ -0,0 +1,38 @@ +// +// Game+nextGameLabel.swift +// IceGlass +// +// Copyright 2026 Rouslan Zenetl. All Rights Reserved. +// + +import Foundation + +extension Scoreboard.Game { + /// Friendly "next game" label used by both the macOS menu and the iOS + /// playoff series row: "Today 9:30 PM", "Tomorrow 7:00 PM", "Wed 7:00 PM (PRE)", + /// or just "LIVE" when the game is in progress. + var nextGameLabel: String { + let state = parsedGameState + if state.isLive { + return state.shortTag + } + let dayLabel: String + switch gameDate { + case Date.todayET: dayLabel = "Today" + case Date.tomorrowET: dayLabel = "Tomorrow" + case Date.yesterdayET: dayLabel = "Yesterday" + default: + let formatter = DateFormatter() + formatter.dateFormat = "yyyy-MM-dd" + formatter.timeZone = TimeZone(identifier: "America/New_York") + if let date = formatter.date(from: gameDate) { + dayLabel = date.formatDateET(format: "EEE") + } else { + dayLabel = "" + } + } + let time = startTimeET.trimmingCharacters(in: .whitespaces) + let base = "\(dayLabel) \(time)" + return state == .pre ? "\(base) (PRE)" : base + } +} diff --git a/IceGlass/Extensions/TimeInterval+humanReadableTime.swift b/Shared/Extensions/TimeInterval+humanReadableTime.swift similarity index 100% rename from IceGlass/Extensions/TimeInterval+humanReadableTime.swift rename to Shared/Extensions/TimeInterval+humanReadableTime.swift diff --git a/IceGlass/Extensions/Timer+startTimer.swift b/Shared/Extensions/Timer+startTimer.swift similarity index 100% rename from IceGlass/Extensions/Timer+startTimer.swift rename to Shared/Extensions/Timer+startTimer.swift diff --git a/IceGlass/Lib/IceGlassLogger.swift b/Shared/Lib/IceGlassLogger.swift similarity index 100% rename from IceGlass/Lib/IceGlassLogger.swift rename to Shared/Lib/IceGlassLogger.swift diff --git a/IceGlass/Models/BracketModel.swift b/Shared/Models/BracketModel.swift similarity index 100% rename from IceGlass/Models/BracketModel.swift rename to Shared/Models/BracketModel.swift diff --git a/IceGlass/Models/GameState.swift b/Shared/Models/GameState.swift similarity index 100% rename from IceGlass/Models/GameState.swift rename to Shared/Models/GameState.swift diff --git a/IceGlass/Models/PlayByPlayModel.swift b/Shared/Models/PlayByPlayModel.swift similarity index 100% rename from IceGlass/Models/PlayByPlayModel.swift rename to Shared/Models/PlayByPlayModel.swift diff --git a/IceGlass/Models/ScoreboardModel.swift b/Shared/Models/ScoreboardModel.swift similarity index 100% rename from IceGlass/Models/ScoreboardModel.swift rename to Shared/Models/ScoreboardModel.swift diff --git a/IceGlass/Models/StandingsModel.swift b/Shared/Models/StandingsModel.swift similarity index 100% rename from IceGlass/Models/StandingsModel.swift rename to Shared/Models/StandingsModel.swift diff --git a/IceGlass/Resources/TeamLogos/ANA.png b/Shared/Resources/TeamLogos/ANA.png similarity index 100% rename from IceGlass/Resources/TeamLogos/ANA.png rename to Shared/Resources/TeamLogos/ANA.png diff --git a/IceGlass/Resources/TeamLogos/BOS.png b/Shared/Resources/TeamLogos/BOS.png similarity index 100% rename from IceGlass/Resources/TeamLogos/BOS.png rename to Shared/Resources/TeamLogos/BOS.png diff --git a/IceGlass/Resources/TeamLogos/BUF.png b/Shared/Resources/TeamLogos/BUF.png similarity index 100% rename from IceGlass/Resources/TeamLogos/BUF.png rename to Shared/Resources/TeamLogos/BUF.png diff --git a/IceGlass/Resources/TeamLogos/CAR.png b/Shared/Resources/TeamLogos/CAR.png similarity index 100% rename from IceGlass/Resources/TeamLogos/CAR.png rename to Shared/Resources/TeamLogos/CAR.png diff --git a/IceGlass/Resources/TeamLogos/CBJ.png b/Shared/Resources/TeamLogos/CBJ.png similarity index 100% rename from IceGlass/Resources/TeamLogos/CBJ.png rename to Shared/Resources/TeamLogos/CBJ.png diff --git a/IceGlass/Resources/TeamLogos/CGY.png b/Shared/Resources/TeamLogos/CGY.png similarity index 100% rename from IceGlass/Resources/TeamLogos/CGY.png rename to Shared/Resources/TeamLogos/CGY.png diff --git a/IceGlass/Resources/TeamLogos/CHI.png b/Shared/Resources/TeamLogos/CHI.png similarity index 100% rename from IceGlass/Resources/TeamLogos/CHI.png rename to Shared/Resources/TeamLogos/CHI.png diff --git a/IceGlass/Resources/TeamLogos/COL.png b/Shared/Resources/TeamLogos/COL.png similarity index 100% rename from IceGlass/Resources/TeamLogos/COL.png rename to Shared/Resources/TeamLogos/COL.png diff --git a/IceGlass/Resources/TeamLogos/DAL.png b/Shared/Resources/TeamLogos/DAL.png similarity index 100% rename from IceGlass/Resources/TeamLogos/DAL.png rename to Shared/Resources/TeamLogos/DAL.png diff --git a/IceGlass/Resources/TeamLogos/DET.png b/Shared/Resources/TeamLogos/DET.png similarity index 100% rename from IceGlass/Resources/TeamLogos/DET.png rename to Shared/Resources/TeamLogos/DET.png diff --git a/IceGlass/Resources/TeamLogos/EDM.png b/Shared/Resources/TeamLogos/EDM.png similarity index 100% rename from IceGlass/Resources/TeamLogos/EDM.png rename to Shared/Resources/TeamLogos/EDM.png diff --git a/IceGlass/Resources/TeamLogos/FLA.png b/Shared/Resources/TeamLogos/FLA.png similarity index 100% rename from IceGlass/Resources/TeamLogos/FLA.png rename to Shared/Resources/TeamLogos/FLA.png diff --git a/IceGlass/Resources/TeamLogos/LAK.png b/Shared/Resources/TeamLogos/LAK.png similarity index 100% rename from IceGlass/Resources/TeamLogos/LAK.png rename to Shared/Resources/TeamLogos/LAK.png diff --git a/IceGlass/Resources/TeamLogos/MIN.png b/Shared/Resources/TeamLogos/MIN.png similarity index 100% rename from IceGlass/Resources/TeamLogos/MIN.png rename to Shared/Resources/TeamLogos/MIN.png diff --git a/IceGlass/Resources/TeamLogos/MTL.png b/Shared/Resources/TeamLogos/MTL.png similarity index 100% rename from IceGlass/Resources/TeamLogos/MTL.png rename to Shared/Resources/TeamLogos/MTL.png diff --git a/IceGlass/Resources/TeamLogos/NJD.png b/Shared/Resources/TeamLogos/NJD.png similarity index 100% rename from IceGlass/Resources/TeamLogos/NJD.png rename to Shared/Resources/TeamLogos/NJD.png diff --git a/IceGlass/Resources/TeamLogos/NSH.png b/Shared/Resources/TeamLogos/NSH.png similarity index 100% rename from IceGlass/Resources/TeamLogos/NSH.png rename to Shared/Resources/TeamLogos/NSH.png diff --git a/IceGlass/Resources/TeamLogos/NYI.png b/Shared/Resources/TeamLogos/NYI.png similarity index 100% rename from IceGlass/Resources/TeamLogos/NYI.png rename to Shared/Resources/TeamLogos/NYI.png diff --git a/IceGlass/Resources/TeamLogos/NYR.png b/Shared/Resources/TeamLogos/NYR.png similarity index 100% rename from IceGlass/Resources/TeamLogos/NYR.png rename to Shared/Resources/TeamLogos/NYR.png diff --git a/IceGlass/Resources/TeamLogos/OTT.png b/Shared/Resources/TeamLogos/OTT.png similarity index 100% rename from IceGlass/Resources/TeamLogos/OTT.png rename to Shared/Resources/TeamLogos/OTT.png diff --git a/IceGlass/Resources/TeamLogos/PHI.png b/Shared/Resources/TeamLogos/PHI.png similarity index 100% rename from IceGlass/Resources/TeamLogos/PHI.png rename to Shared/Resources/TeamLogos/PHI.png diff --git a/IceGlass/Resources/TeamLogos/PIT.png b/Shared/Resources/TeamLogos/PIT.png similarity index 100% rename from IceGlass/Resources/TeamLogos/PIT.png rename to Shared/Resources/TeamLogos/PIT.png diff --git a/IceGlass/Resources/TeamLogos/SEA.png b/Shared/Resources/TeamLogos/SEA.png similarity index 100% rename from IceGlass/Resources/TeamLogos/SEA.png rename to Shared/Resources/TeamLogos/SEA.png diff --git a/IceGlass/Resources/TeamLogos/SJS.png b/Shared/Resources/TeamLogos/SJS.png similarity index 100% rename from IceGlass/Resources/TeamLogos/SJS.png rename to Shared/Resources/TeamLogos/SJS.png diff --git a/IceGlass/Resources/TeamLogos/STL.png b/Shared/Resources/TeamLogos/STL.png similarity index 100% rename from IceGlass/Resources/TeamLogos/STL.png rename to Shared/Resources/TeamLogos/STL.png diff --git a/IceGlass/Resources/TeamLogos/TBL.png b/Shared/Resources/TeamLogos/TBL.png similarity index 100% rename from IceGlass/Resources/TeamLogos/TBL.png rename to Shared/Resources/TeamLogos/TBL.png diff --git a/IceGlass/Resources/TeamLogos/TOR.png b/Shared/Resources/TeamLogos/TOR.png similarity index 100% rename from IceGlass/Resources/TeamLogos/TOR.png rename to Shared/Resources/TeamLogos/TOR.png diff --git a/IceGlass/Resources/TeamLogos/UTA.png b/Shared/Resources/TeamLogos/UTA.png similarity index 100% rename from IceGlass/Resources/TeamLogos/UTA.png rename to Shared/Resources/TeamLogos/UTA.png diff --git a/IceGlass/Resources/TeamLogos/VAN.png b/Shared/Resources/TeamLogos/VAN.png similarity index 100% rename from IceGlass/Resources/TeamLogos/VAN.png rename to Shared/Resources/TeamLogos/VAN.png diff --git a/IceGlass/Resources/TeamLogos/VGK.png b/Shared/Resources/TeamLogos/VGK.png similarity index 100% rename from IceGlass/Resources/TeamLogos/VGK.png rename to Shared/Resources/TeamLogos/VGK.png diff --git a/IceGlass/Resources/TeamLogos/WPG.png b/Shared/Resources/TeamLogos/WPG.png similarity index 100% rename from IceGlass/Resources/TeamLogos/WPG.png rename to Shared/Resources/TeamLogos/WPG.png diff --git a/IceGlass/Resources/TeamLogos/WSH.png b/Shared/Resources/TeamLogos/WSH.png similarity index 100% rename from IceGlass/Resources/TeamLogos/WSH.png rename to Shared/Resources/TeamLogos/WSH.png diff --git a/IceGlass/Services/ApiService.swift b/Shared/Services/ApiService.swift similarity index 87% rename from IceGlass/Services/ApiService.swift rename to Shared/Services/ApiService.swift index 306b92a..36a46cd 100644 --- a/IceGlass/Services/ApiService.swift +++ b/Shared/Services/ApiService.swift @@ -22,10 +22,7 @@ class ApiService: @unchecked Sendable { init(url: URL?, callback: @escaping ApiServiceCallback) { guard let url = url else { - AppTerminator.terminate() - self.url = URL(string: "")! - self.callback = { (_: Data, _: URLResponse) in } - return + preconditionFailure("ApiService initialised with nil URL — caller bug.") } self.url = url self.callback = callback diff --git a/IceGlass/Services/MainService.swift b/Shared/Services/MainService.swift similarity index 71% rename from IceGlass/Services/MainService.swift rename to Shared/Services/MainService.swift index 9676166..a6fa211 100644 --- a/IceGlass/Services/MainService.swift +++ b/Shared/Services/MainService.swift @@ -7,6 +7,36 @@ import Foundation +/// Platform-agnostic callback so MainService doesn't import AppKit/UIKit. +/// macOS sets this to drive MenuManager + StatusItemManager + NotificationManager; +/// iOS sets it to invalidate its @Observable view model. +@MainActor +protocol MainServiceObserver: AnyObject { + /// Fired after every successful scoreboard / standings / bracket update. + func mainServiceDidUpdate() + + /// Fired when a future game transitions to live. macOS shows a notification; + /// iOS v1 ignores (no notifications). + func mainServiceDidDetectGameStart(_ game: Scoreboard.Game) + + /// Fired when a goal is detected. `scorer` may be nil if play-by-play hasn't + /// caught up yet. + func mainServiceDidDetectGoal( + _ game: Scoreboard.Game, + scoringTeam: Scoreboard.Game.Team, + scorer: GoalScorer? + ) + + /// Fired when a game transitions to a final state (OVER/FINAL/OFF). + func mainServiceDidDetectGameEnd(_ game: Scoreboard.Game) +} + +extension MainServiceObserver { + func mainServiceDidDetectGameStart(_: Scoreboard.Game) {} + func mainServiceDidDetectGoal(_: Scoreboard.Game, scoringTeam: Scoreboard.Game.Team, scorer: GoalScorer?) {} + func mainServiceDidDetectGameEnd(_: Scoreboard.Game) {} +} + class MainService: @unchecked Sendable { private let logger = IceGlassLogger( subsystem: Bundle.main.bundleIdentifier ?? "dev.rzen.indie.IceGlass", @@ -15,10 +45,14 @@ class MainService: @unchecked Sendable { static let shared = MainService() - private lazy var menuManager = MenuManager.shared - private lazy var statusItemManager = StatusItemManager.shared private lazy var settings = AppSettings.shared - private lazy var notificationManager = NotificationManager.shared + private let cache = NHLDataCache() + + /// Set by each platform's app entry to receive update callbacks. + /// Always invoked on the main actor by the methods below; the property + /// itself is unisolated so MainService.shared can be referenced from + /// nonisolated contexts (e.g. AppDelegate's stored property init). + nonisolated(unsafe) weak var observer: (any MainServiceObserver)? private var pollingTimer: Timer? private var scoreboardApi: ApiService? @@ -35,10 +69,14 @@ class MainService: @unchecked Sendable { /// Current playoff bracket (nil during regular season or before first fetch) var bracket: PlayoffBracket? + /// Timestamp of the most recent successful fetch (any endpoint). + /// Surface this in the iOS UI as the "as of" indicator. + private(set) var lastUpdated: Date? + /// Previous game snapshots for detecting state/score changes (keyed by game ID) private var previousGameStates: [Int: GameSnapshot] = [:] - /// Whether this is the first fe tch (suppress notifications on initial load) + /// Whether this is the first fetch (suppress notifications on initial load) private var isFirstFetch = true /// Set during change detection when a playoff game transitions to a final state, @@ -118,12 +156,10 @@ class MainService: @unchecked Sendable { private init() { logger.debug("Initializing") DispatchQueue.main.async { [weak self] in - guard let self = self else { - AppTerminator.terminate() - return - } + guard let self = self else { return } Task { @MainActor in + await self.loadFromCache() self.initApis() self.reschedulePollingTimer(.bootstrap) await self.fetchScoreboard() @@ -132,6 +168,48 @@ class MainService: @unchecked Sendable { } } + // MARK: - Cache + + /// Loads the persisted snapshot (if any) so the UI can paint last-known + /// data immediately. The fresh fetch in `init` then overwrites in-memory + /// state and the cache file. + private func loadFromCache() async { + guard let snapshot = await cache.load() else { return } + if let scoreboard = snapshot.scoreboard { + let yesterday = Date.yesterdayET + let today = Date.todayET + let tomorrow = Date.tomorrowET + let windowDates = Set([yesterday, today, tomorrow]) + let filtered = scoreboard.gamesByDate.filter { windowDates.contains($0.date) } + self.allGamesByDate = filtered + self.updateSnapshots(from: filtered) + } + self.standings = snapshot.standings + self.bracket = snapshot.bracket + self.lastUpdated = snapshot.lastUpdated + logger.info("Loaded cached snapshot from \(snapshot.lastUpdated)") + Task { @MainActor in self.observer?.mainServiceDidUpdate() } + } + + private func persistCache() { + // Reconstruct a synthetic Scoreboard from the windowed allGamesByDate + // so the cached payload is exactly what we'd render on next launch. + let scoreboard = Scoreboard( + focusedDate: Date.todayET, + focusedDateCount: allGamesByDate.first { $0.date == Date.todayET }?.games.count ?? 0, + gamesByDate: allGamesByDate + ) + let snapshot = CachedSnapshot( + lastUpdated: Date(), + scoreboard: scoreboard, + standings: standings, + bracket: bracket + ) + Task { [cache] in + await cache.save(snapshot) + } + } + private func initApis() { scoreboardApi = ApiService( url: URL(string: "https://api-web.nhle.com/v1/scoreboard/now") @@ -154,20 +232,12 @@ class MainService: @unchecked Sendable { self.allGamesByDate = filtered self.updateSnapshots(from: filtered) + self.lastUpdated = Date() - let wasFirstFetch = self.isFirstFetch if self.isFirstFetch { self.isFirstFetch = false } -#if DEBUG - // Fire a test game-start notification on startup so the dev - // loop doesn't require clicking through the menu each time. - if wasFirstFetch, let game = filtered.flatMap(\.games).first { - self.notificationManager.notifyGameStarted(game, bypassDedup: true) - } -#endif - self.logger.info("Scoreboard updated: \(filtered.map { "\($0.date): \($0.games.count) games" }.joined(separator: ", "))") let interval = self.bestPollingInterval @@ -178,7 +248,8 @@ class MainService: @unchecked Sendable { await self.refreshBracketIfNeeded(from: filtered, force: shouldForceBracket) } - self.updateUI() + self.persistCache() + self.notifyObserverDidUpdate() } catch { self.logger.error("Failed to decode scoreboard: \(error.localizedDescription)") } @@ -191,17 +262,26 @@ class MainService: @unchecked Sendable { do { self.standings = try JSONDecoder().decode(Standings.self, from: data) + self.lastUpdated = Date() self.logger.info("Standings updated: \(self.standings?.standings.count ?? 0) teams") - self.updateUI() + self.persistCache() + self.notifyObserverDidUpdate() } catch { self.logger.error("Failed to decode standings: \(error.localizedDescription)") } } } + private func notifyObserverDidUpdate() { + Task { @MainActor in + self.observer?.mainServiceDidUpdate() + } + } + + /// Fires `mainServiceDidUpdate` without triggering a network fetch — call + /// after settings changes that affect what the existing data renders as. func updateUI() { - statusItemManager.updateStatusText(statusBarText) - menuManager.scoreboardChanged() + notifyObserverDidUpdate() } // MARK: - Change Detection @@ -216,13 +296,15 @@ class MainService: @unchecked Sendable { if let prevState = previousState, prevState.isFuture, currentState.isLive { logger.info("Game \(game.id) started: \(game.awayTeam.abbrev) @ \(game.homeTeam.abbrev)") - notificationManager.notifyGameStarted(game) + let captured = game + Task { @MainActor in self.observer?.mainServiceDidDetectGameStart(captured) } } // Game ended: transition to any over-state (OVER/FINAL/OFF) if let prevState = previousState, !prevState.isOver, currentState.isOver { logger.info("Game \(game.id) ended: \(game.awayTeam.abbrev) \(game.awayTeam.score ?? 0) — \(game.homeTeam.abbrev) \(game.homeTeam.score ?? 0)") - notificationManager.notifyGameEnded(game) + let captured = game + Task { @MainActor in self.observer?.mainServiceDidDetectGameEnd(captured) } } if game.gameType == 3, @@ -253,7 +335,9 @@ class MainService: @unchecked Sendable { awayScore: awayScore, homeScore: homeScore ) - self.notificationManager.notifyGoalScored(game, scoringTeam: scoringTeam, scorer: scorer) + await MainActor.run { + self.observer?.mainServiceDidDetectGoal(game, scoringTeam: scoringTeam, scorer: scorer) + } } } @@ -328,6 +412,20 @@ class MainService: @unchecked Sendable { } } + /// Cancel the polling timer (call from iOS when entering background). + @MainActor + func suspendPolling() { + pollingTimer?.invalidate() + pollingTimer = nil + logger.debug("Polling suspended") + } + + /// Resume polling at the appropriate interval (call from iOS on scenePhase=.active). + @MainActor + func resumePolling() { + reschedulePollingTimer(bestPollingInterval) + } + private func fetchScoreboard() async { await scoreboardApi?.fetch() } @@ -360,8 +458,10 @@ class MainService: @unchecked Sendable { guard let self = self else { return } do { self.bracket = try JSONDecoder().decode(PlayoffBracket.self, from: data) + self.lastUpdated = Date() self.logger.info("Bracket updated: \(self.bracket?.series.count ?? 0) series (round \(self.bracket?.currentRound ?? 0))") - self.updateUI() + self.persistCache() + self.notifyObserverDidUpdate() } catch { self.logger.error("Failed to decode bracket: \(error.localizedDescription)") } diff --git a/Shared/Services/NHLDataCache.swift b/Shared/Services/NHLDataCache.swift new file mode 100644 index 0000000..16118a4 --- /dev/null +++ b/Shared/Services/NHLDataCache.swift @@ -0,0 +1,68 @@ +// +// NHLDataCache.swift +// IceGlass +// +// Copyright 2026 Rouslan Zenetl. All Rights Reserved. +// + +import Foundation + +/// Snapshot of API state persisted between app launches so cold-launch shows +/// last-known data with an "as-of" timestamp instead of an empty page. +struct CachedSnapshot: Codable, Sendable { + let lastUpdated: Date + let scoreboard: Scoreboard? + let standings: Standings? + let bracket: PlayoffBracket? +} + +/// Single-file Codable cache in Application Support. Atomic writes; fail-soft +/// reads — corrupt or version-mismatched payloads return nil and the next +/// fetch overwrites with fresh data. +actor NHLDataCache { + private let logger = IceGlassLogger( + subsystem: Bundle.main.bundleIdentifier ?? "dev.rzen.indie.IceGlass", + category: "NHLDataCache" + ) + + private let fileURL: URL + + init(filename: String = "nhl-snapshot.json") { + let fm = FileManager.default + let supportDir = (try? fm.url( + for: .applicationSupportDirectory, + in: .userDomainMask, + appropriateFor: nil, + create: true + )) ?? fm.temporaryDirectory + + let bundleId = Bundle.main.bundleIdentifier ?? "dev.rzen.indie.IceGlass" + let appDir = supportDir.appendingPathComponent(bundleId, isDirectory: true) + try? fm.createDirectory(at: appDir, withIntermediateDirectories: true) + self.fileURL = appDir.appendingPathComponent(filename) + } + + func load() -> CachedSnapshot? { + guard FileManager.default.fileExists(atPath: fileURL.path) else { return nil } + do { + let data = try Data(contentsOf: fileURL) + let decoder = JSONDecoder() + decoder.dateDecodingStrategy = .iso8601 + return try decoder.decode(CachedSnapshot.self, from: data) + } catch { + logger.warning("Cache load failed (will refetch): \(error.localizedDescription)") + return nil + } + } + + func save(_ snapshot: CachedSnapshot) { + do { + let encoder = JSONEncoder() + encoder.dateEncodingStrategy = .iso8601 + let data = try encoder.encode(snapshot) + try data.write(to: fileURL, options: .atomic) + } catch { + logger.error("Cache save failed: \(error.localizedDescription)") + } + } +} diff --git a/IceGlass/Services/PollingInterval.swift b/Shared/Services/PollingInterval.swift similarity index 100% rename from IceGlass/Services/PollingInterval.swift rename to Shared/Services/PollingInterval.swift diff --git a/IceGlass/Managers/AppSettings.swift b/Shared/Settings/AppSettings.swift similarity index 98% rename from IceGlass/Managers/AppSettings.swift rename to Shared/Settings/AppSettings.swift index 277f2e5..c60c360 100644 --- a/IceGlass/Managers/AppSettings.swift +++ b/Shared/Settings/AppSettings.swift @@ -5,7 +5,10 @@ // Copyright 2026 Rouslan Zenetl. All Rights Reserved. // +import Foundation +#if os(macOS) import ServiceManagement +#endif class AppSettings: @unchecked Sendable { private let logger = IceGlassLogger( @@ -93,6 +96,7 @@ class AppSettings: @unchecked Sendable { } func updateLoginItem(enabled: Bool) { +#if os(macOS) do { if enabled { try SMAppService.mainApp.register() @@ -102,6 +106,7 @@ class AppSettings: @unchecked Sendable { } catch { logger.error("Failed to \(enabled ? "enable" : "disable") launch at login: \(error.localizedDescription)") } +#endif } private init() {} diff --git a/project.yml b/project.yml index 19ee3be..53174f9 100644 --- a/project.yml +++ b/project.yml @@ -3,6 +3,7 @@ options: bundleIdPrefix: dev.rzen.indie deploymentTarget: macOS: "13.0" + iOS: "17.0" xcodeVersion: "16.0" generateEmptyDirectories: true @@ -16,12 +17,13 @@ targets: type: application platform: macOS sources: - - path: IceGlass + - path: Shared excludes: - Resources/TeamLogos - - path: IceGlass/Resources/TeamLogos + - path: Shared/Resources/TeamLogos type: folder buildPhase: resources + - path: IceGlass settings: base: PRODUCT_BUNDLE_IDENTIFIER: dev.rzen.indie.IceGlass @@ -57,6 +59,45 @@ targets: com.apple.security.app-sandbox: true com.apple.security.network.client: true + IceGlass-iOS: + type: application + platform: iOS + sources: + - path: Shared + excludes: + - Resources/TeamLogos + - path: Shared/Resources/TeamLogos + type: folder + buildPhase: resources + - path: IceGlass-iOS + excludes: + - Resources + - path: LICENSE.md + buildPhase: resources + - path: CHANGELOG.md + buildPhase: resources + settings: + base: + PRODUCT_BUNDLE_IDENTIFIER: dev.rzen.indie.IceGlass.iOS + MARKETING_VERSION: "1.0.0" + CURRENT_PROJECT_VERSION: "1" + INFOPLIST_FILE: IceGlass-iOS/Info.plist + DEVELOPMENT_TEAM: C32Z8JNLG6 + SWIFT_VERSION: "6.0" + IPHONEOS_DEPLOYMENT_TARGET: "17.0" + TARGETED_DEVICE_FAMILY: "1" + PRODUCT_NAME: IceGlass + SWIFT_STRICT_CONCURRENCY: complete + ENABLE_USER_SCRIPT_SANDBOXING: false + GENERATE_INFOPLIST_FILE: false + configs: + Debug: + SWIFT_ACTIVE_COMPILATION_CONDITIONS: DEBUG + Release: + SWIFT_OPTIMIZATION_LEVEL: -O + dependencies: + - package: IndieAbout + schemes: IceGlass: build: @@ -66,3 +107,12 @@ schemes: config: Debug archive: config: Release + + IceGlass-iOS: + build: + targets: + IceGlass-iOS: all + run: + config: Debug + archive: + config: Release