Manual disable/enable provider button (persistent across reboot) + cooldown recovery
Adds a per-provider Disable/Enable button to the rotations page for both admin
and users, exposing a manual disable that — unlike the failure cooldown — never
auto-expires and persists across reboots.
- providers/base.py: manual_disable()/manual_enable()/is_manually_disabled();
manual disable takes precedence in is_rate_limited(); manual_enable() also
clears any cooldown and resets the failure budget. Source of truth is the
database (mirrored to cache as a fast path) so state survives restarts and
cache flushes. Also: when a failure cooldown elapses, the provider is
reactivated with a fresh failure budget instead of a hair-trigger.
- database.py: dedicated provider_manual_disabled table (+migration) and
get/set/clear helpers, user-scoped so a user's toggle never affects others.
- dashboard: manual-disable / manual-enable / bulk manual-status endpoints; the
rotations pages render and toggle the button state.
Bump to 0.99.73.
Co-Authored-By:
Claude Opus 4.8 <noreply@anthropic.com>
Showing
Please
register
or
sign in
to comment