| tag name | v0.16.0 (ed223703196f2c629309c202892aa8f3f87def8d) |
| tag date | 2026-02-09 13:18:33 +0700 |
| tagged by | Shulhan <ms@kilabit.info> |
| tagged object | commit 1e833ea2a7... |
| download | ciigo-0.16.0.tar.xz |
|---|
Release ciigo v0.16.0 (2026-02-09)
**🌱 all: embed CSS and index HTML template using memfs**
Previously, with direct embed, every time we change the CSS or index
template, we need to restart the "ciigo serve" command.
Using memfs make us easy to update and see the changes directly, without
restarting the server.
**🌼 all: improve the default stylesheet and template**
Add common styles for asciidoctor elements with dark theme.
Common styles including title, header, anchor, lists, table, and footer.
The foreground color changes to conform with color-contrast
ratio threshold, with score AAA. [1]
Add ARIA role to each section of pages: banner for topbar,
main for page, and contentinfo for footer.
This is to make the webpage more robust and functional no matter
what screen reader technology is used. [2]
For touch devices, increase the line height on Table of Contents.
This is to help users who may have difficulty in confidently targeting or
operating small controls. [3]
In the default template, instead of splitting the topbar into top-heading
and menu, breaking it down by class item.
[1]: https://dequeuniversity.com/rules/axe/4.11/color-contrast +
[2]: https://dequeuniversity.com/rules/axe/4.11/landmark-one-main +
[3]: https://dequeuniversity.com/rules/axe/4.11/target-size
**🌱 all: allow combination of default and custom stylesheet**
To combine default stylesheet with custom CSS, set the value to "default"
and the file name of custom CSS, separated by comma.
This is the recommended way to use custom stylesheet since it can be set
only on specific pages.
----
// In asciidoctor:
:stylesheet: default, custom.css
// In markdown:
stylesheet: default, custom.css
----
To disable default stylesheet and only using custom CSS, set the value only
to the file name of custom CSS.
Another way to use custom stylesheet is by creating your own template and
pass it to `serve` or `convert` command.
This method makes the stylesheet applied to all pages.
**🌼 all: add field Listener to ServeOptions**
The field Listener allow passing [net.Listener] instance for accepting
HTTP connection.
One of the use case is to activate the ciigo serve using systemd.socket(5).
**🌱 all: redirect request for .adoc or .md to the HTML file**
During serve, onGet method, if the node does not exist and the request
path end with .adoc or .md, redirect the client to the .html location
with status 303 (See Other).
**🪵 all: embed struct [lib/http.ServerOptions] directly to [ServeOptions]**
At this point, all of the fields in the struct ServeOptions is the
same with [lib/http.ServerOptions] except IsDevelopment and
ConvertOptions.
For field IsDevelopment we keep in the struct.
For field ConvertOptions we remove it and let the caller pass it on
Serve function or InitHTTPServer method.
-----BEGIN PGP SIGNATURE-----
iHUEABYKAB0WIQSyS35x1RIQ2SkuGz5KU2C1AMnE8AUCaYl8YgAKCRBKU2C1AMnE
8IpiAQCxw+hOpYr0ObgGUBIkRin8tlRX5LEnrVtUceY4nxARwQD7BdN5QQR47Hhd
O9Wa792ptXjayzTZTROrCjB7Yh1u+wQ=
=YEVi
-----END PGP SIGNATURE-----
