<feed xmlns='http://www.w3.org/2005/Atom'>
<title>awwan/awwan.go, branch main</title>
<subtitle>Configuration management software, scriptable shell with SSH support.</subtitle>
<id>http://git.kilabit.info/awwan/atom?h=main</id>
<link rel='self' href='http://git.kilabit.info/awwan/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/awwan/'/>
<updated>2026-02-15T06:37:31Z</updated>
<entry>
<title>all: fix data race in Play and in integration tests</title>
<updated>2026-02-15T06:37:31Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-02-15T06:03:38Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/awwan/commit/?id=19d58e9a4c900aec1d63de45a655657c760b1235'/>
<id>urn:sha1:19d58e9a4c900aec1d63de45a655657c760b1235</id>
<content type='text'>
When the Play command executed from the web user interface, there is a
possibility that concurrent requests set the sshConfig field in Awwan
struct at the same time.

In the integration tests for TestAwwan_Play_withLocal and
TestExecLocal_sudo, the data race happens when writing to the same
buffer for stdout and stderr, so we split them into separate buffers.

There is also data race in SSE connection, when handler for ExecuteTail
write to the same buffer with worker keep alive.
This has been fixed on pakakeh.go module.
</content>
</entry>
<entry>
<title>all: change Serve parameters to struct `ServeOptions`</title>
<updated>2026-02-11T18:29:15Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-02-11T17:17:29Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/awwan/commit/?id=ff5a7ecdb8aa0ccfe4bd4f71648e7254e470c930'/>
<id>urn:sha1:ff5a7ecdb8aa0ccfe4bd4f71648e7254e470c930</id>
<content type='text'>
In case we needs to add another parameter, which will do later, the
argument will be too long.
Using parameters is acceptable only for 2 to 3 arguments.
</content>
</entry>
<entry>
<title>internal/cmd/www-awwan: add option to set shutdown idle duration</title>
<updated>2026-02-11T16:05:40Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-02-11T16:05:40Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/awwan/commit/?id=2686a70d0eeb14c0eba68f449658827e144e75a2'/>
<id>urn:sha1:2686a70d0eeb14c0eba68f449658827e144e75a2</id>
<content type='text'>
The `-shutdown-idle` option set the duration when server will stop
accepting new connections and shutting down.
</content>
</entry>
<entry>
<title>Release awwan v0.13.1 (2026-02-09)</title>
<updated>2026-02-09T06:38:58Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-02-09T06:38:58Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/awwan/commit/?id=9657823ef282479a6609fd77c74c3f64cb512ebd'/>
<id>urn:sha1:9657823ef282479a6609fd77c74c3f64cb512ebd</id>
<content type='text'>
**🌼 internal/cmd/www-awwan: implement socket based activation using systemd**

This allow us to run www-awwan only when its activated in the local
environment.

**🌼 cmd/awwan: implement socket based activation on serve command**

The "awwan serve" command now can run based on socket activation under
systemd.

**🌼 _wui/doc: use default ciigo style**

The default ciigo style provides consistent style with kilabit.info
and have support for light and dark themes.

**💧 all: fix data race in tests and [httpServer.ExecuteTail]**

In the test for AwwanLocal, use buffer with lock, so each write and
read is safe.

In the httpServer, the test found data race during ExecuteTail when
accessing [ExecResponse.EndAt].
We fix it by locking the resource during call to end() and when
accessing the EndAt field.

**💧 _ops/awwan-tour: fix build with latest mkosi**

The option "Incremental" and "CacheDirectory" in mkosi.conf has been moved
to section "[Build]".

**💧 all: use separate buffer for stdout and stderr in TestAwwanLocal**

This is to fix flaky test on TestAwwanLocal.

**🌼 all: improve the Server-Sent Events (SSE) output**

In the ExecResponse, store the event in the Output instead of message
data, so the server can iterate the Output directly and pass it to
WriteEvent directly.

The event ID now start at 1 with type "begin".
This is to minimize confusion when comparing empty Last-Event-ID from
client, which is equal to 0.
</content>
</entry>
<entry>
<title>all: improve the Server-Sent Events (SSE) output</title>
<updated>2026-02-06T00:08:29Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-02-06T00:08:29Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/awwan/commit/?id=54d395f53e344a3cf3861c0e3d2f82ad14ecc602'/>
<id>urn:sha1:54d395f53e344a3cf3861c0e3d2f82ad14ecc602</id>
<content type='text'>
In the ExecResponse, store the event in the Output instead of message
data, so the server can iterate the Output directly and pass it to
WriteEvent directly.

The event ID now start at 1 with type "begin".
This is to minimize confusion when comparing empty Last-Event-ID from
client, which is equal to 0.
</content>
</entry>
<entry>
<title>cmd/awwan: implement socket based activation on serve command</title>
<updated>2026-02-03T10:51:15Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-02-02T15:31:42Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/awwan/commit/?id=7e7ed646e2c3db2404b628e5e8b5584b9de0ff60'/>
<id>urn:sha1:7e7ed646e2c3db2404b628e5e8b5584b9de0ff60</id>
<content type='text'>
The "awwan serve" command now can run based on socket activation under
systemd.
</content>
</entry>
<entry>
<title>Release awwan v0.13.0 (2025-12-27)</title>
<updated>2025-12-27T07:03:40Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2025-12-27T07:03:40Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/awwan/commit/?id=663fdaf45162ac0eb1b45672f90fa58b73ab6f04'/>
<id>urn:sha1:663fdaf45162ac0eb1b45672f90fa58b73ab6f04</id>
<content type='text'>
[NEW FEATURES]
Add option "$noparse" for magic "#put" command.
The "$noparse" option allow copying file without reading and parsing
the input file.

[CHORES]
Fix "reuse lint" warnings due to embedded SPDX annotation.

Fix field alignment on struct Statement.

</content>
</entry>
<entry>
<title>Release awwan v0.12.3 (2025-02-08)</title>
<updated>2025-02-08T08:14:03Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2025-02-08T08:14:03Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/awwan/commit/?id=bf856af10bb91997aff0553a310922251c16cb17'/>
<id>urn:sha1:bf856af10bb91997aff0553a310922251c16cb17</id>
<content type='text'>
This release mostly chores, updating the dependencies, linters, and fix
on integration testing with mkosi and Arch Linux.

[CHORE]
The default linters now "go vet" and internal/cmd/gocheck.
The gocheck is collection of static Analyzers that are not included in
"go vet" from golang.org/x/tools.

[CHORE]
The replace directive on esbuild and golang.org/x/crypt in go.mod has
been removed.
Maintaining fork is not easy and take a lot of time.
As we seen in crypto fork, we are 10 minor versions behind upstream.
So now we are back to using upstream.

[CHORE]
The integration tests using mkosi and Arch Linux has been fixed and
updated.
</content>
</entry>
<entry>
<title>Release awwan v0.12.2 (2024-09-08)</title>
<updated>2024-09-07T18:12:36Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2024-09-07T18:09:18Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/awwan/commit/?id=1b3ca357ef8294fcf9a35d46cc2ea194b4b09dc2'/>
<id>urn:sha1:1b3ca357ef8294fcf9a35d46cc2ea194b4b09dc2</id>
<content type='text'>
=== Chores

* all: replace licensing format to REUSE.toml

  Using ".reuse/dep5" has been deprecated since REUSE v3.2.0.

* _wui: update wui submodule URL

  The wui submodule has been renamed to "pakakeh.ts".
</content>
</entry>
<entry>
<title>Release awwan v0.12.1 (2024-04-05)</title>
<updated>2024-04-05T19:07:24Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2024-04-05T19:07:24Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/awwan/commit/?id=9586bba13a451a5bcdf9b9916dbb40cfd72a12bc'/>
<id>urn:sha1:9586bba13a451a5bcdf9b9916dbb40cfd72a12bc</id>
<content type='text'>
This release replace module "share" with "pakakeh.go".

In the "_wui", we use shared static assets from Cloud Storage.
The idea is to minimize noise in the logs that does not related to page
access and minimize binary size.

In the "_ops", we use shared mkosi cache in user’s home ".cache".
This is to minimize duplicate files and allow us to find or grep files
without excluding certains directory.

We also apply some recommendations from linters.
</content>
</entry>
</feed>
