Worker.callback() now skips parse_body() when plugins.<name>.enabled is
False in persistent_config.ini; the thread and subscription stay up and
history-aware plugins keep recording, so reactivation is instant. The
help plugin implements the (previously stubbed) activate/deactivate
command, restricted to nicks listed in the new "admins" local config key
and refusing to deactivate itself.
Since the gate runs once per delivered message per worker, Config() now
shares one parsed store per process, reloaded only when an ini file's
mtime/size changes. get() no longer merge()s local into the runtime
store - with a shared store that would have leaked credentials into
persistent_config.ini on the next write.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KJp2rEnVtsgbH7FLj3jubx