Chuck and Claude Opus 5
59144b0088
merge: bring the element-style work onto main's api_v3 package split
...
main moved 16 commits while this branch was open, and one of them split
api_v3.py into a package. A rebase would have conflicted on that file in
each of the 15 commits that touch it; merging resolves it once.
Reapplied into the package, unchanged in substance:
- _schema_type_is / _schema_allows_null and the nullable-field handling
(api_v3/__init__.py, where the form parser now lives)
- the indexed-array recombiner's union-type fix and its all-blank-means-null
case (api_v3/plugins.py)
- scalable / native_size on the font catalog, and the removal of the three
font-override stubs (api_v3/fonts.py)
Two places took main's version rather than mine, deliberately:
- pages_v3 now reads the schema through SchemaManager *and* keeps
resolve_under for the raw-read fallback, so the containment guard main
added in the CodeQL triage survives.
- serve_plugin_widget moves off os.path.basename onto safe_path_component
and resolve_under. main dropped `import os` from pages_v3 in favour of
those helpers, and they reject a bad component rather than mangling it
into a valid-looking one.
The url-map snapshot loses exactly the three font-override routes. Edited
rather than regenerated: that test exists to catch a route lost by accident
during a move, and regenerating it wholesale is how such a loss would be
papered over.
Verified against a fresh run of current main: same failure set, 4692
passing.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-11 19:27:06 -04:00
..
2026-09-11 19:27:06 -04:00
2026-09-11 15:32:03 -04:00
2026-08-07 10:17:30 -04:00
2026-09-11 19:27:06 -04:00
2026-03-20 15:06:58 -04:00
2026-08-21 11:16:52 -04:00
2026-09-11 15:45:13 -04:00
2026-07-12 10:38:52 -04:00
2026-07-12 10:38:52 -04:00
2026-05-24 09:38:15 -04:00
2026-08-07 16:17:11 -04:00
2026-08-21 11:16:52 -04:00
2026-09-08 08:34:52 -04:00
2026-09-11 10:07:38 -04:00
2026-08-21 11:16:52 -04:00
2026-08-23 11:44:23 -04:00
2026-09-11 10:07:38 -04:00
2026-09-11 10:07:38 -04:00
2026-08-21 11:16:52 -04:00
2026-08-21 11:16:52 -04:00
2026-09-11 10:07:38 -04:00
2026-09-11 10:07:38 -04:00
2026-09-11 10:07:38 -04:00
2026-07-14 08:08:51 -04:00
2026-05-24 09:38:15 -04:00
2026-08-26 10:03:43 -04:00
2026-09-01 09:54:04 -04:00
2026-08-07 13:02:59 -04:00
2026-08-11 16:10:56 -04:00
2026-08-07 16:17:11 -04:00
2026-09-11 10:04:17 -04:00
2026-08-12 08:42:56 -04:00
2026-08-19 12:28:22 -04:00
2026-09-07 13:37:54 -04:00
2026-08-12 08:40:07 -04:00
2026-08-11 14:14:25 -04:00
2026-08-19 17:40:52 -04:00
2026-08-07 10:17:30 -04:00
2026-08-07 16:17:11 -04:00
2026-07-14 08:49:43 -04:00
2026-09-11 10:07:38 -04:00
2026-08-07 16:17:11 -04:00
2026-08-06 14:04:23 -04:00
2026-05-15 10:19:55 -04:00
2026-05-15 10:19:55 -04:00
2026-08-04 13:46:28 -04:00
2026-09-03 16:06:40 -04:00
2026-05-24 09:38:15 -04:00
2026-09-07 15:55:46 -04:00
2026-06-01 11:58:21 -04:00
2026-08-23 11:43:39 -04:00
2026-08-07 16:17:11 -04:00
2026-08-07 10:17:30 -04:00
2026-08-07 16:17:11 -04:00
2026-09-11 15:45:13 -04:00
2026-09-07 13:37:54 -04:00
2026-08-07 16:17:11 -04:00
2026-08-12 09:40:48 -04:00
2026-08-06 14:04:23 -04:00
2026-08-07 16:17:11 -04:00
2026-09-11 11:01:01 -04:00
2026-08-07 13:27:20 -04:00
2026-05-15 10:19:55 -04:00
2026-05-15 10:19:55 -04:00
2026-08-07 10:17:30 -04:00
2026-05-24 09:38:15 -04:00
2026-08-21 14:30:29 -04:00
2026-09-07 13:37:38 -04:00
2026-07-12 10:38:52 -04:00
2026-05-24 09:38:15 -04:00
2026-08-21 15:50:55 -04:00
2026-08-12 14:58:05 -04:00
2026-08-12 14:58:05 -04:00
2026-08-23 11:42:51 -04:00
2026-08-03 16:52:42 -04:00
2026-08-21 15:50:55 -04:00
2026-09-11 08:42:30 -04:00
2026-09-11 08:41:58 -04:00
2026-07-12 10:38:52 -04:00
2026-08-23 11:44:00 -04:00
2026-09-02 13:21:07 -04:00
2026-09-11 08:41:32 -04:00
2026-08-21 15:50:55 -04:00
2026-09-11 11:32:12 -04:00
2026-09-08 08:34:52 -04:00
2026-08-11 16:10:56 -04:00
2026-09-07 13:37:38 -04:00
2026-09-08 08:34:52 -04:00
2026-08-19 12:49:46 -04:00
2026-09-11 15:32:03 -04:00
2026-09-11 15:32:03 -04:00
2026-07-11 08:55:50 -04:00
2026-08-17 15:35:02 -04:00
2026-09-08 08:34:52 -04:00
2026-09-02 09:51:27 -04:00
2026-08-21 16:19:33 -04:00
2026-09-11 08:41:58 -04:00
2026-08-19 12:28:22 -04:00
2026-07-11 08:55:50 -04:00
2026-05-15 10:19:55 -04:00
2026-08-23 11:43:39 -04:00
2026-07-09 07:54:18 -04:00
2026-08-25 09:45:17 -04:00
2026-08-26 08:56:45 -04:00
2026-08-02 10:40:12 -04:00
2026-08-05 19:38:11 -04:00
2026-09-11 08:45:21 -04:00
2026-09-11 10:07:38 -04:00
2026-08-07 13:02:59 -04:00
2026-08-21 15:50:55 -04:00
2026-08-07 16:17:11 -04:00
2026-08-21 16:22:48 -04:00
2026-08-07 10:17:30 -04:00
2026-05-15 10:19:55 -04:00
2026-09-07 13:37:54 -04:00
2026-07-31 09:40:38 -04:00
2026-09-07 13:37:54 -04:00
2026-08-07 16:17:11 -04:00
2026-08-07 10:17:30 -04:00
2026-07-13 09:28:30 -04:00
2026-08-02 12:39:33 -04:00
2026-08-07 16:17:11 -04:00
2026-09-11 11:45:21 -04:00
2026-08-02 12:39:33 -04:00
2026-09-11 11:45:21 -04:00
2026-09-11 08:42:18 -04:00
2026-08-02 12:39:33 -04:00
2026-08-21 16:24:15 -04:00
2026-09-09 16:13:04 -04:00
2026-09-11 11:45:21 -04:00
2026-08-26 11:25:10 -04:00
2026-09-11 10:07:38 -04:00
2026-08-07 16:17:11 -04:00
2026-06-11 18:18:28 -04:00
2026-07-13 09:32:37 -04:00
2026-08-21 14:29:45 -04:00
2026-08-21 14:28:23 -04:00
2026-08-21 11:16:52 -04:00
2026-09-11 08:45:40 -04:00
2026-08-25 08:40:28 -04:00
2026-08-21 14:29:45 -04:00
2026-09-11 08:41:19 -04:00
2026-08-06 14:04:23 -04:00
2026-07-14 08:33:08 -04:00
2026-05-15 10:19:55 -04:00
2026-04-08 12:33:54 -04:00
2026-08-17 13:28:40 -04:00
2026-08-21 14:30:29 -04:00
2026-08-21 14:30:29 -04:00
2026-05-24 09:38:15 -04:00
2026-05-24 09:38:15 -04:00
2026-07-31 09:40:38 -04:00
2026-09-11 10:07:38 -04:00
2026-08-23 11:42:33 -04:00
2026-08-12 14:06:32 -04:00
2026-07-31 09:40:38 -04:00
2026-08-13 17:02:36 -04:00
2026-08-21 15:50:55 -04:00
2026-07-08 09:43:13 -04:00
2026-07-12 10:40:34 -04:00
2026-08-07 10:17:30 -04:00
2026-08-03 15:21:47 -04:00
2026-09-11 19:27:06 -04:00
2026-09-10 17:42:00 -04:00
2026-09-11 10:07:38 -04:00
2026-07-09 09:22:24 -04:00
2026-07-16 20:32:07 -04:00
2026-07-16 20:32:07 -04:00
2026-09-09 16:25:45 -04:00
2026-08-06 14:04:23 -04:00
2026-07-14 11:22:37 -04:00
2026-09-11 15:32:03 -04:00
2026-05-03 08:25:20 -04:00