Skip to content

feat(core): replace expired Vercel Gateway keys - #4

Draft
pcomans-bot wants to merge 1 commit into
vercel-gateway-signinfrom
vercel-key-replacement
Draft

pcomans-bot wants to merge 1 commit into
vercel-gateway-signinfrom
vercel-key-replacement

Conversation

@pcomans-bot

@pcomans-bot pcomans-bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Collaborator

Issue for this PR

Split from anomalyco#59456 (part 3 of 3).

Depends on #3, which builds on anomalyco#59729. This draft targets the sign-in feature branch so only key replacement appears in the diff; upstream submission is queued until Vercel sign-in lands.

Type of change

  • Bug fix
  • New feature
  • Refactor / code improvement
  • Documentation

What does this PR do?

Builds on Vercel sign-in from part 2. Adds replaceCredentialID to update an existing connection after successful authorization. Expired or rejected Vercel keys expose Replace key, with the previous team/name/expiration prefilled. Connection ID, label, active selection, and model preferences are preserved; cancellation or failed sign-in keeps the old key.

Expiry monitoring and Gateway 401 responses mark a key for replacement. Billing and permission errors do not. OAuth client configuration remains required; its default is REPLACE_ME.

How did you verify your code works?

  • Automated checks on this branch: 37 core tests passed, covering cancellation, denied authorization, expiry, 401 handling, replacement identity/preferences, and foreign-integration credentials.
  • Six app browser component tests and 14 TUI tests passed.
  • Full repository bun run check passed.

Manual verification covered the combined implementation: @pcomans tested setup and model availability on macOS before the split and before the temporary OAuth client ID was removed. This split PR has not been manually tested end to end.

Visual

<svg xmlns="http://www.w3.org/2000/svg" width="240" height="72" viewBox="0 0 240 72"><style>@media(prefers-reduced-motion:no-preference){.done{animation:pulse 3s infinite}}@keyframes pulse{0%,100%{opacity:.4}50%{opacity:1}}</style><g fill="none" stroke="currentColor" stroke-width="1.5"><rect x="4" y="14" width="62" height="44" rx="7"/><path d="M76 36h24m-6-6 6 6-6 6"/><rect x="108" y="14" width="62" height="44" rx="7"/><path d="M180 36h18m-6-6 6 6-6 6"/><circle cx="218" cy="36" r="16" opacity=".4"/><path class="done" d="m210 36 6 6 11-13"/></g><g fill="currentColor" font-family="sans-serif" font-size="9" text-anchor="middle"><text x="35" y="39">Expired</text><text x="139" y="39">Replace key</text></g></svg>

Screenshots / recordings

Replace an expired key

Checklist

  • Automated tests and checks passed locally on this branch
  • I have not included unrelated changes in this PR

@pcomans-bot
pcomans-bot force-pushed the vercel-gateway-signin branch from 7fb9d81 to f7a92c7 Compare October 27, 2026 21:13
@pcomans-bot
pcomans-bot force-pushed the vercel-key-replacement branch from 3ecba75 to 0c7a0d4 Compare October 27, 2026 21:13
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