feat(cron): surface last_fire_error on Cron Job records (#925) (#933)

Backend stamps last_fire_error ({at, detail}) on a job when a scheduled fire
can't reach the gateway loopback (gateway down / api_server not bound) —
the "job runs manually but never auto-fires" case. Previously invisible in
mobile.

- CronJob.kt: model as CronJobFireError(at, detail) — the backend sends a
  nested object, NOT a flat string (issue's String? proposal would fail to
  deserialize), plus the last_fire_error field.
- CronJobsScreen: "Fire failed" ERROR badge in the list + "Dispatch Error"
  row (detail + timestamp) in the Run Details dialog.
- Strings en/zh/ko. Test: job with last_fire_error loads + parses.

Backward-compatible: field has a default, existing jobs without it parse fine.

Co-authored-by: M57 <hy4ri@users.noreply.github.com>
This commit is contained in:
M57andM57 authored and GitHub committed 2026-08-18 12:53:36 +03:00
1 parent 1039d7db1d
commit 79c2ea1341
6 files changed
+69

No files matched your search

+2
View File
@@ -829,6 +829,8 @@
<string name="cron_edit_field_run_continuity">Run continuity</string>
<string name="cron_edit_hint_run_continuity">Inject this job\'s previous output into each run</string>
<string name="cron_badge_continuity">Continuity</string>
<string name="cron_detail_dispatch_error">Dispatch Error</string>
<string name="cron_badge_dispatch_error">Fire failed</string>
<string name="cron_edit_monitor_mode">Monitor mode</string>
<string name="cron_edit_monitor_off">Off</string>
<string name="cron_edit_monitor_script">Script</string>