Skip to content

Releases: redbadger/crux

v0.6.1

10 Jun 21:04
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.6.0...v0.6.1

v0.6.0

18 May 14:57
Compare
Choose a tag to compare

This release of Crux uses Bincode instead of Bcs for serialization. See #106 for rationale.

What's Changed

Full Changelog: v0.5.0...v0.6.0

v0.5.0

18 May 12:38
Compare
Choose a tag to compare

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

17 Apr 11:37
Compare
Choose a tag to compare

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

15 Feb 12:03
Compare
Choose a tag to compare

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 the Capabilities 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 and view.
  • 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

16 Dec 11:13
Compare
Choose a tag to compare
  • 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

New Contributors

Full Changelog: v0.1.1...crux_core-v0.2.0

v0.1.1

18 Nov 18:50
Compare
Choose a tag to compare

Adds API documentation on docs.rs.

v0.1.0

18 Nov 16:51
Compare
Choose a tag to compare

Initial release