peter
7ae5c57b6b
fix(i18n): every refusal the API answers is structured and said in the reader's language
...
~150 HTTPExceptions carried a hand-written English sentence as their detail,
shown verbatim under the Hungarian UI — in the blocking error dialog and on
every inline surface that printed HttpError.detail (sign-in, setup wizard,
change password, the passphrase gate, live search). Four also quoted an
upstream exception's text back to the user.
- app/refusal.py: `refused(status, reason, **params)` → {code: "refused",
reason, …params}; localizeDetail translates errors.refused.<reason> with the
params interpolated. "Unknown X" 404s use the existing not_found(what).
- sysconfig.set_value raises InvalidSetting (reason + bounds) instead of an
English ValueError; the three writers answer it through setting_refused.
- The Plex connection/write/image failures log what the upstream said and
answer a reason; the search scraper's failure is logged and answered as
youtube/unavailable (it crashed refusal_reason before).
- HttpError.detail now only ever holds a translated reason: a string detail
(only the framework's own can remain) is left out, so reading .detail is
safe everywhere — including destructured, the hole the raw-detail source
scan could not see. That scan and its five-file exception list are gone.
- Enforced: test_http_details.py fails on any HTTPException with a sentence
for a detail; the contract test requires every refused reason and every
not_found "what" in both languages, and no key for one that is gone.
- local/jsx-comment-text: a // inside JSX children renders as text; the rule
is ten lines in eslint.config.js rather than eslint-plugin-react's ~1800
lockfile lines.
2026-09-19 07:34:17 +02:00
..
2026-09-19 07:34:17 +02:00
2026-09-15 02:53:22 +02:00
2026-09-13 01:45:28 +02:00
2026-09-19 07:34:17 +02:00
2026-09-15 02:53:22 +02:00
2026-09-15 02:53:22 +02:00
2026-09-13 19:18:04 +02:00
2026-09-13 19:18:04 +02:00
2026-09-17 02:59:09 +02:00
2026-09-17 02:42:12 +02:00
2026-09-14 23:58:30 +02:00
2026-09-14 23:58:30 +02:00
2026-09-10 20:56:16 +02:00
2026-08-15 07:11:50 +02:00
2026-09-11 01:38:31 +02:00
2026-07-20 00:56:47 +02:00
2026-09-13 02:14:07 +02:00
2026-09-13 02:14:07 +02:00
2026-09-13 01:45:28 +02:00
2026-07-21 02:26:40 +02:00
2026-09-06 01:57:32 +02:00
2026-08-23 23:22:52 +02:00
2026-08-23 23:22:52 +02:00
2026-07-19 05:38:42 +02:00
2026-08-13 23:41:12 +02:00
2026-08-27 23:54:44 +02:00
2026-08-29 05:43:41 +02:00
2026-08-29 05:43:41 +02:00
2026-08-25 02:55:12 +02:00
2026-08-26 02:18:34 +02:00
2026-07-21 04:11:19 +02:00
2026-09-17 02:42:12 +02:00
2026-09-17 23:45:29 +02:00
2026-09-17 23:45:29 +02:00
2026-08-29 21:52:13 +02:00
2026-08-29 21:52:13 +02:00
2026-09-14 00:50:05 +02:00
2026-09-14 00:50:05 +02:00
2026-09-13 19:18:04 +02:00
2026-09-13 19:18:04 +02:00
2026-07-23 03:11:35 +02:00
2026-09-04 23:14:46 +02:00
2026-09-17 01:44:29 +02:00
2026-09-11 03:19:17 +02:00
2026-09-11 03:19:17 +02:00
2026-09-05 22:22:28 +02:00
2026-09-17 02:42:12 +02:00
2026-09-17 23:45:41 +02:00
2026-09-17 03:53:40 +02:00
2026-09-12 03:41:37 +02:00
2026-09-13 04:16:20 +02:00
2026-09-15 02:25:00 +02:00
2026-09-13 17:17:49 +02:00
2026-08-23 07:22:53 +02:00
2026-09-19 05:47:16 +02:00
2026-09-13 17:17:49 +02:00
2026-09-06 05:38:28 +02:00
2026-09-13 17:17:49 +02:00
2026-09-08 00:06:34 +02:00
2026-09-19 05:03:31 +02:00
2026-09-19 05:03:31 +02:00
2026-08-23 01:39:29 +02:00
2026-09-19 07:34:17 +02:00
2026-09-13 17:17:49 +02:00
2026-09-13 07:00:51 +02:00
2026-09-13 17:17:49 +02:00
2026-08-23 21:59:58 +02:00
2026-08-24 23:41:49 +02:00
2026-09-13 17:17:49 +02:00
2026-09-14 22:29:33 +02:00
2026-09-14 22:29:33 +02:00
2026-07-21 03:13:26 +02:00
2026-07-21 04:11:19 +02:00
2026-09-13 20:47:13 +02:00
2026-09-13 19:18:04 +02:00
2026-09-19 05:54:19 +02:00
2026-09-13 05:20:53 +02:00
2026-09-13 05:20:53 +02:00
2026-09-17 01:44:29 +02:00
2026-09-17 01:44:29 +02:00
2026-09-19 01:54:48 +02:00
2026-09-17 02:42:12 +02:00
2026-09-17 02:42:12 +02:00
2026-09-19 01:54:48 +02:00
2026-09-19 01:54:48 +02:00
2026-09-17 02:42:12 +02:00
2026-08-20 00:47:09 +02:00
2026-09-17 01:44:29 +02:00
2026-09-17 01:44:29 +02:00
2026-07-27 22:10:03 +02:00
2026-09-19 01:54:48 +02:00
2026-09-13 01:45:28 +02:00
2026-09-13 00:17:09 +02:00
2026-09-13 07:36:41 +02:00
2026-09-17 01:44:29 +02:00
2026-09-17 01:44:29 +02:00
2026-08-18 03:02:34 +02:00
2026-09-13 04:16:20 +02:00
2026-09-19 01:54:48 +02:00
2026-07-27 22:45:30 +02:00
2026-09-15 01:35:25 +02:00
2026-09-15 01:35:25 +02:00
2026-08-20 05:40:59 +02:00
2026-08-20 05:40:59 +02:00
2026-09-11 01:19:14 +02:00
2026-09-17 02:45:19 +02:00
2026-09-13 02:14:07 +02:00
2026-09-10 22:34:12 +02:00
2026-09-10 22:34:12 +02:00
2026-08-13 03:43:02 +02:00
2026-08-13 03:20:01 +02:00
2026-07-20 23:30:49 +02:00
2026-09-13 02:14:07 +02:00
2026-07-21 02:26:40 +02:00
2026-09-17 02:59:09 +02:00
2026-09-17 02:59:09 +02:00
2026-09-17 02:59:09 +02:00
2026-09-12 16:21:51 +02:00
2026-09-19 07:07:53 +02:00
2026-09-19 07:07:53 +02:00
2026-08-30 00:28:50 +02:00
2026-08-24 22:09:52 +02:00
2026-08-24 22:09:52 +02:00
2026-08-17 20:41:13 +02:00
2026-08-17 20:41:13 +02:00
2026-08-17 22:18:07 +02:00
2026-08-27 02:50:41 +02:00
2026-09-10 19:31:05 +02:00
2026-09-10 19:31:05 +02:00
2026-08-30 04:45:11 +02:00
2026-08-27 23:54:44 +02:00
2026-09-11 18:05:30 +02:00
2026-09-11 01:19:14 +02:00
2026-09-13 01:45:28 +02:00
2026-09-17 01:44:29 +02:00
2026-08-23 02:09:14 +02:00
2026-09-19 01:54:48 +02:00
2026-08-18 02:34:45 +02:00
2026-09-19 05:56:12 +02:00
2026-08-23 23:05:24 +02:00
2026-08-23 23:05:24 +02:00
2026-09-13 02:14:07 +02:00
2026-09-19 04:51:31 +02:00
2026-09-19 04:51:31 +02:00
2026-09-15 00:53:15 +02:00
2026-06-26 03:30:19 +02:00
2026-09-13 02:14:07 +02:00
2026-07-14 21:39:53 +02:00
2026-09-13 02:14:07 +02:00
2026-09-02 01:28:45 +02:00
2026-09-19 01:54:48 +02:00
2026-08-25 02:55:12 +02:00
2026-07-21 02:26:40 +02:00
2026-09-13 01:45:28 +02:00
2026-09-13 01:45:28 +02:00
2026-08-23 23:22:52 +02:00
2026-09-05 23:52:29 +02:00
2026-09-19 05:47:16 +02:00
2026-09-19 05:47:16 +02:00
2026-07-30 23:33:50 +02:00
2026-09-14 22:29:33 +02:00
2026-09-14 22:29:33 +02:00
2026-09-13 01:04:11 +02:00
2026-09-13 01:04:11 +02:00
2026-08-15 05:50:11 +02:00
2026-09-17 03:53:40 +02:00
2026-09-10 22:05:39 +02:00
2026-09-10 22:05:39 +02:00
2026-09-14 22:29:33 +02:00
2026-09-13 01:45:28 +02:00
2026-09-17 03:53:40 +02:00
2026-08-21 06:16:15 +02:00
2026-08-21 06:16:15 +02:00
2026-09-14 22:29:33 +02:00
2026-09-14 22:29:33 +02:00
2026-07-21 04:11:19 +02:00
2026-09-02 01:28:45 +02:00
2026-08-20 02:13:49 +02:00
2026-09-05 04:31:13 +02:00
2026-09-05 04:41:21 +02:00
2026-06-26 03:30:19 +02:00
2026-08-02 02:02:31 +02:00
2026-09-13 01:45:28 +02:00