merge: intègre #113 — champ args llamacpp ne capture plus les frappes (vert QA)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-08-03 10:51:55 +02:00
2 changed files with 39 additions and 0 deletions

View File

@ -661,6 +661,7 @@ function ServerEditor({
value={argsText} value={argsText}
placeholder="--flash-attn --parallel 2" placeholder="--flash-attn --parallel 2"
onChange={(e) => setArgsText(e.target.value)} onChange={(e) => setArgsText(e.target.value)}
onKeyDown={(e) => e.stopPropagation()}
onBlur={commitArgs} onBlur={commitArgs}
/> />
{reservedHits.length > 0 && ( {reservedHits.length > 0 && (

View File

@ -211,6 +211,30 @@ function renderPanel(modelServer = new MockModelServerGateway()) {
}; };
} }
function renderPanelInsideSpaceTrap(modelServer = new MockModelServerGateway()) {
const gateways = { modelServer } as unknown as Gateways;
function Harness() {
const vm = useModelServers();
return (
<div
onKeyDown={(event) => {
if (event.key === " ") event.preventDefault();
}}
>
<ModelServersPanel vm={vm} />
</div>
);
}
return {
modelServer,
...render(
<DIProvider gateways={gateways}>
<Harness />
</DIProvider>,
),
};
}
describe("ModelServersPanel wizard (F35 V2)", () => { describe("ModelServersPanel wizard (F35 V2)", () => {
it("declares a Hugging Face server end-to-end with a V2 payload", async () => { it("declares a Hugging Face server end-to-end with a V2 payload", async () => {
const { modelServer } = renderPanel(); const { modelServer } = renderPanel();
@ -303,6 +327,20 @@ describe("ModelServersPanel wizard (F35 V2)", () => {
}); });
}); });
it("does not let surrounding keyboard handlers swallow spaces in the extra args field", () => {
renderPanelInsideSpaceTrap();
fireEvent.click(screen.getByLabelText("add model server"));
const args = screen.getByLabelText("extra arguments") as HTMLInputElement;
const accepted = fireEvent.keyDown(args, {
key: " ",
code: "Space",
charCode: 32,
});
expect(accepted).toBe(true);
});
it("blocks auto-start until a model source is set", () => { it("blocks auto-start until a model source is set", () => {
renderPanel(); renderPanel();
fireEvent.click(screen.getByLabelText("add model server")); fireEvent.click(screen.getByLabelText("add model server"));