bdac5c8e2e
ToolsetConfigPanel threads its profile scope into every fetch but rendered VoiceProviderFields without it, and the fields were hard-wired unscoped — configuring profile B's TTS from the Capabilities selector read and autosaved profile A's whole config record. New capability-scoped saveHermesConfigRecord (symmetric with getHermesConfigRecord), profile prop threaded through, per-scope cache write-through. Unscoped callers (Settings → Voice) unchanged.