This file is no longer updated, please visit Releases instead.
2021-11-10
- The core
action {}
functions are no longer inline (#574) - Daisy chaining support for testRender (#581)
2021-10-14
- Builds in NamedViewFactory properly. (#544)
- BREAKING: Renames workflow-ui/modal-* to workflow-ui/container-* (#553)
- BREAKING: Moves workflow-ui/backstack-* into workflow-ui/container-* (#553)
- Introduces ViewEnvironment.withBackStackStateKeyPrefix (#553)
- Introduces TextController, deprecates alternatives. (#555)
- Introduces TextController.asMutableState. (#557)
- Eliminates WeakReference landmine in WorkflowLifecycleOwner. (#560)
2021-09-14
Unchanged from 1.0.0-rc2. The core API is frozen.
Ta da.
2021-08-31
- Eliminates @ExperimentalWorkflowApi (#531)
2021-08-27
- BREAKING: Move AndroidX-related code in core-android into a separate package. (#521)
- Deprecate Worker.createSideEffect in favour of RenderContext.runningSideEffect. (#527)
- Delete other remaining deprecated API (#514)
2021-08-23
- Fix the compose artifacts: don't strip metadata! (#517)
- kdoc fixes, mainly around
BaseRenderContext
. (#511)
2021-08-23
This is the first Workflow release to introduce support for Jetpack Compose!
- Introduce
ComposeViewFactory
as a convenient way to defineViewFactories
as composable functions. (#473) - Introduce
withCompositionRoot
to help with introducing composable view factories in mixed codebases. (#474) - Introduce support for
ViewTreeSavedStateRegistryOwner
inBackStackContainer
. (#468) - Introduce
ComposeRendering
, the compose version ofAndroidViewRendering
. (#491) - Introduce
WorkflowRendering
to show child renderings inside acomposeViewFactory
. (#488) - Introduce a preview extension for
ViewFactories
. (#490) - Introduce
renderAsState
, a handy way to run the workflow runtime from composables. (#493, #503) - Upgrade Radiography to 2.4.0 get Compose 1.0.1 support. (#509)
Other changes:
- Make
WorkflowLifecycleOwner
not try to illegally transition from INITIALIZED to DESTROYED. (#487) - Fix some leaks in
WorkflowLifecycleOwner
. (#484, #486, #500)
2021-08-20
- Fixes memory leak in
WorkflowLifecycleOwner
. (#498)
2021-08-06
- BREAKING: Remove useless type parameter from
showFirstRendering()
. (#462) - Update Kotlin to 1.5.21. (#460)
- Update targetSdk version to 30 and a bunch of AndroidX versions. (#459)
- (Re)introduce
ViewTreeLifecycleOwner
support to containers. (#381)
2021-07-29
- Apply snapshots on the first render pass only. (#449)
2021-07-09
- Tweak kotlin module names to avoid META-INF conflicts.
2021-06-25
Various dependency updates, no feature changes or bug fixes.
2021-06-08
- Don't try to restore unrecognized view state. (#431)
- Replace experimental time API in TraceEncoder with custom implementation of TimeMark (#430)
- Add Explicit Worker Tag for RenderTester (#425)
2021-04-16
- Cleans up view initialization in DecorativeViewFactory. (#409)
- bindShowRendering no longer calls showRendering. (#408)
- Tweaks to Compatible API, DecorativeViewFactory kdoc. (#403)
- Drop the final dot in alpha versions. (#386)
- Deletes ViewRegistry(vararg registries: ViewRegistry). (#382)
2021-03-10
- Use moshi codegen for tracing. (#367)
2021-03-09
- Drops support for ViewTreeSavedStateRegistryOwner and ViewTreeLifecycleOwner, which relied on androidx pre-releases. (#354, #366)
- Add a module that provides a ViewStateRenderer for Radiography that describes workflow views. (#357)
2021-03-04
- Introduce support for ViewTreeSavedStateRegistryOwner in Android container views. (#284)
- Makes the names logged by TracingWorkflowInterceptor human readable. (#343)
- Improve support for intercepting RenderContext calls. (#332)
- Prefix Props & Context with "Render" (#322)
- Upgrade to kotlin 1.4.30. (#318)
- Fixes core error message in ViewRegistry.buildView (#286)
- Make ModalContainer look for the parent lifecycle using ViewTreeLifecycleOwner. (#315)
- Stop leaking the viewbinding dependency to consumers. (#320)
- Introduce support for ViewTreeLifecycleOwner in Android container views. (#283)
- Make Sink and LayoutRunner fun interfaces. (#174)
2021-01-04
- Make runningSideEffect's function accept a CoroutineScope receiver. (#267)
- Android wrappers for renderWorkflowIn deprecate setContentWorkflow. (#266)
- Fixes error message when no view binding is found. (#264)
- Upgrade kotlin to 1.4.21 bug fix. (#261)
2020-12-04
- Introduce
AndroidViewRendering
, de-emphasizeViewRegistry
(#248) - Upgrade kotlin to 1.4.20. (#256)
- Upgrade coroutines to 1.4.2. (#258)
- Fix
RenderTester
kdoc references to deprecatedrenderTester()
function. (#240)
2020-11-16
- A couple of
Worker<Nothing>
fixes. (#232) - Add IJ/AS file templates for creating new workflows. (#231)
2020-10-27
- Make snapshots lazy again. (#225)
2020-10-20
- Introduce
RenderContext.eventHandler
. (#212) - Introduce
DecorativeViewFactory
. (#183) - Introduce helpers for working with
EditText
s fromLayoutRunner
s. (#198, #201) - Enforce distinct
id
andinflatedId
values. (#182) - Add guarded
setOutput
toenterState
ReplaceWith
expression. (#191) - Disable jetifier. (#193)
ViewRegistry
,LayoutRunner
tidying. (#200)- Make core
RenderTester.expectWorkflow
method internal. (#203) - Fix memory leak in ModalContainer. (#220)
- Fix ungrammatical error message. (#181)
- Improves exception message for conflicting ids in stubs. (#184)
- Punch up docs on
OverviewDetailScreen.selectDefault
. (#185)
2020-08-31
- Fix expectWorker to match on concrete types of generic workers. (#154)
- Fix RenderTester workflow class matching for mocked workflow instances. (#156)
- Remove unused T param for testFromState. (#158)
- Restore EmittedOutput as a deprecated typealias. (#160)
- Fix workflow expectation crashing when a worker is ran first. (#164)
- Disable build config generation. (#166)
- Allow emitting multiple outputs from root workflow, and consuming multiple outputs from fragments. (#169 – thanks @bnvinay92!)
- Let WorkflowFragment subclasses override root view's layoutParams. (#169 – thanks @bnvinay92!)
- Introduce WorkflowViewStub.updatesVisibility. (#178)
2020-07-28
- Revert "Emit output before next render pass." (#151)
- Make
TreeSnapshot
nullable throughout the runtime API and internally. (#148) SimpleLoggingWorkflowInterceptor
fixes. (#149)- Make workflow-testing coroutine test dependency implementation, not api. (#150)
2020-07-14
- Remove unnecessary data classes from public, non-experimental APIs. (#69)
- Delete
legacy-*
modules. (#76) - Rename package and Maven group to
com.squareup.workflow1
. (#113)
To make the behavior of Worker
s more consistent between Swift and Kotlin and simplify the core
workflow APIs, both languages have eliminated "worker" as a primary concept in the runtime, and
changed to implement workers in terms of workflows and the new, more fundamental concept of
"side effects". A side effect is simply a coroutine that is always identified by a string key and
runs in the context of the workflow that started it. For more information, see the issues
workflow/#1021 and
workflow/#961. The following changes are related:
- Introduce
RenderContext.runningSideEffect
API as a lower-level primitive than workers for launching coroutines from a workflow. (#12) - Introduce
WorkflowIdentifier
andImposterWorkflow
to properly support operator workflows. (#29) - Introduce
unsnapshottableIdentifier()
to allow transientWorkflowIdentifier
s forWorker
s. (#84) - Reimplement
Worker
s using side effects. (#110) - Update
RenderTester
to supportImpostorWorkflow
. (#89)
- New: Deprecate
asWorker()
extension onDeferred
andChannel
. (#19) - New: Remove non-null upper bound for
OutputT
. (#49) - New: Give
WorkflowAction
access to props. (#81) - New: Allow
StatefulWorkflow.snapshotState
to return null. (#67) - New: Rename
EmittedOutput
toWorkflowOutput
, move toworkflow-core
. (#64, #78) - New: Deprecate
WorkflowAction.nextState
, replace with tostate
. (#77, #86) - New: Pull the deprecated
Mutator
and associated method into a sub-interface ofWorkflowAction
. (#128) - New: Use inner types for
RenderContext
to reduce type boilerplate. (#97) - New: Convert
Updater
to an inner class. (#129) - Fix: Rename
@VeryExperimentalWorkflow
opt-in annotation to@ExperimentalWorkflowApi
. (#15, #30) - Fix: Fix
RenderContext
kdoc (it doesn't implementSink
). (#34) - Docs: Add warnings about some common smells and gotchas to kdoc. (#7)
- Docs: Tweak kdoc on
snapshotState
. (#98) - Deprecation: Move implementation of deprecated
RenderContext.onEvent
into extension function. (#65, #127) - Deprecation: Extract public interface methods with default implementations into extension methods.
(#127)
RenderContext.makeActionSink
RenderContext.onEvent
- Deprecation: Deprecate
Snapshot.EMPTY
and eliminates its use. (#107)
- New: Introduce
TreeSnapshot
. (#32) - New: Introduce
WorkflowInterceptor
. (#42)- Re-implement
TracingDiagnosticListener
as aWorkflowInterceptor
,TracingWorkflowInterceptor
. (#45) - Remove
WorkflowDiagnosticListener
. (#48)
- Re-implement
- Fix: Make
RealRenderContext
internal. (#87) - Fix: Change output/rendering order: emit output before next render pass. (#68)
- Remove
launchWorkflowIn
and related code. (#47)
- Migrate
WorkflowTester
torenderWorkflowIn
. (#46) - Improve the
RenderTester
API. (#95)- Cleans up the testing API exposed by
WorkflowIdentifier
and makes the type checking more precise. - Adds descriptions to expectations to allow for more readable error messages.
- Adds
RenderTester
methods to match using arbitrary predicate functions. - Allows
Workflow
and side effect expectations to be non-exact – such expectations are optional, not required to be exclusive, and can match multiple times.
- Cleans up the testing API exposed by
- Extract public interface methods with default implementations into extension methods. (#127)
RenderTester.expectWorkflow(KClass)
RenderTester.expectWorkflow(WorkflowIdentifier)
- Fix: Improve naming of testing entry methods and types. (#73)
- Fix: Fix
WorkerTester.assertNoOutput
when worker finishes without emitting. (#66) - Fix: Make
RenderTester
throw a more realistic exception if the same workflow/side effect is ran twice. (#130)
- New: Introduce
WorkflowUiExperimentalApi
opt-in annotation and mark all UI integration with it. (#91) - New: Introduce
Snapshot
/Parcelable
integration. (#93) - Docs: Update the
BuilderBinding
docs to match the constructor. (#101 – thanks @SalvatoreT!) - Fix: Revert "Extend ViewGroup in stock Kotlin Container classes". (#106)
WorkflowViewStub
improvements and fixes:- New: Override
setBackground()
like we dosetVisibility()
inWorkflowViewStub
. (#108 – thanks @afollestad!) - Fix: Give
WorkflowViewStub
parity with AndroidViewStub
and then some. (#28)
- New: Override
- Fix: Fix
WorkflowFragment
under Jetpack navigation. (#39)
2020-06-11
First release from new, Kotlin-only repository.
- Change RenderTester functionality such that unexpected workers no-op rather than fail. Still fail when multiple workers match. (#1084)
- Rename all occurences of Master/Detail to Overview/Detail. (#1196)
- Simplify the entry point into the workflow runtime. (#1180)
- Extend ViewGroup in stock Kotlin Container classes. (#1193)
- Upgrade coroutines library to 1.3.7. (#1170)
- Upgrade to Kotlin 1.3.72. (#1178)
2020-05-20
- Swift-only release; no changes.
- Fix: Added missing libswiftos.dylib to the test target (#1175)
2020-05-12
- Breaking: Simplify
ViewRegistry
to act more like a simple map of rendering type toViewFactory
. (#1148) - Extracted Compose support into square/workflow-kotlin-compose. (#1147)
- Artifacts for Compose support will be released separately from now on, which allows us to keep them updated more frequently as the Workflow library stabilizes.
- Remove RxJava2 dependency from Workflow Android UI integration. (#1150)
- Fix: Make
workflow-ui-android-core
declareworkflow-runtime
asapi
instead ofimplementation
dependency. (#1144) - Fix: Move
WorkflowFragment
initialization toonViewStateRestored
. (#1133 – thanks @ychescale9!) - Upgrade coroutines library to 1.3.6. (#1151)
- Add os_signpost logs for
render()
andWorkflow
andWorker
lifecycle. (#1134)
2020-05-11
- Add insecure checksums gradle flag to fix Nexus release. (#1156)
- Kotlin-only release, no changes.
2020-05-04
- Update Compose to dev10. (#1118)
- Remove context.subscribe (#1111)
2020-04-17
- Upgrade kotlinx.serialization now that KAML supports it. (#1018)
- Makes BackStackContainer.update protected, required for customization. (#1088)
- Vend
preferredContentSize
through theDescribedViewController
(#1051) - Add ContainerViewController init with AnyWorkflowConvertable (#1092)
- Provide empty
makeInitialState
andworkflowDidChange
when State is Void (#1094)
2020-03-27
- Swift-only release. No changes.
- Introduce
SignalWorker
to wrapSignal
s (#1048)
2020-03-10
- Introduce a view binding function that works with AndroidX ViewBindings. (#985)
- Rename ViewBinding to ViewFactory. (#1009)
- Rename ContainerHints to ViewEnvironment to match Swift. (#1005)
- Fix type parameter for expectWorker accepting Worker instance. (#969)
- Removes ViewRegistry, Introduce ViewControllerDescription. (#974)
- Introduce ViewEnvironment. (#999)
- Fix type parameter for expectWorker accepting Worker instance. (#969)
- Kotlin-only release, no changes.
- Make the context used to start workers configurable for tests. (#940, #943, #950)
- Kotlin-only release, no changes.
- Swift-only release, no changes.
- Seperate
SwiftUI
support to a different module:WorkflowSwiftUI
. (#929)
2020-01-31
- Make all workers run on the
Unconfined
dispatcher. (#851) - Paramaterize the return type of
Worker.finished()
to make it more convenient to use in tests. (#884) - Improved animation for
BackStackContainer
,PanelContainer
. (#886) - Target JVM 1.8 bytecode for all modules. (#898)
- Don't call
onPropsChanged
unless the old and new props are actually unequal. (#887) - Use KType instead of KClass in TypedWorker. (#908)
- Make verifyAction and verifyActionResult support no processed action. (#909)
- Drastically simplified ModalViewContainer. (#913)
- Pass
acceptOutput
function toWorkflowNode
constructor instead of every tick pass. (#916) - Break UI modules into: (#915)
workflow-ui
core-common
core-android
modal-common
modal-android
backstack-common
backstack-android
- No changes.
2020-01-15
- Allow empty snapshots to be passed into launchWorkflowIn (#881)
- Flag out WorkflowTesting APIs when in Release mode (#872)
2020-01-10
- Adds
ContainerHints
toShowRenderingTag
. (#868) - Add an empty
ViewRegistry
factory function. (#870)
- Kotlin-only release, no changes.
2020-01-07
- Breaking: WorkflowAction.invoke is now action. (#862)
- Fixes StatelessWorkflow.action. (#861)
- Kotlin-only release, no changes.
2019-12-20
- Make WorkflowAction covariant on OutputT again. (#837)
- Undo making RenderContext a sink, give it a sink property instead. (#839)
- Kotlin-only release, no changes.
2019-12-18
- Safer
BackStackScreen
construction. (#809) - Pass
ContainerHints
viasetContentWorkflow
. (#808) ViewRegistry
is now aContainerHint
. (#770)- Remove deprecated
testRender
API. (#743)
- Make
lifecyclOrNull
public. (#747) - Give
Worker.doesSameWorkAs
a default implementation that just compares by concrete type. (#746) - Replace
WorkflowAction.Mutator
API with more ergonomic.Updater
(#812, #813) - Give
RenderTester.render
function argument a default no-op value. (#828) - Add overload to
RenderTester.expectWorker
for simple worker comparisons. (#828) - Make
RenderContext
itself a Sink. (#835) - Convert
ViewRegistry
to an interface. (#832)
- Add variance to StatelessWorkflow type parameters. (#790)
- Make event sinks queued and reusable instead of throw after going stale. (#742)
- Optimize re-rendering child workflows. (#800)
- Add macOS support (#750)
- Add
ContainerView
to enable SwiftUI integration. (#691)
2019-11-18
- Fix RenderTester not allowing output-less expectations to be specified after one with output. (#756)
- Fix RenderTester not checking worker keys. (#755)
- Kotlin-only release, no changes.
2019-11-7
- Restore
testFromState
. (#716) - New render testing API for kotlin. (#687)
- Kotlin-only release, no changes.
2019-10-30
- Publish
internal-testing-utils
artifact that is required by two of the other modules. (#708) - Add missing kdoc for
TraceLogger
(#705)
- Kotlin-only release, no changes.
2019-10-29
- Add
StatefulWorkflow.workflowAction
. (#576) - Remove
runningWorkerUntilFinished
. (#589) - Remove key from
TypedWorker
and helpers that use it. (#606, #619) - Never pass an empty snapshot to
initialState
. (#556) - Change the return type of
Worker.finished
fromT
toNothing
. (#637) - Add an
RxWorker
class so Workers can be implemented without using experimental Flow APIs. (#650) - Make
RxWorker
andFlowable.asWorker
usePublisher
instead ofFlowable
. (#654) - Make it simpler to provide debugging names for workflow actions. (#696)
launchWorkflowIn
block now takes aWorkflowSession
instead of individual parameters. (#612)- Introduce
WorkflowDiagnosticListener
to support various debugging and logging tools. (#628, #634) - Implement chrome trace file generation. (#617)
- Introduce
WorkerSink
for writing integration tests that involve worker outputs. (#588) - Fix a race in
WorkerTester
. (#638) - Make testing infra run double render passes to suss out side effect code in render methods. (#678)
- Make it possible to pass just the snapshot for the root workflow into the test methods. (#681)
- Throw workflow exceptions from
test
/testFromStart
instead of leaking to uncaught exception handler. (#686)
- Eliminate
HandlesBack
, introduceView.backPressedHandler
. (#614) - Introduce
WorkflowViewStub
. (#657) - Adds
getRendering
,getShowRendering
View
extensions. (#666) - Eliminate
WorkflowRunner.onSaveInstanceState
. (#679) - Compile time assurance that
BackStackScreen
is not empty. (#688) - Introduce
ContainerHints
for passing view-only hints aroundLayoutRunner
s. (#693)
- Upgrade Kotlin to 1.3.50. (#560)
- Upgrade coroutines to 1.3.1 stable. (#561, #590)
- Upgrade a bunch of other dependencies, see the commit history for details.
- Eliminate
ExperimentalWorkflowUi
. (#565) - Rename
Worker<T>
toWorker<OutputT>
. (#570) - Fix "java" being printed instead of class name in Rx2 Reactors. (#607)
- Fix a worker crash introduced by
onReceiveOrClosed
. (#630) - Make
onEvent
,makeActionSink
, andmakeEventSink
include what action was lost to when they receive more than one event. (#673)
- Update ReactiveSwift to 6.0.0. (#574 – thanks @lechristian!)
- This also moves everything over to the standard library’s
Result
withNever
(rather thanNoError
). As of this change, consumers must use Swift 5.
- This also moves everything over to the standard library’s
- Apply child workflow output as an action in
RenderTester
. (#595) - Add
WorkflowUI
toPackage.swift
. (#690)
2019-8-21
- Rename
onWorkerOutput
torunningWorker
(and friends). (#546) - Add Kotlin
Sink
,makeActionSink
,makeEventSink
. (#537) - Rename
LifecycleWorker.onCancelled
toonStopped
. (#550) - Create a
Worker.transform
operator. (#533) - Remove all non-test dependencies on Kotlin Reflect. (#551)
- Rename
InputT
->PropsT
(#549) - Update a bunch of dependency versions.
- Plumb file and line to convenience render tester method (#516)
2019-7-29
- Update to build with Swift 5.
- Allow sinks to be reused across render passes if a sink of the same action type is declared. (#443)
- Support updating the root workflow input on a
WorkflowHost
. (#351) - Add support for
RenderTester
to expect child workflows and outputs. (#442)
WorkflowRunner
now delivers single result instead of output stream (#468)- Use single object for
noAction
instead of creating it on every call (#473) - Upgrade AGP to 3.5.0-rc01. (#484)
- Use Java 8 (#492)
2019-7-16
- Added builder functions for creating stateful workflows. (#441)
- Introduce Kotlin Flows:
- Convert the Worker API to use Flow instead of using its own Emitter type. (#435)
- Convert InputT streams from channels to Flows. (#433)
- Add Completable.asWorker() operator. (#423)
- Rename WorkflowAction.noop() to noAction(). (#420)
- Change RenderContext.onEvent return type to be a raw function type. (#387)
- Moves Named.key up to Compatible.compatibilityKey. (#429)
- Replace WorkflowHost with the launchWorkflowIn function. (#447)
- Delete flatMapWorkflow. (#377)
- Allow specifying a different CoroutineDispatcher in the WorkflowRunner. (#379)
- Bump Kotlin to latest version (1.3.41), along with Dokka and detekt. (#451)
- Migrate to AndroidX. (#59, #469 - thanks @charbgr!)
- Bump AGP to latest beta version (3.5.0-beta05). (#427)
- Update coroutines dependency to 1.3.0-M2. (#409)
- Don't throw from runningWorker when the worker finishes. (#456)
- Less hacky lifecycle search in ModalContainer. (#448)
- Fix Worker backpressure (too much buffering). (#446)
- Set up a teardown hook for dialogs. (#432)
- Artifact name changes (#419)
- Add -jvm suffixes to all modules that could be MPP one day.
- Add the -core suffix to the artifact for workflow-ui-core.
- Remove (incorrect) manual implementation of ensureActive. (#378)
- Fix WorkflowPool to work with ConflatedBroadcastChannel. (#475)
- Rename AnyWorkflowAction.identity to
noAction
(#444)
2019-6-12
- Breaking change:
BackStackScreen
includes the entire backstack. (#403) - Fixes BackStackContainer config change. (#406)
- Fix snapshots of a non-flat tree being taken too late. (#408)
- Kotlin-only release, no changes.
2019-6-6
- Breaking change:
LayoutRunner
replacesCoordinator
, no moreScene
support inViewBinding
. (#383) - Allows WorkflowLayout to work from any stream of renderings. (#395)
- Kotlin-only release, no changes.
2019-5-30
- Allow specifying a different CoroutineDispatcher in the WorkflowRunner. (#379)
- Kotlin-only release, no changes.
2019-5-29
- Add a Worker.createSideEffect helper for Nothing-type workers. (#366)
- Add a Worker.timer function to create simple delay workers. (#368)
- testRender can now test arbitrary event handlers and automatically calculate initial state. (#372)
- Allow specifying the CoroutineDispatcher used by WorkflowRunnerViewModel. (#375)
Actions
update theRendering
synchronously. (#362, #348)
2019-5-24
- Make RenderTester not require specific Mock* workflows/workers. (#369)
- Breaking change: Public WorkflowLayout, tidier WorkflowRunner, bye WorkflowActivityRunner. (#367)
- Kotlin-only release, no changes.
2019-5-22
- Breaking change: remove the
CoroutineScope
parameter toinitialState
, removeonTeardown
. (#289) - Breaking change: made
LifecycleWorker
methods non-suspending. (#328) - Removed must nullability restrictions from parameter types. (#334, #352)
- Marked
workflow-ui-core
andworkflow-ui-android
APIs as experimental. (#345) - Breaking change: removed deprecated
Screen
classes. (#347) - Add experimental support for input from Flow streams. (#280)
- Introduce alternative testing infrastructure to test single render passes. (#349)
- Add
Emitter.emitAll
extension to consume RxJava streams from within custom workers. (#354) - Breaking change: simpler / richer
WorkflowActivityRunner
API.PickledWorkflow
no longer public. (#355, #358) - Breaking change: make the
RenderContext
parameter toWorkflow.stateless
the receiver instead. (#357) - Introduces
WorkflowFragment
. (#344, #358)
- Add Action and Render testing helpers. (#330)
2019-4-26
- Introduce Workers as the new and only way to subscribe to external stream and future types. (#289, #321, #322, #323, #324)
- Rename WorkflowContext to RenderContext. (#309)
- Fix for stale workflow output handlers being invoked in later render passes. (#314)
WorkflowTester
improvements:- Give WorkflowTester a sendInput method to update the root workflow-under-test's input. (#315)
- Remove WorkflowTester.with* methods. (#318)
- Make WorkflowTester the receiver of the lambdas to Workflow.test* methods. (#318)
- Rename
compose
torender
and update docs. (#301)
2019-4-18
- Fix for WorkflowHost.Factory not using baseContext. (#306)
- Kotlin-only release, no code changes.
2019-4-16
- Rename WorkflowContext.compose to composeChild. #274
- Rename compose and composeChild to render and renderChild. #293
- Throw if WorkflowContext is accessed after compose returns. #273
- Pass the workflow's scope into initialState. #286
- Add the ability to update the input for a WorkflowHost. #282
- Kotlin-only release, no code changes.
2019-4-12
- Don't allow
AnyScreen
to wrap itself. (#264)
2019-4-10
- Improve type safety by removing AnyScreenViewController as a base type. (#200)
- Replaces AnyScreenViewController with a type erased AnyScreen. This requires the compose method to output either a single typed screen, or explicitly
AnyScreen
if it may return multiple different screen types.
- Replaces AnyScreenViewController with a type erased AnyScreen. This requires the compose method to output either a single typed screen, or explicitly
- Use kotlinx-coroutines-android and Dispatchers.Main instead of Rx's Android scheduler. (#252)
- Upgrade okio to 2.2.2.
- Only allocate one StatefulWorkflow per StatelessWorkflow instance.
2019-4-2
- Update Kotlin and coroutines to latest versions. (#254)
- Fixed some broken kdoc links and some warnings. (#232)
- Add teardown hook on
WorkflowContext
. (#233) - Rename modules:
- Fix broken Parcellable implementation in ModalContainer. (#245)
- Introduce WorkflowActivityRunner. (#248)
- Kotlin-only release, no changes.
2019-3-28
- Factor out a common parent interface for StatelessWorkflow and Workflow (now StatefulWorkflow). (#213)
- Replace restoreState with a Snapshot param to initialState. (#220)
- Moves StatelessWorkflow, Workflows.kt methods to Workflow. (#226)
- Kotlin-only release, no changes.
2019-3-25
- Workaround #211 by implementing
KType
ourselves.
- Kotlin-only release, no changes.
2019-3-22
- Switch to using expectation from spinning the runloop.
- Update ReactiveSwift to 5.0.0.
- Added Xcode 10.2 support.
- Add convenience extensions for makeSink and awaitResult.
- Add xcode templates.
- Reverts Kotlin back to v1.2.61.
- Make a StatelessWorkflow typealias and a hideState() extension function.
- Fix the exception thrown by
WorkflowTester
when an exception is thrown inside test block. - Use explicit
KType
+String
parameters instead of Any for idempotence key for subscriptions. - Make a
EventHandler
type to return frommakeSink
, and renamemakeSink
toonEvent
.
2019-3-15
- Bumps Kotlin to v1.2.71.
- Kotlin-only release, no changes.
2019-3-12
- Breaking change,
ViewBuilder
is nowViewBinder
. AddsbuildScene()
method. (#57) BackStackEffect
allows configuration of transition effects betweenBackStackScreen
s.ModalContainer
adds support forAlertDialog
and custom views inDialog
windows.- Sample app consolidated to two modules,
samples/tictactoe/android
andsamples/tictactoe/common
. VariousShell*
classes in sample renamed toMain*
. - Breaking change,
EventHandlingScreen
interface eliminated. It wasn't useful. - Breaking change,
workflow-core
,workflow-rx2
, andworkflow-test
modules moved to legacy folder, givenlegacy-
prefix (module and maven artifact), and code moved tolegacy
package. None of these modules should be used in new code, they will be deleted soon. - Workflows have been completely rewritten and are now almost identical to Swift workflows.
- Initial release.
2019-1-4
- Breaking change, further API refinement of
WorkflowPool
and friends. ExtractsWorkflowUpdate
andWorkflowPool.Handle
from the defunctWorkflowHandle
. (#114)
2019-1-2
- Breaking improvements to
WorkflowPool
API --Delegating
interface replaced byWorkflowHandle
sealed class. (#98) - Deprecates
EventSelectBuilder.onSuccess
, replaced byonWorkflowUpdate
andonWorkerResult
. (#89) - Sample code includes unit test of a composite workflow,
ShellReactorTest
, demonstrating how to keep composites decoupled from their components. (#102) - Adds
eventChannelOf
helper for testing. (#85, #95)
2018-12-11
- Improvements to
switchMapState
:- Fix:
switchMapState
now is actually a switch map, was previously behaving like a concat map. (#69, #71) - Introduced variation that takes a lambda that returns an RxJava2
Observable
, forworkflow-rx2
consumers. (#53)
- Fix:
- Factored the channel and coroutine management out of
ReactorWorkflow
into a more pureworkflow
builder function. (d0aef29) - Fix: Race condition in
WorkflowPool
. (#45) makeId
functions renamed tomakeWorkflowId
.ViewStackScreen
renamed toStackScreen
.- Sample of using
AlertDialog
withViewBuilder
. - Improved kdoc and comments on use of
Unconfined
dispatcher. (#74, #81) - Workflow coroutines are now given names by default.
- Remove some unused code. (#44, #77)
2018-12-04
- New:
ViewBuilder
– Android UI integration. - New:
Worker
– Helper to run async tasks viaWorkflowPool
. - Eliminated most of the boilerplate required by
WorkflowPool.Type
. It's now a concrete class. - Renamed
ComposedReactor
toReactor
, eliminating the old, deprecatedReactor
interface.
2018-11-28
ReactorWorkflow
,WorkflowPool
, and related types have been ported to coroutines and moved to the workflow-core module.
2018-11-22
- Organize everything into
com.squareup.workflow*
packages.