8000 feat(web): Settings › Secrets, and a Vaultwarden picker beside every secret field by adeelahmad · Pull Request #577 · adeelahmad/lense · GitHub
[go: up one dir, main page]

Skip to content

feat(web): Settings › Secrets, and a Vaultwarden picker beside every secret field - #577

Merged
adeelahmad merged 3 commits into
mainfrom
claude/project-thread-56g82s
Oct 18, 2026
Merged

adeelahmad merged 3 commits into
mainfrom
claude/project-thread-56g82s

Conversation

@adeelahmad
@adeelahmad adeelahmad commented Oct 18, 2026 •
Copy link
Copy Markdown
Owner

Requested by Adeel · project thread

Description

Before: secret fields could refer to Vaultwarden (#550), but only through the API, MCP or the assistant. The web app had no place to set the vault up, and you had to type each reference by hand.

After: Settings › Secrets sets up the vault (its address, Lens's account, the API key and the master password) and has a Test button. It also lists every field that refers to the vault, with whether each was read, linked to that field. Every secret field in Settings gets a From Vaultwarden button once a vault is set up. The button opens a search of the vault's items. Picking a field, or pressing Enter for the first match, fills in the reference. A saved reference shows as "From Vaultwarden · vaultwarden://…", with when it was read or why not. It never shows a value.

How: components/settings/vault-picker.tsx holds the picker and the reference status. SecretsProvider fetches GET /secrets only for sections that have a secret field. SecretSetting gains a saved prop, so it can show a saved reference. A reference is typed as text, not as a password. The Secrets section is part of Security and access, and checks the address before saving.

Motivation and Context

This is the web half of Adeel's secrets manager. The backend is #550.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change; ! in the title)

Checklist:

  • The title is a Conventional Commit.
  • My code follows the code style of this project (tsc, eslint, prettier clean).
  • I added or updated tests: __tests__/settings-secrets.test.tsx has 7 tests: setting up the vault, refusing an address with a password in it, Test and the list of references, a saved reference's status, picking from the vault (only the reference is saved), Enter picks the first item, and no picker without a vault. The settings tests pass (104).
  • My change requires documentation updates, and I have updated docs/ accordingly: docs/secrets.md, README and docs/requirements.md.
  • Users need more than the title to understand it, so I extended the Secrets entry under ## Unreleased in CHANGELOG.md.

Done questions (AGENTS.md)

  • Goal: with feat(secrets): read secret settings from Vaultwarden by reference #550, it delivers the secrets manager, with Vaultwarden as the first provider, end to end. It merges on green.
  • Agents: everything here was already in the API, MCP and the assistant (feat(secrets): read secret settings from Vaultwarden by reference #550). The web app uses the same endpoints.
  • Zero setup: nothing changes until a vault is set up. Without one, there's no picker.
  • Fewest clicks: Replace, then From Vaultwarden, then the field: three clicks, or Enter for the first match. The search has focus when it opens. Saved references link to their fields.
  • Configurable: every secrets.* setting is now editable in Settings › Secrets, with defaults. The folder and the cache time are under More. The setup wizard is unchanged.
  • Light: n/a, there's no new dependency. It's a section and a picker.
  • Private and secure: the picker shows item names and field names, never values. The API key and master password are write-only fields. The threat model was updated in feat(secrets): read secret settings from Vaultwarden by reference #550, and this adds no new surface.
  • Cost: n/a, there are no model calls.
  • User decides: built-in secrets stay the default. A reference is saved only when the person picks it and saves.
  • Upgrades: n/a, the shape of stored data is unchanged.
  • Honest: docs/secrets.md and README move the web UI from Planned to Built. References in sources and MCP servers stay Planned.
  • Tests, docs and generated files updated: n/a for generated files, because the client from feat(secrets): read secret settings from Vaultwarden by reference #550 already has these endpoints.
  • Open: n/a, no new dependency.
  • Reported: "refine later" items stay in docs/secrets.md.
  • Reuse: it uses the existing SecretSetting, SearchInput, settings sections and settingHref.

🤖 Generated with Claude Code

https://claude.ai/code/session_019okSDRfFHV74BTpMzinTFg

…secret field

Settings › Secrets sets up the Vaultwarden vault secret fields can refer
to and tests its sign-in, and lists every field that refers to it with
whether it could be read. Every secret field gets From Vaultwarden, which
lists the vault's items by name and fills in a reference; a saved
reference shows itself and its read status, never a value.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019okSDRfFHV74BTpMzinTFg
#400 shipped in 0.15.0, so make requirements failed on main with it still under In progress.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019okSDRfFHV74BTpMzinTFg
@adeelahmad adeelahmad self-assigned this Oct 18, 2026
…-56g82s

# Conflicts:
#	README.md
#	docs/requirements.md
@adeelahmad
adeelahmad merged commit 4feb0df into main Oct 18, 2026
10 of 11 checks passed
@adeelahmad
adeelahmad deleted the claude/project-thread-56g82s branch October 18, 2026 09:40
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.

2 participants

0