1
1
mirror of https://github.com/srid/ema.git synced 2024-11-29 09:25:14 +03:00

Expand changelog

This commit is contained in:
Sridhar Ratnakumar 2022-06-08 12:01:51 -04:00
parent 666bdc8cb5
commit 1e46e85cdf
2 changed files with 25 additions and 6 deletions

View File

@ -1,14 +1,23 @@
# Revision history for ema
## Unreleased
## 0.8.0.0 (Unreleased)
This is a significant release. If you choose to upgrade your apps from 0.6, see https://ema.srid.ca/guide/upgrade
- GHC 9.0 support
- Better handling of URL anchors (#83; #87)
- Multisite rewrite (Ema is rewritten)
- Add `IsRoute` class to define route encoders
- Add the notion of `RouteEncoder` (first-class values), along with a `IsRoute` class to define them.
- Generic deriving of route encoders, so you do not have to hand-write them.
- Route encoding isomorphism checks
- Composable Ema apps (Extend another Ema to build new ones)
- Automatic isomorphism checks ensures that encoding and decoding are isomorphic.
- Composable Ema apps
- There are two ways of composing Ema apps. Using heterogenous lists (see `Ema.Multi`), or by defining a top-level route type (see `Ex04_Multi.hs`).
- Replace `LVar` with `Dynamic`.
- Ema still uses `LVar` internally (for live server updates), but on the user-side one only needs to provide a `Dynamic` which is a tuple of initial value and an updating function. The [unionmount](https://github.com/srid/unionmount/pull/1) library was changed to provide this tuple.
- Add `EmaSite` typeclass to "connect them all"
- `SiteArg`: Type of value to pass from the environment.
- `siteInput`: Define the `Dynamic` model for the site.
- `siteOutput`: Asset (eg: HTML) to produce for each route.
## 0.6.0.0 -- 2022-02-05

View File

@ -1,12 +1,22 @@
# Upgrading to newer Ema
Until 1.0 is released, newer releases of Ema might seen breaking or significant changes. This page exists to help you with upgrading your apps to the latest version.
## 0.6 -> 0.8
`0.8` is a *substantial* change, with Ema almost rewritten entirely. See [PR #81](https://github.com/srid/ema/pull/81) called 'Multisite rewrite'. If you do not wish to upgrade, you should stay with version `0.6`.
`0.8` is a *substantial* change, with Ema almost rewritten entirely. See [PR #81](https://github.com/srid/ema/pull/81) called 'Multisite rewrite'.
TODO: How to upgrade to 0.8?
- `RouteEncoder` (first-class route encoders)
- Pass it around, for use in `Ema.routeUrl`, etc.
- `EmaSite` defines both "input" (model dynamic) and "output" (html rendering)
- `EmaSite` defines both "input" (model dynamic) and "output" (html rendering)
### Apps that already use Ema 0.8
You may want to read the source code of these apps to further understand how to upgrade.
- https://github.com/srid/emanote
- https://github.com/srid/timedot-invoice