gmutils v0.5.0
[0.5.0] - 2026-04-20
Major release following the workspace-wide migration to the h3x
ecosystem and the introduction of the dhttp-home identity model.
Compared to v0.4.2, identity management, the DNS stack, several CLI
shapes, and the crate layout have all changed.
Added
genmeta-identitycrate — the sole entry point for managing
identities (genmeta identity create | apply | renew | list | info | default). Talks to the certificate server over DHTTP/3 with TLS
certificate pinning. Supports--captchaand theCERT_SERVER_URL
environment variable for non-interactive enrollment and renewal.
Displays key usage and extended key usage, and manages the default
identity explicitly.dhttp-homeas a first-class dependency — a DHTTP home holds
many identity homes.genmeta identityis the only writer; every
other tool discovers identities from the same home.- Unified identity-lookup convention across every tool —
-i/--id <name>accepts either a partial or fully qualified name
(expanded viaName::try_expand_from), otherwise the default
identity is used.--anonymousskips identity loading entirely.
TheGENMETA_HOMEenvironment variable selects an alternate home. genmeta-proxycrate — a new HTTP/1.1 forward proxy. Routes
.genmeta.nethosts over DHTTP/3, tunnelsCONNECTover TCP,
supports--daemon/--log, TCP keepalive, a connection cap, and a
header read timeout. Defaults to dual-stack[::]:16080.genmeta-accesscrate — identity-scoped access rules persisted
in SQLite (replaces the former standalonefirewall-binCLI).xtaskcrate — packaging pipeline using
dpkg-buildpackage+debhelper, cross-compiling to multiple
targets in parallel with mounted cargo caches.--sibling
bind-mounts sibling workspaces for integrated builds.- Dynamic interface rebinding in
curl,ssh,nslookup,
proxy, anddiscoverviawatch_bind_interfaces, stabilised by
identity_keyso stable endpoints survive interface churn. - Minor CLI features —
curl -4/-6address-family selection;
sshnative raw mode with SIGWINCH resize forwarding;genmeta natresolves its STUN server via gmdns instead of a hard-coded
address.
Changed
- Workspace-wide migration to the
h3xecosystem (Network +
QuicEndpoint API), replacing the previoush3/gm-quicstack.
dquicis re-exported throughh3x::dquic. - Default DNS resolver:
http→h3, with a system-resolver
fallback. - SSH URI scheme:
ssh3://→https://. - Terminology sweep:
HTTP/3→DHTTP/3across the codebase. - Identity CLI flags:
--domain/--domains→--suffix/--identities;
the.genmeta.netsuffix is hidden in display output. genmeta-commonreorganised intobind/dns/id/
h3-clientfeatures, withbon-based builder APIs for h3 client
setup.- A custom root CA (project
root.crt) is merged with the system
trust store instead of replacing it. - Structured error types across
curl,ssh,nslookup,nat,
discover, andidentity:Whateverreplaced by namedError
enums, withsnafu::Reportfor consistent error rendering.
Removed
genmeta-profilecrate — identity modelling has moved into
dhttp-homeplusgenmeta-identity.genmeta-ssh3crate — renamed togenmeta-sshalongside the
URI-scheme change.- The system DNS resolver helper in
genmeta-common. - The
STUN_SERVERenvironment variable. - The legacy buildx / Makefile packaging — superseded by
xtask.
Fixed
- Certificate-server client now enforces TLS certificate pinning.
- Proxy: rewrites upstream HTTP/3 responses to HTTP/1.1 before
forwarding; uses the low-levelh3API for correct stream
lifecycle management. - SSH: defers
connection.close()while forwarding tasks are still
active; moved stdin reads to a dedicated thread; PTY/flush fixes
via updatedgenmeta-ssh-core. - Removed panic risks from
unwrap/expecton dynamic data paths. - TTY detection gates ANSI colouring in
tracingoutput so logs stay
clean when redirected.
Dependencies
- All git dependencies are pinned to specific revisions:
gmdns,
rankey,firewall-base/-db/-migration, andgenmeta-ssh-core. dhttp-hometracksbranch = "main"to stay unified with the
transitive usage fromfirewall-db;Cargo.lockstill locks it
to a specific commit.h3xis pulled once: the direct dependency tracksmainover
https://, with a[patch."https://github.com/genmeta/h3x.git"]
redirect tossh://at a fixed revision. This unifies the direct
dependency with transitiveh3xuses fromgmdnsand
genmeta-ssh-core, so exactly one copy is compiled.h3xis the only git dependency overhttps://; everything else
usesssh://.
Components
genmetav0.5.0genmeta-commonv0.2.0genmeta-curlv0.4.0genmeta-discoverv0.2.0genmeta-doctorv0.2.0genmeta-natv0.2.0genmeta-nslookupv0.2.0genmeta-sshv0.5.0 (formerlygenmeta-ssh3)genmeta-identityv0.1.0 (new)genmeta-accessv0.1.0 (new)genmeta-proxyv0.1.0 (new)
Policy
- Starting with v0.5.0, this CHANGELOG is written in English and
follows Keep a Changelog.