Releases: ra1028/swiftui-atom-properties
Releases · ra1028/swiftui-atom-properties
0.7.3
0.7.2
0.7.1
0.7.0
What's Changed
- Gardening by @ra1028 in #140
- Add benchmark testing by @ra1028 in #143
- Swift 5.10 by @ra1028 in #146
- Swift 6.0 by @ra1028 in #147
- Add a comment about inheritance of actor isolation by @ra1028 in #148
- Add compiler(>=6) to compilation conditions along with upcoming features by @ra1028 in #150
- Use State over StateObject where possible by @ra1028 in #151
- Make atom keys Sendable by @ra1028 in #152
- Enable upcoming feature ExistentialAny by @ra1028 in #154
- AsyncPhaseAtom by @ra1028 in #155
Full Changelog: 0.6.1...0.7.0
0.6.1
0.6.0
What's Changed
- Update readme links by @ra1028 in #93
- Update Documentation by @rasberik in #94
- Fix Atoms link in README by @enumcase in #96
- Fix Xcode15.3 (Swift5.10) warning/Swift 6 error: Main actor-isolated class 'XXXTests' has different actor isolation from nonisolated superclass 'XCTestCase'; this is an error in Swift 6 by @kntkymt in #97
- Feature: Custom Resettable Attribute by @rasberik in #98
- Update README tag closure by @rasberik in #99
- Bugfix: testWaitFor flakiness by @rasberik in #100
- Rename select modifier to changes(of:) by @ra1028 in #102
- Update the Resettable behavior when overridden by @ra1028 in #101
- Refactoring by @ra1028 in #103
- AtomScope no longer inherits overrides by @ra1028 in #104
- Remove @discardableResult of AtomViewContext.snapshot() by @ra1028 in #105
- Make Snapshot's text representation slightly better by @ra1028 in #106
- AtomStore can now be hosted only in AtomRoot by @ra1028 in #108
- Scoped Atoms by @ra1028 in #107
- Scoped Observe by @ra1028 in #109
- Add tests for ScopeID by @ra1028 in #110
- Fix Scoped code examples by @shingt in #111
- Scoped Override by @ra1028 in #112
- Internal refactoring by @ra1028 in #113
- Refactor AtomScope by @ra1028 in #114
- Fix docc by @ra1028 in #115
- Do not override custom Resettable & Refreshable behavior by @ra1028 in #116
- Add support for Xcode 15.2.0+ and drop support for lower by @ra1028 in #118
- Animation Modifier by @ra1028 in #117
- Internal refactoring by @ra1028 in #119
- Refactor AtomTestContext by @ra1028 in #120
- Deprecate ResetContext & RefreshContext by @ra1028 in #121
- Update documentation of refresh(_:) by @ra1028 in #123
- Deployment target setting wasn't applied in the example project by @ra1028 in #124
- Dev tools restructure by @ra1028 in #125
- Topological order update by @ra1028 in #122
- Internal refactoring by @ra1028 in #127
- Deprecate context.state(:) and rename it to context.binding(:) by @ra1028 in #128
- Tidy up directory structure by @ra1028 in #129
- Refactor atom declaration types by @ra1028 in #130
- Atom Effects by @ra1028 in #131
- Detach atom dependencies while executing custom refresh by @ra1028 in #132
- Support for strict concurrency by @ra1028 in #133
- Isolate override closures on main actor by @ra1028 in #134
- Isolate override closures of AtomTestContext on main actor by @ra1028 in #135
- Mark ModifiedAtom Scoped if the base atom is Scoped by @ra1028 in #137
- Obsolete Coordinator by @ra1028 in #136
New Contributors
- @rasberik made their first contribution in #94
- @enumcase made their first contribution in #96
- @kntkymt made their first contribution in #97
- @shingt made their first contribution in #111
Full Changelog: 0.5.0...0.6.0
0.5.0
New features
- Modified atoms such as
TaskAtom
s modified with.phase
modifier now supports to refresh.
struct FetchMoviesTaskAtom: ThrowingTaskAtom, Hashable {
func value(context: Context) async throws -> [Movies] {
try await fetchMovies()
}
}
sturct MoviesView: View {
@ViewContext
var context
var body: some View {
...
.refreshable {
await context.refresh(FetchMoviesTaskAtom().phase)
}
}
}
- Added
Refreshable
attribute that allows you to implement a custom refresh ability to an atom.
struct RandomIntAtom: ValueAtom, Refreshable, Hashable {
func value(context: Context) -> Int {
0
}
func refresh(context: RefreshContext) async -> Int {
try? await Task.sleep(nanoseconds: 3 * 1_000_000_000)
return .random(in: 0..<100)
}
}
sturct RandomIntView: View {
@ViewContext
var context
var body: some View {
...
.refreshable {
await context.refresh(RandomIntAtom())
}
}
}
What's Changed
- Minor refactoring by @ra1028 in #88
- Add ability to refresh modified atoms by @ra1028 in #91
- Custom Refreshable Attribute by @ra1028 in #92
Full Changelog: 0.4.2...0.5.0
0.4.2
0.4.1
0.4.0
What's Changed
- Update development tools to be latest versions by @ra1028 in #39
- Drop support for Swift5.6 and corresponding Xcode version by @ra1028 in #40
- Cache spm binaries on CI by @ra1028 in #41
- Add asynchronous init in AsyncPhase by @ra1028 in #35
- Remove unnecessary @mainactor s by @ra1028 in #38
- Parallelize unit tests on CI by @ra1028 in #42
- Minor Refactoring by @ra1028 in #43
- Allow more interactions in updated side effect by @ra1028 in #44
- Rename AtomRelay to AtomScope by @ra1028 in #45
- Make store object public and support maintaining it manually by @ra1028 in #46
- Add API time leeway in example app by @ra1028 in #48
- Handle KeepAlive as a marker protocol by @ra1028 in #50
- Fix snapshots to be taken when the atom is marked as KeepAlive by @ra1028 in #49
- Fix bug that KeepAlive is not effective by @ra1028 in #51
- Minor improvements to the example app. by @ra1028 in #52
- Update docc by @ra1028 in #53
- Scoped override by @ra1028 in #47
- Add Override section to README by @ra1028 in #54
- Minor refactoring by @ra1028 in #55
- Refactor voice memo example by @ra1028 in #56
- Add better descriptions for AtomScope's observe and override methods by @ra1028 in #57
- Add coordinator instance to UpdatedContext by @ra1028 in #58
- Do not dig into parents in any case if atom is overridden by @ra1028 in #59
- Modify accessor by @ra1028 in #60
- Internal refactoring by @ra1028 in #61
- Add changes modifier by @ra1028 in #62
- Internal minor refactoring by @ra1028 in #63
- Rename AtomTextContext/waitUntilNextUpdate to waitForUpdate by @ra1028 in #64
- Flatten scoped stores by @ra1028 in #65
- Move restore function to ViewContext by @ra1028 in #66
- Internal refactoring by @ra1028 in #67
- Change default timeout interval of AtomTestContext/waitForUpdate by @ra1028 in #68
- Remove redundant lookupOverride from reset by @ra1028 in #69
- Use #fileID instead of #file by @ra1028 in #70
- Reduce process redundancy by @ra1028 in #71
- Make the default timeout interval nil by @ra1028 in #72
- Exclusively cancel refresh by @ra1028 in #73
- Update documentation by @ra1028 in #74
Full Changelog: 0.3.0...0.4.0