Skip to content

feat(dashboard): expose cron job execution fields - #53551

Merged
teknium1 merged 2 commits into
mainfrom
feat/dashboard-cron-execution-fields
Jun 27, 2026
Merged

feat(dashboard): expose cron job execution fields#53551
teknium1 merged 2 commits into
mainfrom
feat/dashboard-cron-execution-fields

Conversation

@teknium1

Copy link
Copy Markdown
Contributor

Summary

The dashboard cron create/edit flow can now manage the full set of execution fields the scheduler core already supports — provider/model/base_url overrides, script, no_agent, context_from, enabled_toolsets, and workdir — instead of just prompt/schedule/name/deliver/skills.

Salvage of #53478 by @versun, cherry-picked onto current main with authorship preserved, plus a small follow-up that tightens the new form-helper module.

Changes

  • web/src/pages/CronPage.tsx: shared create/edit form (removes the prior narrow-form duplication) with an "Advanced fields" section for the execution fields and profile-scoped model/toolset options.
  • web/src/lib/cron-job.ts: form ⇄ mutation-payload helpers. (Follow-up: collapsed three near-identical optional-text helpers into one + reused splitCronList/asString; behavior-identical.)
  • web/src/lib/schedule.ts: parseScheduleString round-trips a stored schedule back into the structured picker on edit (daily/weekly/monthly/once), with custom as the lossless fallback.
  • web/src/lib/api.ts: widens cron job API types; fetches model options for the selected profile.
  • hermes_cli/web_server.py: normalizes dashboard cron payloads into the existing cron.jobs shape, validates scripts against the profile's scripts/ dir (path-traversal-safe via resolve() + relative_to()), and validates context_from IDs within the selected profile.
  • cron/jobs.py: factors the provider/model drift-snapshot logic into a helper and — the real fix — re-snapshots on update when an inference-routing axis materially changes (previously snapshot was create-only, so editing a job's provider/model left the [Bug]: Cron can inherit temporary paid provider state and continue billing during pause/stop containment #44585 drift guard comparing against stale data).

Validation

Suite Result
tests/hermes_cli/test_web_server_cron_profiles.py 17 passed
web/src/lib/cron-job.test.ts + schedule.test.ts (vitest) 16 passed
npm --workspace web run typecheck passed
eslint cron-job.ts CronPage.tsx passed

No new model tool — capability stays on the existing dashboard/API surface, per the footprint rubric.

Infographic

dashboard-cron-execution-fields

versun and others added 2 commits June 27, 2026 03:08
Collapse the three near-identical optional-text helpers
(optionalText/optionalBaseUrl/listToText) into one optionalText with a
strip-trailing-slash flag, route listToText + toolsets through the
existing splitCronList, and replace the repeated
typeof x === 'string' ? x : '' ladders with a single asString helper.
Behavior-identical; all 16 vitest cases pass.
@github-actions

Copy link
Copy Markdown
Contributor

🔎 Lint report: feat/dashboard-cron-execution-fields vs origin/main

ruff

Total: 0 on HEAD, 0 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 0 pre-existing issues carried over.

ty (type checker)

Total: 11483 on HEAD, 11483 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 6033 pre-existing issues carried over.

Diagnostics are surfaced as warnings — this check never fails the build.

@teknium1
teknium1 merged commit 29ee4bb into main Jun 27, 2026
35 checks passed
@teknium1
teknium1 deleted the feat/dashboard-cron-execution-fields branch June 27, 2026 10:20
@alt-glitch alt-glitch added type/feature New feature or request P3 Low — cosmetic, nice to have comp/dashboard Web dashboard / control panel UI (dashboard/, landing) comp/cron Cron scheduler and job management labels Jun 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/cron Cron scheduler and job management comp/dashboard Web dashboard / control panel UI (dashboard/, landing) P3 Low — cosmetic, nice to have type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants