mirror of
https://github.com/YuzuZensai/Termix.git
synced 2026-11-12 18:31:56 +00:00
v26.10.1 (#1599)
* feat: AI translations at release, 7 new languages and regional fallback * fix: proper plural forms for count strings and full translations * fix: plural forms for selected, hidden and active counts * fix: synced plugin updates failing on desktop and server-only plugins shown as stopped * fix: restore rounded corners on app icons and favicon * feat: desktop app auto updates with automatic, ask first or never modes * feat: community and custom plugin registries * feat: plugin guide for AI tools in the SDK with a lint check * fix: keep the terminal WebSocket open past nginx's 60s default (#1588) * chore: update changelog * feat: show plugin download counts only and stop CI builds inflating them * feat: hide installed plugins in the browse tab by default * chore: pin bundled plugins to latest releases * chore: update translations * fix: focusing a saved password field and saving no longer erases it * fix: tell desktop users when their 2.8 data needs 2.9 first * fix: point windows update info at the x64 installer * fix: keep desktop client tunnel sockets alive behind proxies * chore: pin bundled plugins to latest releases * fix: cover client tunnel keepalive in the c2s runtime tests * fix: typing after opening a host no longer goes to the host search * fix: accept tab and = separators in SSH config import (#1598) * chore: update changelog * chore: drop plugin versions from core changelog * chore: update translations * chore: lint, format, and bump version to 26.10.1 --------- Co-authored-by: Darnel Hunter <68697450+innotelinc@users.noreply.github.com> Co-authored-by: Iain <Iain1970@protonmail.com>
This commit is contained in:
co-authored by
Darnel Hunter
Iain
parent
6873bc92bb
commit
62ac931468
@@ -0,0 +1,48 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { updateToastFor, type DesktopUpdateState } from "@/lib/desktop-updates";
|
||||
|
||||
function state(patch: Partial<DesktopUpdateState>): DesktopUpdateState {
|
||||
return {
|
||||
kind: "auto",
|
||||
mode: "prompt",
|
||||
currentVersion: "26.10.1",
|
||||
status: "available",
|
||||
version: "26.10.2",
|
||||
releaseUrl: null,
|
||||
progress: null,
|
||||
error: null,
|
||||
...patch,
|
||||
};
|
||||
}
|
||||
|
||||
describe("updateToastFor", () => {
|
||||
it("asks before downloading in ask first mode", () => {
|
||||
expect(updateToastFor(state({}))).toBe("prompt");
|
||||
});
|
||||
|
||||
it("stays quiet while automatic mode downloads", () => {
|
||||
expect(updateToastFor(state({ mode: "automatic" }))).toBeNull();
|
||||
expect(
|
||||
updateToastFor(state({ mode: "automatic", status: "downloading" })),
|
||||
).toBeNull();
|
||||
});
|
||||
|
||||
it("offers a restart once downloaded", () => {
|
||||
expect(updateToastFor(state({ status: "downloaded" }))).toBe("ready");
|
||||
expect(
|
||||
updateToastFor(state({ mode: "automatic", status: "downloaded" })),
|
||||
).toBe("ready");
|
||||
});
|
||||
|
||||
it("links the release for installs that can not update", () => {
|
||||
expect(updateToastFor(state({ kind: "manual" }))).toBe("manual");
|
||||
});
|
||||
|
||||
it("never toasts when updates are off", () => {
|
||||
expect(updateToastFor(state({ mode: "never" }))).toBeNull();
|
||||
expect(
|
||||
updateToastFor(state({ mode: "never", status: "downloaded" })),
|
||||
).toBeNull();
|
||||
expect(updateToastFor(null)).toBeNull();
|
||||
});
|
||||
});
|
||||
@@ -38,6 +38,20 @@ describe("getEmbeddedServerFailure", () => {
|
||||
});
|
||||
});
|
||||
|
||||
it("surfaces a database too old to open", async () => {
|
||||
setElectronAPI({
|
||||
isElectron: true,
|
||||
getEmbeddedServerStatus: vi.fn().mockResolvedValue({
|
||||
running: false,
|
||||
failure: { reason: "old-database", port: null },
|
||||
}),
|
||||
});
|
||||
await expect(getEmbeddedServerFailure()).resolves.toEqual({
|
||||
reason: "old-database",
|
||||
port: null,
|
||||
});
|
||||
});
|
||||
|
||||
it("surfaces a generic crash", async () => {
|
||||
setElectronAPI({
|
||||
isElectron: true,
|
||||
|
||||
Reference in New Issue
Block a user