Releases: jessesquires/Foil
6.0.0: Leftover Tamales 🫔
This release closes the 6.0.0 milestone.
- Upgraded to Xcode 16. (#106, @jessesquires)
- Upgraded to Swift 6. (#106, @jessesquires)
- Dropped support for CocoaPods. (#110, @jessesquires)
Full Changelog: 5.1.2...6.0.0
5.1.2: Leftover Popcorn 🍿
- Fixed possible crash when receiving a KVO notification and so attempting to send a value to
FoilDefaultStorage
orFoilDefaultStorageOptional
's publisher after the storage is deallocated. (#112, @nolanw)
Full Changelog: 5.1.1...5.1.2
5.1.1: Leftover Breadcrumbs 🍞
- Fix build issues for Swift Package Index
Full Changelog: 5.1.0...5.1.1
5.1.0: Leftover Watermelon 🍉
- Enable Swift Strict Concurrency checking
- Add visionOS support in Package.swift
- Swift 5.10
Full Changelog: 5.0.1...5.1.0
5.0.1: Leftover Peanuts 🥜
This release closes the 5.0.1 milestone.
- Addressed some potential edge cases and issues with optional types and failable initializers. (#95, @jessesquires)
- The default implementation of
UserDefaultsSerializable
for Swift built-in types (Int
,Double
,String
, etc.) now provides a non-failable initializer because these initializers cannot fail. This still satisfies the protocol requirements. - Added an
assertionFailure
to theUserDefaultsSerializable
implementation forRawRepresentable
to catch potential bugs when storing and fetching data after making changes to aRawRepresentable
type. - Documentation has been updated with thorough explanations of edge cases and considerations for
RawRepresentable
types. Please see theREADME
for further details.
- The default implementation of
Full Changelog: 5.0.0...5.0.1
5.0.0: Leftover Taco 🌮
This release closes the 5.0.0 milestone.
Breaking
-
The
UserDefaultsSerializable
protocol has changed. Previously, it declared the initializerinit(storedValue:)
. It is now failable:init?(storedValue:)
. This change was necessary to accommodateCodable
types (see below). (#92, @jessesquires) -
Both property wrappers have been renamed.
@WrappedDefault
is now@FoilDefaultStorage
and@WrappedDefaultOptional
is now@FoilDefaultStorageOptional
. To migrate, you can simply find-and-replace these names. Nothing else has changed. (#73, @jessesquires)
New
-
Support for
Codable
types. (Please don't abuse this. See the docs.) (#72, #92, @jessesquires) -
Added privacy manifest for iOS 17. (@jessesquires)
Changed
- Upgrade to Xcode 15
- Upgrade to Swift 5.9
Full Changelog: 4.0.1...5.0.0
4.0.1: Leftover Donut 🍩
This release closes the 4.0.1 milestone.
Fixed
WrappedDefaultOptional
no longer crashes when the type stored inUserDefaults
does not match the type being requested,nil
is now returned instead. (#70, @ejensen)
New Contributors
Full Changelog: 4.0.0...4.0.1
4.0.0: Leftover Croissant 🥐
This release closes the 4.0.0 milestone.
New
- The publisher projected by the property wrapper now sends values when user defaults changes from anywhere. Previously, only when using the property wrapper's setter would the projected publisher send a new value. (#61, @nolanw)
Breaking
- Due to #61 (see above), there are some (potentially) breaking changes with key names. If any of your keys are named like the following examples and you need to observe changes, you will need to migrate your key names.
- Key names starting with an
@
character do not notify observers on updates.- Example:
@my-key-name
- Example:
- Key names containing a
.
character anywhere in the name do not notify observers on updates. (This is a side-effect ofKeyPaths
which include periods.)- Example:
com.myApp.my-key-name
- Example:
- Key names starting with an
Changed
- Upgrade to Xcode 14
- Upgrade to Swift 5.7
New Contributors
- @jordanekay made their first contribution in #55
- @nolanw made their first contribution in #61
Full Changelog: 3.0.0...4.0.0
3.0.0: Leftover Dim Sum 🥟
This release closes the 3.0.0 milestone.
New
- Refined the Combine API for responding to changes. This removes the need for the
.publisher(for:)
KVO API call. See the updated documentation for additional details. (#38, @JonnyBeeGod)
Breaking
- Updated minimum deployment targets for all platforms
- iOS 13.0
- tvOS 13.0
- watchOS 6.0
- macOS 11.0
Full Changelog: 2.0.0...3.0.0
2.0.0: Leftover Curry 🍛
This release closes the 2.0.0 milestone.
Breaking
- Implemented more succinct implicit initialization. See example below. (#36, @jessesquires)
// OLD
@WrappedDefault(keyName: "flag", defaultValue: true)
var flag: Bool
// NEW
@WrappedDefault(key: "flag")
var flag = true
Changed
- Various project infra updates: Xcode 13, Swift 5.5, etc. (#34, @jessesquires)
Full Changelog: 1.2.0...2.0.0