Skip to content

4.7.0 release

Compare
Choose a tag to compare
@dmbaturin dmbaturin released this 19 Sep 16:54
· 40 commits to main since this release

Release blog post: https://soupault.app/blog/soupault-4.7.0-release

New features and improvements

  • New max_items option in index views allows limiting the number of displayed items.
  • New settings.page_character_encoding option for correctly loading pages in encodings other than ASCII and UTF-8.
  • New post-build hook that runs when all pages are processed and soupault is about to terminate.
  • Info logs to indicate the first and second passes in the index_first = true mode.
  • Debug logs now tell why a page is included or excluded from an index view: "page_included checks for %s: regex=%b, page=%b, section=%b"

New plugin API functions

  • CSV.from_string(str) — parses CSV data and returns it as a list (i.e., an int-indexed table) of lists.
  • CSV.unsafe_from_string(str) — like CSV.from_string but returns nil on errors instead or raising an exception.
  • CSV.to_list_of_tables(csv_data) — converts CSV data with a header returned by CSV.from_string into a list of string-indexed tables for easy rendering.
  • HTML.swap(l, r) — swaps two elements in an element tree.
  • HTML.wrap(node, elem) — wraps node in elem.
  • New global_data hash table for sharing data between plugins.
  • New soupault_pass plugin environment variable (0 when index_first = false, 1 and 2 for the first and the second pass respectively when it's true).

Bug fixes

  • Fixed an unhandled exception on index entry sorting failures when sort_strict = true and sort_by is unspecified.
  • Fixed a typo in the comments of the config generated by soupault --init (s/ULRs/URLs/).

Misc

New state record now holds both the settings record and the TOML config datastructure,
plus the new global_data and soupault_pass variables, and can be easily extended to support global state new variables.

Official binaries are now available for Linux on ARM64.