Files
Catubba 70c808edfe feat(i18n): localize run step details, and notify when a PBS never wakes
Step details were stored as English sentences, so the run timeline stayed
English whatever the UI language was. `run_steps` now carries a
`detail_key`/`detail_params` pair alongside the text, the same seam
`runs.error_key` already had: the English rendering stays on the row for
pre-1.0 rows and for foreign strings (a task UPID, another product's error
text), while the API rebuilds Joulenap's own copy in the user's language on
read. `set_detail()` writes both halves in one call so they cannot drift.

Fixes carried in the same files:

- a run whose PBS never came up recorded a history row and nothing else.
  The unreachable handler re-raised, unwinding past both the lease release
  and the notification, so the one failure this product exists to have an
  opinion about sent no Telegram, no ntfy, no email — a regression against
  0.9, which did notify. On a sync route it also left an already-woken box
  burning power with no POWEROFF step. It now falls through the same
  release-and-notify path a completed run uses.
- the notification's duration breakdown dropped the backup phase on every
  real backup route: the lookup matched bare step names, but a route labels
  its backup step per source (`backup:pve-alpha`). Matched with `_step_is`
  now, and summed per phase.
- a PBS sync remote outlived the route that created it, parking the peer's
  full API token in the executing box's `remote.cfg`. Remote and sync job
  are both removed once the sync is over.
- a step that set a detail and then failed rendered the detail instead of
  the error, because a resolvable key wins over the raw string.
2026-08-05 09:40:26 +02:00
..
2026-07-02 20:46:57 +02:00
2026-07-02 20:46:57 +02:00