fix(model-servers): empêche la capture des touches dans le champ args du serveur llamacpp (#113)
Les espaces et autres frappes étaient interceptés par un handler parent ; stopPropagation sur le onKeyDown de l'input args laisse la saisie intacte. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -661,6 +661,7 @@ function ServerEditor({
|
||||
value={argsText}
|
||||
placeholder="--flash-attn --parallel 2"
|
||||
onChange={(e) => setArgsText(e.target.value)}
|
||||
onKeyDown={(e) => e.stopPropagation()}
|
||||
onBlur={commitArgs}
|
||||
/>
|
||||
{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)", () => {
|
||||
it("declares a Hugging Face server end-to-end with a V2 payload", async () => {
|
||||
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", () => {
|
||||
renderPanel();
|
||||
fireEvent.click(screen.getByLabelText("add model server"));
|
||||
|
||||
Reference in New Issue
Block a user