Files
siftlode/frontend/src/i18n/locales/en/activity.json
T
peter fad656988a fix(activity): runs keep their true outcome and spend, the page reaches every kept row, a closing dialog leaves the server log alone
Backend
- A run's outcome write sits outside the job's own try: a database blip after a run that
  succeeded no longer records it as failed (the row waits for the next start's sweep).
- An interrupted run keeps what it spent (the sweep sums its quota rows, as finish does).
- The Scheduler's ad-hoc row says running while any backfill runs, not only the newest.
- recent_runs reads each job's last runs off its index instead of ranking the whole table.
- An interval change is stored with its audit row in one transaction, then rescheduled.
- One API instance per database is the stated contract (.env.example, jobruns).
- Turning full history on for a channel already complete records no run.
- Migration 0109 round-trips interrupted and ad-hoc runs; the run words' DB CHECKs are
  test-held to the enums; the account filter is one helper for the four activity reads.
- An audit row says how many of its request's log lines are still kept.

Frontend
- An "All" period reaches every row still kept (runs and admin actions outlive 90 days).
- Back/Forward is followed in place by the server log: a closing dialog no longer turns
  Live off; a pivot still opens a fresh log.
- Runs moved over from the audit log read their one-liner in the reader's language.
- Filter choices or accounts that failed to load say so beside the filters, with a retry.
- An old server-log link keeps its account, text and range; a remembered retired page
  opens its tab.
- A request whose lines are gone says so instead of linking to an empty list.
- The log lines and the history rows share one row frame, and the server log one list
  frame with the other tabs; an empty list is announced; each day's quota is readable.
2026-10-18 15:38:32 +02:00

74 lines
2.6 KiB
JSON

{
"title": "Activity",
"tabs": {
"runs": "Runs",
"admin": "Admin actions",
"logs": "Server log",
"quota": "Quota"
},
"intro": {
"runs": "Every background run, newest first — scheduled, started by an admin, or a user's work on one channel. A row opens to what it did or why it failed, and to the lines it logged.",
"admin": "An append-only record of admin actions — who changed what, and when. A row opens to its before and after, and to the lines its request logged.",
"logs": "The server's stored log — lines from the API, the downloader and browsers, kept until the retention period ends. A line opens in place; its request, job or run id keeps only that one's lines."
},
"search": "Search…",
"windowLabel": "Period",
"windows": {
"1h": "1 hour",
"24h": "24 hours",
"7d": "7 days",
"30d": "30 days",
"90d": "90 days",
"all": "All"
},
"account": "Account",
"any": "Any",
"noAccount": "No account (background)",
"older": "Load older",
"stale": "Couldn't refresh — what you see may be out of date",
"olderFailed": "Couldn't load the older rows",
"filtersFailed": "Couldn't load the filter choices: the menus may be missing some.",
"accountsFailed": "Couldn't load the accounts for the account filter.",
"runs": {
"job": "Job",
"statusLabel": "Filter by status",
"status": {
"error": "Failed",
"interrupted": "Interrupted",
"skipped": "Skipped",
"running": "Running",
"ok": "OK"
},
"empty": "No runs match the filters.",
"count_one": "{{count}} run shown · newest first",
"count_other": "{{count}} runs shown · newest first",
"units_one": "{{units}} unit",
"units_other": "{{units}} units",
"fields": {
"started": "Started by",
"when": "Start → end",
"target": "Target",
"quota": "Quota units"
},
"logLines_one": "Its {{count}} log line →",
"logLines_other": "Its {{count}} log lines →",
"noLogLines": "It logged no lines",
"jobRuns": "This job's runs →"
},
"audit": {
"action": "Action",
"target": "Target",
"requestLines": "Its request's log lines →",
"noRequestLines": "Its request's log lines are no longer kept",
"count_one": "{{count}} action shown · newest first",
"count_other": "{{count}} actions shown · newest first"
},
"quota": {
"daily": "Spend per day",
"total_one": "Spend over {{window}}: {{units}} unit",
"total_other": "Spend over {{window}}: {{units}} units",
"totalAll_one": "Spend over all kept history: {{units}} unit",
"totalAll_other": "Spend over all kept history: {{units}} units"
}
}