# Revision history for ema ## 0.10.0.0 (2022-11-20) - Split Ema into multiple packages: - `ema-extra`: New API - Expose `StringRoute` from examples to ema-extra - Add `MapRoute` and `PaginatedRoute` ## 0.8.2.0 (2022-08-28) - Bug fixes - Fix live server redirecting static assets to wrong links [\#138](https://github.com/EmaApps/ema/issues/138) ## 0.8.0.0 (2022-08-19) This releases brings a significant rewrite of Ema. If you choose to upgrade your apps from 0.6, see https://ema.srid.ca/start/upgrade for guidance. - GHC 9.x support - Better handling of URL anchors (#83; #87) - `routeUrl` uses `UrlDirect` by default. Use `routeUrlWith` if you want to change that. - Ema status indicator now works independently (requires no Tailwind) - Multisite rewrite (Ema has been mostly rewritten for better composability) ([\#82](https://github.com/EmaApps/ema/pull/81)) - Represent route encoding using `Prism'` from optics-core; add `IsRoute` class to define them. - Optional generic deriving of route prisms, so you do not have to hand-write them. - Automatic isomorphism checks ensures that encoding and decoding are isomorphic (route prisms are lawful) - Composable Ema apps - There are two ways of composing Ema apps. Using heterogenous lists (see `Ema.Route.Lib.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 - Websocket API: Add `ema.switchRoute` to switch to other routes in live server. - Smaller core: remove helpers and examples (examples can be enabled by a flag) - Helpers - `Ema.Helpers.PathTree` moved to separate package *pathtree*. - `Ema.Helpers.FileSystem` moved to separate package *unionmount*. - `Ema.Helpers.Markdown` moved to separate package *commonmark-simple*. - `Ema.Helpers.Blaze` is no more. See `ema-template` if you need a ready made template using blaze HTML and TailwindCSS. - Examples `with-examples` cabal flag is made False by default. Examples are not exposed modules. - `Ema.Route.Slug` moved to separate package *url-slug* ## 0.4.0.0 -- 2022-01-19 - Pin TailwindCSS to 2.x, because the 3.x broke our CDN url - Remove unused Cabal deps (#61) - `Tailwind.layoutWith`: don't hardcode `` attrs - Tailwind: module revamped and renamed to `Tailwind.Helper.Blaze` - `runEma` and friends: - return the monadic's action's return value or generated files (dependent type) - CLI: add `run` subcommand that takes `--host` and `--port` (and remove environment hacks of $HOST and $PORT) ## 0.2.0.0 -- 2021-11-21 - TODO(doc) runEma's action gets the `CLI.Action` as argument, to prevent the `gen` command from needing to monitoring files. - Live Server - Avoid unncessary DOM patch on page load - Handle invalid routes gracefully without breaking websocket - Re-add `