Changelog History
Page 1
-
v1.5.1 Changes
May 22, 2021๐ Fixed
- ๐ Fixed an issue where the Serum development server may not start properly.
-
v1.5.0 Changes
July 19, 2020โ Added
โ Added 3 new configuration items for your Serum project (
serum.exs
), which can be used to customize locations for your blog-related pages::posts_source
(string, optional) - Path to a directory which holds source files for your blog posts. Defaults to"posts"
.:posts_path
(string, optional) - Path in a output directory which your rendered blog posts will be written to. Defaults to the value of:posts_source
. (i.e. the default value will be"posts"
if the value of:posts_source
is not explicitly given.):tags_path
(string, optional) - Path in an output directory which the tag pages will be written to. Defaults to"tags"
.
โ Added a new Serum plugin:
Serum.Plugins.PreviewGenerator
.
This plugin is a replacement of the built-in preview text generation functionality. Unlike the built-in preview generator, this new plugin can generate preview texts not only for blog posts, but also for regular pages.
Read the documentation to learn more about this plugin.
-
v1.4.1 Changes
February 20, 2020๐ Improved
- โฌ๏ธ Upgraded Floki, the HTML parser library, to 0.26.0, which provides more useful functionalities Serum needs.
- โก๏ธ Updated some codes that may not work well with the latest version of Floki. These codes were causing some noisy warnings during website builds for some users, but this issuse is now fixed.
-
v1.4.0 Changes
January 11, 2020โ Added
- โ Added
open
command to the Serum development server CLI. This command opens your website in the default web browser of your desktop environment. Special thanks to @nallwhy! - ๐ง Users can now configure the
Serum.Plugins.SitemapGenerator
plugin so that it generates entries for pages, posts, or both.
%{ plugins: [ # Generate sitemap entries for pages only. {Serum.Plugins.SitemapGenerator, args: [for: :pages]}, # Generate sitemap entries for posts only. {Serum.Plugins.SitemapGenerator, args: [for: :posts]}, # Generate sitemap entries for both pages and posts. {Serum.Plugins.SitemapGenerator, args: [for: [:pages, :posts]]}, # Generate sitemap entries for posts only. (Backward comptatibility) Serum.Plugins.SitemapGenerator ] }
๐ Changed
- ๐ The
Serum.Plugins.SitemapGenerator
plugin no longer generatesrobots.txt
file. Create and put your ownrobots.txt
to yourfiles/
directory.
- โ Added
-
v1.3.0 Changes
November 28, 2019๐ 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 existinginclude/1
helper. However, unlikeinclude/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.
-
v1.2.0 Changes
August 04, 2019๐ 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 ofsrc
key in the input struct is nil. An error will be returned if so. Likewise,Serum.File.write/1
checks the value ofdest
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 callSerum.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 thedetach
command. You can later enter the CLI again using the sameSerum.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.
-
v1.1.0 Changes
May 18, 2019๐ Fixed
- The development server now quits gracefully when the user sends EOF (Ctrl+D) (Issue #45)
โ Added
๐ Serum now supports themes! Please visit the official website to learn more about Serum themes.
Installer: Added
serum.new.theme
Mix task, which helps you create a new Serum theme project.๐ The following optional callbacks were added for plugins.
processed_pages/1
processed_posts/1
rendering_fragment/2
โ Added
Serum.HtmlTreeHelper
module, which providestraverse/2
andtraverse/3
function. You will find this module useful when you need to manipulate HTML trees from your plugins.
๐ Changed
๐ The behavior of the Table of Contents plugin has slightly changed.
- This plugin no longer prepends a
<a name="...">
tag to each heading tag. Instead, it will use theid
attribute of each one of them. If a tag does not have anid
, it will be set appropriately by the plugin. - The TOC element (
ul.serum-toc
) will also be given an ID (#toc
), so that you can make hyperlinks back to the list.
- This plugin no longer prepends a
Serum now automatically generates an
id
attribute for each HTML heading tag. (by @igalic, Issue #44)- If a heading tag already has an ID, it won't be modified.
- Each ID is generated based on the tag's text content.
- Generated IDs are always unique. If a duplicate ID is to be generated, a number will be appended.
-
v1.1.0-pre.0
May 17, 2019 -
v1.0.0 Changes
May 03, 2019๐ This is the first official release of Serum! ๐
๐ Fixed
- Do not generate post lists when there is no blog post. Until now, an empty post list has been generated anyway. (by @igalic, PR #41)
- ๐จ Lots of refactoring and bug fixes which can improve reliability.
๐ Changed
- Serum now exits with an error when trying to include a template which does
not exist in
includes/
directory.
โ Removed
- ๐ Completely removed support for
serum.json
file. You must useseurm.exs
instead.
-
v1.0.0-pre.1
May 02, 2019