feat(tasks): refresh button in cron panel + auto-refresh on job creation (closes #835)

* feat(tasks): refresh button in cron panel + hermes:cron_created event

Add a ↺ refresh button to the Scheduled Jobs header so the job list can
be reloaded without a full page refresh. Closes #835.

- static/index.html: ↺ button with cronRefreshBtn id, calls loadCrons(true)
- static/panels.js: loadCrons(animate) dims+disables the button while fetching,
  restores it in finally; hermes:cron_created window event auto-refreshes list
  when the agent creates a job from chat

* test: add regression tests for cron refresh button + event listener

The PR shipped without automated coverage (pure UI wiring).  Filling that
gap with 8 source-level tests:

- Refresh button element exists with aria-label + title (icon-only a11y)
- Button wires onclick to loadCrons(true) for the dim animation
- Button sits in the same header row as "New job"
- loadCrons() now accepts an animate parameter
- loadCrons() restores the button's opacity/disabled in finally (so a
  throwing fetch doesn't leave the button stuck)
- hermes:cron_created window listener is registered at module scope
- Listener calls loadCrons() when dispatched

Also rebased onto master (CHANGELOG conflict resolved — v0.50.143 →
v0.50.142 since master's top is currently v0.50.141).

Full suite: 1750 passed, 0 new failures.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: nesquena-hermes <nesquena-hermes@users.noreply.github.com>
Co-authored-by: Nathan Esquenazi <nesquena@gmail.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
nesquena-hermes
2026-04-21 22:54:06 -07:00
committed by GitHub
parent 24fc9d4155
commit 11fd0d8412
4 changed files with 139 additions and 9 deletions

View File

@@ -1,15 +1,14 @@
# Hermes Web UI -- Changelog
## [v0.50.143] — 2026-04-22
## [v0.50.144] — 2026-04-22
### Added
- **Font size setting in Appearance** — users can now choose between Small (12px),
Default (14px), and Large (16px) text size from the Appearance settings tab. The choice
is stored in `localStorage` and applied via a `data-font-size` attribute on `<html>` at
boot time (no FOUC). Follows the same three-button visual pattern as the Theme picker.
Localized for all 6 supported locales. Closes #833. (#834)
- **Refresh button in Tasks/Scheduled Jobs panel** — a ↺ button next to "+ New job"
reloads the job list without a full page reload. Dims while fetching and restores on
completion (using `finally`). Also wires a `hermes:cron_created` window event so the
list auto-refreshes when a job is created from chat. Closes #835. (#837)
## [v0.50.142] — 2026-04-22
## [v0.50.143] — 2026-04-22
### Fixed
- **Stale model no longer shows as "(unavailable)" in the model picker** — users with
@@ -24,6 +23,7 @@
rendered provider heading in the picker due to missing `<optgroup>` context. Fixed to
silently reset to the first available model instead. Closes #829. (#831)
## [v0.50.141] — 2026-04-22
### Fixed