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.