A page that could not save, and said nothing

The model page has been unable to save anything below the reasoning efforts
since 1.3.0. "Save changes" did nothing at all, so the description, the system
prompt, every capability and tool switch and the whole availability card
silently would not take -- while the fields above it saved normally, which is
what made the page look as though it worked.

"Detect from the endpoint" had stopped detecting too: it submitted the page as
an ordinary save carrying only the top half of the form, so every field below
took its empty default. Pressing it would have cleared that model's description
and system prompt and switched the model off with all of its tools disabled.

One HTML rule causes both. A form inside another form is not allowed, and rather
than complaining a browser discards the inner start tag and lets the matching
end tag close the *outer* form -- so from that point down the page was in no
form, and a button in no form does nothing. The detect form is now declared
before the main one and the button reaches it by id.

Nothing in the markup reads wrong, and no test that posts to a route can see
this, because such a test supplies the fields itself. tests/test_form_structure.py
reads every template the way a browser parses it instead, including that rule,
and was checked against the old markup before being trusted: it reports the same
orphaned "Save changes" that headless Chromium did.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-26 01:21:18 +00:00
co-authored by Claude Opus 5
parent 0ed7dd9fc8
commit 54fee49810
4 changed files with 186 additions and 7 deletions
+23
View File
@@ -16,6 +16,29 @@ for 1.0.0 have something to be assembled from.
## Unreleased
## 1.3.2
- Fixed: **the model page could not save anything below the reasoning efforts**,
and had not been able to since 1.3.0. "Save changes" did nothing at all — not
slowly, not with an error, simply nothing — so the description, the system
prompt, every capability and tool switch, and the whole availability card
(enabled, pinned, available to everyone, groups) silently would not take. The
fields above it, including the display name and the reasoning efforts, saved
normally, which is what made it look like it worked.
Worse, the **Detect from the endpoint** button had stopped detecting. It
submitted the page as an ordinary save instead — a save carrying only the top
half of the form, so everything below took its empty default: it would have
cleared that model's description and system prompt and switched the model off
with all of its tools disabled. If you pressed it, check that model's page.
The cause was one HTML rule: a form inside another form is not allowed, and
rather than complaining, a browser discards the inner tag and lets the closing
tag end the *outer* form. Everything after that point was in no form, and a
button in no form does nothing. Nothing in the markup looks wrong, and no test
that posts to a route can see it — so the fix comes with one that reads every
page the way a browser parses it.
## 1.3.1
- Fixed: **updating to 1.2.0 or later broke every page that lists models**, with