<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ciigo, branch v0.16.0</title>
<subtitle>Static web server with AsciiDoc and Markdown.</subtitle>
<id>http://git.kilabit.info/ciigo/atom?h=v0.16.0</id>
<link rel='self' href='http://git.kilabit.info/ciigo/atom?h=v0.16.0'/>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/ciigo/'/>
<updated>2026-02-09T06:18:08Z</updated>
<entry>
<title>Release ciigo v0.16.0 (2026-02-09)</title>
<updated>2026-02-09T06:18:08Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-02-09T06:18:08Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/ciigo/commit/?id=1e833ea2a7d0300915c4c8a5c7bef09909ada915'/>
<id>urn:sha1:1e833ea2a7d0300915c4c8a5c7bef09909ada915</id>
<content type='text'>
**🌱 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.
</content>
</entry>
<entry>
<title>go.mod: update all dependencies</title>
<updated>2026-02-09T06:09:15Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-02-09T06:09:15Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/ciigo/commit/?id=98c83f1b87672edd114397c5602de71ca94207dd'/>
<id>urn:sha1:98c83f1b87672edd114397c5602de71ca94207dd</id>
<content type='text'>
This update affect the test on onGet, where request to directory that
does not end with slash will be redirected with status code 301 (Moved
Permanently) instead of 302 (Found).
</content>
</entry>
<entry>
<title>all: embed struct [lib/http.ServerOptions] directly to [ServeOptions]</title>
<updated>2026-02-07T09:03:19Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-02-07T09:03:19Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/ciigo/commit/?id=3714f15bf29cfb79c3623784e391a7a4854f6815'/>
<id>urn:sha1:3714f15bf29cfb79c3623784e391a7a4854f6815</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>server: enable ServerOptions HandleFS by default</title>
<updated>2026-02-04T23:22:10Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-02-04T23:22:10Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/ciigo/commit/?id=759c9b8e542d2ce159228e35c6d4138fbaef25de'/>
<id>urn:sha1:759c9b8e542d2ce159228e35c6d4138fbaef25de</id>
<content type='text'>
This allow request for .adoc/.md get redirected to .html in production
environment, as we have in https://golang-id.org/proposal/ .
</content>
</entry>
<entry>
<title>all: redirect request for .adoc or .md to the HTML file</title>
<updated>2026-02-04T20:40:34Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-02-04T17:00:23Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/ciigo/commit/?id=aba22ce712d13b0b99b56a860f57c9142d9440e3'/>
<id>urn:sha1:aba22ce712d13b0b99b56a860f57c9142d9440e3</id>
<content type='text'>
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 (StatusSeeOther).
</content>
</entry>
<entry>
<title>_static: update the default style</title>
<updated>2026-02-03T21:17:06Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-02-03T21:17:06Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/ciigo/commit/?id=b447e8991270ddf634761c7a6b7daf411211f2a5'/>
<id>urn:sha1:b447e8991270ddf634761c7a6b7daf411211f2a5</id>
<content type='text'>
Changes,

* Set the anchor text-decoration back to none but with hover set to
  underline
* Set only h2 to have border bottom
* Increase top margin for headings
* Set the topbar layout using flex and remove margin and padding for
  form elements
* Change the sectanchor indicator to display on hover.
  Minimize unncessary text displayed on screen.
* Add style for block quotes
</content>
</entry>
<entry>
<title>all: add field Listener to ServeOptions</title>
<updated>2026-02-02T09:40:16Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-02-02T09:31:34Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/ciigo/commit/?id=5c30c1f5d0435791c164b89f98891ae27dda4dec'/>
<id>urn:sha1:5c30c1f5d0435791c164b89f98891ae27dda4dec</id>
<content type='text'>
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).
</content>
</entry>
<entry>
<title>all: allow combination of default and custom stylesheet</title>
<updated>2026-02-02T09:40:16Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-01-29T14:07:22Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/ciigo/commit/?id=f578b0ba7341f8bc97d13cd165070002596cb106'/>
<id>urn:sha1:f578b0ba7341f8bc97d13cd165070002596cb106</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>_doc: add the test content for markdown</title>
<updated>2026-01-29T13:05:06Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-01-29T13:05:06Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/ciigo/commit/?id=1af4644cb401e64ac20ecb7f12e898096470eb61'/>
<id>urn:sha1:1af4644cb401e64ac20ecb7f12e898096470eb61</id>
<content type='text'>
The content is the same with adoc one, with style updated to use
basic and [extended] syntax.

Many syntax are not worked, like tables and admonition.

[extended]: https://www.markdownguide.org/extended-syntax/
</content>
</entry>
<entry>
<title>_static: improve styling on header and table of contents</title>
<updated>2026-01-29T13:03:03Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-01-29T13:03:03Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/ciigo/commit/?id=39e57b91cd4a1991afbaa281832f9bb6f960ea70'/>
<id>urn:sha1:39e57b91cd4a1991afbaa281832f9bb6f960ea70</id>
<content type='text'>
In the header, we made the authors, version, date, remark to be italic.

In the ToC, we show the "Table of Contents" title back, re-align it to
match with the top and bottom elements.
</content>
</entry>
</feed>
