Bestatic release v0.0.30



Posted on December 27, 2024
Tags: major-release, release-note

Release v0.0.30 should be considered as a major release of Bestatic. Yet, this version is fully compatible with previous versions.

New Features:

  • Multiple column layouts are now available for all page content. To use it, Inside a markdown header, use splitsection class to split the content into different sections. Bestatic will pass these sections separately (along with your corresponding headings and section index numbers) to your templates. You can then utilize all Jinja2 logic systems to customize your content into dynamic multiple columns (using Bootstrap CSS or something similar). We will soon update Bestatic themes to take advantage of this feature.

  • Users can now define their own Shortcodes (i.e., macros that can convert simple snippets in contents into per-defined HTML markup) for markdown processing by writing custom Python functions and including them in _shortcodes directory.

  • In addition to per-existing "tags", users can now define custom taxonomies (for e.g., categories, authors, movies, etc.), generate list page for each of those, and process additional data for each of these taxonomies from .yaml files in _includes/yamls directory. As a result, multiple authors can now have custom pages with their biography and list of authored articles.

  • The main config.yaml has been renamed as bestatic.yaml. Old config.yaml would still work for now, but it will eventually be depreciated.

  • Slugs now will be generated automatically as per the filename (of course, user is free to customize it, as usual) when bestatic newpage or bestatic newpost would be used.

  • Dates and times can now be formatted in the bestatic.yaml using the strftime format (see this and this for reference) to display those as per users' choice. The "%B %d, %Y" format has been set as a fallback option.

  • Custom extensions and extension configurations now can be added via bestatic.yaml file. All python-markdown extensions and Pymdown extensions can be used now, along with their individual configurations.

  • The character length of post summary can now be defined in bestatic.yaml file.

  • Single posts can be used as homepage.

  • Navigation can now be simply defined in bestatic.yaml file. It can be as nested as required. With proper themes, users will no longer need to manually edit templates to define the navigation links.

  • For post items, URL parameter can now be completely user defined (e.g., "blog", "news", "articles", etc.), configurable via bestatic.yaml file. "Posts" will now be the fallback option.

  • In addition to previous slug and next slug, each post has access to previous and next titles of the posts.

  • Included markdown-include extension in the Bestatic package so that one markdown file can add content from another markdown file.

  • The fuse-search tool has been rewritten to include user-defined search-index file link.

  • Page type contents now can have access to all the Post type content data. This can be enabled in bestatic.yaml file.

Bug fixes:

  • The newline attribute has been removed from the sitemap.xml files.

  • Tags field can now be empty (if the user chooses to not use any tag).

  • Faulty caching in Bestatic development server has been fixed (which often created issues with Chromium-based browsers).

  • Time zone can now be set in bestatic.yaml file. The UTC has been set as a fallback option.

  • Post summaries on list page will no longer have unprocessed HTML tags.

  • Project Sites on GitHub and GitLab can now be better deployed using -p or --projectsite flag.

Documentation and themes will be updated accordingly soon.

As usual, Bestatic can be downloaded and installed from the GitHub release page, or Snap store, or Flathub, or PyPI.

Detailed installation instructions, quickstart guide, and user manual are available on our official documentation.


Release 0.0.30 is essentially same as 0.0.29; previously an outdated file got included. So, we are updating the version to v0.0.30.

← View Previous Post

View list of all blog posts