Changelog of @hackage/ema 0.4.0.0

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.