Skip to content

Releases: pointfreeco/swift-composable-architecture

0.6.0

30 Jun 15:00
Compare
Choose a tag to compare
  • Added: SwiftUI alert and action sheet helpers via AlertState and ActionSheetState.
  • Changed: ViewStore no longer uses @Published to coordinate its state with ObservableObject.

0.5.0

22 Jun 15:33
c9c1a9a
Compare
Choose a tag to compare
  • 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 uses Publishers.MergeMany instead of Publishers.Concatenate to avoid a Combine bug that results in a memory leak.
  • Infrastructure: document rxswift-composable-architecture (thanks @dannyhertz), move ViewStore.swift into the root directory (thanks @dannyhertz), reorganize VoiceMemos demo for readability.

0.4.0

15 Jun 17:43
Compare
Choose a tag to compare
  • Added: ComposableCoreLocation types now conform to Codable (thanks @alskipp).
  • Added: Reducer debug methods now take an actionFormat parameter.
  • Changed: depend on CombineSchedulers instead of vendoring AnyScheduler and TestScheduler. The library contains several bug fixes over the code that was included in 0.3.0.
  • Fixed: use subscribe method over receive(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 a while loop, avoiding stack issues (thanks @klop).
  • Optimized: IfLetStore view content types been simplified.
  • Infrastructure: link to ReactiveSwift fork (thanks @mluisbrown).
  • Infrastructure: encapsulate Publishers.Create and AnyPublisher.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

27 May 17:29
1005bbd
Compare
Choose a tag to compare
  • 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, including replaceSubrange and sort (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

20 May 18:32
Compare
Choose a tag to compare
  • Added: ComposableCoreLocation, a micro library for interfacing the Composable Architecture with Core Location.

0.1.5

19 May 21:34
05670ca
Compare
Choose a tag to compare
  • 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 and WithViewStore.debug can now omit the prefix argument name to more closely align with Publisher.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

14 May 19:13
Compare
Choose a tag to compare
  • 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 than callAsFunction 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's id-based subscript no longer removes elements from the array when passed nil. Use remove(id:) instead.
  • Changed: CasePath is no longer vendored. It is instead included as an SPM dependency.
  • Changed: Effect.async has been renamed to Effect.run.
  • Changed: Effect.sync has been renamed to Effect.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

11 May 22:53
0442bfb
Compare
Choose a tag to compare

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 integrates ComposableArchitecture in this fashion.
  • ComposableArchitectureTestSupport has been removed and TestStore has moved into ComposableArchitecture. To upgrade:
    • Change import ComposableArchitectureTestSupport to import ComposableArchitecture in your tests.

Other changes:

  • Added: stateless and actionless transformations to Store to more easily derive stores that should only send actions or only read state.
  • Changed: IfLetStore no longer wraps its content in a Group.
  • Bug fixed: TestStore's assert 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.

0.1.2

07 May 13:39
bcb10ae
Compare
Choose a tag to compare
  • Bug fixed: Xcode previews should no longer always crash during compilation.
  • Infrastructure: simpler Tic-Tac-Toe winning condition logic (thanks @thomasmarsh).

0.1.1

06 May 16:15
4016008
Compare
Choose a tag to compare
  • Added: TestStore now has scope methods that mirrors its Store counterpart for testing view store transformations.
  • Removed: TestStore no longer has an initializer that takes state and action transformations. Use scope instead.
  • Changed: identified array's id-based subscript now takes an explicit id parameter name. This avoids ambiguity when subscripting into an array of Int-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 forEach errors (thanks @ryantstone for bringing up the issue).
  • Improved: documentation (thanks @alohaglenn, @ReadmeCritic 😉, @natemann).