一键导入
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 页面并帮你完成安装。
基于 SOC 职业分类
{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.
| 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.