Revision history for ema
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 <body> 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
<script> tags on hot reload
- Scroll to top on route switches
- Use secure websockets when on HTTPS
- Bind to loopback (127.0.0.1) for security reasons
- Do not handle target=_blank links in websocket route switch
Asset type
- Introduce the
Asset type to distinguishing between static files and generated files. The later can be one of Html or Other, allowing the live server to handle them sensibly.
Ema typeclass:
- Drop
staticAssets in favour of allRoutes (renamed from staticRoutes) returning all routes including both generated and static routes.
- Drop
Slug and use plain FilePath. Route encoder and decoder deal directly with the on-disk path of the generated (or static) files.
- Make the render function (which
runEma takes) return a Asset LByteString instead of LByteString such that it can handle all routes, and handle static files as well as generation of non-HTML content (eg: RSS)
- Allow copying static files anywhere on the filesystem
routeUrl:
- Unicode normalize as well URI encode route URLs
- now returns relative URLs (ie. without the leading
/)
- Use the
<base> tag to specify an explicit prefix for relative URLs in generated HTML. This way hosting on GitHub Pages without CNAME will continue to have functional links.
- Fix: prevent encoding of non-HTML paths
- Now takes the
model type as argument, inasmuch as encodeRoute takes it as as well (to accomodate scenarios where route path can only be computed depending on model state; storing slug aliases for instance)
- Add
routeUrlWith for non-pretty URLs
Ema.Slug
- Add
Ord, Generic, Data and Aeson instances to Slug
- Unicode normalize slugs using NFC
- Add
decodeSlug and encodeSlug
- Add default implementation based on Enum for
allRoutes
- Warn, without failing, on missing static assets during static generation
- Static generation
- Use block buffering to prevent logging from slowing down site generation
- Write .nojekyll
- CLI
- Removed
-C argument (orthogonal to Ema)
- Helpers
- Helpers.FileSystem
- Add Union mount support; re-exported from
unionmount library
- enrich FileAction type to distinguish between existance and new and update states
- Helpers.Tailwind
- add overflow-y-scroll to body
- Add twind shim before application's head
- CDN: Use latest version always.
- Helpers.Markdown
- add helpers to parse markdown;
parseMarkdownWithFrontMatter and parseMarkdown
- Examples
Remove Ex03_Documentation.hs (moved to separate repo, ema-docs) Back to ./docs, but using Emanote.
- Add Ex03_Basic.hs example
0.1.0.0 -- 2021-04-26
- First version. Released on an unsuspecting world.