Releases: redbadger/crux
v0.6.1
What's Changed
- Improving DX for iOS setup by @StuartHarris in #107
- Android - delete old generated files by @StuartHarris in #110
- Effect testing ergonomic improvements by @StuartHarris in #111
Full Changelog: v0.6.0...v0.6.1
v0.6.0
This release of Crux uses Bincode instead of Bcs for serialization. See #106 for rationale.
What's Changed
- use bincode instead of bcs by @StuartHarris in #106
Full Changelog: v0.5.0...v0.6.0
v0.5.0
Introduces register_app()
that generates all the foreign types (in Swift, Kotlin, TypeScript) used by your app. Enables the following pattern in shared_types/build.rs
:
let mut gen = TypeGen::new();
gen.register_app::<App>().expect("register");
This comes at the cost of deriving crux_macros::Export
for your capabilities, like below (or implementing the Export
trait manually):
#[cfg_attr(feature = "typegen", derive(crux_macros::Export))]
#[derive(Effect)]
pub struct Capabilities {
pub http: Http<Event>,
pub render: Render<Event>,
pub sse: ServerSentEvents<Event>,
}
(see https://redbadger.github.io/crux/getting_started/core.html#create-the-shared-types-crate for more details)
What's Changed
- Make event argument of Capability trait Send by @charypar in #101
- Add a typegen interface for registering a type with samples by @wasnotrice in #104
- Add autodiscovery for type generation by @charypar in #105
- enable windows users to build the android project by @DominicD in #103
New Contributors
Full Changelog: v0.4.0...v0.5.0
v0.4.0
Note: Version 0.4.0 of crux_core
includes breaking changes that affect shells that are written in Rust (foreign language shells are unaffected).
Rust shells can now call the core directly (i.e. without serialization), but effects now carry requests instead of just operations. Requests can be passed directly back to the core for resolution. See the web-yew
Counter example to see how this now works (https://github.com/redbadger/crux/blob/master/examples/counter/web-yew/src/main.rs).
Also the AppTester
API has changed. The TestEffect
is no longer needed and has been removed. The effects can be resolved in the same way as a Rust shell would do it (e.g. https://github.com/redbadger/crux/blob/master/examples/counter/shared/src/app.rs#L165)
New Contributors
Many thanks for contributions of core changes and new examples by
Full Changelog: v0.3.0...v0.4.0
crux_core v0.3.0
This release set ([email protected]
, [email protected]
, [email protected]
, [email protected]
, [email protected]
, [email protected]
) introduces the following key features:
- a massively improved HTTP capability, that mimics the API of the
surf
HTTP client - the ability to support capabilities that stream responses (see the ServerSentEvents capability as an example).
- introduces an
Effect
derive macro to generate code to support theCapabilities
struct - massively updated documentation and book
- adds SSE support to the Counter example
- adds a new Notes example to demonstrate more complex uses (real-time, collaborative text editing using CRDTs). Although this works, it is under development
Breaking Change
- The API has changed in this release. The three "bridge" functions are now called
process_event
,handle_response
andview
. - Some previously public functions (related to the futures executor) that are not expected to be used outside of
crux_core
are now private.
What's Changed
- Make
channels
&executor
private. by @obmarg in #31 - Add some basic github actions by @obmarg in #32
- Counter example by @StuartHarris in #28
- Macro to generate effect enum and
WithContext
impl by @StuartHarris in #33 - Small corrections and clarifications to README by @ChrisWhealy in #34
- Fix path support in crux_derive::Effect. by @obmarg in #36
- Flesh out
crux_http
significantly. by @obmarg in #30 - A documentation guide by @charypar in #16
- Create a "hello world" shared lib example by @StuartHarris in #37
- Finish the hello world chapter of the guide by @charypar in #39
- Architecture page of the docs by @charypar in #40
- Getting started docs for iOS by @StuartHarris in #38
- Capabilities section of the guide by @charypar in #41
- Allow capabilities to stream data from the shell. by @obmarg in #43
- Getting started (Android) docs by @StuartHarris in #42
- Publish book in the root of github pages by @charypar in #45
- Update the book to link to both published and master API docs by @charypar in #46
- Re-order Event variants to prevent serialization errors by @StuartHarris in #47
- Add integration test exercising the capability async runtime by @charypar in #44
- Add SSE capability to Counter example by @StuartHarris in #48
- Core fn renames by @StuartHarris in #49
- Improve termination detection in the counter CLI by @charypar in #51
- Uniffi v0.23 by @StuartHarris in #53
- Update iOS and Android counter example for SSE by @StuartHarris in #50
- Add an explicit flag showing whether the value of the counter has been confirmed. by @charypar in #52
- View does not need a mutable model reference in the AppTester by @charypar in #55
- fix effect macro bug by @StuartHarris in #57
- Scaffold a new example – a collaborative note taking app by @charypar in #54
- Basic text editing in the core, supporting plain text by @charypar in #56
- Getting started docs for web by @StuartHarris in #59
- Adds callout blocks to docs by @StuartHarris in #60
- Add FFI and typegen and a scaffold of an iOS shell for the Notes example by @charypar in #58
- Add a basic UI synchronising an iOS text view with the core by @charypar in #61
- Swap underlying store for Automerge to support sync by @charypar in #62
- Add test helpers to make sync tests more straightforward by @charypar in #63
- Additional tests for synchronisation, updating cursor due to remote edits by @charypar in #64
- Scaffold a NextJS based web version of the Notes example by @charypar in #65
- Add styling with windi and daisyUI by @charypar in #66
- Observable textarea in preparation for integrating with the core by @charypar in #67
- Include the app core in the editing loop by @charypar in #68
- Handle unicode characters properly in the core and in the Web UI by @charypar in #70
Full Changelog: crux_core-v0.2.0...crux_core-v0.3.0
crux_core v0.2.0
- BYO capabilities (there is one built-in Render capability, and separate crates for http, kv, time and platform — all of which are a work in progress)
- Capabilities can now be written more naturally, using
async
and.await
to send effects to the shell. This means a capability can have an out-of-band conversation with the shell that does not involve the app. Enables more powerful capabilities that support e.g. streaming, subscriptions etc. - Introduced AppTester to make testing as easy as it was before
What's Changed
- cat_facts example by @StuartHarris in #20
- Refactor around the nextjs shell state management by @ruiramos in #21
- Add basic cors policy to nextjs example repo by @niall-rb in #22
- Fix Android code generation for any package name by @matt-thomson in #23
- Add
x86_64-apple-ios
to targets list by @obmarg in #25 - Capability crates (WIP) by @charypar in #24
- Async capabilities by @obmarg in #26
- Add AppTester to crux_core. by @obmarg in #27
- Rustdoc for version 0.2 by @charypar in #29
New Contributors
- @ruiramos made their first contribution in #21
- @niall-rb made their first contribution in #22
- @matt-thomson made their first contribution in #23
Full Changelog: v0.1.1...crux_core-v0.2.0
v0.1.1
v0.1.0
Initial release