iOS 26 modernization — @Observable state, async networking, Liquid Glass UI, notifications#2
Open
iOS 26 modernization — @Observable state, async networking, Liquid Glass UI, notifications#2
Conversation
…ss UI, notifications, filter persistence - Migrate all state classes from ObservableObject/Combine to @observable - Fix filter live-update bug: remove @ObservationIgnored from SettingsState properties, replace with didSet UserDefaults persistence so @observable tracks changes and views re-render immediately - Fix map/list toggle reliability: move isListView from @ObservationIgnored @AppStorage in SettingsState to direct @AppStorage on HomeView - Replace async/Combine network layer with async/await + 2-retry exponential backoff; remove bogus auth header; configure URLCache - Add NotificationManager with BGAppRefreshTask registration and local notifications for M5.0+ earthquakes with deduplication - Apply Liquid Glass UI: glassEffect() on cards, .toolbarBackground(.glass), 5-tier magnitude color system - Add filter persistence: all filter/sort settings survive app restarts via UserDefaults - Inline filter chips (date, magnitude, sort) in list view above content; remove settings screen filter sections - Replace map/list toggle button with segmented control in navigation principal slot; suppress large title overlay on map - Move map user location button to bottom-right corner as custom overlay - Pull-to-refresh on earthquake list; surface network errors via alert with retry Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
SettingsStatefilter properties were@ObservationIgnored @AppStorage, making@Observableblind to changes; replaced with plain stored properties +didSetUserDefaults persistence so filters, chip labels, and the list update instantly without restartingisListViewfrom@ObservationIgnored @AppStorageinSettingsStateto direct@AppStorageonHomeViewso SwiftUI tracks it nativelyObservableObject/@StateObject/@EnvironmentObjectto@Observable/@State/@EnvironmentAnyPublisherwithasync/await; added 2-retry exponential backoff, removed bogusAuthorization: Bearer TOKENheader, configuredURLCache; errors surface via alert with retry buttonglassEffect()on cards,.toolbarBackground(.glass), 5-tier magnitude color system (Color+Magnitude.swift)NotificationManagerwithBGAppRefreshTaskfor background M5.0+ alerts with deduplication; registered inRumbleAppPicker(.segmented)in.principaltoolbar slot;.navigationBarTitleDisplayMode(.inline)prevents the "Earthquakes" title from floating over the mapmapControlsto a custom.regularMaterialcircle button overlaid.bottomTrailing, withMapCameraPositionbinding so tapping it re-centers on the userTest plan
🤖 Generated with Claude Code