Quick and Claude Opus 5
8e0d310a03
fix(settings): reject raw invalid UTF-8, not just escaped surrogates
...
The previous commit hoisted the lone-surrogate check to cover every value
type, but that only closes the escaped path. A raw 0xff byte inside a
quoted string — what an HTTP body carries when a client encodes text in the
wrong charset — is not an escape, so the surrogate scan never sees it, while
encoding/json still substitutes U+FFFD and reports success. NormalizeValue
then stores the original bytes, which SQLite's json_valid accepts and
Postgres jsonb refuses: the same backend divergence, reached the other way.
Found by the Codex review bot on the previous commit's own diff.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-07-27 18:28:29 +00:00
..
2026-07-27 01:22:23 +00:00
2026-07-10 08:21:26 -04:00
2026-07-26 11:19:33 -04:00
2026-07-09 08:53:52 -04:00
2026-07-27 00:40:04 +00:00
2026-07-16 17:33:21 -04:00
2026-07-27 00:40:04 +00:00
2026-07-27 18:12:47 +00:00
2026-07-23 11:40:38 -04:00
2026-07-18 17:12:36 -04:00
2026-05-22 23:26:56 -04:00
2026-07-05 17:38:19 -04:00
2026-07-24 12:02:52 -04:00
2026-07-21 13:03:53 -04:00
2026-07-09 08:53:52 -04:00
2026-07-05 16:44:36 -04:00
2026-05-22 23:26:56 -04:00
2026-07-07 10:46:50 -04:00
2026-07-07 10:46:50 -04:00
2026-06-09 20:08:30 -04:00
2026-07-23 15:14:52 -04:00
2026-07-26 11:19:33 -04:00
2026-06-15 16:20:50 -04:00
2026-07-21 14:53:47 -04:00
2026-06-11 19:51:03 -04:00
2026-07-09 08:53:52 -04:00
2026-06-17 13:09:55 -04:00
2026-07-23 11:10:31 -04:00
2026-06-25 22:43:23 -04:00
2026-07-25 14:47:12 -04:00
2026-07-16 14:34:35 -04:00
2026-07-24 14:22:12 -04:00
2026-05-22 23:26:56 -04:00
2026-07-16 17:55:36 -04:00
2026-07-01 17:37:06 -04:00
2026-07-09 08:53:52 -04:00
2026-07-27 01:22:23 +00:00
2026-05-22 23:26:56 -04:00
2026-07-22 13:43:57 +02:00
2026-07-02 11:42:28 -04:00
2026-07-01 23:21:25 -04:00
2026-07-23 11:24:55 -04:00
2026-07-09 08:53:52 -04:00
2026-05-22 23:26:56 -04:00
2026-06-11 21:34:19 -04:00
2026-07-16 17:33:21 -04:00
2026-07-09 08:53:52 -04:00
2026-07-23 11:24:55 -04:00
2026-07-26 11:19:33 -04:00
2026-07-26 15:24:33 +00:00
2026-07-24 12:02:52 -04:00
2026-07-09 08:53:52 -04:00
2026-07-14 12:13:16 -04:00
2026-07-09 08:53:52 -04:00
2026-07-09 08:53:52 -04:00
2026-07-23 11:24:55 -04:00
2026-07-09 08:53:52 -04:00
2026-07-16 10:53:30 -04:00
2026-06-12 15:04:31 -04:00
2026-07-16 13:58:44 -04:00
2026-07-27 00:23:02 +00:00
2026-06-25 14:47:48 -04:00
2026-07-24 12:18:49 -04:00
2026-07-10 22:30:04 -04:00
2026-07-24 12:02:52 -04:00
2026-07-14 11:51:27 -04:00
2026-07-23 11:24:55 -04:00
2026-07-09 08:53:52 -04:00
2026-07-25 02:54:30 -04:00
2026-07-16 13:58:44 -04:00
2026-07-21 08:16:53 -04:00
2026-07-26 00:12:29 -04:00
2026-07-25 14:47:12 -04:00
2026-07-27 00:32:15 +00:00
2026-06-08 15:25:48 -04:00
2026-07-09 08:53:52 -04:00
2026-07-22 13:43:57 +02:00
2026-07-27 18:28:29 +00:00
2026-07-20 13:25:46 -04:00
2026-07-23 11:24:55 -04:00
2026-07-24 12:02:52 -04:00
2026-07-09 08:53:52 -04:00
2026-05-22 23:26:56 -04:00
2026-07-20 13:25:46 -04:00
2026-06-06 00:05:04 -04:00
2026-07-09 08:53:52 -04:00
2026-07-27 15:15:01 +00:00
2026-07-27 15:15:01 +00:00
2026-07-09 08:53:52 -04:00
2026-07-01 17:36:47 -04:00
2026-07-23 09:15:19 -04:00
2026-07-02 11:34:02 -04:00
2026-07-09 08:53:52 -04:00
2026-07-09 08:53:52 -04:00