#22103: fix(ui): move cron run history inline into job cards
app: web-ui
size: S
Cluster:
Cron Job UI Enhancements
## Summary
- **Problem:** Cron run history was displayed in a separate card at the bottom of the page, far from the job being inspected.
- **Why it matters:** On systems with many cron jobs, users had to scroll repeatedly to correlate a job with its specific run history, creating a disjointed UX.
- **What changed:** Moved the run history list directly into the selected cron job card (inline) and removed the standalone history section from the bottom.
- **What did NOT change (scope boundary):** The data fetching logic, the `cron.runs` API interaction, and the internal rendering of individual run log entries.
### Change Type (select all)
- [X] Bug fix
- [x] Feature
- [ ] Refactor
- [ ] Docs
- [ ] Security hardening
- [ ] Chore/infra
### Scope (select all touched areas)
- [ ] Gateway / orchestration
- [ ] Skills / tool execution
- [ ] Auth / tokens
- [ ] Memory / storage
- [ ] Integrations
- [ ] API / contracts
- [x] UI / DX
- [ ] CI/CD / infra
### Linked Issue/PR
- Closes #
- Related #
### User-visible / Behavior Changes
- The "Run history" card at the bottom of the Cron tab has been removed.
- Clicking a cron job or its "History" button now expands the job card to display its run history inline.
- History is automatically hidden when another job is selected or the current one is removed.
### Security Impact (required)
- New permissions/capabilities? (**No**)
- Secrets/tokens handling changed? (**No**)
- New/changed network calls? (**No**)
- Command/tool execution surface changed? (**No**)
- Data access scope changed? (**No**)
### Repro + Verification
#### Environment
- **OS:** Linux
- **Runtime/container:** Node.js / Browser
- **Model/provider:** N/A
- **Integration/channel (if any):** N/A
- **Relevant config (redacted):** N/A
#### Steps
1. Navigate to the Cron tab in the UI.
2. Ensure at least one cron job exists.
3. Click on a cron job card or the "History" button.
4. Observe the run history appearing directly within the card.
#### Expected
The run history should appear immediately below the job's actions within the same card, pushing other jobs down.
#### Actual
Previously, the history appeared in a separate section at the very bottom of the page, regardless of the job's position.
### Evidence
- [x] **Trace/log snippets:** Linting and build passed after resolving unused variable errors.
- [ ] **Screenshot/recording:** (To be verified by user on port 3001)
### Human Verification (required)
- **Verified scenarios:** Clicking multiple jobs to switch history views; clicking "Open run chat" links within the inline history; stopping event propagation to ensure link clicks don't toggle the card.
- **Edge cases checked:** Jobs with no run history (displays "No runs yet" inline).
- **What you did not verify:** Mobile-specific touch interactions (though standard click handlers are used).
### Compatibility / Migration
- Backward compatible? (**Yes**)
- Config/env changes? (**No**)
- Migration needed? (**No**)
### Failure Recovery (if this breaks)
- **How to disable/revert this change quickly:** Revert changes to `ui/src/ui/views/cron.ts` and `ui/src/styles/components.css`.
- **Files/config to restore:** `ui/src/ui/views/cron.ts`, `ui/src/styles/components.css`.
- **Known bad symptoms:** Layout shifting issues in the cron list or history failing to render when a job is clicked.
### Risks and Mitigations
- **Risk:** Large history lists (50+ items) could make an individual card extremely tall.
- **Mitigation:** The controller currently limits fetches to 50 items, and the list-based UI is consistent with existing patterns. Future updates could add a scrollable container for history if needed.
Most Similar PRs
#20368: feat(cron): add UI edit flow for existing scheduled jobs
by PetrouilFan · 2026-02-18
73.2%
#17606: feat(ui): add Edit button for cron jobs in Control UI [AI-assisted]
by jgstaal · 2026-02-16
73.1%
#6408: feat(ui): add job filtering and improve run history display
by Cassius0924 · 2026-02-01
71.5%
#7024: feat(ui/cron): add silent job indicator and no-runs hints
by sergi039 · 2026-02-02
70.5%
#20610: fix: reduce chat history render limit to improve performance Fixes #…
by anandsuraj · 2026-02-19
69.4%
#21644: feat(control-ui): add runtime runs filters in cron tab
by frank8ai · 2026-02-20
67.2%
#22102: fix(cron): default isolated jobs to fresh sessions with sessionReus...
by k-velorum · 2026-02-20
67.0%
#18192: fix(cron): auto-clear stale runningAtMs markers after timeout (#18120)
by BinHPdev · 2026-02-16
66.4%
#23290: fix(cron): use lastRunAtMs for next schedule of interval jobs after...
by SidQin-cyber · 2026-02-22
66.1%
#17064: fix(cron): prevent control-plane starvation during startup catch-up...
by donggyu9208 · 2026-02-15
65.7%