4.4.0 (2023-01-26)

New features and improvements

Bug fixes

4.3.1 (2022-11-16)

Bug fixes

4.3.0 (2022-10-24)

New features and improvements

New Lua plugin functions

Bug fixes

Compatibility

Soupault now requires OCaml 4.13 to build.

4.2.0 (2022-09-22)

New features and improvements

Bug fixes

4.1.0 (2022-08-19)

New features

Bug fixes

Internal changes

4.0.1 (2022-05-30)

Bug fixes

4.0.0 (2022-05-14)

Breaking changes

New features

New Lua plugin API functions and variables

New variables

New functions

Unicode string functions

Bug fixes

Behaviour changes

3.2.0 (2021-10-23)

New features

Bug fixes

3.1.0 (2021-08-16)

New features

3.0.0 (2021-07-19)

Breaking changes

New features

Misc

Soupault now uses OTOML instead of To.ml for TOML parsing and manipulation.

2.8.0 (2021-06-20)

New features

Bug fixes

2.7.0 (2021-05-12)

New features

2.6.0 (2021-04-15)

New features

Bug fixes

2.5.0 (2021-04-15)

New features

Bug fixes

Misc

2.4.0 (2021-01-17)

New features

New plugin functions

Bug fixes

2.3.0 (2020-12-18)

New features

New plugin functions

Bug fixes

2.2.0 (2020-11-29)

New features

Table helpers

Iterating through tables is a real weak point of the 2.5 era Lua implemented by Lua-ML. To make working with tables simpler, I’ve added a high level few helpers functions, including:

Bug fixes

Platform support

32-bit Windows is no longer supported, all future Windows builds will be for 64-bit Windows only.

2.1.0 (2020-10-28)

New features

Bug fixes

2.0.0 (2020-09-20)

Breaking changes

There is an online config convertor to simplify migration.

The reason for removing the built-in content model was that custom fields introduced in soupault ... were already more flexible than the old-built in fields: they had extract_attribute and default_value options. Old field configuration, however, were limited to just a selector and nothing else, since their syntax wasn't designed to be extensible: index_date_selector, index_author_selector, index_title_selector, and index_excerpt_selector.

That was a design mistake that was impossible to fix without completely changing the syntax. Removing the inflexible built-in fields in the process looked like a logical step.

New features

1.13.0 (2020-07-08)

New features

1.12.0 (2020-05-31)

1.11.0 (2020-04-27)

New features

1.10.0 (2020-03-25)

New features

Bug fixes

1.9.0 (2020-02-28)

New features

Bug fixes

1.8.0 (2020-01-17)

New features

New plugin functions

1.7.0 (2019-12-23)

New features

Build

Building soupault now requires OCaml 4.08 or later.

1.6.1 (2019-12-13)

Bug fixes

1.6.0 (2019-11-30)

New features

New plugin functions

Bug fixes and improvements

1.5.0 (2019-11-01)

New features

1.4.0 (2019-10-26)

New features

1.3.2 (2019-10-06)

Bug fixes

1.3.1 (2019-10-05)

Bug fixes

1.3.0 (2019-09-29)

Improvements

Bug fixes

Build

1.2.0 (2019-08-12)

New features

Bug fixes

1.1.0 (2019-08-01)

New features

Footnotes now include links back to the original location in the document for easier navigation. It's possible to disable this and make footnote links one way with back_links = false widget option.

[widgets.footnotes]
  widget = "footnotes"
  # No back links
  back_links = false
  # ...

Path regex options for widgets

It's now possible to limit widgets to page file paths matching a Perl-compatible regex.

[widgets.starts-with-foo]
  path_regex = "/foo(.*)"
  widget = "insert_html"
  selector = "body"
  html = '<p>This page name starts with foo!</p>'

Excluding pages from widgets

It's now possible to explicitly exclude pages from a widget using these options:

For example:

[widgets.toc]
  # No ToC on any page named "index"
  exclude_path_regex = '/index(\.*)'

Bug fixes

Platform support

Binaries for macOS are available.

1.0.1 (2019-07-20)

Behaviour changes

Only files with extensions .htm .html .md .rst are assumed to be pages now, all other files are copied to the build dir unchanged. This is to simplify switching for existing websites that store assets together with pages, and to comply with the principle of least astonishment.

You can change it with page_file_extensions option, for example:

[settings]
  page_file_extensions = ["htm", "html", "md", "rst", "txt"]

New features

JSON index data export

It is now possible to export the global website index to file:

[index]
  index = true
  dump_json = "path/to/file.json"

Custom index fields

Example:

[index.custom_fields]
  tags = {selector = ".tag", select_all = true}
  category = {selector = "#category" }

Lists of selectors

page and section options can now be either single selector or lists. This also applies to the selector option in title and footnotes widgets, with different semantics (select any that exists and select all respectively).

Bug fixes

1.0.0-beta1 (2019-07-15)

The first beta. It's stable enough to build my own website with a pretty interesting config, but may still have rough edges.