<feed xmlns='http://www.w3.org/2005/Atom'>
<title>pakakeh.go, branch v0.62.0</title>
<subtitle>Collections of packages and tools for working with Go programming language.</subtitle>
<id>http://git.kilabit.info/pakakeh.go/atom?h=v0.62.0</id>
<link rel='self' href='http://git.kilabit.info/pakakeh.go/atom?h=v0.62.0'/>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/'/>
<updated>2026-04-04T07:15:04Z</updated>
<entry>
<title>Release pakakeh.go v0.62.0 (2026-04-04)</title>
<updated>2026-04-04T07:15:04Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-04-04T07:11:24Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=d5810b984fe683f9aaee63e7242a77bb0f831274'/>
<id>urn:sha1:d5810b984fe683f9aaee63e7242a77bb0f831274</id>
<content type='text'>
== cmd/httpdfs

🌱 Add option to set base path and shutdown idle duration

The -base-path option set the URL prefix for serving HTTP request.

The -shutdown-idle option set the duration when server will stop
accepting new connections and shutting down.

== lib/dns

🪵 lib/dns: refactoring DoT and DoH to use address instead of port

Using port makes the IP address of DNS-over-TLS (DoT) and DNS-over-HTTPS
(DoH) listen on the same address with UDP. If we set ListenAddress to
0.0.0.0 and TLS termination is handled by proxy, this cause DoT and DoH
will also listen on all addresses (the ports open to public).

== lib/http

🌱 Add BasePath to the ServerOptions

The BasePath allow server to serve HTTP from custom prefix, other than
"/".

Each request that server received will remove the BasePath first from
the [http.Request.URL.Path] before passing to the handler. Each redirect
that server sent will add the BasePath as the prefix to redirect URL.

Any trailing slash in the BasePath will be removed.

🌱 Implement server auto shutdown when idle

In the ServerOptions, we add option ShutdownIdleDuration when set to
non-zero value it will start a timer. When the timer expired, the server
will stop accepting new connection and then shutting down.

This allow de-activating HTTP server when no connections received after
specific duration to reduce the system resources.

🌼 lib/http: fix possible data race in SSE connection

When server’s handler call Write or WriteRaw, there is possibility that
the worker for keeping the connection alive also call Write at the same
time, which cause the data race.

== lib/paseto

🪵 Move paseto v2 under sub directory "v2"

There are new versions of paseto standard: version 3 and version 4. To
minimize conflicts in the future, we move the old implementation of
paseto v2 to sub directory "v2" with package name "pasetov2".

🌱 lib/paseto/v4: new package that implements Paseto version 4

paseto/v4 provides a simple, ready to use, opinionated implementation of
Platform-Agnostic SEcurity TOkens (PASETO) version 4 as defined in
[paseto-v4].

[paseto-v4]: https://github.com/paseto-standard/paseto-spec/blob/master/docs/01-Protocol-Versions/Version4.md

== 🌱 lib/uuidv7

New package that implements UUID version 7.

The uuidv7 package provides type UUIDv7 as the container for UUID
version 7 that satisfy the [database/sql], [encoding/gob], and
[encoding/json].

The implementation follow RFC 9562.
</content>
</entry>
<entry>
<title>paseto/v4: realign struct in test</title>
<updated>2026-04-03T19:33:58Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-04-03T19:33:58Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=b68f5ededb9a3198c2e0a622c4e2c43a0aca97bc'/>
<id>urn:sha1:b68f5ededb9a3198c2e0a622c4e2c43a0aca97bc</id>
<content type='text'>
This fix the following error detected by gocheck,

  public_mode_test.go:45:16: struct with 288 pointer bytes could be 264
</content>
</entry>
<entry>
<title>lib/uuidv7: detect nil value on Scan</title>
<updated>2026-04-03T19:32:01Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-04-03T19:30:09Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=fd54f7be5969204b6845c4aa7dd332d31c96c59f'/>
<id>urn:sha1:fd54f7be5969204b6845c4aa7dd332d31c96c59f</id>
<content type='text'>
Column with NULL value will returns no error but zero UUID.
</content>
</entry>
<entry>
<title>paseto/v4: allow empty Footer and empty data in Payload</title>
<updated>2026-04-01T15:12:13Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-03-31T23:22:48Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=f18f08e554ed9f93f31641d974448923099ac892'/>
<id>urn:sha1:f18f08e554ed9f93f31641d974448923099ac892</id>
<content type='text'>
If the footer is empty then the message will be unpacked with its own
public key, instead of sender public key.
</content>
</entry>
<entry>
<title>lib/paseto: move [Message.Unpack] to [v4.UnpackPublicToken]</title>
<updated>2026-03-31T11:52:39Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-03-31T11:52:39Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=5a1b6fd3753653b74577c7992b341a011a0ec416'/>
<id>urn:sha1:5a1b6fd3753653b74577c7992b341a011a0ec416</id>
<content type='text'>
Unpacking v4 public protocol on parent package seems wrong.
Only v4 package should know how to unpack it regarding the available
fields in the Message.
</content>
</entry>
<entry>
<title>lib/paseto: update v4 package doc and mark v2 as deprecated</title>
<updated>2026-03-30T14:07:31Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-03-30T14:07:14Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=d7e1ab3ddd7515b2257fb990850e7e7b9157beaf'/>
<id>urn:sha1:d7e1ab3ddd7515b2257fb990850e7e7b9157beaf</id>
<content type='text'>
The paseto/v4 now can replace the previous paseto/v2 package.
</content>
</entry>
<entry>
<title>lib/paseto: make the DriftSeconds changeable</title>
<updated>2026-03-30T14:07:31Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-03-30T12:39:23Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=9f5269f7a3b6956e257b415af67094738d2ba88a'/>
<id>urn:sha1:9f5269f7a3b6956e257b415af67094738d2ba88a</id>
<content type='text'>
This is to make user can increases or decreases the leeway during
Payload Validate.
</content>
</entry>
<entry>
<title>lib/paseto: rename the field Public and Private in Peer</title>
<updated>2026-03-30T14:07:31Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-03-30T12:38:32Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=7af6aa612bc60df120d7580c9e436b24d2326394'/>
<id>urn:sha1:7af6aa612bc60df120d7580c9e436b24d2326394</id>
<content type='text'>
</content>
</entry>
<entry>
<title>lib/paseto: add unit tests for Payload and Message types</title>
<updated>2026-03-30T14:07:31Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-03-30T12:23:29Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=61a44bf239f5545080af83f890d488ceaf257a80'/>
<id>urn:sha1:61a44bf239f5545080af83f890d488ceaf257a80</id>
<content type='text'>
</content>
</entry>
<entry>
<title>paseto/v4: embed the Peer inside the PublicMode</title>
<updated>2026-03-30T10:06:21Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-03-30T10:06:21Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=6e3d2f12d6617a6caa45b4a2eeec2dc54aa8d17a'/>
<id>urn:sha1:6e3d2f12d6617a6caa45b4a2eeec2dc54aa8d17a</id>
<content type='text'>
This provides simple operation when working with Pack and Unpack.
</content>
</entry>
</feed>
