Skip to content

feat: rethink credential storage data model and UX#357

Merged
rianjs merged 35 commits into
mainfrom
feat/356-credential-storage-rethink
Jun 21, 2026
Merged

feat: rethink credential storage data model and UX#357
rianjs merged 35 commits into
mainfrom
feat/356-credential-storage-rethink

Conversation

@rianjs

@rianjs rianjs commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Closes #356.

Summary

  • replace the ambient/default credential-store model with explicit credential locations on profiles and reviewer credentials
  • keep the OS credential manager as a projected, read-only built-in store (local-os) while making every secret-writing flow choose a destination
  • add secrets storage inventory/configuration UX for supported backends, including 1Password desktop discovery with manual fallback
  • remove user-facing label/default-store concepts and use visible codereview/... credential names instead
  • bump the minor version to 0.5

Verification

  • tmux: cr-356-c7 ran go test ./internal/..., credential-store list smoke, obsolete command rejection checks, and explicit destination checks; status 0
  • tmux: cr-356-version ran go test ./..., scripts/verify-package-render.sh, version assertion for 0.5, and top-level CLI tests; status 0
  • focused direct checks: go test ./internal/cmd/credentialcmd, go test ./internal/view ./internal/cmd/configcmd, and go test ./cmd/cr ./internal/version ./internal/cmd/root

rianjs added 8 commits June 20, 2026 16:13
Closes #356

Verified in tmux cr-356-c3: go test ./internal/configedit ./internal/cmd/credentialcmd ./internal/view; go build ./...
Closes #356

Verified in tmux cr-356-c4: go test ./internal/configedit ./internal/cmd/credentialcmd ./internal/view; go build ./...
Update the top-level CLI no-leak fixture to exercise explicit credential stores instead of the removed ambient backend flags.

Closes #356
@rianjs rianjs changed the title Credential storage data model and UX rethink feat: rethink credential storage data model and UX Jun 20, 2026
rianjs added 21 commits June 20, 2026 19:23
Prune unused legacy credential-store helpers and add targeted lint suppressions for non-secret credential names and the 1Password CLI probe.

Closes #356
Keep unavailable root-menu actions out of keyboard focus so disabled rows do not render as active green selections.

Closes #356
Render a short notice before 1Password desktop discovery can trigger external permission prompts.

Closes #356
Render the OS credential store as read-only inventory and keep editable secrets-storage targets limited to configured stores and configure-new actions.

Closes #356
Show discovered 1Password desktop accounts and vaults as dependent fields in the secrets-storage editor instead of one flat account/vault list.

Keep manual account and manual vault fallback paths stable when discovery is incomplete.

Closes #356
Render built-in credential stores as a read-only inventory block and remove the redundant 1Password details section from the secrets-storage editor.

Closes #356
Drop the wrapper heading and routing copy from the desktop 1Password secrets-storage editor while keeping the account context on the vault picker when discovery returns one account.

Closes #356
Use organization and personal 1Password account URL examples in the desktop account URL help text.

Closes #356
Print concise availability lines for built-in OS storage, 1Password desktop discovery, and pass password store probing before opening the secrets-storage editor.

Closes #356
@rianjs rianjs merged commit a3846ba into main Jun 21, 2026
10 checks passed
@rianjs rianjs deleted the feat/356-credential-storage-rethink branch June 21, 2026 18:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Credential storage data model and UX rethink

1 participant