Usability
- Fix Sharing icon on iOS 18.
- Improve UI when digging deep.
- Increased reliability of Handoff logic.
- Fix first weekday bug in Stats UI.
- Fix logic around restoring state data reliably on start up.
Codability
- Update to Xcode 16 & Swift 6 & address concurrency fixes.
- Refactoring into smaller pieces to make building new UI simpler in the future
- Removing logic from UI code and adding unit tests for the logic.
What's Changed
- Revert "disable tab for an updated release (#833)" by @bolsinga in #834
- NavigationLink+PathRestorable no longer takes optionals by @bolsinga in #835
- Add PathRestorableLink and use it by @bolsinga in #836
- Add ArchiveCategory.defaultCategory by @bolsinga in #837
- remove ArchiveCategory.classic and its tab by @bolsinga in #838
- Add tests for when a nil ArchiveCategory is restored with existing data in ArchiveNavigation by @bolsinga in #839
- ArchiveNavigation.restoreNavigation allows selectedCategory to be set to nil by @bolsinga in #840
- ArchiveNavigation.restoreNavigation with nil category clears the path by @bolsinga in #841
- Use .defaultCategory where appropriate by @bolsinga in #842
- Add conformance to basic UI types by @bolsinga in #843
- ArchivePath activity is only active when it is the last path by @bolsinga in #844
- Add ArchiveState by @bolsinga in #845
- ArchiveNavigation.selectedCategory is non-Optional on macOS by @bolsinga in #846
- iOS/tvOS default to .today by @bolsinga in #847
- Back fill tests regarding category/path by @bolsinga in #849
- ArchiveNavigation.navigate to category clears path by @bolsinga in #850
- back fill tests for all category and ArchivePath types by @bolsinga in #851
- Use let more often in Views by @bolsinga in #852
- ArchiveNavigation.State has vars by @bolsinga in #853
- Use State.category directly by @bolsinga in #854
- improve parameter name by @bolsinga in #855
- Use State.path directly by @bolsinga in #856
- UserActivity conversions return Optional instead of throwing by @bolsinga in #857
- URL to path/category conversions use Optional by @bolsinga in #858
- Add helper methods on Array by @bolsinga in #859
- remove jsonData extension on ArchivePath by @bolsinga in #860
- Use individual let variables where applicable. by @bolsinga in #861
- separate logic out of view by @bolsinga in #862
- do not run notification action before listening for notifications by @bolsinga in #863
- backfill weekday tests by @bolsinga in #864
- test weekday name and test invalid firstWeekday values too by @bolsinga in #865
- fix firstWeekday calculation by @bolsinga in #866
- constrain max input for first weekday calculations by @bolsinga in #867
- simplify MainActor code by @bolsinga in #868
- CLPlacemark is not Sendable so import CoreLocation preconcurrency by @bolsinga in #869
- Use CLLocationUpdate by @bolsinga in #871
- Add MainActor annotation to Ranking helper view properties by @bolsinga in #872
- annotate these globals with MainActor by @bolsinga in #873
- VenueDetail no longer needs to know about CLPlacemark by @bolsinga in #874
- Add MainActor annotations to RefreshCommand by @bolsinga in #875
- Still need preconcurrency for Xcode15.4 by @bolsinga in #876
- annotate NearbyDistanceThresholdView with MainActor by @bolsinga in #877
- annotate preconcurrency CoreLocation checking swift version by @bolsinga in #878
- annotate Logger nonisolated based upon swift version by @bolsinga in #879
- ignore format so imports are not moved around by @bolsinga in #880
- Make Diary Sendable by @bolsinga in #881
- fix site_tool when building for swift 6.0 by @bolsinga in #882
- filter CLLocationUpdate.Updates by distance by @bolsinga in #883
- Do not have toolbar w/o a url by @bolsinga in #884
- Also do not have toolbar w/o url by @bolsinga in #885
- Rename PathRestorableShareable to ArchiveSharable by @bolsinga in #886
- ArchiveSharable no longer conforms to PathRestorable by @bolsinga in #887
- Rename PathRestorableShareModifier to ArchiveSharableModifier by @bolsinga in #888
- Rename sharePathRestorable to archiveShare by @bolsinga in #889
- ArchiveCategory is now ArchiveSharable by @bolsinga in #891
- Update github actions to Xcode 16.0 by @bolsinga in #890
- Wrap Share in a ToolbarItem by @bolsinga in #892
- Logger is now Sendable when building with Xcode 16.0 by @bolsinga in #893
- Import CoreLocation w/o preconcurrency in Xcode 16.0 by @bolsinga in #894
- update to use swift 6.0 by @bolsinga in #895
- update to s.a.p. 1.5.0 by @bolsinga in #896
- Update to swift testing by @bolsinga in #897
- iOS18 AppIcon name no longer works by @bolsinga in #899
- remove some import SwiftUI that snuck in by @bolsinga in #900
- ArchiveNavigation.State is now a private property by @bolsinga in #901
- use helper convenience property directly by @bolsinga in #902
- make property private by @bolsinga in #903
- Add CategoryDetail by @bolsinga in #904
- add a preview only init by @bolsinga in #905
- Add closure to get [ArchivePath] from a ArchiveCategory by @bolsinga in #906
- Create Summary views for ArchiveCategory. by @bolsinga in #907
- Revert "Add closure to get [ArchivePath] from a ArchiveCategory (#906)" by @bolsinga in #908
- Store each category's path by @bolsinga in #909
- Add category/path test by @bolsinga in #910
- Move Nearby for iOS by @bolsinga in #911
- make Logger extensions fileprivate by @bolsinga in #912
- change name of logger about external events. by @bolsinga in #913
- log location update distance by @bolsinga in #914
- add userActivity logging by @bolsinga in #915
- Add ArchiveCategory.isURLSharable by @bolsinga in #916
- Move URL.baseURL to its own file by @bolsinga in #917
- cache category URLs when the vault is created by @bolsinga in #918
- ArchiveCategory userActivity now toggles isActive by @bolsinga in #919
- Remove ArchiveCategoryShareActivityModifier by @bolsinga in #920
- use generic parameter by @bolsinga in #921
- ArchiveNavigation knows if a category is active. by @bolsinga in #922
- ArchiveCategoryUserActivityModifier has a closure to get URL by @bolsinga in #923
- Add ArchiveNavigationUserActivityModifier by @bolsinga in #924
- pathRestorableUserActivityModifier now takes the "digest" by @bolsinga in #925
- Add PathRestorableUserActivity.url by @bolsinga in #926
- Add ArchivePath userActivity to ArchiveNavigationUserActivityModifier by @bolsinga in #927
- Make digests ArchiveSharable by @bolsinga in #928
- Add Linkable protocol by @bolsinga in #929
- allow urlForCategory to take an Optional category for simplicity by @bolsinga in #931
- Allow optional items to just handle things simply. by @bolsinga in #930
- Extract ToolbarContent into their own files. by @bolsinga in #932
- Extract NearbyLocationView by @bolsinga in #933
- Remove loadLocationFilterFromStorage by @bolsinga in #934
- Move to ArchiveCategory.defaultCategory by @bolsinga in #935
- NearbyLocationView has properties instead of referencing the NearbyModel by @bolsinga in #936
- NearbyModel now consists of user state by @bolsinga in #937
- Add NearbyModel.State by @bolsinga in #938
- Always using RankingSort by @bolsinga in #939
- Add computed properties for isCategoryActive and isPathActive by @bolsinga in #940
- compact test logic by @bolsinga in #941
- isCategoryActive no longer used by @bolsinga in #942
- Add ArchiveActivity by @bolsinga in #943
- name type consistently by @bolsinga in #944
- add some helpers to get associated values from ArchiveActivity by @bolsinga in #945
- simplify ArchiveSharableToolbarContent declaration by @bolsinga in #947
- Revert "Move Nearby for iOS (#911)" by @bolsinga in #948
- re-use local variable by @bolsinga in #949
- Add ArchiveCategoryLinkable by @bolsinga in #950
- change ArchiveSharable to return String by @bolsinga in #951
- ArchiveSharable conforms to Linkable by @bolsinga in #952
- Remove Sorting protocol by @bolsinga in #953
- NearbyLocationView is now in an overlay by @bolsinga in #954
- Add separate NearbyLocationModifier by @bolsinga in #955
- State for ArchiveActivity held in ArchiveStateView by @bolsinga in #956
- ArchiveActivity may be a let by @bolsinga in #957
- Add extension on ArchivePath to get destination View. by @bolsinga in #958
- narrow tvOS checks by @bolsinga in #959
- use canImport(UIKit) where appropriate by @bolsinga in #961
- Add swift setting DEFAULT_CATEGORY_OPTIONAL by @bolsinga in #960
- abstract away searchable content description by @bolsinga in #962
- ArchiveSharableToolbarContent now generic for ArchiveSharable by @bolsinga in #963
- rename and widen the return value by @bolsinga in #964
- remove helper properties for Vault. by @bolsinga in #965
- Add ArchiveCategory to Summary view function by @bolsinga in #966
- Eliminate CategoryDetailModifier. by @bolsinga in #967
- Use .toolbar directly for NearbyDistanceThresholdToolbarContent by @bolsinga in #968
- Use .toolbar directly for ArchiveSharableToolbarContent by @bolsinga in #969
- add LocationFilterToolbarContent to summary toolbar by @bolsinga in #970
- SortModifierToolbarContent is now in .toolbar in ArchiveCategoryDetail by @bolsinga in #971
- Add preview for DefaultCategory is nil by @bolsinga in #972
- extract ArchiveCategoryStack to enable more shared code parts by @bolsinga in #973
- Use .navigationDestination directly. by @bolsinga in #974
- Add ArchiveCategoryRoot, which is the root of the NavigationStack. by @bolsinga in #975
Full Changelog: 1.0.7...1.0.8