mirror of
https://github.com/HKUDS/nanobot.git
synced 2026-08-31 08:13:11 +03:00
refactor(webui): simplify preset save label
This commit is contained in:
@@ -546,7 +546,7 @@ export function ModelsSettings({
|
|||||||
>
|
>
|
||||||
{saving || creatingSaving
|
{saving || creatingSaving
|
||||||
? tx("settings.actions.saving", "Saving...")
|
? tx("settings.actions.saving", "Saving...")
|
||||||
: tx("settings.actions.savePreset", "Save preset")}
|
: tx("settings.actions.savePreset", "Save")}
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -483,7 +483,7 @@
|
|||||||
"save": "Save",
|
"save": "Save",
|
||||||
"saving": "Saving",
|
"saving": "Saving",
|
||||||
"saveOrder": "Save order",
|
"saveOrder": "Save order",
|
||||||
"savePreset": "Save preset",
|
"savePreset": "Save",
|
||||||
"edit": "Edit",
|
"edit": "Edit",
|
||||||
"delete": "Delete",
|
"delete": "Delete",
|
||||||
"deleting": "Deleting...",
|
"deleting": "Deleting...",
|
||||||
|
|||||||
@@ -271,7 +271,7 @@
|
|||||||
"save": "Guardar",
|
"save": "Guardar",
|
||||||
"saving": "Guardando",
|
"saving": "Guardando",
|
||||||
"saveOrder": "Guardar orden",
|
"saveOrder": "Guardar orden",
|
||||||
"savePreset": "Guardar preajuste",
|
"savePreset": "Guardar",
|
||||||
"delete": "Eliminar",
|
"delete": "Eliminar",
|
||||||
"deleting": "Eliminando...",
|
"deleting": "Eliminando...",
|
||||||
"edit": "Editar",
|
"edit": "Editar",
|
||||||
|
|||||||
@@ -271,7 +271,7 @@
|
|||||||
"save": "Enregistrer",
|
"save": "Enregistrer",
|
||||||
"saving": "Enregistrement",
|
"saving": "Enregistrement",
|
||||||
"saveOrder": "Enregistrer l’ordre",
|
"saveOrder": "Enregistrer l’ordre",
|
||||||
"savePreset": "Enregistrer le préréglage",
|
"savePreset": "Enregistrer",
|
||||||
"delete": "Supprimer",
|
"delete": "Supprimer",
|
||||||
"deleting": "Suppression...",
|
"deleting": "Suppression...",
|
||||||
"edit": "Modifier",
|
"edit": "Modifier",
|
||||||
|
|||||||
@@ -271,7 +271,7 @@
|
|||||||
"save": "Simpan",
|
"save": "Simpan",
|
||||||
"saving": "Menyimpan",
|
"saving": "Menyimpan",
|
||||||
"saveOrder": "Simpan urutan",
|
"saveOrder": "Simpan urutan",
|
||||||
"savePreset": "Simpan prasetel",
|
"savePreset": "Simpan",
|
||||||
"delete": "Hapus",
|
"delete": "Hapus",
|
||||||
"deleting": "Menghapus...",
|
"deleting": "Menghapus...",
|
||||||
"edit": "Ubah",
|
"edit": "Ubah",
|
||||||
|
|||||||
@@ -271,7 +271,7 @@
|
|||||||
"save": "保存",
|
"save": "保存",
|
||||||
"saving": "保存中",
|
"saving": "保存中",
|
||||||
"saveOrder": "順序を保存",
|
"saveOrder": "順序を保存",
|
||||||
"savePreset": "プリセットを保存",
|
"savePreset": "保存",
|
||||||
"delete": "削除",
|
"delete": "削除",
|
||||||
"deleting": "削除中...",
|
"deleting": "削除中...",
|
||||||
"edit": "編集",
|
"edit": "編集",
|
||||||
|
|||||||
@@ -271,7 +271,7 @@
|
|||||||
"save": "저장",
|
"save": "저장",
|
||||||
"saving": "저장 중",
|
"saving": "저장 중",
|
||||||
"saveOrder": "순서 저장",
|
"saveOrder": "순서 저장",
|
||||||
"savePreset": "프리셋 저장",
|
"savePreset": "저장",
|
||||||
"delete": "삭제",
|
"delete": "삭제",
|
||||||
"deleting": "삭제 중...",
|
"deleting": "삭제 중...",
|
||||||
"edit": "편집",
|
"edit": "편집",
|
||||||
|
|||||||
@@ -483,7 +483,7 @@
|
|||||||
"save": "Salvar",
|
"save": "Salvar",
|
||||||
"saving": "Salvando",
|
"saving": "Salvando",
|
||||||
"saveOrder": "Salvar ordem",
|
"saveOrder": "Salvar ordem",
|
||||||
"savePreset": "Salvar predefinição",
|
"savePreset": "Salvar",
|
||||||
"delete": "Excluir",
|
"delete": "Excluir",
|
||||||
"deleting": "Excluindo...",
|
"deleting": "Excluindo...",
|
||||||
"edit": "Editar",
|
"edit": "Editar",
|
||||||
|
|||||||
@@ -271,7 +271,7 @@
|
|||||||
"save": "Lưu",
|
"save": "Lưu",
|
||||||
"saving": "Đang lưu",
|
"saving": "Đang lưu",
|
||||||
"saveOrder": "Lưu thứ tự",
|
"saveOrder": "Lưu thứ tự",
|
||||||
"savePreset": "Lưu cấu hình đặt trước",
|
"savePreset": "Lưu",
|
||||||
"delete": "Xóa",
|
"delete": "Xóa",
|
||||||
"deleting": "Đang xóa...",
|
"deleting": "Đang xóa...",
|
||||||
"edit": "Sửa",
|
"edit": "Sửa",
|
||||||
|
|||||||
@@ -483,7 +483,7 @@
|
|||||||
"save": "保存",
|
"save": "保存",
|
||||||
"saving": "正在保存",
|
"saving": "正在保存",
|
||||||
"saveOrder": "保存顺序",
|
"saveOrder": "保存顺序",
|
||||||
"savePreset": "保存预设",
|
"savePreset": "保存",
|
||||||
"edit": "编辑",
|
"edit": "编辑",
|
||||||
"delete": "删除",
|
"delete": "删除",
|
||||||
"deleting": "正在删除...",
|
"deleting": "正在删除...",
|
||||||
|
|||||||
@@ -271,7 +271,7 @@
|
|||||||
"save": "儲存",
|
"save": "儲存",
|
||||||
"saving": "正在儲存",
|
"saving": "正在儲存",
|
||||||
"saveOrder": "儲存順序",
|
"saveOrder": "儲存順序",
|
||||||
"savePreset": "儲存預設",
|
"savePreset": "儲存",
|
||||||
"delete": "刪除",
|
"delete": "刪除",
|
||||||
"deleting": "正在刪除…",
|
"deleting": "正在刪除…",
|
||||||
"edit": "編輯",
|
"edit": "編輯",
|
||||||
|
|||||||
@@ -2531,7 +2531,7 @@ describe("App layout", () => {
|
|||||||
).toBe(true);
|
).toBe(true);
|
||||||
await user.click(screen.getByRole("button", { name: "Select model" }));
|
await user.click(screen.getByRole("button", { name: "Select model" }));
|
||||||
await user.click(await screen.findByRole("option", { name: /openai\/gpt-4o-mini/ }));
|
await user.click(await screen.findByRole("option", { name: /openai\/gpt-4o-mini/ }));
|
||||||
expect(screen.getByRole("button", { name: "Save preset" })).toBeEnabled();
|
expect(screen.getByRole("button", { name: "Save" })).toBeEnabled();
|
||||||
fireEvent.click(screen.getByRole("button", { name: "Cancel" }));
|
fireEvent.click(screen.getByRole("button", { name: "Cancel" }));
|
||||||
expect(screen.queryByText("Up to date.")).not.toBeInTheDocument();
|
expect(screen.queryByText("Up to date.")).not.toBeInTheDocument();
|
||||||
fireEvent.click(
|
fireEvent.click(
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ describe("Settings models", () => {
|
|||||||
fireEvent.change(screen.getByLabelText("Temperature"), {
|
fireEvent.change(screen.getByLabelText("Temperature"), {
|
||||||
target: { value: "0.4" },
|
target: { value: "0.4" },
|
||||||
});
|
});
|
||||||
fireEvent.click(screen.getByRole("button", { name: "Save preset" }));
|
fireEvent.click(screen.getByRole("button", { name: "Save" }));
|
||||||
|
|
||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(requestMutationMock).toHaveBeenCalledWith(
|
expect(requestMutationMock).toHaveBeenCalledWith(
|
||||||
@@ -173,7 +173,7 @@ describe("Settings models", () => {
|
|||||||
|
|
||||||
const nameInput = screen.getByRole("textbox", { name: "Preset name" });
|
const nameInput = screen.getByRole("textbox", { name: "Preset name" });
|
||||||
fireEvent.change(nameInput, { target: { value: "Codex" } });
|
fireEvent.change(nameInput, { target: { value: "Codex" } });
|
||||||
fireEvent.click(screen.getByRole("button", { name: "Save preset" }));
|
fireEvent.click(screen.getByRole("button", { name: "Save" }));
|
||||||
|
|
||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(requestMutationMock).toHaveBeenCalledWith(
|
expect(requestMutationMock).toHaveBeenCalledWith(
|
||||||
@@ -196,7 +196,7 @@ describe("Settings models", () => {
|
|||||||
|
|
||||||
const nameInput = screen.getByRole("textbox", { name: "Preset name" });
|
const nameInput = screen.getByRole("textbox", { name: "Preset name" });
|
||||||
fireEvent.change(nameInput, { target: { value: "Codex" } });
|
fireEvent.change(nameInput, { target: { value: "Codex" } });
|
||||||
fireEvent.click(screen.getByRole("button", { name: "Save preset" }));
|
fireEvent.click(screen.getByRole("button", { name: "Save" }));
|
||||||
|
|
||||||
expect(await screen.findByRole("alert")).toHaveTextContent(
|
expect(await screen.findByRole("alert")).toHaveTextContent(
|
||||||
"A preset with this name already exists.",
|
"A preset with this name already exists.",
|
||||||
@@ -368,7 +368,7 @@ describe("Settings models", () => {
|
|||||||
|
|
||||||
expect(screen.queryByRole("button", { name: "Save order" })).not.toBeInTheDocument();
|
expect(screen.queryByRole("button", { name: "Save order" })).not.toBeInTheDocument();
|
||||||
expect(screen.getByLabelText("Temperature")).toHaveValue(0.4);
|
expect(screen.getByLabelText("Temperature")).toHaveValue(0.4);
|
||||||
expect(screen.getByRole("button", { name: "Save preset" })).toBeEnabled();
|
expect(screen.getByRole("button", { name: "Save" })).toBeEnabled();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("keeps repeated fallback preset rows stable when changing the primary preset", async () => {
|
it("keeps repeated fallback preset rows stable when changing the primary preset", async () => {
|
||||||
@@ -604,7 +604,7 @@ describe("Settings models", () => {
|
|||||||
);
|
);
|
||||||
fireEvent.click(screen.getByRole("button", { name: "New model preset" }));
|
fireEvent.click(screen.getByRole("button", { name: "New model preset" }));
|
||||||
expect(screen.queryByRole("dialog", { name: "New model preset" })).not.toBeInTheDocument();
|
expect(screen.queryByRole("dialog", { name: "New model preset" })).not.toBeInTheDocument();
|
||||||
expect(screen.getByRole("button", { name: "Save preset" })).toBeDisabled();
|
expect(screen.getByRole("button", { name: "Save" })).toBeDisabled();
|
||||||
expect(
|
expect(
|
||||||
screen.queryByText("Complete the preset before saving."),
|
screen.queryByText("Complete the preset before saving."),
|
||||||
).not.toBeInTheDocument();
|
).not.toBeInTheDocument();
|
||||||
@@ -619,7 +619,7 @@ describe("Settings models", () => {
|
|||||||
target: { value: "openai/gpt-4o-mini" },
|
target: { value: "openai/gpt-4o-mini" },
|
||||||
});
|
});
|
||||||
fireEvent.keyDown(modelSearch, { key: "Enter" });
|
fireEvent.keyDown(modelSearch, { key: "Enter" });
|
||||||
const saveButton = screen.getByRole("button", { name: "Save preset" });
|
const saveButton = screen.getByRole("button", { name: "Save" });
|
||||||
expect(saveButton).toBeEnabled();
|
expect(saveButton).toBeEnabled();
|
||||||
fireEvent.click(saveButton);
|
fireEvent.click(saveButton);
|
||||||
|
|
||||||
@@ -656,7 +656,7 @@ describe("Settings models", () => {
|
|||||||
});
|
});
|
||||||
fireEvent.change(modelSearch, { target: { value: "openai/gpt-4o-mini" } });
|
fireEvent.change(modelSearch, { target: { value: "openai/gpt-4o-mini" } });
|
||||||
fireEvent.keyDown(modelSearch, { key: "Enter" });
|
fireEvent.keyDown(modelSearch, { key: "Enter" });
|
||||||
fireEvent.click(screen.getByRole("button", { name: "Save preset" }));
|
fireEvent.click(screen.getByRole("button", { name: "Save" }));
|
||||||
|
|
||||||
expect(requestMutationMock).not.toHaveBeenCalled();
|
expect(requestMutationMock).not.toHaveBeenCalled();
|
||||||
expect(nameInput).toHaveAttribute("aria-invalid", "true");
|
expect(nameInput).toHaveAttribute("aria-invalid", "true");
|
||||||
@@ -1499,7 +1499,7 @@ describe("Settings models", () => {
|
|||||||
fireEvent.change(screen.getByLabelText("Reasoning effort"), {
|
fireEvent.change(screen.getByLabelText("Reasoning effort"), {
|
||||||
target: { value: "provider-native-mode" },
|
target: { value: "provider-native-mode" },
|
||||||
});
|
});
|
||||||
fireEvent.click(screen.getByRole("button", { name: "Save preset" }));
|
fireEvent.click(screen.getByRole("button", { name: "Save" }));
|
||||||
|
|
||||||
await waitFor(() =>
|
await waitFor(() =>
|
||||||
expect(fetchMock).toHaveBeenCalledWith(
|
expect(fetchMock).toHaveBeenCalledWith(
|
||||||
|
|||||||
Reference in New Issue
Block a user