You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
优化服务器卡片头部信息排布与紧凑度:将原本独立占据整行卡片的 GPU 数量(如 4 GPUs)与主机名(如 amax-BD4908P)整合收敛至服务器名称下方的副标题小字(server_host · hostname · X GPUs),主指标区精简聚焦为 CPU 与 MEM 双列并排,极大地节省了卡片垂直空间。
The runtime moved from the Windows PowerShell/WPF host to Tauri 2 + Rust + Vue 3. main now runs only the Tauri implementation, while legacy/v1.1.0 and port-baseline-v1.1.0 preserve the previous release as rollback baselines.
Existing servers.json, SSH config aliases, keys, ssh-agent, ProxyJump, and OS credential behavior remain compatible. Legacy JSON/JSONL history, timezone-less timestamps, and the Windows server configuration shape remain readable.
The v1.1.0 server-side Agent keeps its inject, status, control, pull, and merge operations. v2.0.0 local real-time collection uses one persistent framed SSH session per server; the two paths are independent.
New history writes use UTC Z timestamps and UTC date files. Users query by local date and charts display local time, so existing records do not require a manual migration.
v2.0.0 is currently unsigned and unnotarized. Windows 10/11 x64 is the primary acceptance platform; macOS remains compile-compatible but its window and tray behavior still requires physical-device validation.
Added
Completed the Tauri 2 + Vue 3 + TypeScript + Pinia + ECharts desktop application and made main the current implementation; legacy/v1.1.0 and port-baseline-v1.1.0 remain available as rollback baselines.
Added a Tauri 2 Rust workspace for protocol/history core logic, system OpenSSH, cross-platform data roots, file locks, and the keyring credential abstraction.
Added the canonical LF-only POSIX sampler, protocol/history golden fixtures, Rust/Vitest tests, and a Windows/macOS CI build matrix.
Added Tokio collectors, typed snapshot/status events, JSONL history writes, migration preview/apply commands, data-root commands, and tray/manage/history windows.
Added OpenSSH Host/simple Include alias discovery, compatibility with the legacy Windows Servers config shape, and manager add/remove actions with optional credential saving.
Changed
v2.0.0 targets Windows 10/11 x64 and macOS Intel/Apple Silicon; Linux desktop is out of scope for this release, while the server Agent short-command controls remain available.
v2.0.0 is unsigned and for internal testing; macOS transparency, tray, edge docking, and sleep/resume remain unverified on physical hardware.
The Windows Release desktop process now uses the GUI subsystem, and SSH/askpass children use no-console creation flags so the application does not open an extra terminal on startup.
Added reliable main-window dragging and close controls, SSH config diagnostics/reload, and an explicit passwordless SSH (key or ssh-agent) option in Manage.
Moved the legacy PowerShell/WPF implementation out of the current runtime path, preserving it on legacy/v1.1.0 and port-baseline-v1.1.0, and built the standalone portable ServerPulse-Portable.exe.
Fixed
Unified the visual language between the Main, Manage, and History windows: eliminated inconsistent window padding and background mismatch, applying a cohesive deep obsidian green palette, card borders, status pills, and action buttons.
Configured Tauri 2 capabilities in src-tauri/capabilities/default.json for full window permissions, multi-window events, and IPC calls.
Hardened SSH config alias and candidate loading: integrated dirs::home_dir() Win32 native home resolution, and made store initialization resilient so ~/.ssh/config aliases are always discovered and displayed.
Fixed JSON error: expected value at line 1 column 1 when saving server configs: added transparent UTF-8 BOM (\u{feff}) and UTF-16 decoding across config and history parsers, ensuring seamless compatibility with legacy PowerShell servers.json.
Fixed SSH sampling process hanging indefinitely on connecting/rechecking: added OpenSSH -T (no pseudo-terminal) and remote command sh -s, stripped carriage returns \r, and closed stdin immediately to guarantee fast metric execution.
Fixed Tauri/Explorer launches resolving SSH aliases to the wrong target by explicitly using the current user's SSH config for ssh, ssh -G, and Windows host-key probing.
Fixed the Windows host-key probe argument bug that truncated the target to 0.0.0.5, while retaining the safe fallback for affected Win32-OpenSSH sntrup761x25519 builds.
Completed host-key confirmation and change blocking: unknown hosts require SHA256 fingerprint confirmation, changed fingerprints are blocked, the app-owned known_hosts can be forgotten and re-verified, and the user's file remains read-only.
Completed the session-password security channel: passwords may be saved in the OS credential store or used for the current run only; they exist only in zeroized main-process memory and a one-time askpass channel, never in config, arguments, ordinary environment variables, logs, or history.
Completed one persistent framed SSH session per server: the remote sampler emits frames, the client parses them continuously, and timeouts/corruption/disconnects reconnect with backoff while non-retryable authentication errors pause only that server with a structured status.
Completed UTC history storage and local-date querying: new records use Z RFC3339 timestamps and UTC date files, local-day queries convert to UTC ranges, and legacy timezone-less records remain readable.
Added monitor toggle checkboxes to the Manage view server list, allowing users to easily enable or disable monitoring for any configured SSH server with immediate background start/stop and persistent config saves.
Hardened monitoring state synchronization between backend and frontend: added in-memory state caching in Rust and the get_monitoring_state IPC command, backed by both Tauri events and reactive polling in Pinia to eliminate missed startup events.
Enhanced server cards on the main dashboard with complete metric grids (CPU, Memory, GPU count, Hostname) and per-GPU breakdown rows (GPU model, utilization, VRAM usage/limit).
Fixed lingering initial timeout error notices on online servers: pruned stale errors on online transitions in both Rust and Pinia, and guarded card error rendering so error text only displays when the server is genuinely disconnected.
Added user-configurable monitoring refresh interval (cadence): provided presets (2s, 5s default, 10s, 30s, 60s) and a custom 1–300s input in Manage view with live indicator on the main dashboard, immediately updating background collection tasks.
Added cross-window interval synchronization and direct inline cadence modification on the main dashboard: broadcasted interval.changed events across Tauri windows and added a quick popover selector directly on the main floating widget (1s, 2s, 3s, 5s, 10s, 30s, 60s).
Fixed main floating window dragging on Windows frameless/transparent mode: removed conflicting -webkit-app-region styles that intercepted WebView2 DOM events, added dedicated native drag_window IPC command, and enabled comprehensive blank-area and header drag hit-testing with button exclusions.
Fixed window z-order hierarchy so Manage and History windows stay in front of the main widget: configured always_on_top(true) and focus targeting on secondary windows so they are not obscured by the floating main window.
Redesigned History view with per-server segmentation and per-GPU breakdown charts: added server filter pills, date navigation controls, peak/avg summary chips, CPU/RAM timeline charts, and dedicated per-GPU core utilization (%) and VRAM memory (GB) series with pan/zoom interactions and cohesive dark obsidian styling.
Display only checked/monitored servers on the main floating dashboard: filtered server cards by monitored === true and added cross-window servers.changed broadcast so changes in Manage reflect immediately on the main dashboard without showing unselected servers.
Added responsive multi-column layout and dynamic utilization threshold colors for GPU mini-cards: rendered GPU cards in 2+ columns responsive to window resize, using green default for GPU core utilization with automatic coral red transition when exceeding 80%, cyan for VRAM, and clean white numbers consistently.
Streamlined server card header metadata and metrics layout: consolidated GPU count and host name into a clean, muted subtitle line under the server name (server_host · hostname · X GPUs), focusing the main metric grid into a compact, balanced 2-column CPU and MEM display.
Decluttered Manage window: removed the redundant monitoring interval setting card from Manage view since cadence can now be configured directly and interactively on the main floating widget.
Added clear IP address and hostname example hints to the Add Server form: updated field label to SSH alias / Hostname / IP and placeholder to 123.23.23.23 / gpu-01.
Implemented top, left, and right screen edge docking and auto-hide: integrated locked savedWorkArea caching, native GetCursorPos global cursor tracking, 8px topmost solid sharp edge handles, 150ms smooth sliding animations, hover-to-reveal with 600ms debounce hide, dropdown interaction protection, and persistent EdgeButton toggle.
Known limitations
Build artifacts are currently unsigned and unnotarized for internal testing only.
macOS code remains compile-compatible, but transparency, tray, edge docking, and sleep/resume have not been accepted on physical Mac hardware.