New Releases: GWS, Zet, Stag, gpak, zetweb

Table of Contents

Yesterday I had a quite fruitful day, completing planned things for 3 of my projects. Here’s the recap of changes in each one of them, plus some more.

GWS 0.2

There’s not a lot of things happening in GWS at the moment, but I finally managed to fix a bug in webhook which had caused a scary print after refs deletion. This was the final thing which held me back from releasing a new version.

Location of cgitrc

There’s one breaking change: GWS changes a directory in gitolite-admin repository from which cgitrc will be read. Seamless migration procedure is following:

  1. create cgit directory in gitolite-admin repository
  2. copy your cgitrc into this directory
  3. commit and push
  4. update GWS
  5. remove old cgitrc

Agefiles

cgit might use so-called “agefiles”: special files kept git bare repository which mark the time of last change in that repository. GWS now supports creating them via gitolite’s POST_GIT trigger. New installations have it enabled by default, but if you’re upgrading, you should add it yourself in a section “Custom triggers” in your gitolite.rc:

POST_GIT => [
    'agefile',
],

Better support for mobile views

Included cgit style is now responsive. If you’re updating, you should include the following section in your cgitrc:

head-include=/config/git/cgit-data/head.html

Stag 0.11.0

Stag saw a lot of development and really some cool features recently. Newest version is 0.11.0, but be sure to check also current master, because it already has some cool features adding better support for Asciidoc.

Breaking changes

There are some breaking changes in this release:

  • minimum Python version is 3.8
  • Asciidoc plugin previously supported ordinary front-matters for metadata. It no longer supports it, because Asciidoc has its own metadata format, which is more natural for it. Note however that for proper lists support, you should use a currently not released stag from master.
  • xml plugin was renamed to raw_markup and it now supports XML, JSON, YAML and TOML files as well

Better support for sites deployed in subdirectories

With this version Stag supports creating proper URLs for sites deployed in subdirectories (vhosts). If you configure your site root as e.g. https://example.com/subdir, then stag will correctly include subdir in URLs created by macros (e.g. by ref, but also newly added absref and absurl).

As a part of this, built-in HTTP server will rewrite configured site root.

You can now also change the site root URL by passing --url parameter, which is especially useful for certain deployment scenarios.

Easier to use built-in server

From this release, when you run stag serve, it’ll do 2 things to make the experience even nicer:

  • it’ll choose a random open port on your computer and use it to serve your site,
  • and then it’ll automatically open it in your web browser.

There are also many other improvements for HTTP server. It now better detects file changes which trigger automatic rebuilds. It’ll also rebuild the whole site when config.toml is changed. On top of that, rebuilds wont remove the output directory, you and your scripts can sit inside it, without the fear that stag will pull a rug from under your feet.

Overall, the experience of dev webserver should be much better now than before.

gpak 0.9.1

This is a bugfix release of gpak. Most prominent fix is fixing the invocation of adduser in docker, which had failed and prevented many commands which needed root access.

Zet 0.11.0

I think I’m getting closer to 1.0 release of zet, which in my eyes is a milestone where a software develops a stable, backward-compatible API. I’m not there yet, because there are still some inconsistencies and I don’t use all of Zet’s features every day to catch them. I find most of them when I develop new subcommands (modules) for Zet and I don’t do it very often, because I find the existing set quite feature-complete for my day-to-day habits.

Breaking change in zet replace

There’s a breaking change in zet replace: --insensitive flag was renamed to --case-insensitive.

Bad news is that this isn’t the last time this option changes. In future release it’ll change once again to --ignore-case, to align with zet search and grep. Sorry for that.

New Command

There’s a new command in non-core built-in modules: zet run. It allows running arbitrary command inside a notebook’s directory (NOT inside $ZET_ROOT), a default notebook by default.

Shell completions

I created shell completion scripts for Bash and ZSH. They are quite simple (because I hate writing shell completion scripts), but I hope to improve them in future. One thing which they certainly need is completing files in notebooks given by selectors.

Zetweb

I have created Zetweb: experimental web interface for Zet. It’s nothing fancy, because I’m a poor-ass web developer, but it supports dynamic page changes and searches and some caching for rendering speed.

That’s it! Thanks for reading this far and have fun!