serum v1.3.0 Release Notes

Release Date: 2019-11-28 // 16 days ago
  • 🛠 Fixed

    • 🛠 Fixes an issue which ignored custom template settings for blog posts.

    👌 Improved

    • Serum now displays relative paths from the current working directory, instead of absolute paths, whenever possible.

    • 👌 Support for nested includes has been added. Now users can use the include/1 macro inside their includes. Self-including or circular includes are intentionally not supported and these will result in errors.

    • Serum provides more options for the length of preview text for each blog post.

      • preview_length: {:chars, 200} tells Serum to take the first 200 characters from a blog post to generate a preview text. The next two options should be self-explanatory now.
      • preview_length: {:words, 20}
      • preview_length: {:paragraphs, 1} (Serches for <p> tags.)
      • Of course, you can still use the old value: preview_length: 200.
    • 0️⃣ Serum no longer emits ANSI escape sequences by default when the output is not a terminal. (i.e. when the output is written to a file, or when the output is piped to another program.)

    Run any Serum Mix tasks with --color or --no-color option to override this behavior.

    ➕ Added

    • 🔌 Users can now pass an arbitrary argument to a Serum plugin.

    The accepted value of plugin argument is defined by the plugin author, and this can be used to configure how the plugin should work.

    • ⚡️ This update introduces a new render/2 template helper.

    The render/2 helper works like the existing include/1 helper. However, unlike include/1, this helper dynamically renders the given include when the calling template/include is being rendered.

    🔄 Changed

    • 💥 BREAKING CHANGES for plugin authors: The following plugin callbacks now accept one more argument: args.

      • build_started/3
      • reading_pages/2
      • reading_posts/2
      • reading_templates/2
      • processing_page/2
      • processing_post/2
      • processing_template/2
      • processed_page/2
      • processed_post/2
      • processed_template/2
      • processed_list/2
      • processed_pages/2
      • processed_posts/2
      • rendering_fragment/3
      • rendered_fragment/2
      • rendered_page/2
      • wrote_file/2
      • build_succeeded/3
      • build_failed/4
      • finalizing/3

      Please update your plugins by implementing the new callbacks above. Existing callbacks will still be supported, but they will be removed in later releases.


Previous changes from v1.2.0

  • 🛠 Fixed

    • 🛠 Fixed an issue where the Serum development server crashes if the file system watcher backend is not available on the user's system. The server will work now, but features related to automatic reloading will be disabled.

    • Now the prompt text (8080>) in the Serum development server CLI will catch up the console output, instead of lagging behind.

    • ⚡️ Updated one of Serum's dependencies. Users will no longer see strange errors from "Tzdata" once a day.

    👌 Improved

    • Serum.File.read/1 now checks if the value of src key in the input struct is nil. An error will be returned if so. Likewise, Serum.File.write/1 checks the value of dest key.

    • 📇 Now you can add any user-defined metadata to your pages and posts. Just put some lines like key: value in the header, and these metadata will be available at @page.extras (or @post.extras) in your templates.

    ➕ Added

    • If you put any extra files and directories in files/ directory, they will be copied to the root of your website. files/ directory is a good place for your favicons, robots.txt, and so on.

    • ➕ Added support for custom templates. Pages and blog posts now recognize the template key in their headers.

    🔄 Changed

    • 📄 Docs: Marked some docs for internal modules as hidden, and organized moduledocs by categories. Hidden docs are still accessible via source codes.

    • Overhauled codes which start and stop the Serum development server. The temporary output directory created by the server will now be cleaned up in most exit situations. Additionally, users will be able to see less horrifying error output when the server failed to start.

    For developers: The Serum development server and its command line interface have been decoupled. Starting the server with Serum.DevServer.run/2 does not take you to the command line interface. Instead, you can call Serum.DevServer.Prompt.start/1 to enter the server CLI.

    There are now two ways to get out of the CLI: The quit command stops the development server and returns. If you want to keep the server running, use the detach command. You can later enter the CLI again using the same Serum.DevServer.Prompt.start/1 function.

    • 🔄 Changed format of the message output, with a new internal module which controls the console output.

      • TODO: Disable emitting ANSI escape sequences when the output device is not a terminal.
    • If there are more than one identical errors, only one of them will be displayed. Usually these errors are from one source and they will be gone all together if one error in the project source gets fixed.