A small patch release that makes fnox export actually produce dotenv files, adds a separate shell format for sourceable output, and unbreaks the Windows build introduced by the v1.27.0 daemon.
Fixed
fnox export --format env now emits real dotenv (#554) -- @jdx
The env format was documented as .env/KEY=value but was actually emitting shell export KEY='value' lines, which broke consumers that expect bare assignments. It now produces proper dotenv output:
$ fnox export --format env
NORMAL_SECRET=normal-value
SPECIAL_SECRET="secret$value`tick`"
QUOTED_SECRET="quoted \"value\" with \\ backslash"Simple values are left unquoted; values containing whitespace or special characters are double-quoted with \n, \r, \t, ", and \ escaped. $ and backticks are deliberately left literal so the file round-trips through dotenv parsers.
fnox import was updated to match: double-quoted .env values now have \n, \t, \", and \\ unescaped on the way in, so an export/import round-trip preserves multi-line and quoted secrets.
Windows builds fixed (#555) -- @jdx
The v1.27.0 daemon imported std::os::fd::AsRawFd and tokio::net::Unix{Listener,Stream} at module scope, which broke cargo check on Windows even though the daemon runtime is Unix-only. Those imports and the connection handler are now gated behind #[cfg(unix)], and a cargo check job on windows-latest was added to CI so this can't regress silently.
Added
fnox export --format shell (#554) -- @jdx
A new shell format emits sourceable POSIX export KEY=value statements with proper shell quoting -- this is the behavior the old env format had, now under its correct name:
fnox export --format shell > secrets.sh
source secrets.shDocumentation
Breaking Changes
fnox export --format env output changed from export KEY='value' to KEY=value. If you were sourcing that output in a shell, switch to fnox export --format shell to get the old behavior.
New Contributors
Full Changelog: v1.27.0...v1.27.1
💚 Sponsor fnox
fnox is maintained by @jdx under en.dev — a small independent studio building developer tooling like mise, aube, hk, and more. Keeping fnox secure, maintained, and free is funded by sponsors.
If fnox is handling secrets or config for you or your team, please consider sponsoring at en.dev. Sponsorships are what let fnox stay independent and the project keep moving.