Skip to content

fix(voices): always render the "More voices" door on voice surfaces (#472)#476

Merged
rosscado merged 1 commit into
mainfrom
fix/472-pi-more-voices-door
Jul 2, 2026
Merged

fix(voices): always render the "More voices" door on voice surfaces (#472)#476
rosscado merged 1 commit into
mainfrom
fix/472-pi-more-voices-door

Conversation

@rosscado

@rosscado rosscado commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Why

Founder tasting feedback on Patch A (#470): pi.ai shows no "More voices" row in either the in-chat dropdown or Pi's Voice settings grid, so there is no discoverable path from Pi to the extension's voice catalog. The door was gated on curated.hiddenCount > 0, and Pi's 3-voice catalog fits under the cap of 5 — so the gate never opened.

What

The door's meaning has shifted from overflow marker to navigation affordance, so it now renders unconditionally:

  • Base VoiceSelector: new showsMoreVoicesDoor() hook (defaults to "yes on capped surfaces"); both the capped and uncapped populate branches consult it instead of hiddenCount.
  • PiVoiceSettings (uncapped grid) opts in via the hook — its grid stays uncapped, but ends with the door.
  • ClaudeVoiceMenu appends its door row unconditionally (previously only when the catalog exceeded the cap of 6 — invisible in practice today, since Claude serves 10 voices, but now guaranteed).

Idempotency is unchanged: addMoreVoicesDoor still reuses an existing door node on repeated populates.

Tests (fail-first)

Flipped the two "omits the door when the catalog fits the cap" expectations (Pi dropdown, Claude menu) and added a PiVoiceSettings door suite (door present in uncapped grid + no duplication on repeated populates). All 4 failed before the fix; full npm test gate green after.

Closes #472

🤖 Generated with Claude Code

https://claude.ai/code/session_012DZR4Vp9B1RiKVrkfYiM1o

…472)

The door was gated on the shortlist actually hiding voices, so Pi (3
voices, cap 5) never showed it anywhere — leaving no path from pi.ai to
the extension's voice catalog. The door is a navigation affordance, not
an overflow marker: render it unconditionally on capped surfaces (Pi
dropdown, Claude menu) and opt Pi's uncapped settings grid in via a new
showsMoreVoicesDoor() hook.

Closes #472

Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_012DZR4Vp9B1RiKVrkfYiM1o
@rosscado rosscado merged commit 3e6f7db into main Jul 2, 2026
2 checks passed
@rosscado rosscado deleted the fix/472-pi-more-voices-door branch July 2, 2026 21: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.

Pi voice menu and voice settings never show the "More voices" door

1 participant