Commit Graph

90 Commits

Author SHA1 Message Date
chrome-storm-c442
6144c17a96 v1.8.4: fix FilesTab showing stale remote files on server switch
- Clear remote panel immediately when switching servers
- Add race condition guards in async SFTP connect/refresh
- Validate alias at each async callback to prevent stale UI updates
- Add switching_servers/disconnected/sftp_server_not_found i18n keys
- Properly handle connection results arriving after server switch

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 03:34:17 -05:00
chrome-storm-c442
4b505f39d1 fix: Char namedtuple save/restore — use blink not width, construct new Char objects
pyte.screens.Char is a namedtuple (immutable), so fields can't be
mutated directly. Also 'width' doesn't exist — the correct field is
'blink'. Now creates new Char(...) objects for buffer restoration.
Fixes server switching being completely broken (AttributeError on save).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 03:25:36 -05:00
chrome-storm-c442
afa75b6d9c fix: proper terminal buffer save/restore with full pyte screen state
Save complete pyte screen state (characters, colors, attributes,
cursor position, modes) via pickle serialization instead of just
plain text. Restore via direct buffer manipulation + full redraw.
Fixes broken/garbled layout when switching between servers.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 03:16:47 -05:00
chrome-storm-c442
bf5c4b14a4 fix: restore terminal buffer when switching back to pooled session
Instead of unconditionally resetting the terminal, reused sessions
now restore the saved screen content from the session pool.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 03:10:06 -05:00
chrome-storm-c442
8f55b210b3 v1.8.3: session pool + sidebar indicators
- SessionPool: LRU cache for SSH/SFTP sessions across server switches
- Sidebar: green dot indicators for servers with active sessions
- Sidebar: active sessions count label
- Terminal: buffer preservation on server switch via get_current_buffer()
- FilesTab/TerminalTab: pool integration for session reuse

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 03:05:05 -05:00
chrome-storm-c442
1a7b075cca v1.8.2: session management hardening
- Fix infinite reconnect loop in terminal (_send_to_shell guard)
- Safe language switch: disconnect + reconnect instead of object transplant
- Improved SFTP reconnect flow with proper validation
- Add log.debug to all silent exception handlers in ssh_client

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 02:38:27 -05:00
chrome-storm-c442
bae7a916f2 v1.8.1: keepalive + auto-reconnect + preserve sessions on lang switch
- SSH keepalive (30s) on all connections
- SFTP auto-reconnect on connection loss
- Terminal auto-reconnect on send to dead session (max 5 retries)
- Preserve SFTP session when switching UI language
- Guard all remote navigation with connection checks

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 02:31:28 -05:00
chrome-storm-c442
ed34546ef6 fix: preserve SFTP session on language switch
Save and restore live SFTP session when switching languages
instead of disconnecting and recreating everything from scratch.
Terminal reconnects automatically via set_server().

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 02:30:46 -05:00
chrome-storm-c442
85a8c3ffc6 fix: SSH keepalive + auto-reconnect for SFTP and terminal
- Add transport.set_keepalive(30) to all SSH connections
- Add SFTPSession.reconnect() method
- Auto-reconnect in _refresh_remote with retry on failure
- Auto-reconnect before upload/download operations
- Guard all remote navigation methods with connection checks
- ShellSession.connected wrapped in try/except
- Terminal: reset reconnect counter on send failure, increase max to 5
- Terminal: trigger reconnect on send to dead session

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 02:25:40 -05:00
chrome-storm-c442
3e9aeababe v1.8.0: file manager improvements
- SFTP cleanup on app close and language switch
- Windows drive selector in local panel
- Browse and Refresh buttons for local panel
- Recursive upload/download/delete of folders
- Drag-and-drop between local and remote panels
- Sudo mode toggle for privileged file operations
- New i18n keys for EN/RU/ZH

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 16:30:56 -05:00
chrome-storm-c442
a77ca6fee7 v1.7.0: dual-pane SFTP file manager
Replace primitive upload/download form with a full dual-pane file manager
(local + remote) featuring directory browsing, navigation history,
file operations (upload, download, mkdir, delete, rename), progress
tracking, and persistent SFTP sessions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 16:09:55 -05:00
chrome-storm-c442
c95ce8119b v1.6.2: scrollable Setup tab for small windows
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 15:50:00 -05:00
chrome-storm-c442
6496797424 fix: wrap Setup tab in CTkScrollableFrame for small windows
Content was clipped when window height was insufficient.
Now all sections are accessible via scroll.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 15:49:31 -05:00
chrome-storm-c442
b8e4eba997 v1.6.1: skip redundant auto-backups via content hash
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 15:41:11 -05:00
chrome-storm-c442
5f89ae3322 fix: skip auto-backup when data unchanged (sha256 hash comparison)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 15:40:41 -05:00
chrome-storm-c442
7bc2f1bded v1.6.0: import/export config & backups
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 15:38:22 -05:00
chrome-storm-c442
9baafc9a36 feat: import/export for config and backups
- Add export_config/import_config/export_backup/import_backup to ServerStore
- Add 4 buttons row in Setup tab UI with file dialogs
- Add i18n keys for EN/RU/ZH (16 keys each)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 15:37:53 -05:00
chrome-storm-c442
b0b7d263fb v1.5.5: terminal zoom, font fallback, copy feedback
- Ctrl+wheel/Ctrl±/Ctrl+0 font zoom (6-28), persisted in settings.json
- Font fallback: Cascadia Mono → Consolas → Courier New (per platform)
- Visual "Copied!" flash in status bar on copy
- Closes audit items #27 (copy feedback) and #29 (font fallback)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 15:17:51 -05:00
chrome-storm-c442
5b46e0426e Add TERMINAL_AUDIT.md — full audit plan with status tracking
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 15:06:20 -05:00
chrome-storm-c442
5440f368bc v1.5.4: smart Ctrl+C — copy on selection, double-tap for SIGINT
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 15:03:29 -05:00
chrome-storm-c442
80e22e4507 Smart Ctrl+C: copy on selection, double-tap for SIGINT
Single Ctrl+C with selection → copies text to clipboard.
Single Ctrl+C without selection → sends SIGINT.
Double Ctrl+C (within 300ms) → always sends SIGINT.
Protects against accidentally killing programs when trying to copy.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 15:03:03 -05:00
chrome-storm-c442
1e2c98453a v1.5.3: complete terminal rewrite for full TUI compatibility
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 14:58:26 -05:00
chrome-storm-c442
59163f0469 Complete terminal rewrite for full TUI compatibility
- Alternate screen buffer (smcup/rmcup) for mc, vim, htop, less
- 256-color and truecolor rendering (dynamic tag creation)
- Reverse video and strikethrough attributes
- write_process_input bridge (DA/DSR responses to SSH)
- DECCKM application cursor keys for arrow navigation
- Alt+key combinations (mc panels, readline word nav)
- Shift+Arrow / Ctrl+Arrow with xterm modifier encoding
- Shift+Tab (backtab) for reverse completion
- Bracketed paste mode for clean multi-line paste
- Mouse tracking (basic, button, any-event, SGR extended)
- Incremental UTF-8 decoder (handles split multi-byte)
- Cursor hidden state (DECTCEM) respected
- pyte dirty set for optimized rendering
- Numpad key support
- Professional copy/paste UX:
  - Ctrl+C always sends SIGINT
  - Ctrl+Shift+C/V for copy/paste
  - Right-click context menu with Copy/Paste/Select All
  - Double-click to select word
- Smooth mousewheel scroll (3 lines in alt screen)
- Thread-safe session management (all state on main thread)
- Resize debounce reduced to 100ms
- Send errors trigger disconnect notification

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 14:57:55 -05:00
chrome-storm-c442
38d2387cd5 Add --publish flag to release.py for automatic Gitea releases
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 14:47:53 -05:00
chrome-storm-c442
e148e8e2cd v1.5.2: fix DECCKM — arrow keys work in mc/vim/htop
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 14:45:37 -05:00
chrome-storm-c442
1de72a2724 Fix DECCKM support for arrow keys in TUI apps (mc, vim, htop)
- mc/vim/htop enable Application Cursor Mode (DECCKM ?1h) which
  requires arrow keys to send \eOA..D instead of \e[A..D
- Detect DECCKM in pyte screen mode and send correct sequences
- Fix thread-safety: use queue.Queue for SSH→main thread data transfer

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 14:45:07 -05:00
chrome-storm-c442
95ef41eaeb Add v1.5.0 and v1.5.1 release binaries
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 14:37:43 -05:00
chrome-storm-c442
5673fed43c Update CLAUDE.md: enforce version bump before every build
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 14:34:52 -05:00
chrome-storm-c442
b3ddc26c2c v1.5.1: fix TUI apps freezing in SSH terminal
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 14:34:21 -05:00
chrome-storm-c442
641f5a41d0 Fix TUI apps (mc, htop, vim) freezing in SSH terminal
- Remove LNM mode that corrupted cursor positioning for TUI programs
- Add render debouncing (~60fps) to prevent UI thread blocking
- Add data batching in terminal tab to reduce render calls
- Increase SSH recv buffer from 4KB to 64KB

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 14:32:19 -05:00
chrome-storm-c442
e1b3c1c427 Add auto-commit/push rule to CLAUDE.md
Ensure all changes are committed and pushed to sensey at the end of every session.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 14:16:56 -05:00
chrome-storm-c442
a83a97c9d5 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>
2026-02-23 14:06:41 -05:00
chrome-storm-c442
0c89e77417 Redesign TOTP code display: larger timer, thicker progress bar, color sync
- Code font: 42 → 52pt
- Timer: separate big seconds (28pt bold) + "sec" unit label
- Progress bar: 300×6 → 400×10, rounded corners, dark track (#2a2a3e)
- Timer + progress bar color syncs with code (green → yellow → red)
- Code frame corner radius 12 → 16, more padding

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 11:18:51 -05:00
chrome-storm-c442
b8c61e4719 Add click-to-copy animation on TOTP code display
- Click anywhere on the code area copies to clipboard
- Visual feedback: green flash + checkmark for 400ms
- Hand cursor on code frame, label, and timer
- Copy button still works as before

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 11:10:41 -05:00
chrome-storm-c442
bf39fd7b67 v1.2.0 + v1.3.0: Localization, About dialog, TOTP/2FA, stability improvements
v1.2.0:
- GUI localization (EN/RU/ZH) with language switcher and persistent selection
- About dialog (ⓘ) with app info, features, quick start guide
- core/i18n.py — internationalization module with t() function
- All GUI components translated via t() keys

v1.3.0:
- TOTP/2FA tab — Google Authenticator compatible codes with live 30s countdown,
  one-click copy, per-server secret management
- core/totp.py — TOTP module (pyotp, RFC 6238)
- core/logger.py — rotating file logger (5MB, 3 backups)
- Stronger Fernet encryption key with automatic migration from old key
- Thread-safe server store with locks, atomic writes, auto-restore on corruption
- Parallel status checks via ThreadPoolExecutor (up to 10 concurrent)
- SSH client: explicit channel cleanup, Unix key permissions
- Server dialog: port validation (1-65535), TOTP secret field
- Language change preserves active tab and server selection
- pyotp dependency added

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 11:07:51 -05:00
chrome-storm-c442
f86d6a7214 Rebuild win-x64 binary with Setup tab and shared config
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 09:02:22 -05:00
chrome-storm-c442
42a6a876d3 Add Claude Code integration: shared config + Setup tab
- Shared servers.json at ~/.server-connections/ (GUI + Claude Code)
- Setup tab: one-click install of ssh.py, /ssh skill, SSH key
- Duplicate checks — safe to run multiple times
- tools/ssh.py + tools/skill-ssh.md bundled
- Updated README with integration docs (EN/RU/ZH)
- Deploy guide for new machines

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 09:01:22 -05:00
chrome-storm-c442
e84975b4c1 Add detailed auto-sudo and security docs in all 3 languages
Describe automatic privilege escalation mechanism,
password handling via stdin, and AI API security.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 08:04:49 -05:00
chrome-storm-c442
218b60f7f6 Add build system, versioning, releases, multilingual docs
- version.py with v1.0.0
- build.py (PyInstaller cross-platform build script)
- build.sh / build.bat for quick builds
- releases/ServerManager-v1.0.0-win-x64.exe (Windows x64 binary)
- README.md with docs in English, Russian, Chinese
- CHANGELOG.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 07:58:40 -05:00
chrome-storm-c442
6179ded862 Initial commit: ServerManager GUI application
CustomTkinter desktop app for managing remote servers.
Features: SSH terminal, SFTP file transfer, key management,
background status monitoring, server CRUD with dark theme.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 07:49:13 -05:00