Releases: pointfreeco/swift-composable-architecture
Releases · pointfreeco/swift-composable-architecture
0.8.0
- Improved: better error messaging around testing uncompleted effects: it will now print the action the effect was kicked off from (thanks @mackoj).
- Bug fix: fixed identified array implementations of
shuffle
,reverse
(thanks @jeffersonsetiawan). - Bug fix: test stores should now perform effects in the same order as a live store.
- Infrastructure: better document TCA acronym.
- Infrastructure: document Apple bug with
WithViewStore
andScrollViewReader
. - Infrastructure: fix recursive higher-order reducer demo to map its effects recursively.
- Infrastructure: Xcode 12 CI.
0.7.0
- Changed:
LocationManager
mock initializers now take the correct, optional signature for thelocation
dependency (thanks @mackoj ). - Changed:
Reducer.optional
is now a method so that its assertions can include file/line context (thanks @alexito4). Theoptional
property has been deprecated in favor of the method. - Changed: previously-deprecated interfaces have been obsoleted.
- Bug fixed:
Store.ifLet
no longer evaluates theelse
branch too often (thanks @mluisbrown). - Bug fixed: more than one alert can now be presented in a row, as can more than one action sheet.
- Infrastructure: documentation fixes (thanks @jasdev, @artnest, @mmatoszko).
- Infrastructure:
Store.ifLet
can take advantage of ascope
overload (thanks @fonkadelic). - Infrastructure: fixed Voice Memos bug around deleting a memo that is playing.
- Infrastructure: new demo for tvOS focus.
- Infrastructure: added key frame effect to animation demo (thanks @boudavid).
- Infrastructure: fixed Tic-Tac-Toe demo bug around error display (thanks @heiberg).
0.6.0
- Added: SwiftUI alert and action sheet helpers via
AlertState
andActionSheetState
. - Changed:
ViewStore
no longer uses@Published
to coordinate its state withObservableObject
.
0.5.0
- Added:
ComposableCoreMotion
, a micro library for integrating the Composable Architecture with Core Motion. - Improved:
Store.send
now prints the action sent in its assertion failure for better debugging (thanks @ollitapa). - Changed:
Reducer.debug
now usesPublishers.MergeMany
instead ofPublishers.Concatenate
to avoid a Combine bug that results in a memory leak. - Infrastructure: document
rxswift-composable-architecture
(thanks @dannyhertz), moveViewStore.swift
into the root directory (thanks @dannyhertz), reorganize VoiceMemos demo for readability.
0.4.0
- Added: ComposableCoreLocation types now conform to
Codable
(thanks @alskipp). - Added: Reducer
debug
methods now take anactionFormat
parameter. - Changed: depend on CombineSchedulers instead of vendoring
AnyScheduler
andTestScheduler
. The library contains several bug fixes over the code that was included in 0.3.0. - Fixed: use
subscribe
method overreceive(subscriber:)
, per Apple documentation (thanks @asiliuk). - Improved: ComposableCoreLocation delegate ergonomics (thanks @klundberg).
- Optimized: signposts should be a little more performant now.
- Optimized:
store.send
no longer recursively processes effects and instead processes them in awhile
loop, avoiding stack issues (thanks @klop). - Optimized:
IfLetStore
view content types been simplified. - Infrastructure: link to ReactiveSwift fork (thanks @mluisbrown).
- Infrastructure: encapsulate
Publishers.Create
andAnyPublisher.init(_:)
(thanks @kaandedeoglu). - Infrastructure: clean up tests around cancellation (thanks @klop).
- Infrastructure: added a new web socket case study.
- Infrastructure: fixed voice memo assertion failure.
0.3.0
- Added: reducers can now be instrumented with signposts using the
signposts
higher-order reducer. - Changed: debugged reducers will now omit printing state when no state changes.
- Bug fixed: several bugs around automatically synthesized mutating methods on
IdentifiedArray
, includingreplaceSubrange
andsort
(thanks @peterkovacs). - Bug fixed: chaining multiple
cancellable
calls onto a single effect with the same identifier no longer crashes. - Infrastructure: better support for iPad in the demo apps.
- Infrastructure: cleaned up location manager app annotation behavior (thanks @kaandedeoglu).
0.2.0
- Added:
ComposableCoreLocation
, a micro library for interfacing the Composable Architecture with Core Location.
0.1.5
- Added: a
TestStore.assert
method that takes an array of steps (thanks @pteasima). - Changed: misusing identified array's id-based subscript (attempting to update an element not in the array, or attempting to
nil
out an element) will now crash with a helpful error message in development. - Changed:
WithViewStore.debug
logic is now a no-op in release mode. - Changed:
Reducer.debug
andWithViewStore.debug
can now omit theprefix
argument name to more closely align withPublisher.print
. - Bug fixed: test schedulers now properly order concurrent work items.
- Bug fixed: debug output will no longer overflow on infinitely recursive references.
- Infrastructure: README fixes (thanks @OfftheCode), documentation fixes (thanks @johankool), new location manager demo, animation case study fixed for dark mode.
0.1.4
- Added:
IdentifiedArray.remove(id:)
method for removing elements by identifier. - Added:
Reducer.combined(with:)
method for combining reducers using dot-chaining (thanks @alexito4). - Added:
Reducer.run
method for invoking the reducer in a more ergonomic fashion thancallAsFunction
in Swift 5.1. - Changed: optimized test support code to dynamically load XCTest just once per test process (rather than once per assertion failure).
- Changed:
IdentifiedArray
'sid
-based subscript no longer removes elements from the array when passednil
. Useremove(id:)
instead. - Changed:
CasePath
is no longer vendored. It is instead included as an SPM dependency. - Changed:
Effect.async
has been renamed toEffect.run
. - Changed:
Effect.sync
has been renamed toEffect.catching
. - Bug fixed:
TestScheduler
now always performs/schedules simultaneous work by earliest-scheduled. - Infrastructure: added binding-based animation demo to case studies.
- Infrastructure: add Swift forum to README.
- Infrastructure: fixed typo in
IfLetStore
documentation (thanks @jasdev).
0.1.3
Breaking changes:
ComposableArchitecture
is no longer a dynamic library. To upgrade:- You will need to reintegrate the library into your application. You can reintegrate by removing and re-adding the library to your application or shared framework target.
- If you include
ComposableArchitecture
in more than one target in your project, you must move it to a single, dynamic framework, instead. Then this framework is what you can share among your app, framework, and test targets. For an example, check out the Tic-Tac-Toe demo application, which has been modularized and integratesComposableArchitecture
in this fashion.
ComposableArchitectureTestSupport
has been removed andTestStore
has moved intoComposableArchitecture
. To upgrade:- Change
import ComposableArchitectureTestSupport
toimport ComposableArchitecture
in your tests.
- Change
Other changes:
- Added:
stateless
andactionless
transformations toStore
to more easily derive stores that should only send actions or only read state. - Changed:
IfLetStore
no longer wraps its content in aGroup
. - Bug fixed:
TestStore
'sassert
no longer crashes when working with empty state structs (thanks @jlainog). - Infrastructure: decluttered CI output using
xcodebuild -quiet
(thanks @tarjamorgado). - Infrastructure: demos now build in Xcode 11.3.1.