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:
@ -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 && (
|
||||||
|
|||||||
@ -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"));
|
||||||
|
|||||||
Reference in New Issue
Block a user