# Changelog ## [1.3.0] - 2026-02-23 ### Added - **TOTP / 2FA tab** — Google Authenticator compatible codes with live 30-second countdown - Per-server TOTP secret storage (encrypted alongside passwords) - One-click code copy to clipboard - Color-coded countdown (green → yellow → red) - Generate random secrets or paste existing ones - TOTP secret field in server add/edit dialog - `core/totp.py` — TOTP module (pyotp, RFC 6238) - `core/logger.py` — rotating file logger (5 MB, 3 backups) - `pyotp` dependency in requirements.txt ### Changed - **Encryption**: new stronger Fernet key with automatic migration from old key - **Server store**: thread-safe file writes with locks, atomic saves (tmp + rename), auto-restore from backup on corruption - **Status checker**: parallel server checks via ThreadPoolExecutor (up to 10 concurrent) - **SSH client**: explicit channel cleanup in finally blocks, Unix key permissions (0o600) - **Server dialog**: port range validation (1-65535), TOTP secret field - `version.py` → 1.3.0 ## [1.2.0] - 2026-02-23 ### Added - About dialog (ⓘ button in header bar) with app info, features, and quick start guide - GUI localization: English, Russian (Русский), Chinese (中文) - Language switcher in header bar with persistent selection - `core/i18n.py` — internationalization module with full translation dictionaries - `gui/about_dialog.py` — CTkToplevel About window ### Changed - All GUI components use `t()` translation function for all user-visible strings - `server_store.py` saves/loads language preference in settings.json - `version.py` → 1.2.0 - Tabs, sidebar, dialogs, and all tab contents fully translated ## [1.1.0] - 2026-02-23 ### Added - Fernet encryption for servers.json (passwords no longer stored in plaintext) - Automatic migration: first launch encrypts existing servers.json, creates pre-encryption backup - Manual and automatic backups (auto-backup every 10 min on save) - Backup restore from GUI (Setup tab → Configuration section) - Configurable config path (change servers.json location via GUI) - Settings persistence in settings.json - Encryption module installed alongside ssh.py for CLI support - `cryptography` dependency ### Changed - server_store.py: encrypted read/write, settings management, backup logic - ssh.py: encryption-aware load/save with fallback for missing encryption module - claude_setup.py: installs encryption.py alongside ssh.py - setup_tab.py: Configuration section with path selector, backup/restore controls, encryption status ## [1.0.0] - 2026-02-23 ### Added - Server CRUD (SSH, Telnet, RDP, MariaDB, MSSQL, PostgreSQL) - SSH Terminal with auto-sudo - SFTP file transfer with progress bar - SSH key management (generate, install, copy) - Background status monitoring (online/offline) - Dark theme (CustomTkinter) - Search and filter servers - Build scripts for Windows, Linux, macOS