Version 1.7.0 September 13, 2026
- Raised minimum iOS/iPadOS support to 15; other Swift package platform minimums are unchanged.
- Updated the Xcode macOS targets to macOS 12 for Xcode 27 compatibility; the Swift package still declares macOS 10.14. Removed an obsolete SwiftLint rule from the configuration.
- Fixed a crash when explicitly passing
nilas the initializer's values argument. - Removed debug logging of preference contents and entry names.
- Added
userDefaultsUnavailableandinvalidStoredValue(key:)errors. Configured suites no longer silently fall back to standard defaults if creation fails. - Prevented initializer merges, subscript updates, and in-place Swift dictionary mutations from overwriting malformed storage after a failed read. Explicit dictionary replacement or clearing can repair it.
- Validate complete writes before changing internal state or storage, and report invalid entry names in sorted order.
- Fixed KVO notifications for rejected writes, which could erase
lastError. Successful writes retain KVO through explicit notifications;valuesremains@objcand uses native Swift dispatch so in-place mutations can preserve read failures. - Made
flush()report reload errors consistently and removed the duplicate deletion indeleteAll(). - Rewrote DocC, Quick Help comments, and the README with examples and precise guidance on merging versus replacing, supported types, error recovery, observation, concurrency, defaults search domains, asynchronous persistence, and security.
- Moved the privacy manifest into the library target, included it in Swift package and framework products, and declared App Group preference access alongside app-local access.
- Migrated the watchOS test harness to a single app target, with
WKApplicationDelegate,WKApplication, and an explicit@mainentry point. Updated storyboard module references, removed duplicate localization resources, and included the preferences privacy manifest. - Removed the iOS and watch harnesses’ unnecessary
RVS_Generic_Swift_Toolboxdependencies; their labels use Foundation localization directly, eliminating the missing-module import errors. - Consolidated the watch harness sources under the app folder and renamed its application delegate. Removed obsolete extension files, duplicate entitlements, unused complication artwork and build settings, and the unused legacy String helper.
- Added regression coverage for initialization, validation, failed reads and writes, removal, registered defaults, and KVO.
- Added the Xcode test target's explicit dependency on and linkage to the preferences framework, and removed its duplicate compilation of the library source so tests exercise the built framework.
- Enabled development signing for the framework using the test host's team, fixing signed macOS test runs that failed to load the test bundle before executing any tests.
Version 1.6.0 January 8, 2026
- Minor documentation improvement. No functionality or API changes.
- API CHANGE: The Module is now correctly named "RVS_PersistentPrefs" (not "RVS_Persistent_Prefs").
Version 1.5.1 December 20, 2025
- Fixed a couple of minor issues that could cause sync problems.
- Removed caching. It wasn't worth it, and could cause sync problems.
- Updated to the latest tools.
Version 1.5.0 March 19, 2025
- Added the
deleteAll()method.
Version 1.4.4 January 22, 2025
- Tweaked the
clear()method, and added a newflush()method.
Version 1.4.3 January 21, 2025
- I now make sure to synchronize the userdefaults, after writing.
Version 1.4.2 January 19, 2025
- I added some code to force creation of new defaults, in some cases.
Version 1.4.1 January 19, 2025
- The new property needs to be static, not instance.
Version 1.4.0 January 19, 2025
- Added the ability to specify group IDs to the preferences.
- Updated to the latest settings.
- Updated the required Xcode to 12
- Re-introduced SwiftLint.
Version 1.3.10 July 25, 2024
- Added a cache, to reduce the number of times the defaults are loaded (It's a memory-intensive operation).
Version 1.3.9 March 15, 2024
- The privacy manifest wasn't quite right. It needed one more item.
Version 1.3.8 March 15, 2024
- Updated the privacy manifest to indicate that user preferences are being accessed.
- Updated to the latest tools.
Version 1.3.7 January 6, 2024
- I didn't completely get rid of SwiftLint. It's all gone, now.
- Added privacy declarations.
Version 1.3.5 September 20, 2023
- Updated some Xcode settings. No API changes.
- Sigh... Looks like SwiftLint and Xcode 15 don't get along. I have to remove it...
Version 1.3.4 October 6, 2022
- Updated a test harness dependency. No API changes.
Version 1.3.3 September 16, 2022
- Updated tools and dependencies. No other API changes.
Version 1.3.2 July 10, 2022
- Updated a dependency. No other API changes.
Version 1.3.1 May 31, 2022
- Updated the testing dependency.
Version 1.3.0 May 31, 2022
- Renamed, so the vestigial "dash" notation has been replaced (vestigial from when it was a dylib).
Version 1.2.8 May 13, 2022
- Upped the version of the
RVS_Generic_Swift_Toolboxtest harness dependency. No changes to the module.
Version 1.2.7 January 28, 2022
- Updated to latest tools. No functional or API changes.
Version 1.2.6 January 28, 2022
- Added DocC Support. No functional or API changes.
Version 1.2.5 December 14, 2021
- Updated to work with the latest toolchains.
Version 1.2.4 September 23, 2021
- Updated to work with the latest toolchains.
Version 1.2.3 July 11, 2021
- Removed the command-line runner, and replaced it with a proper framework target.
- Added code coverage to the tests.
- Tweaked the code slightly to remove an unnecessary precondition.
Version 1.2.2 June 16, 2021
- Latest build system
- Updated to latest toolbox
Version 1.2.1 July 31, 2020
- Switched structure to enable GitHub Swift Action
Version 1.2.0 July 5, 2020
- Switched to static for SPM.
Version 1.1.2 June 25, 2020
- Removed the toolbox dependency, as it is only used in the test harness.
Version 1.1.1 June 24, 2020
- Switched SPM to use specific dependency versions.
Version 1.1.0 June 19, 2020
- Switched over to use SPM.
- Made the main class "open."
- made a couple of properties open, as well.
- Made the
countproperty public. It was not specified as such, and should have been.
Version 1.0.6 June 7, 2020
- Changed a silly typo in a test variable name.
- Made a number of fairly fundamental changes to simplify the structure.
- Swapped out the Pods SwiftLint for an embedded executable.
- Switched the String extension to use the Carthage one.
- Added CODEOWNERS
Version 1.0.5 May 8, 2020
- Very minor change to replace an antiquated self reference.
- The Mac test harness needed to have its window set as the initial controller.
Version 1.0.4 January 12, 2020
- No operational changes. Added some extra documentation, and tweaked the README a bit.
Version 1.0.3 November 4, 2019
- No operational changes. Only the project was updated, and the documentation was updated to include a section on using Carthage.
Version 1.0.2 October 1, 2019
- Added support for deletion of the prefs, if the values Array is empty.
- Fixed an issue, where the values array was not being cleared before a load().
Version 1.0.1 September 1, 2019
- Made the values Dictionary KVO-observable.
- Added the missing launchimage for the tvOS test harness.
- Added this file.
Version 1.0.0 August 24, 2019
- Initial Release.