v2: providers settings page#1108
Merged
Merged
Conversation
Build out a v2 Setup → Providers page that wraps the existing
GET/PUT /api/v1/settings/providers endpoints. Mirrors the v1 admin
form's "leave blank to keep" UX for secrets and PEM certificates,
but adopts the shadcn/Tailwind layout used elsewhere in the v2 SPA.
- Plaid card: client_id / secret / env / webhook URL form with zod
validation. Test-connection button hits the existing
/providers/{name}/test probe. Env-locked deployments collapse to
a read-only summary.
- Teller card: same shape plus dual PEM file pickers (cert + key)
with client-side pairing check and a heads-up Alert when
ENCRYPTION_KEY isn't set on the server (cert storage would fail).
- CSV card: always-available, links into /connections.
- Disable button per provider with an AlertDialog confirmation,
wired to DELETE /api/v1/providers/{name}.
Adds has_encryption_key to providerConfigResponse so the SPA can
warn before a cert upload that the server-side preflight would
reject (length-0 ENCRYPTION_KEY currently returns 500
ENCRYPTION_KEY_MISSING from UpdateTellerConfigHandler).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
# Conflicts: # web/src/lib/nav.ts # web/src/main.tsx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
GET/PUT /api/v1/settings/providersso the SPA gets the same provider configuration UX as the legacy admin form, but with the shadcn/Tailwind design used everywhere else in/v2./sync/health/providers.DELETE /api/v1/providers/{name}.has_encryption_keytoproviderConfigResponseso the Teller card can warn the user before a cert upload that would 500 withENCRYPTION_KEY_MISSINGserver-side.Why a new page instead of nesting in the existing Settings modal
The legacy admin UI had a real
/settings/providersroute that handled cert uploads, env-var-locked deployments, and webhook setup hints. None of that fits cleanly into a modal sheet, and a "provider configuration" surface is also reasonably the first thing a brand-new install lands on. Putting it under the Setup sidebar group puts it next to Connections / Account links, which is where the work actually flows.Build tag note
No new Go files — only an additive field on
providerConfigResponseininternal/api/provider_config.go. The integration tests ininternal/api/provider_config_integration_test.godecode into the same struct, so they keep compiling/passing.Test plan
bun run build— cleango vet ./...andgo build ./...— cleanbun run validate /v2/providers(see screenshot)PUT /api/v1/settings/providers/plaidfrom the SPA against a non-env-var deploymentENCRYPTION_KEYset🤖 Generated with Claude Code