feat(KB-145): add global pause button to halt all AI engine activity
- Add globalPause setting to core Settings type with default false - Guard scheduler, triage, and auto-merge queue to skip work when globalPause is active - Add pause/play toggle button in dashboard Header with optimistic UI and rollback on failure - Add tests for scheduler, triage, Header, and App global pause behavior - Include minor changeset for the new feature
This commit is contained in:
@@ -75,6 +75,7 @@ export class Scheduler {
|
||||
private running = false;
|
||||
private scheduling = false;
|
||||
private wasWorktreeLimited = false;
|
||||
private wasGlobalPaused = false;
|
||||
private pollInterval: ReturnType<typeof setInterval> | null = null;
|
||||
/** The interval (ms) of the currently active `setInterval` timer. */
|
||||
private activePollMs: number | null = null;
|
||||
@@ -181,6 +182,16 @@ export class Scheduler {
|
||||
// Refresh the poll interval if the persisted setting has changed
|
||||
this.refreshPollInterval(settings.pollIntervalMs);
|
||||
|
||||
// Global pause: halt all scheduling activity
|
||||
if (settings.globalPause) {
|
||||
if (!this.wasGlobalPaused) {
|
||||
schedulerLog.log("Global pause active — scheduling halted");
|
||||
this.wasGlobalPaused = true;
|
||||
}
|
||||
return;
|
||||
}
|
||||
this.wasGlobalPaused = false;
|
||||
|
||||
// Count only in-progress tasks toward the worktree limit.
|
||||
// In-review tasks with worktrees are idle (waiting to merge) and
|
||||
// should not block new tasks from starting.
|
||||
|
||||
Reference in New Issue
Block a user