Skip to content
This repository was archived by the owner on May 9, 2026. It is now read-only.

feat: agent 0.12.13 (wizard: saved-key chip, OpenRouter label, fix empty-string key wipe)#96

Merged
protosphinx merged 1 commit into
mainfrom
proto/wizard-polish
Apr 22, 2026
Merged

feat: agent 0.12.13 (wizard: saved-key chip, OpenRouter label, fix empty-string key wipe)#96
protosphinx merged 1 commit into
mainfrom
proto/wizard-polish

Conversation

@protosphinx
Copy link
Copy Markdown
Contributor

Summary

  • "OpenRouter (100s of models)" label gone. Misleading after 0.12.12's curated-top-10 trim. Now reads just "OpenRouter", matching the other provider option labels.
  • Saved API-key fields are visually marked. A green "✓ saved" chip sits next to the field label and the input gets a tinted green border + mint-tinged background. Empty slots stay neutral so the form scans for which providers still need a key.
  • saveConfig() no longer wipes shared-keys.json. Latent bug: when a caller passed a full Config through saveConfig (notably loadConfig's fresh-install branch, which parses schema defaults like anthropicApiKey: ''), every empty-string shared-key field was routed into saveSharedKeys and silently overwrote any real keys on disk. Now empty strings are filtered out of the split. Callers that legitimately need to clear a key should call saveSharedKeys directly.

Test plan

  • pnpm run typecheck clean
  • pnpm run build clean
  • node scripts/smoke-normalize-model.mjs 23/23 pass
  • Headless preview: populate shared-keys.json, GET /, verify 2 .row.is-set + 2 <span class="badge-set"> appear and OpenRouter (100s of models) no longer in output
  • User eyeball: "saved" chip reads as intended, cramping resolved

🤖 Generated with Claude Code

…pty-string key wipe)

- OpenRouter provider option is just "OpenRouter" now, not "(100s of models)"
  which was misleading after 0.12.12's curated-top-10 trim.

- Populated API-key fields show a green "saved" chip + tinted input,
  so the eye can scan which providers already have a key without
  reading every hint line. Empty slots stay neutral.

- saveConfig() no longer wipes shared-keys.json with empty-string
  defaults. When a caller passed a full Config (notably loadConfig's
  fresh-install branch) through saveConfig, every empty-string shared
  key field was routed into saveSharedKeys and silently overwrote
  the user's real keys. Now empty strings are filtered out of the
  split; callers that legitimately need to clear a key must call
  saveSharedKeys directly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@protosphinx protosphinx merged commit 9b3cfd9 into main Apr 22, 2026
2 checks passed
@protosphinx protosphinx deleted the proto/wizard-polish branch April 22, 2026 14:36
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant