Add resilient dual-radio network failover

This commit is contained in:
2026-07-31 20:24:34 +02:00
parent 0a0dae144c
commit 6940cfb3a8
19 changed files with 857 additions and 11 deletions
+26
View File
@@ -66,6 +66,28 @@ export type UpdateStatus = {
supported: boolean;
};
export type NetworkStatus = {
supported: boolean;
enabled: boolean;
mode: "disabled" | "starting" | "dual_radio" | "built_in_upstream" | "probing_built_in" | "offline_hotspot" | "degraded" | "error";
message: string;
updatedAt: string;
lastTransitionAt: string;
probeDeadline: string | null;
lastFailure: string | null;
connectivity: "full" | "limited" | "portal" | "none" | "unknown";
hotspot: NetworkAdapterStatus;
upstream: NetworkAdapterStatus;
};
export type NetworkAdapterStatus = {
interface: string;
available: boolean;
connected: boolean;
connection: string | null;
address: string | null;
};
type ErrorResponse = { error?: { code?: string; message?: string } };
export class ApiError extends Error {
@@ -108,3 +130,7 @@ export async function getStatus(): Promise<SystemStatus> {
export async function getUpdateStatus(): Promise<UpdateStatus> {
return parseResponse<UpdateStatus>(await fetch("/api/system/update", { credentials: "same-origin" }));
}
export async function getNetworkStatus(): Promise<NetworkStatus> {
return parseResponse<NetworkStatus>(await fetch("/api/network", { credentials: "same-origin" }));
}