Releases: pointfreeco/swift-composable-architecture
Releases · pointfreeco/swift-composable-architecture
0.4.0
- Added: ComposableCoreLocation types now conform to
Codable(thanks @alskipp). - Added: Reducer
debugmethods now take anactionFormatparameter. - Changed: depend on CombineSchedulers instead of vendoring
AnySchedulerandTestScheduler. The library contains several bug fixes over the code that was included in 0.3.0. - Fixed: use
subscribemethod overreceive(subscriber:), per Apple documentation (thanks @asiliuk). - Improved: ComposableCoreLocation delegate ergonomics (thanks @klundberg).
- Optimized: signposts should be a little more performant now.
- Optimized:
store.sendno longer recursively processes effects and instead processes them in awhileloop, avoiding stack issues (thanks @klop). - Optimized:
IfLetStoreview content types been simplified. - Infrastructure: link to ReactiveSwift fork (thanks @mluisbrown).
- Infrastructure: encapsulate
Publishers.CreateandAnyPublisher.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
signpostshigher-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, includingreplaceSubrangeandsort(thanks @peterkovacs). - Bug fixed: chaining multiple
cancellablecalls 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.assertmethod 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
nilout an element) will now crash with a helpful error message in development. - Changed:
WithViewStore.debuglogic is now a no-op in release mode. - Changed:
Reducer.debugandWithViewStore.debugcan now omit theprefixargument 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.runmethod for invoking the reducer in a more ergonomic fashion thancallAsFunctionin 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:
CasePathis no longer vendored. It is instead included as an SPM dependency. - Changed:
Effect.asynchas been renamed toEffect.run. - Changed:
Effect.synchas been renamed toEffect.catching. - Bug fixed:
TestSchedulernow 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
IfLetStoredocumentation (thanks @jasdev).
0.1.3
Breaking changes:
ComposableArchitectureis 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
ComposableArchitecturein 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 integratesComposableArchitecturein this fashion.
ComposableArchitectureTestSupporthas been removed andTestStorehas moved intoComposableArchitecture. To upgrade:- Change
import ComposableArchitectureTestSupporttoimport ComposableArchitecturein your tests.
- Change
Other changes:
- Added:
statelessandactionlesstransformations toStoreto more easily derive stores that should only send actions or only read state. - Changed:
IfLetStoreno longer wraps its content in aGroup. - Bug fixed:
TestStore'sassertno 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.
0.1.2
- Bug fixed: Xcode previews should no longer always crash during compilation.
- Infrastructure: simpler Tic-Tac-Toe winning condition logic (thanks @thomasmarsh).
0.1.1
- Added:
TestStorenow hasscopemethods that mirrors itsStorecounterpart for testing view store transformations. - Removed:
TestStoreno longer has an initializer that takesstateandactiontransformations. Usescopeinstead. - Changed: identified array's id-based subscript now takes an explicit
idparameter name. This avoids ambiguity when subscripting into an array ofInt-identified elements. - Bug fixed: annotating reducers with
debug()no longer breaks them in release builds (thanks @tulushev). - Bug fixed:
nil-ing out an element of an identified array no longer puts it in an invalid state. - Bug fixed: removing more than one element of an identified array via index set should no longer remove any incorrect elements or crash.
- Improved: messaging for out-of-bounds
forEacherrors (thanks @ryantstone for bringing up the issue). - Improved: documentation (thanks @alohaglenn, @ReadmeCritic 😉, @natemann).
0.1.0
A library for building applications in a consistent and understandable way, with composition, testing, and ergonomics in mind.