Bot releases are hidden (Show)
This release updates several dependencies, notably domtypes v18.0.0.
Full Changelog: https://github.com/armanbilge/calico/compare/v0.2.1...v0.2.2
Published by armanbilge over 1 year ago
This release updates to Scala v3.3.0 LTS and includes some bug fixes.
OptionSignalResourceModifier
by @armanbilge in https://github.com/armanbilge/calico/pull/259
toResource
everywhere in docs by @armanbilge in https://github.com/armanbilge/calico/pull/249
Full Changelog: https://github.com/armanbilge/calico/compare/v0.2.0...v0.2.1
Published by armanbilge over 1 year ago
This is the first stable release in the Calico v0.2.x series! This new series continues the same look-and-feel as the 0.1.x series while delivering safer, more idiomatic APIs and performance improvements. For more details on these enhancements and a migration guide see the release notes for v0.2.0-M1.
The following is summary of changes since v0.2.0-RC2.
modify
syntax by @armanbilge in https://github.com/armanbilge/calico/pull/222
Router#teleport
should use replaceState
by @armanbilge in https://github.com/armanbilge/calico/pull/237
Applicative[Signal]
by @armanbilge in https://github.com/armanbilge/calico/pull/229
FetchClient
by @armanbilge in https://github.com/armanbilge/calico/pull/231
Full Changelog: https://github.com/armanbilge/calico/compare/v0.2.0-RC2...v0.2.0
Published by armanbilge over 1 year ago
This is the second release candidate of Calico v0.2.0. Unfortunately, this release has a bit more breakage than I might have liked for an RC 😅
In https://github.com/armanbilge/calico/pull/199, tuples of modifiers became first-class modifiers themselves, which is an overall enhancement and simplification. However, this interacted badly with the existing modifier provided for Foldable
, because Cats provides instances of Foldable
for tuples, with conflicting, counter-intuitive behavior.
So the generic modifier for Foldable
was removed and replaced by instances for List
and Option
. If you were using that modifier with Seq
or Vector
, it will no longer compile, and should be changed to List
. List
is better anyway 😇 if you were using it with some other Foldable
type, please open an issue!
Other notable changes:
Thank you to everyone who has been trying the Calico RCs and sharing feedback! Very appreciated 😁
rel
attribute by @armanbilge in https://github.com/armanbilge/calico/pull/200
getAndDiscreteUpdates
for Monad[Signal]
by @armanbilge in https://github.com/armanbilge/calico/pull/211
Full Changelog: https://github.com/armanbilge/calico/compare/v0.2.0-RC1...v0.2.0-RC2
Published by armanbilge over 1 year ago
This is the first release candidate of Calico v0.2.0. It updates to Cats Effect v3.5.0-RC1 which includes a new runtime for JS. This enabled some usability and performance enhancements that are described in the updated documentation for task scheduling and rendering.
If all goes well, this release candidate will become v0.2.0 final when Cats Effect v3.5.0 final is released.
I am also happy to announce that Calico is now a Typelevel affiliate project! 🎉
SignallingSortedMapRef
by @armanbilge in https://github.com/armanbilge/calico/pull/195
Signal
, IOWebApp
docs, reorganize by @armanbilge in https://github.com/armanbilge/calico/pull/196
Full Changelog: https://github.com/armanbilge/calico/compare/v0.2.0-M4...v0.2.0-RC1
Published by armanbilge over 1 year ago
This is the fourth milestone release of Calico v0.2.0. It updates to FS2 3.6.0 which upstreamed the Signal#changes
method and includes other Signal
-related performance improvements.
Signal
modifiers by @armanbilge in https://github.com/armanbilge/calico/pull/183
Full Changelog: https://github.com/armanbilge/calico/compare/v0.2.0-M3...v0.2.0-M4
Published by armanbilge over 1 year ago
This is the third milestone release of Calico v0.2.0. It upgrades to fs2-dom v0.2.0-M3 which introduces the Window[IO]
wrapper that provides access to many useful browser APIs. This is now exposed as window
in IOWebApp
and is used by Router
.
Html
a class
by @armanbilge in https://github.com/armanbilge/calico/pull/178
Full Changelog: https://github.com/armanbilge/calico/compare/v0.2.0-M2...v0.2.0-M3
Published by armanbilge over 1 year ago
This is the second milestone release of Calico v0.2.0. It brings one important, breaking change: events are now modeled by the new fs2.dom.Event[F]
classes, which replicate the DOM event hierarchy, but properly suspend side-effects in F[_]
.
EventProp
is a Functor
by @armanbilge in https://github.com/armanbilge/calico/pull/168
Modifier
, Prop
, and HtmlAttr
are Contravariant
by @armanbilge in https://github.com/armanbilge/calico/pull/169
fs2.dom.Event[F]
and friends by @armanbilge in https://github.com/armanbilge/calico/pull/172
main
by @armanbilge in https://github.com/armanbilge/calico/pull/165
Full Changelog: https://github.com/armanbilge/calico/compare/v0.2.0-M1...v0.2.0-M2
Published by armanbilge over 1 year ago
I am excited to release the first milestone of Calico v0.2.0! This new series continues the same look-and-feel as the 0.1.x series while delivering safer, more idiomatic APIs and performance improvements.
Preferring Signal
instead of Stream
for rendering dynamic content e.g. via <--
. A Stream
can always become a Signal
by providing an initial value (or None
); see the FS2 Stream#hold
APIs. The presence of that initial value—indeed, the notion there is always a current value—is important for both correctness and performance.
Offering a more idiomatic Cats Effect-style API, with the option for tagless final. We are in the process of wrapping all unsafe JS APIs (e.g. HTMLElement
and friends) with safe, Cats Effect-based versions in the FS2 DOM project. You may use these via the DSL directly with IO
, or in tagless final style with the new Html
typeclass.
Updating to Scala Dom Types v17.0.0. It is no longer a runtime dependency; we are now 100% generating our own customized sources for HTML tags, attributes, and properties! Thanks to @2chilled for leading this effort.
Performance enhancements, by strategically scheduling non-rendering-related work after rendering. This will also build on the new JS runtime developed in https://github.com/typelevel/cats-effect/pull/3225 for the upcoming Cats Effect 3.5.0.
I expect development from this point to be "mostly stable". The remaining breaking changes will be the continued effort to provide safe Cats Effect wrappers for unsafe JS APIs (notably, Event
and friends).
Otherwise, this milestone is fully functional and already a marked improvement over the 0.1.x series. So I strongly encourage its use, and consider the 0.1.x series to be EOL.
To migrate from Calico 0.1.x:
import calico.dsl.io.*
with import calico.html.io.{*, given}
<-- stream
with <-- stream.holdResource(initialValue)
. Or .holdOptionResource
or .hold1Resource
, depending on the semantics you want.HtmlTag#withSelf
, restore debounce example by @armanbilge in https://github.com/armanbilge/calico/pull/155
Resource
variants of attr+prop Signal
-based modifiers by @armanbilge in https://github.com/armanbilge/calico/pull/158
Full Changelog: https://github.com/armanbilge/calico/compare/v0.1.2...v0.2.0-M1
Published by armanbilge almost 2 years ago
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 a MapRef
implementation where each key is mapped to an FS2 SignallingRef
. 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:
SignallingSortedMapRef
. This significantly improved performance and closed https://github.com/armanbilge/calico/issues/45.This will likely be the last 0.1.x release of Calico. I have already started work on Calico v0.2.0 in https://github.com/armanbilge/calico/pull/107.
The overall feel will stay the same. Briefly, the major changes so far are:
Signal
instead of Stream
for rendering dynamic content e.g. via <--
. A Stream
can always become a Signal
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.Async[F]
constraints everywhere.If you have thoughts or feedback I would like to hear from you! :)
SignallingSortedMapRef
by @armanbilge in https://github.com/armanbilge/calico/pull/99
Thank you so much for your contribution! ❤️
Full Changelog: https://github.com/armanbilge/calico/compare/v0.1.1...v0.1.2
Published by armanbilge over 2 years ago
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.
Stream#signal
by @armanbilge in https://github.com/armanbilge/calico/pull/35
Signal
by @armanbilge in https://github.com/armanbilge/calico/pull/41
Monad[Signal]
by @armanbilge in https://github.com/armanbilge/calico/pull/39
Full Changelog: https://github.com/armanbilge/calico/compare/v0.1.0...v0.1.1
Published by armanbilge over 2 years ago
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/