aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2026-03-27go.mod: update pakakeh.go to the tipHEADmaindevShulhan
This fix the issue on play command where remote server only has one public key in the known_hosts file with the following error: initSSHClient: NewClientInteractive: dialWithSigners: \ ssh: handshake failed: knownhosts: key mismatch with known_hosts \ files [/home/ms/.ssh/known_hosts] This changes require replacing golang.org/x/crypto module with our own forks that implement the fix on the [ssh/knownhosts] package.
2026-02-15all: fix chmod/chown if destination is directoryShulhan
Given the following command #put!+0644 src/file dst/ If the dst is a directory, it would cause the directory permission changes to 0644. This changes fix it by checking if the destination is a directory first. If we cannot stat the dst, skip the chmod/chown command.
2026-02-15all: fix data race in Play and in integration testsShulhan
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.
2026-02-15all: fix integration tests from previous refactoringShulhan
When we made the refactoring, we forgot to run the test-integration task which cause some tests are fails.
2026-02-12cmd/awwan: add option to auto shutdown idle serveShulhan
The `-shutdown-idle` option set the duration when the "serve" command will stop accepting new connections and shutting down the HTTP server.
2026-02-12all: change Serve parameters to struct `ServeOptions`Shulhan
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.
2026-02-11internal/cmd/www-awwan: add option to set shutdown idle durationShulhan
The `-shutdown-idle` option set the duration when server will stop accepting new connections and shutting down.
2026-02-09Release awwan v0.13.1 (2026-02-09)v0.13.1Shulhan
**๐ŸŒผ 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.
2026-02-09go.mod: update all dependenciesShulhan
This update affect the [ciigo.Serve] call in internal/cmd/www-awwan.
2026-02-08internal: include the robots.txt from _wui/doc/ and _wui/ directoryShulhan
The robots.txt in _wui/doc/ is for awwan.org, while in _wui/ is for tour.awwan.org. This remove the unneeded robots.txt from _tour/ directory that we previously assume for tour.
2026-02-06all: improve the Server-Sent Events (SSE) outputShulhan
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.
2026-02-06all: use space log prefix instead of dummy dateShulhan
Using dummy date make the test output hard to read in verbose option, because the program logs mixed with the test logs.
2026-02-06all: use separate buffer for stdout and stderr in TestAwwanLocalShulhan
This is to fix flaky test on TestAwwanLocal.
2026-02-04_wui/doc: use full link for download filesShulhan
This is to prevent the 404 error when the page is viewed from https://kilabit.info/project/awwan/ which cause "/dl/..." relative to domain kilabit.info instead of awwan.org.
2026-02-03_ops/awwan-tour: fix build with latest mkosiShulhan
2026-02-03all: fix data race in tests and [httpServer.ExecuteTail]Shulhan
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.
2026-02-03go.mod: update pakakeh.goShulhan
This fix the IsBinary that return true when file size is less than 1024.
2026-02-03_wui/doc: use default ciigo styleShulhan
The default ciigo style provides consistent style with kilabit.info and have support for light and dark themes.
2026-02-03all: add robots.txt to main and tour sitesShulhan
2026-02-03cmd/awwan: implement socket based activation on serve commandShulhan
The "awwan serve" command now can run based on socket activation under systemd.
2026-02-02internal/cmd/www-awwan: implement socket based activation using systemdShulhan
This allow us to run www-awwan only when its activated in the local environment.
2026-02-02_wui/doc: simplify the license text in READMEShulhan
While at it, replace link on GNU make in the install document because the website for www.gnu.org seems unstable at the moment.
2025-12-27Release awwan v0.13.0 (2025-12-27)v0.13.0Shulhan
[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.
2025-12-27all: update all dependencies and fix linter warningsShulhan
In the internal/, fix the "reuse lint" warnings due to embedded SPDX headers string that contains "\n" considered as invalid. Realign struct Statement based on fieldaligment check.
2025-10-03go.mod: update all dependenciesShulhan
2025-10-03all: add option "$noparse" for magic "#put" commandShulhan
The "$noparse" option allow copying file without reading and parsing the input file.
2025-06-29all: add task to deploy www-awwan from webhookShulhan
2025-06-29go.mod: update all dependenciesShulhan
This commit also test WebHook on SourceHut.
2025-04-19go.mod: update all dependenciesShulhan
2025-02-08Release awwan v0.12.3 (2025-02-08)v0.12.3Shulhan
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.
2025-02-08all: another fix for integration testsShulhan
In the mkosi 25.3 the environment variable $MKOSI_UID now using subuid, which return 0 if we have subuid "<user>:100000:65536". The mkosi.nspawn is not imported to the build directory, so we need to copy it from source.
2025-02-07internal/cmd/gocheck: internal lintersShulhan
The fieldalignment and shadow is a linter from golang.org/x/tools. This program actually have an API that can be used. The pakakeh.go/lib/goanalysis wrap those APIs into a single function call that can be run inside a main. This minimize and simplified our tools dependencies.
2025-02-07go.mod: update all dependenciesShulhan
2025-01-12all: update all dependenciesShulhan
2025-01-12all: update machine container setup with latest ArchShulhan
The latest mkosi use importctl instead of machinectl to import the image. There is an issue in mkosi.conf where build with Format=tar always get compressed using zstd, but importctl unable to import it, so we need to set CompressOutput=false. The home directory mode needs to be set to open 0755, because now its default to 0700, which makes the test failed to read file on others user's home. The pacman mirror changes to public one that is always available, geo.mirror.pkgbuild.com. The BUG_REPORT_URL in os-release for Arch changes which we need to modify because its included in the test-container.
2025-01-12go.mod: update all dependenciesShulhan
This changes remove the replace module and back to upstream. Maintaining fork is not easy and take a lot of time. As we seen in crypto fork, we are 10 minor version behind upstream.
2025-01-12make: replace linter golangci-lint with "go vet"Shulhan
We are not happy with this linter, it create an illussion of works rather than fixing real issues. The golangci-lint does not works on gotip and its become red herring and subjective rather than correctness.
2024-09-08Release awwan v0.12.2 (2024-09-08)v0.12.2Shulhan
=== 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".
2024-09-08_wui: update wui submodule URLShulhan
The wui submodule has been renamed to "pakakeh.ts".
2024-09-08all: replace licensing format to REUSE.tomlShulhan
Using ".reuse/dep5" has been deprecated since REUSE v3.2.0.
2024-09-08go.mod: update all dependenciesShulhan
2024-09-08_AUR: update gitignore and PKGBUILDShulhan
Move the local source to the bottom to help use test build on local easily.
2024-09-08all: fix linter warningsShulhan
2024-04-06Release awwan v0.12.1 (2024-04-05)v0.12.1Shulhan
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.
2024-04-06all: comply with linter recommendationsShulhan
2024-04-06all: update module "pakakeh.go" to latest releaseShulhan
2024-03-22_ops: use shared mkosi cache in user's home ".cache"Shulhan
This is to minimize duplicate files and allow us to find or grep files without excluding certains directory.
2024-03-22_wui: use shared static assets from Cloud StorageShulhan
The idea is to minimize noise in the logs that does not related to page access and minimize binary size.
2024-03-22all: replace module "share" with "pakakeh.go"Shulhan
The "share" project has been moved to SourceHut with new name "pakakeh.go".
2024-02-08Release awwan v0.12.0 (2024-02-08)v0.12.0Shulhan
=== Breaking changes * all: refactoring "env-set" arguments Previously, the "env-set" take the file argument as the last argument and optional. This changes move the file argument to the first argument so the bash completion can detect and print the completion for list of keys. While at it, fix handling key with quoted in EnvSet and EnvGet. * all: refactoring env-get command This changes the order of arguments of env-get command to pass the directory first before the key. The reason is to simplify auto-completion later from the command line. === New features * all: add command env-keys The "env-keys" command print list of environment variables under a directory. This command is internal, not documented, used by bash completion. * all: add bash completion script Using awwan from CLI now can automatically complete the arguments based on the command and current parameter number.