You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Completes M4's S5. Adds `internal/secrets/keyring.go`:
- `Keyring` interface + `OSKeyring` (zalando/go-keyring: Secret Service / Keychain
/ Credential Manager, namespaced "devstack") + `MemKeyring` fallback;
- `KeyringAvailable` probes by round-tripping a sentinel — any failure (notably
WSL2 without D-Bus) → false;
- `CredentialFor` resolves a provider credential in spec order: explicit env
(`DEVSTACK_<PROVIDER>_TOKEN`) → managed keyring entry → "" (provider-native
default). Providers (S3/S4) will consume this.
CLI: real `secrets login|logout|status` (replacing the stub). `login` stores a
credential via `--token`; on a keyring-less host it DEGRADES — warns, names the
env var to set, exits 0 (tool keeps working). `status` reports keyring
availability + per-provider source (env|keyring|none). An `openKeyring` seam makes
both branches deterministically testable.
All new deps (go-keyring, godbus, wincred) are pure-Go → CGO_ENABLED=0 build
intact. govulncheck: only local go1.26 stdlib advisories (N/A to CI's Go 1.25.x);
no module-level findings against the new deps.
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
0 commit comments