Releases: armanbilge/calico
v0.1.2
This is the third release in the 0.1.x series of Calico. There are two significant new features:
-
A new
calico-router
module, to add navigation to your application (i.e. URL-based, support for history forward/back, etc.). Check out the docs/demo. -
A
SignallingSortedMapRef
, which is aMapRef
implementation where each key is mapped to an FS2SignallingRef
. This enables precise updates and signals on a specific key.
In addition, Calico now has a dependency on fs2-dom, which provides idiomatic wrappers for several standard and useful browser APIs, such as Clipboard
and local/session Storage
.
The TodoMVC example has been updated to demonstrate each of these things:
- Navigating between the all/active/completed views of the todo list is implemented via routing and can be observed in the URL.
- The todo list is now stored in a
SignallingSortedMapRef
. This significantly improved performance and closed #45. - The todo items are now persisted in your brower's local storage. Furthermore, if you have the Todo app open in multiple browser tabs, they will automatically stay in sync!
This will likely be the last 0.1.x release of Calico. I have already started work on Calico v0.2.0 in #107.
The overall feel will stay the same. Briefly, the major changes so far are:
- Requiring
Signal
instead ofStream
for rendering dynamic content e.g. via<--
. AStream
can always become aSignal
by plugging in an initial value, and the presence of that initial value (indeed, the notion there is always a current value) is important for both correctness and performance. - Some API restructuring so that Calico can be used to make effect agnostic components in tagless final style, without requiring
Async[F]
constraints everywhere.
If you have thoughts or feedback I would like to hear from you! :)
What's Changed
- Add docs about scheduling, microtasks, macrotasks by @armanbilge in #42
- Try to clarify Macrotask docs by @armanbilge in #50
- fix children clobber bug by @albertpchen in #90
- Adopt fs2-dom by @armanbilge in #95
- Router by @armanbilge in #68
- Website updates by @armanbilge in #97
- Introduce
SignallingSortedMapRef
by @armanbilge in #99 - Use local storage for persistent todos by @armanbilge in #102
- Optimizations by @armanbilge in #104
New Contributors
- @albertpchen made their first contribution in #90
Thank you so much for your contribution! ❤️
Full Changelog: v0.1.1...v0.1.2
v0.1.1
This is the second release in the 0.1.x series of calico and is binary-compatible with v0.1.0 and published for Scala 3.1+ and Scala.js 1.8+.
This release introduces a new calico-frp module that is cross-compiled for JS and JVM and included by default in calico core. It provides a Monad
instance for Signal
which you can import like so:
import calico.frp.given
For example, the TodoMVC example uses it to compose the SignallingRef
for the selected filter (all/active/completed) with the SignallingRef
for the list of todo items.
User-facing PRs
- Deprecate extension
Stream#signal
by @armanbilge in #35 - Add modifiers for
Signal
by @armanbilge in #41 - Add
Monad[Signal]
by @armanbilge in #39
Full Changelog: v0.1.0...v0.1.1
v0.1.0
I'm pleased to announce the first stable release of Calico 🎉 Of course, there is still much work to do, but I feel confident that we can continue to evolve the API backwards-compatibly from here. Yes, that's a "we"! I'm looking to you for your help: please try it out and contribute bug reports, feature requests, and code :)
The milestone that prompted this release was the implementation of the TodoMVC project with Calico. Please check it out at https://armanbilge.github.io/calico/todomvc/