Skip to content

feat: add Task Scheduler tab (browse, classify, enable/disable) - #1085

Merged
laurentiu021 merged 1 commit into
mainfrom
feat/task-scheduler
Jun 26, 2026
Merged

laurentiu021 merged 1 commit into
mainfrom
feat/task-scheduler

Conversation

@laurentiu021

@laurentiu021 laurentiu021 commented Jun 26, 2026 •

Copy link
Copy Markdown
Owner

What

Implements Task Scheduler Manager (System group), replacing its WIP placeholder. Closes #334.

Browse Windows scheduled tasks and turn them on/off, color-coded by type.

How

  • TaskSchedulerService — the ScheduledTasks PowerShell module via IPowerShellRunner:
    • Get-ScheduledTask for the fast full list (typed objects, stable integer State enum — no schtasks.exe CSV/localization fragility).
    • Get-ScheduledTaskInfo lazily on selection (it's a per-task call — not run for all ~200 up front).
    • Enable/Disable-ScheduledTask to toggle.
  • Reversible & non-destructive — disabling sets State=Disabled; the task stays registered. No Unregister-ScheduledTask anywhere — the UI cannot delete a task.
  • Verify-by-readback — admin-denied failures surface on the PS error stream (not as a throw), so after a toggle the service re-reads the task's State and reports success only if it actually changed.
  • ClassifyTask (pure, unit-tested) — small conservative heuristic: known telemetry folders (Compatibility Appraiser / CEIP / Feedback / Error Reporting / DiskDiagnostic) → Telemetry; other \Microsoft\Windows\ or Microsoft-authored → System (caution); rest → Third-party.
  • TaskSchedulerViewModel — filter by name/path, hide-system toggle, color-coded grid, enable/disable with a confirmation that warns for System tasks and names the reversibility.

Preview

Marked PREVIEW (sidebar pill + banner).

Tests

  • TaskSchedulerServiceTests — ClassifyTask across telemetry folders, the Autochk\Proxy special case, "other Microsoft task = System not Telemetry", third-party, null path.
  • ScheduledTaskInfoTests — IsEnabled, FullPath, CategoryLabel, IsSystem, run-display dashes.
  • Integration: NavLeaf_TaskScheduler_IsImplementedAndMarkedPreview.

Verification

  • Build main + unit + integration: 0/0. No delete/Unregister, no MessageBox, specific exceptions only.
  • README + ARCHITECTURE updated (counts 45→46 implemented / 12→11 WIP). feat: -> minor 1.40.0.

Implements Task Scheduler Manager (replaces its WIP placeholder in System).
Closes #334.

- TaskSchedulerService: ScheduledTasks PowerShell module via IPowerShellRunner
  (Get-ScheduledTask for the fast list, Get-ScheduledTaskInfo lazily on
  selection, Enable/Disable-ScheduledTask to toggle). Disabling is reversible
  and NEVER deletes a task — there is no Unregister anywhere. Each toggle is
  verified by reading the task's State back, so a missing-admin failure (which
  surfaces on the PS error stream, not as a throw) is reported honestly.
- Pure ClassifyTask heuristic: a small, conservative telemetry-folder list
  (Compatibility Appraiser / CEIP / Feedback / Error Reporting / DiskDiagnostic)
  → Telemetry; other \Microsoft\Windows\ or Microsoft-authored → System; rest →
  Third-party. Unit-tested incl. the "other Microsoft task is System not
  telemetry" guard.
- TaskSchedulerViewModel: filter by name/path, hide-system toggle, color-coded
  list, enable/disable with a confirmation that WARNS for system tasks.
- Marked PREVIEW. TaskName/TaskPath always passed as bound parameters.
@laurentiu021
laurentiu021 merged commit aa18409 into main Jun 26, 2026
4 checks passed
@laurentiu021
laurentiu021 deleted the feat/task-scheduler branch June 26, 2026 15:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Enhancement]: System — Task Scheduler Manager (browse, toggle, color-coded)

1 participant