76c063b3d9
The settings page follows the desktop's active-profile switcher, but the provider config calls didn't: no profileScoped() on the client and no profile param on the backend, so a multi-profile desktop edited the serving process's config while every surrounding card showed the selected profile's. Accept ?profile= on both endpoints and resolve inside _profile_scope (the skills/toolsets contract), spread profileScoped() into the two client calls, and key the schema cache on the resolved config_schema.py path instead of the provider name — user-installed plugins are per-profile, so one profile's lookup must never answer for another's.