Releases: nikicat/secrets-dispatcher
Releases · nikicat/secrets-dispatcher
Release list
v0.6.0
v0.5.0
What's Changed
- fix(proxy): track approval requests per-request, not per-sender (#6) by @nikicat in #10
- build: add make install target for the documented from-source flow by @nikicat in #11
- feat(proxy): forward org.freedesktop.Secret.Prompt to the backend by @nikicat in #13
- feat(service): GNOME takeover — provider detection + secrets-only gnome-keyring demotion by @nikicat in #14
- feat: make plain
go installship the full web UI by @nikicat in #15 - docs: onboarding & Ubuntu e2e testing plan by @nikicat in #12
- PR C: reversible trial (try), --dry-run plan, doctor status by @nikicat in #16
- test(e2e): run the Tier-2 GNOME VM against Ubuntu 26.04 too by @nikicat in #17
- Record product demos in the Tier-2 GNOME VM (make demo) by @nikicat in #18
- service: use gopass-secret as the gopass backend (drop legacy standalone) by @nikicat in #19
- fix(notification): don't wedge signal loop on undrained closed channel by @nikicat in #20
- feat(service): colorize try / try --dry-run output by @nikicat in #21
- refactor(e2e): decompose fast.sh into setup + gate functions by @nikicat in #22
- ci(demos): show recordings in the run summary, drop the PR comment by @nikicat in #23
Full Changelog: v0.4.0...v0.5.0
v0.4.0
v0.3.1 — Security follow-ups & AUR packaging
Patch release: hardening follow-ups from the v0.3.0 security review, a dependency security bump, and automated AUR publishing.
Fixes
- Malformed input now fails loudly at the entry point — gpg-sign requests with an empty
commit_objectare rejected with 400 (nothing to sign, nothing to bind the approval display to), and JWTs without ajtiare rejected instead of silently sharing""as a single-use nonce, which would have voided replay protection after the first redemption. - Notification escaping no longer mangles quotes — bodies escape only the markup-significant
& < >, so commit subjects with apostrophes render correctly in dunst/mako/GNOME Shell; the v0.3.0 anti-spoofing property is unchanged.
Security
- golang.org/x/crypto bumped v0.48.0 → v0.54.0, clearing all 13 open Dependabot advisories — mostly in
ssh/ssh/agent(key/agent constraint enforcement,@revokedbypass, U2F presence-check bypass, several DoS vectors), which the SSH agent proxy uses directly.
Packaging
- Releases now publish to the AUR automatically — the release workflow renders the PKGBUILD template, test-builds it in an Arch container, and pushes to the AUR.
workflow_dispatchcan republish an existing tag after a template fix.
v0.3.0 — Security hardening
Security review follow-up: seven findings fixed (see per-commit detail).
Fixes
- GPG signing oracle — the approval prompt/notification/UI now derive the displayed author/committer/message from the exact commit bytes being signed (WYSIWYS); client display fields are discarded.
- Login token amplification — the session cookie is now an independent, revocable server-side session ID (never the master token), and the login link is single-use.
- Batch
GetSecrets— every item in a batch is authorized, not just the first; deny fires on any in-scope item, approve/auto-approve only when all items are covered. - Ephemeral auto-approve — keyed on the non-spoofable invoker
/proc/exe, not the spoofable comm. trusted_signerssilent path — gated on the request arriving through our own gpg-sign thin client, so forged repo/file fields can't obtain a silent signature. Any-ancestorexe_pathmatching (e.g. an editor) is preserved.process.unitmatcher — now matches the caller's real systemd unit (viaGetUnitByPID);namedocumented as advisory (spoofable comm).- Notification markup injection — all client-controlled fields are HTML-escaped in the notification body.
Breaking / behavior changes
- API wire rename:
sender_info.unit_name→sender_info.invoker_name, plus a newsystemd_unitfield. Affects only custom clients of the local API; the bundled web UI is updated. - A daemon restart now invalidates existing browser sessions (in-memory sessions) — re-login required.
unit:trust rules now match the real systemd unit rather than the process comm.
v0.1.3
Changes since v0.1.2
- fix: honor ephemeral auto-approve rules for gpg_sign requests.
HandleGPGSignRequestonly consulted permanent TrustedSigners before falling through to a desktop notification, so "approve and auto-approve" added a rule that never matched subsequent gpg_sign calls. Bursts of signing (e.g. kubelogin rotating its token cache) silently failed any time the user missed a notification within the 5-minute timeout. Manager now exposesCheckAutoApproveRules, and the handler consults it before opening a notification. - fix: strip
" (deleted)"suffix from/proc/PID/exeso trust rules match after package upgrades. Linux appends the suffix to the readlink target when the on-disk binary has been replaced while the process is still running, which silently broke exe-based trust rules for long-running daemons (e.g. EDS) after system updates. - feat: propagate caller context to all upstream D-Bus calls for slow-upstream notifications, so prompts on slow keyring/gpg unlocks identify the triggering client.
v0.1.2
v0.1.1
Changes since v0.1.0
- Add MIT license file
- Add example configuration file
- Add Go Report Card and release badges to README
- Add SECURITY.md, CONTRIBUTING.md, issue templates
- Add search-relevant phrases to README for discoverability
- Add
GO_LDFLAGSvariable to Makefile for distro packaging - Add GitHub Actions release workflow for pre-built binaries
- Update GitHub repo description and topics
- Unpin Deno and Playwright (denoland/deno#32600 fixed)