v1.5.0: network interface binding, SSH fixes, terminal, release script
- Add network interface selection per server (VPN/multi-NIC support) - Fix "Install Everything" button hanging on error - Add interactive SSH terminal with PTY (pyte + xterm-256color) - Add release.py for automated versioning and changelog generation - Add CLAUDE.md with project instructions - Add screenshots and release binaries for v1.1–v1.4 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -44,6 +44,7 @@ class ServerStore:
|
||||
def __init__(self):
|
||||
self._data: dict = {"servers": [], "ssh_key": {"type": "ed25519", "path": "~/.ssh/id_ed25519"}}
|
||||
self._observers: list[Callable] = []
|
||||
self._check_interval: int = 60
|
||||
self._statuses: dict[str, str] = {} # alias -> "online" | "offline" | "unknown"
|
||||
self._statuses_lock = threading.Lock()
|
||||
self._file_lock = threading.Lock()
|
||||
@@ -66,6 +67,7 @@ class ServerStore:
|
||||
from core import i18n
|
||||
lang = settings.get("language", "en")
|
||||
i18n.set_language(lang)
|
||||
self._check_interval = settings.get("check_interval", 60)
|
||||
except json.JSONDecodeError:
|
||||
log.warning("Corrupted settings.json, using defaults")
|
||||
except Exception as e:
|
||||
@@ -77,6 +79,7 @@ class ServerStore:
|
||||
settings = {
|
||||
"servers_path": self._servers_file,
|
||||
"language": i18n.get_language(),
|
||||
"check_interval": self._check_interval,
|
||||
}
|
||||
try:
|
||||
tmp = SETTINGS_FILE + ".tmp"
|
||||
@@ -284,6 +287,13 @@ class ServerStore:
|
||||
|
||||
# ── Status management (thread-safe) ───────────────
|
||||
|
||||
def get_check_interval(self) -> int:
|
||||
return self._check_interval
|
||||
|
||||
def set_check_interval(self, seconds: int):
|
||||
self._check_interval = max(10, min(600, seconds))
|
||||
self._save_settings()
|
||||
|
||||
def set_status(self, alias: str, status: str):
|
||||
with self._statuses_lock:
|
||||
self._statuses[alias] = status
|
||||
|
||||
Reference in New Issue
Block a user