원클릭으로
voice-selection-persistence
Protect persisted voice selections when async voice lists reload or the active TTS engine changes.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Protect persisted voice selections when async voice lists reload or the active TTS engine changes.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
{what this skill teaches agents}
Validate Squad avatar regressions with alias-resolution probes and source assertions around reset paths.
Use stable agent identity fields for metadata joins and reserve instance ids for runtime bookkeeping.
Render live sub-agent badges from resolved identity, current model, and active work state.
Replay extension state only after the webview page declares its own ready flag.
Keep avatar window chrome and topmost behavior driven by one explicit rule.
SOC 직업 분류 기준
| name | voice-selection-persistence |
| description | Protect persisted voice selections when async voice lists reload or the active TTS engine changes. |
| domain | testing, extension-ui |
| confidence | high |
| source | earned |
Use this when CopilotAvatar changes touch speech settings, per-engine voice pickers, or any async refresh of selectable voices. The failure mode is sneaky: persistence code can look correct while a loading placeholder quietly overwrites the saved selection before the real options arrive.
.github/extensions/copilot-avatar/main.mjs merges new settings over the existing .tts-settings.json payload, so per-engine voice fields can persist together..github/extensions/copilot-avatar/content/main.js can expose populateElevenLabsVoices(voices, { placeholder, preserveSelection }) so Loading ElevenLabs voices... does not overwrite elevenlabsVoice..github/extensions/copilot-avatar/content/main.js should not let populateElevenLabsVoices([], { placeholder: 'Loading...' }) clear elevenlabsVoice before the fetched list arrives..github/extensions/copilot-avatar/content/main.js engine-change handling should preserve voice, voxtralVoice, and elevenlabsVoice while only changing engine.populateElevenLabsVoices function into a fake-select harness and assert that voice-b survives the Loading... placeholder phase before the real ElevenLabs list restores the matching option.