mirror of
https://github.com/Studio-Saelix/sencho.git
synced 2026-08-04 07:57:54 +00:00
fix: Distributed API UI & metrics polish + DEP0060 suppression
Add Node modal — type selector & state reset:
- Restored a Local/Remote <Select> dropdown in renderFormFields so users can
explicitly choose the node type instead of it defaulting silently to 'remote'.
- Switching type clears api_url and api_token so no stale remote credentials
carry over if a user switches from Remote to Local mid-form.
- Replaced the static "Add Remote Node" title with a dynamic one that reflects
the currently selected type ("Add Local Node" / "Add Remote Node").
- onOpenChange now resets formData to defaultFormData whenever the dialog
opens, preventing stale values from a previous session leaking in.
Remote connection details — real metrics:
- testRemoteConnection previously returned hard-coded '-' for containers,
images, and cpus after a successful auth/check ping.
- Now fires three parallel requests (Promise.allSettled) after auth passes:
/api/stats → containers total + running count
/api/system/stats → cpu.cores
/api/system/images → image list length
- Each field falls back to '-' gracefully if an endpoint is unavailable,
so a slow or older remote instance never breaks the connection test.
DEP0060 util._extend suppression:
- http-proxy@1.18.1 calls util._extend when createProxyServer() is first
invoked at runtime (NOT at import time). A process.emitWarning override
placed before the proxy instantiations intercepts only DEP0060 without
suppressing any other warnings. No package version changes needed.
Also includes linter/formatter normalisation across multiple files.
This commit is contained in:
@@ -350,7 +350,7 @@ class DockerController {
|
||||
await container.start();
|
||||
} catch (error: any) {
|
||||
if (error?.statusCode === 304) {
|
||||
// Container already running — not an error
|
||||
// Container already running - not an error
|
||||
return;
|
||||
}
|
||||
throw error;
|
||||
@@ -364,7 +364,7 @@ class DockerController {
|
||||
await container.stop();
|
||||
} catch (error: any) {
|
||||
if (error?.statusCode === 304) {
|
||||
// Container already stopped — not an error
|
||||
// Container already stopped - not an error
|
||||
return;
|
||||
}
|
||||
throw error;
|
||||
@@ -445,7 +445,7 @@ class DockerController {
|
||||
|
||||
/**
|
||||
* Exec into a container with full session isolation.
|
||||
* All state (exec instance, stream) lives in this closure — no singleton traps.
|
||||
* All state (exec instance, stream) lives in this closure - no singleton traps.
|
||||
* The WebSocket message handler is registered here to handle input, resize, and cleanup.
|
||||
*/
|
||||
public async execContainer(containerId: string, ws: WebSocket) {
|
||||
@@ -516,7 +516,7 @@ class DockerController {
|
||||
break;
|
||||
}
|
||||
} catch {
|
||||
// Non-JSON or malformed message — ignore
|
||||
// Non-JSON or malformed message - ignore
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user