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.
This commit is contained in:
+52
-2
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user