refactor(webui): simplify preset save label

This commit is contained in:
Xubin Ren
2026-08-29 16:42:24 +08:00
parent f653c2ab42
commit 9ab1b409b0
13 changed files with 20 additions and 20 deletions
@@ -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>
+1 -1
View File
@@ -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...",
+1 -1
View File
@@ -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",
+1 -1
View File
@@ -271,7 +271,7 @@
"save": "Enregistrer", "save": "Enregistrer",
"saving": "Enregistrement", "saving": "Enregistrement",
"saveOrder": "Enregistrer lordre", "saveOrder": "Enregistrer lordre",
"savePreset": "Enregistrer le préréglage", "savePreset": "Enregistrer",
"delete": "Supprimer", "delete": "Supprimer",
"deleting": "Suppression...", "deleting": "Suppression...",
"edit": "Modifier", "edit": "Modifier",
+1 -1
View File
@@ -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",
+1 -1
View File
@@ -271,7 +271,7 @@
"save": "保存", "save": "保存",
"saving": "保存中", "saving": "保存中",
"saveOrder": "順序を保存", "saveOrder": "順序を保存",
"savePreset": "プリセットを保存", "savePreset": "保存",
"delete": "削除", "delete": "削除",
"deleting": "削除中...", "deleting": "削除中...",
"edit": "編集", "edit": "編集",
+1 -1
View File
@@ -271,7 +271,7 @@
"save": "저장", "save": "저장",
"saving": "저장 중", "saving": "저장 중",
"saveOrder": "순서 저장", "saveOrder": "순서 저장",
"savePreset": "프리셋 저장", "savePreset": "저장",
"delete": "삭제", "delete": "삭제",
"deleting": "삭제 중...", "deleting": "삭제 중...",
"edit": "편집", "edit": "편집",
+1 -1
View File
@@ -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",
+1 -1
View File
@@ -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",
+1 -1
View File
@@ -483,7 +483,7 @@
"save": "保存", "save": "保存",
"saving": "正在保存", "saving": "正在保存",
"saveOrder": "保存顺序", "saveOrder": "保存顺序",
"savePreset": "保存预设", "savePreset": "保存",
"edit": "编辑", "edit": "编辑",
"delete": "删除", "delete": "删除",
"deleting": "正在删除...", "deleting": "正在删除...",
+1 -1
View File
@@ -271,7 +271,7 @@
"save": "儲存", "save": "儲存",
"saving": "正在儲存", "saving": "正在儲存",
"saveOrder": "儲存順序", "saveOrder": "儲存順序",
"savePreset": "儲存預設", "savePreset": "儲存",
"delete": "刪除", "delete": "刪除",
"deleting": "正在刪除…", "deleting": "正在刪除…",
"edit": "編輯", "edit": "編輯",
+1 -1
View File
@@ -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(
+8 -8
View File
@@ -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(