Files
server-manager/CHANGELOG.md
2026-02-23 14:58:26 -05:00

151 lines
5.7 KiB
Markdown

# Changelog
## [1.5.3] - 2026-02-23
Complete terminal rewrite for full TUI compatibility (mc, vim, htop, claude, nano)
### Added
- Add --publish flag to release.py for automatic Gitea releases
### Changed
- Complete terminal rewrite for full TUI compatibility
## [1.5.2] - 2026-02-23
Fix DECCKM support — arrow keys now work in mc, vim, htop
### Added
- Add v1.5.0 and v1.5.1 release binaries
### Fixed
- Fix DECCKM support for arrow keys in TUI apps (mc, vim, htop)
### Changed
- Update CLAUDE.md: enforce version bump before every build
## [1.5.1] - 2026-02-23
Fix TUI apps (mc, htop, vim) freezing in SSH terminal
### Added
- Add auto-commit/push rule to CLAUDE.md
- Add click-to-copy animation on TOTP code display
- Add Claude Code integration: shared config + Setup tab
- Add detailed auto-sudo and security docs in all 3 languages
- Add build system, versioning, releases, multilingual docs
### Fixed
- Fix TUI apps (mc, htop, vim) freezing in SSH terminal
### Changed
- v1.5.0: network interface binding, SSH fixes, terminal, release script
- Redesign TOTP code display: larger timer, thicker progress bar, color sync
- v1.2.0 + v1.3.0: Localization, About dialog, TOTP/2FA, stability improvements
- Rebuild win-x64 binary with Setup tab and shared config
- Initial commit: ServerManager GUI application
## [1.5.0] - 2026-02-23
### Added
- **Network interface binding** — choose which NIC (IP) to use per server (VPN, multi-NIC setups)
- Dropdown in server add/edit dialog (via `psutil.net_if_addrs()`)
- `bind_interface` saved per server, used in SSH connect via `socket.bind()`
- Works on Windows/macOS/Linux without admin rights
- Status checker and terminal automatically use the bound interface
- `psutil` dependency in requirements.txt
### Fixed
- **"Install Everything" button** no longer hangs on error — try/except/finally ensures button always resets
- `generate_ssh_key()` handles missing paramiko gracefully (returns error message instead of crashing thread)
- `install_all()` catches per-step exceptions — all steps run even if one fails
- `_gen_key()` in Setup tab now catches and displays errors in the log
### Changed
- `check_connection()` refactored — uses shared `_connect_client()` instead of duplicated logic
- `_connect_client()` supports `bind_interface` with socket binding and proper socket recreation on auth retry
- Logging added to `install_ssh_script()`, `install_skill()`, `generate_ssh_key()`, `install_all()`
- `build.py` — added `--hidden-import psutil`
- `CLAUDE.md` — added version sync checklist
- `version.py` → 1.5.0
## [1.4.0] - 2026-02-23
### Added
- Interactive SSH terminal with PTY (xterm-256color)
- `pyte` terminal emulator integration
- `ShellSession` class for persistent shell sessions
- Configurable monitoring intervals (30s, 60s, 2min, 5min)
- Skip status check option per server
### Changed
- `version.py` → 1.4.0
## [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