SIGN IN SIGN UP

fix(parity): controls that existed on one surface and silently died on another

Five defects found by tracing every user-settable control from where it is set
to where it is read. None of them error; they all silently do nothing, which
is why they survived.

Panel gateway, /api/generate dropped the top-level images array. Ollama puts
media at the top level of a generate body, not inside a message, and the
gateway built a plain string — so a vision request became text-only and the
model answered about nothing, with no error. This is the same regression the
Python route already fixed and documented; the gateway's own /api/chat was
never affected. The synthetic user message now goes through the shared
translateOllamaMessages so the two paths cannot drift apart again.

Panel gateway dropped the seed on both Ollama routes. The Python route honours
options.seed and the top-level spelling, so the identical request was
reproducible against the engine port and silently non-deterministic through
the gateway.

hy3 turned reasoning OFF when asked for the LOWEST effort. Its template opens
the thinking rail only for low/high, and "minimal" — a first-class tier on the
effort ladder and in Ollama's think levels — matched no branch, so the
normalizer returned None and the template silently rendered no_think. Every
stamped family clamps the same value to low. An unrecognized effort still
falls through as before, but now logs a warning instead of silently disabling
reasoning.

/v1/messages never ACCEPTED min_p, repetition_penalty, cache_salt or
skip_prefix_cache, so pydantic dropped them. The server already resolves all
four off the converted request, so the dialect was the only thing missing;
this is the same class of drift that reasoning_effort and seed were added for
earlier, with the same fix.

--prefix-cache-max-bytes reached argv but MLLMSchedulerConfig never declared
the field, so _resolve_prefix_cache_byte_budget always read None and every
VL session ignored the flag, falling back to the RAM-percent default. The
budget was not unbounded, but a flag the user set did nothing. One of two
schedulers, again.

Each test was checked against the unfixed code: 7 of 18 engine tests and 2 of
4 gateway tests fail without these changes.
J
Jinho Jang committed
8208b368e4f25eddc997e65d916af68f483ae6b8
Parent: b05b0b2