Disable a provider per rotation, not globally
Previously the Disable button on a rotation flipped a single global
provider_manual_disabled flag: disabling a provider in one rotation removed it
from every rotation, from autoselect, and (before this series) from direct API
calls too. That is not what "disable in this rotation" should mean.
Disabling is now membership in a single rotation, expressed as `enabled: false`
on that provider's entry in the rotation config.
handlers.py: the rotation scan no longer consults the global manual flag. It
skips an entry when `provider.get('enabled') is False` (cheap, before building
the handler), and otherwise skips only on a genuine auto-disable cooldown
(failure threshold / usage limit) via the new _provider_in_availability_cooldown
helper. is_provider_disabled_cheap is no longer used here (import dropped).
Autoselect inherits this since it dispatches through handle_rotation_request.
rotations.html / user_rotations.html: the per-provider toggle flips
`enabled` on that rotation entry and persists just that rotation (full-config
POST for admin, single-rotation POST for DB users), updating only that entry's
button instead of every rotation sharing the provider. The global
manual-status fetch is gone.
The legacy global manual-disable endpoints remain but are now inert for
rotation and direct-call gating.
Co-Authored-By:
Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Showing
Please
register
or
sign in
to comment