v0.1.2 - Slowly but Surely

Sep 19, 2021

1. Intro

After quite a bit of time and work, here is the second public release of weblorg, the modern Static HTML Generator for Emacs and Org-Mode.

The most exciting thing about this release was the contributions to both templatel and weblorg from the following people (in lexicographical order): AblatedSprocket, Guilherme Guerra, Guilherme Semente, Laura Groetzinger, Marko Kocić, Nan Zhong, and Rik. Thanks a lot, you guys! <3

The biggest improvements all these folks brought to you were around how themes are structured, how we can have a better blogging experience, and lots of bug fixes. Both documentation and API reference were also improved, but there is still a lot to be covered there. It will continue to be a top priority for the next releases.

Here's a glimpse of the default theme, in case you are curious

New Default Theme

2. Changelog

2.1. Weblorg 0.1.2

  • New default theme, thanks to Laura Groetzinger
  • #17, #20, #34, #54 - Consolidation of the theme directory next to a publish.el file as the first entry in the template search PATH. Followed by the template directory within the theme being used. (thanks Nan Zhong and Guilherme Guerra)
  • #49 - Addition of the url_for_img Org-Mode URL link type. Check the docs (thanks to AblatedSprocket).
  • #56, #22 - Various bug fixes in parsing parameters and rendering URLs in url_for.
  • #45 - The property post.filetags, available in the template, is now a list of tags split by : from the original string. Check the docs. (thanks to AblatedSprocket).
  • #26 - Fix cannot #+INCLUDE using relative paths. (thanks to Rik)
  • #29 - post.url as a shortcut for {{ url_for("post", slug=post.slug) }}

2.2. Templatel 0.1.6

On the templatel side, two new versions were shipped: 0.1.5 and 0.1.6, which was the biggest release made so far and includes the following highlights:

  • Support {% include %} statements (Thanks to Guilherme Guerra)
  • New filters added: take (Thanks to Marko Kocić), abs, capitalize, escape (e), float, join, length, max, min, round, and title.
  • Added test operator that is another syntax for passing parameters to functions that have a defined signature, they must return a Boolean value. e.g.: {% if something is defined %}.

3. Next Steps

There's quite a bit of work left to do, but the priorities going forward seem clear: better blogging experience, more themes. That being said there are other important changes in the works too. Here's a list of some of the planned work ahead:

  • #32 - Mix input handlers in the same route: this will allow weblorg to generate websites recursively a directory scanning for Org-Mode and asset files in one route.
  • #27 - Control over file names generation: Right now weblorg uses either the #+SLUG file property, or the slugified #+TITLE, or the original file name with the .org suffix replaced with .html. This work will allow users to have full control over it, but with very good defaults.
  • #48 - API for interacting with routes from within templates: There's an undocumented function weblorg_route_posts that allows listing posts of any route in the site from any template, however it's far from where we want it to be. For example, this post is newer than the 0.1.1 post, but that function doesn't take a sorting parameter :/ and that's the type of thing we want to fix here.
  • #31 Watch file notifications: The goal is to improve the development experience by re-generating automatically upon file changes. (thanks Nan Zhong)
  • #43 - Site specific template filters: low hanging fruit for making weblorg more extensible.
  • Other core features that still need work: wrap up support for categories and tags
  • It would be great to start covering the interactive use weblorg. Although running from the command line via --script is still a high priority, this is very important for local development.

These are top priorities for now, but if you think I missed something, or you thought of something new, please go ahead and let me know by opening a GitHub issue. Thanks in advance :)

See you next release <o/