* fix(dashboard): keep disk info working when a mount is stale or broken
The dashboard, the file manager mount list and the alert disk list
enumerated mounts with df. df calls statfs on every mount, so one bad
mount took the whole disk list down: the request hung until the
frontend timed out, or the list came back empty.
- enumerate mounts from /proc/self/mountinfo instead of running df
- read each mount through a guard with a 3s timeout that keeps at most
one call per mount in flight
- fail closed: a mount that cannot be read stays in the list with
errorType and error, and an unreadable mount table is an error
rather than an empty list
- show failed mounts and their reasons on the dashboard and in the
file manager
- cmd: after killing a timed-out command, wait at most 5s for it
instead of forever
* fix(dashboard): distinguish remounted and hidden filesystems
* fix(disk): simplify disk queries and bound timeout handling
* fix(disk): prevent overlapping df collection tasks
---------
Co-authored-by: ssongliu <sloooop1x@gmail.com>
Replace database rule synchronization with native rule operations and file-based backup, import, and recovery. Update firewall management views, descriptions, whitelist handling, and translations.
Include terminal reconnect fixes and xpack build tags for Darwin build targets. Remove temporary regression test files before committing.
The SFTP uploader used io.Copy(dstFile, srcFile). Since the source is an
*os.File it implements io.WriterTo, so io.Copy took the os.File.WriteTo
branch and issued one synchronous SFTP WRITE per packet, waiting for the
server reply every time. Throughput was therefore bounded by packetSize/RTT
instead of the link capacity: on a ~68ms RTT link a 440MB backup reached
only ~0.25 MB/s, while rclone / OpenSSH sftp reach 16-19 MB/s on the very
same link and target.
pkg/sftp already provides a pipelined write path (File.ReadFrom, enabled by
UseConcurrentWrites and bounded by MaxConcurrentRequestsPerFile, default 64).
Use it for uploads, and truncate the remote file to the number of bytes
actually written when the concurrent write fails, to avoid leaving holes.
Measured against the same 68ms RTT target: a 96MiB upload went from 6m40s
(~0.25 MB/s) to ~6s (~16 MB/s); a 950MB three-site backup job from ~2h40m to
~2m04s.
Co-authored-by: 4kercc <13767585+4kercc@users.noreply.github.com>
Update pending Go and frontend dependencies, including gRPC, OpenTelemetry
and SVGO security fixes. Raise the minimum Go version to 1.26.6 and update
x/image and x/mod to patched versions.
Use moby/go-archive directly for image build contexts so its vulnerable
v0.1.0 replacement can be removed and v0.3.0 used. Regenerate Go module
checksums with go mod tidy and refresh the npm lockfile.
Validation: Linux amd64 builds, existing Go tests and go mod verify pass
for core and agent; frontend production build passes; npm audit reports
zero vulnerabilities. Frontend type-check reports the same nine errors
with the original and updated lockfiles.
Go scanning still flags two advisories in the legacy Docker SDK, which
has no patched release on its current module path. A separate SDK
migration and host Docker daemon updates remain necessary.
* perf(monitor): improve monitor query and chart performance for large ranges
- enable LTTB sampling in the shared line chart to bound rendered points
- empty io/network in monitor search now means no name filter, returning
all device rows in one query instead of fanning out per device
- merge device names recorded in the monitor db into io/network/gpu
options so removed devices stay selectable; move logic to service layer
- add composite indexes (name, created_at) on monitor_ios/monitor_networks
and (product_name, created_at) on monitor_gpus
- stop migrating the unused MonitorGPU model into MonitorDB
- fix the memory param which was compared against "mem" and never matched
* chore(monitor): remove monitor test fixtures
---------
Co-authored-by: ssongliu <sloooop1x@gmail.com>
* feat: Remote download supports server file name options and improves error handling
* feat: Remote download supports server file name options and improves error handling