Files
jarvis/project.yml
Robin Kutesa 3388eb7944 Add notifications: morning/evening briefings + breaking alerts
- Settings hub (gear → SettingsView) hosting Notifications and Connectivity
  (Connectivity previously had no entry point).
- NotificationsView: permission flow, breaking/new-story alerts with a
  min-signal threshold, morning & evening briefings with time pickers, and a
  weather toggle + location, plus a "send test briefing" action.
- NotificationManager: schedules daily briefings, builds "Jarvis" content
  (weather + top signal stories), fires breaking alerts off WebSocket
  story.created events, and refreshes via a BGAppRefresh task.
- WeatherService: Open-Meteo geocoding + daily forecast (no API key/entitlement).
- AppDelegate registers the background-refresh handler at launch; Info.plist
  gains UIBackgroundModes + BGTaskSchedulerPermittedIdentifiers.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 22:17:41 +03:00

48 lines
1.4 KiB
YAML

name: Jarvis
options:
bundleIdPrefix: com.kisani
deploymentTarget:
iOS: "17.0"
createIntermediateGroups: true
targets:
Jarvis:
type: application
platform: iOS
deploymentTarget: "17.0"
sources:
- path: Jarvis
info:
path: Jarvis/Info.plist
properties:
CFBundleDisplayName: Jarvis
UILaunchScreen:
UIColorName: ""
UISupportedInterfaceOrientations:
- UIInterfaceOrientationPortrait
UIUserInterfaceStyle: Dark
NSLocalNetworkUsageDescription: "Jarvis connects to your self-hosted news platform on the local network."
NSAppTransportSecurity:
NSAllowsArbitraryLoads: true
NSAllowsLocalNetworking: true
LSApplicationQueriesSchemes:
- tailscale
- zerotier
- wireguard
UIBackgroundModes:
- fetch
- processing
BGTaskSchedulerPermittedIdentifiers:
- com.kisani.jarvis.briefing.refresh
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: com.kisani.jarvis
MARKETING_VERSION: "1.0"
CURRENT_PROJECT_VERSION: "1"
TARGETED_DEVICE_FAMILY: "1"
SWIFT_VERSION: "5.0"
CODE_SIGNING_ALLOWED: "NO"
CODE_SIGNING_REQUIRED: "NO"
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME: AccentColor
ENABLE_USER_SCRIPT_SANDBOXING: "YES"