Commit Graph

173 Commits

Author SHA1 Message Date
chrome-storm-c442
2f84429b10 v1.8.98: fix ghost "eue" text in terminal — strip DCS/APC/PM/SOS sequences
pyte 0.8.2 doesn't handle DCS string sequences (ESC P ... ST). When
nano/ncurses sends DECRQSS queries, pyte consumed the introducer but
rendered the payload as visible text. Added regex pre-filter to strip
DCS/APC/PM/SOS sequences before feeding data to pyte.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 01:49:35 -05:00
chrome-storm-c442
72c7da5765 fix: install.sh — ignore chmod error on existing dirs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 06:29:14 -05:00
chrome-storm-c442
b7e9c80690 v1.8.97: add install.sh — CLI installer for headless Linux servers
Installs ssh.py, encryption.py, Claude Code skill, Python dependencies.
Supports local source dir or downloads from Gitea.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 06:28:18 -05:00
chrome-storm-c442
7af788b72e v1.8.96: persist sidebar width across restarts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 05:47:08 -05:00
chrome-storm-c442
08307fbe9b v1.8.95: resizable sidebar via PanedWindow — drag to widen server list
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 05:42:41 -05:00
chrome-storm-c442
2174168200 v1.8.94: test release for update mechanism verification
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 04:15:06 -05:00
chrome-storm-c442
273666236a v1.8.93: rewrite update script from VBS+PowerShell to plain BAT with logging
VBS→PowerShell chain was silently failing. BAT is simpler, doesn't depend
on execution policy, and writes detailed log to %TEMP%\sm_update.log
for debugging.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 04:13:36 -05:00
chrome-storm-c442
bc48aea1e4 v1.8.92: fix Ctrl+S/Q and all Ctrl+key combos with non-Latin keyboard layouts
Ctrl+key shortcuts now use physical keycodes as fallback, so Ctrl+S (save
in nano), Ctrl+Q (XON), Ctrl+A/E/R/W/T etc. work regardless of whether
the keyboard layout is English, Russian, or any other.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 04:10:30 -05:00
chrome-storm-c442
bc7be1057b v1.8.91: terminal background pure black (#000000) instead of dark blue
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 04:06:46 -05:00
chrome-storm-c442
d0f84d00eb v1.8.90: fix update script — remove $ErrorActionPreference=Stop, launch via cmd start
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 02:14:06 -05:00
chrome-storm-c442
1218f4d72d v1.8.89: fix DLL error on auto-update — clean all stale _MEI dirs, launch via explorer.exe
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 02:11:02 -05:00
chrome-storm-c442
acc93f98e3 v1.8.86: fix update DLL error — cleanup old _MEI dir, delay before launch, retry copy
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 00:50:04 -05:00
chrome-storm-c442
57ea90f210 v1.8.85: build.py auto-publishes Gitea release with exe asset
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 00:45:53 -05:00
chrome-storm-c442
85977863ec v1.8.84: skill-ssh.md — server type routing table for Redis/SQL/WinRM/etc
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 00:41:04 -05:00
chrome-storm-c442
6b08dbe85f chore: clean old releases, keep v1.0.0 + v1.8.79-v1.8.83
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 09:46:33 -05:00
chrome-storm-c442
0fbf8dc811 v1.8.83: test build for os.startfile update verification
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 09:39:22 -05:00
chrome-storm-c442
7a654c9ef6 v1.8.82: fix update apply — os.startfile(vbs) + os._exit(0)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v1.8.82
2026-03-01 09:36:01 -05:00
chrome-storm-c442
bf27141a85 v1.8.81: fix update apply — os._exit(0) to kill daemon threads
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 09:31:17 -05:00
chrome-storm-c442
e929995803 v1.8.80: test build for auto-updater verification
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 09:07:31 -05:00
chrome-storm-c442
9d41dc03ee v1.8.79: fix updater — hardcoded Gitea API URL for frozen exe
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 09:04:28 -05:00
chrome-storm-c442
9393134593 v1.8.78: auto-updater — Gitea releases check, download, apply
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 09:00:27 -05:00
chrome-storm-c442
c23eb36dcc v1.8.75: build.py auto-deploys ssh.py, encryption.py, skill to local dirs
Prevents stale ~/.server-connections/ssh.py after code changes.
Every build now auto-copies tools/ssh.py, core/encryption.py
and tools/skill-ssh.md to their shared locations.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 04:53:08 -05:00
chrome-storm-c442
b28e199108 Merge branch 'master' of https://git.sensey24.ru/aibot777/server-manager 2026-03-01 04:21:33 -05:00
chrome-storm-c442
1ee03a1da4 v1.8.74: skill docs update — resume/retry behavior, Windows SHA256 path fix
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 04:21:04 -05:00
cosmic-frost-8b10
326cc5a78c v1.8.74: Linux x64 release build
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 15:09:04 +00:00
chrome-storm-c442
7e7c1d3efc v1.8.73: reliable SFTP upload — chunked resume, SHA256 verification, adaptive retry
- CLI (ssh.py): chunked resume upload for files >10MB with .part atomic rename
- CLI: SHA256 verification (sha256sum on Linux, Get-FileHash on Windows)
- CLI: adaptive retry count based on file size (up to 30 for large files)
- CLI: SSH keepalive 15s + window_size 4MB for stable transfers
- CLI: path injection fix in SHA256 shell commands
- CLI: Windows SFTP path fix for PowerShell Get-FileHash
- GUI (ssh_client.py): chunked upload with resume in SFTPSession
- GUI: retry up to 3 attempts with SHA256 readback in SSHClientWrapper
- GUI: keepalive 15s + window_size 4MB in both auth paths
- Tested: 5MB, 15MB, 200MB uploads to Windows SSH server (116)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 10:03:07 -05:00
chrome-storm-c442
aea5030623 v1.8.71: fix Windows compatibility — guard Linux-only X11 code with platform check
- main.py: wrap _ensure_display_access() in sys.platform != "win32" check
- main.py: add FileNotFoundError to except in _find_active_xauthority()
- claude_setup.py: platform-aware error message for ssh-keygen not found
- CLAUDE.md: add mandatory cross-platform rules for all contributors

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 08:41:15 -05:00
cosmic-frost-8b10
508a288022 v1.8.70: fix SSH key generation — use ssh-keygen instead of broken paramiko
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 13:34:35 +00:00
cosmic-frost-8b10
d51c0aa09a v1.8.69: smart X display auto-detection and xauth fix
Automatically finds active display from X11 sockets and processes,
locates .Xauthority from display owner in /home/*, and merges
xauth cookies so root can use another user's X session.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 13:29:21 +00:00
cosmic-frost-8b10
8169e3e137 v1.8.68: auto-fix X display authorization on startup
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 13:27:02 +00:00
cosmic-frost-8b10
8417507a35 v1.8.67: Linux x64 release build
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 13:13:35 +00:00
cosmic-frost-8b10
74afe1b48f v1.8.67: version bump for Linux x64 release
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 13:10:28 +00:00
chrome-storm-c442
997c7d20a5 v1.8.66: fix 7 Redis bugs — shlex parser, GUI stats, SSL, error handling, dedup
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 07:15:46 -05:00
delta-cloud-208e
7c9e54bb44 feat: add --type support to --add command
- Support for all server types: ssh, telnet, mariadb, mssql, postgresql, redis, grafana, prometheus, winrm, rdp
- Add --type, --database, --token options to --add command
- Add server type validation
- Add type-specific fields (database, token, auth_method)
- Update skill-ssh.md with new usage

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-02-27 07:15:57 +00:00
delta-cloud-208e
006ca2bf9f feat: add idempotent global CLAUDE.md install with start/end markers
Uses <!-- server-manager:start/end --> markers to safely add or replace
the server-manager section. Re-running install_all() updates the block
without creating duplicates.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-02-27 07:11:39 +00:00
chrome-storm-c442
b2c6f8fdd3 v1.8.65: Linux→Windows auto-sanitize commands for Windows SSH servers
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 08:27:57 -05:00
chrome-storm-c442
327647f77e v1.8.63: blue scrollbars matching CTk theme across all tabs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 07:18:04 -05:00
chrome-storm-c442
3a5d1b27fc v1.8.60: multi-type status check + --add in skill + skill docs update
- _check_status_one: proper connectivity check per server type
  (SSH/SQL/Redis/Grafana/Prometheus/WinRM/RDP)
- ping_server uses _check_status_one instead of paramiko-only
- check_status shows server type column
- skill-ssh.md: allow --add, document it, update --status description
- CLAUDE.md: add --add/--remove/--set-note to command reference

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 05:26:24 -05:00
chrome-storm-c442
1c4288ba93 v1.8.59: fix @staticmethod bug in SQL/PHP format converters
_sql_val and _php_val were @staticmethod but called via self —
caused "takes 1 positional argument but 2 were given" error.
Converted to regular methods. All 16 formats tested OK.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 05:15:34 -05:00
chrome-storm-c442
ec4ad28c29 v1.8.58: results context menu — Copy Cell/Row/All As 16 formats
Right-click on results table:
- Copy Cell — single cell value
- Copy Row — tab-delimited row
- Copy Row As → 16 formats submenu
- Copy All As → 16 formats submenu

Formats: Excel CSV, Tab-delimited, HTML, XML, SQL INSERTs,
SQL INSERT IGNOREs, SQL REPLACEs, SQL DELETE/INSERTs,
SQL UPDATEs, LaTeX, Textile, Jira, PHP Array, Markdown,
JSON, JSON Lines

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 05:06:54 -05:00
chrome-storm-c442
4a6464ede9 v1.8.57: auto-size result columns + working horizontal scrollbar
- Measure column widths from header and data (sample up to 100 rows)
- Clamp width: min 60px, max 400px per column
- Set stretch=False so columns don't compress to fit viewport
- Horizontal scrollbar now works when total column width exceeds view

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 04:53:32 -05:00
chrome-storm-c442
6f0bfe39f1 v1.8.56: Database Tree Explorer + thread-safe SQL operations
- Add HeidiSQL-style database tree panel (Databases → Tables → Columns)
- Lazy loading with ttk.Treeview, context menus, double-click SELECT TOP 1000
- Fix pymysql thread safety: serialize all DB ops with threading.Lock
- Use lock.acquire(timeout=10) to prevent deadlocks between tree and query threads
- Always reset _executing flag in finally block to prevent stuck queries
- Add _ensure_connected() auto-reconnect on broken connections
- Add sql_client check_connection() null safety
- Add 12 tree-related i18n keys (EN/RU/ZH)
- Clean up old releases

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 04:18:45 -05:00
chrome-storm-c442
ac7e174e41 v1.8.53: fix Redis and MariaDB GUI tabs — wrong client API calls
- redis_tab: fix RedisClient constructor (pass server dict, not alias+store)
- redis_tab: add connect() call, add disconnect on server switch
- redis_tab: remove non-existent db= parameter from execute(), use select_db()
- redis_client: add select_db() method for runtime DB switching
- query_tab: fix use_database() → switch_database(), close() → disconnect()
- query_tab: fix execute() → execute_query() with dict unpacking
- query_tab: add missing connect() call after SQLClient creation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 03:28:12 -05:00
chrome-storm-c442
4c7c15e497 docs: clarify file transfer rules in skill-ssh.md
- Shell commands (echo/base64/cat) banned only as file transfer method, not as regular commands
- Clarify --upload workflow: existing files upload directly, new files create locally first

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 02:30:13 -05:00
chrome-storm-c442
24e4493e1d v1.8.52: fix skill — enforce SFTP upload/download, ban stdin/base64 file transfer
Prevents Claude Code from using creative shell-based file transfer methods
(echo/base64/cat stdin) that fail with exit 127 on large files.
Skill now clearly mandates --upload/--download (SFTP) as the ONLY allowed method.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 02:12:12 -05:00
chrome-storm-c442
4959004a3f v1.8.52: icons module, Windows SSH sanitization, embedded RDP improvements, UI polish
- Add core/icons.py — centralized icon text helper with emoji/symbol support
- Add Windows SSH command sanitization in ssh.py (Linux→Windows auto-translation)
- Improve embedded RDP: launch tab connect/disconnect, fullscreen toggle
- Refactor sidebar: cleaner server type badges
- Update server_dialog: adaptive fields per server type
- Add setup_openssh.bat tool
- Update skill-ssh.md and CLAUDE.md docs for Windows SSH support
- Cleanup old releases, add v1.8.48-v1.8.52

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 14:37:37 -05:00
chrome-storm-c442
142b68515c v1.8.36: fix fullscreen toggle — _is_detached flag prevents re-embed conflict
- Added _is_detached flag to EmbeddedRDP (set in detach(), cleared in reattach())
- _monitor_tick() skips try_reembed() when window is intentionally detached
- Prevents race condition: monitor tick no longer re-embeds fullscreen window
- Added plans/test-rdp.md — RDP testing documentation
- build.py auto-cleanup removed v1.8.31

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 12:59:16 -05:00
chrome-storm-c442
68f2d7eae8 v1.8.35: fix embedded RDP auto-recovery on reconnect + release cleanup
- try_reembed() now handles same-HWND reparent scenario (mstsc reconnect resets parent)
- is_embedded() checks GetParent(hwnd) == parent_hwnd every 500ms
- _monitor_tick() two-stage: is_alive() for process death, is_embedded() for window loss
- build.py auto-cleans old releases (keep first + last 5)
- Cleaned old releases from git

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 12:45:05 -05:00
chrome-storm-c442
68e94856f6 v1.8.32: fix embedded RDP — AttachThreadInput for cross-process SetParent
SetParent returned 0 (failed) because mstsc runs in a different thread.
Added AttachThreadInput() before SetParent to link input queues.
Also strip WS_EX_APPWINDOW to remove mstsc from taskbar when embedded.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 12:07:49 -05:00
chrome-storm-c442
91bc1c0345 v1.8.31: fix SetWindowLongW overflow — unsigned 32-bit style mask
GetWindowLongW returns signed int; bitwise ops with WS_POPUP (0x80000000)
overflow ctypes c_long. Fixed with & 0xFFFFFFFF mask + ctypes.c_long() cast.
Also tightened window class filter: pid_match now requires known mstsc class.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 12:02:58 -05:00