A small release headlined by composable multi-profile support, plus a friendlier Proton Pass error when your session is locked.
Added
Compose multiple active profiles (#605) -- @gaojunran
You can now activate more than one profile at a time as an ordered overlay stack. The top-level config is the base, and each profile is layered on top in order, with later profiles overriding earlier ones on key conflicts.
# Repeatable flags
fnox -P aws -P prod exec -- ./app
# Comma-separated
fnox -P aws,prod exec -- ./app
# Environment variable
FNOX_PROFILE=aws,prod fnox exec -- ./appThe effective config resolves as top-level config + profiles.aws + profiles.prod, and fnox.<profile>.toml files are loaded for each active profile in order. Write commands (set, remove, import, sync, provider add/remove) target the last active profile by default, and the full profile stack is factored into the daemon's request protocol, socket path, and cache key. Library users get a new with_profiles() builder.
Fixed
Proton Pass suggests unlocking a locked session (#612) -- @TyceHerrman
pass-cli reports locked sessions as "Session is locked. Please unlock your session and try again.", but fnox previously fell through to a generic configuration/authentication hint. Locked sessions are now recognized and fnox points you at pass-cli session unlock instead of offering the configured login command. All other Proton Pass error mappings (login, key storage, agent reason, missing fields, missing secrets, generic CLI errors) are unchanged.
New Contributors
- @gaojunran made their first contribution in #605
- @syhol made their first contribution in #614
Full Changelog: v1.30.0...v1.31.0
💚 Sponsor fnox
fnox is maintained by @jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools including 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 jdx.dev. Sponsorships are what let fnox stay independent and the project keep moving.