144 Commits

Author SHA1 Message Date
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
chrome-storm-c442
82e64b5fad v1.8.29: fix embedded RDP — multi-strategy window finding + cert suppression
- Replace PID-only matching with psutil child tracking + hostname title matching
- Add _trust_rdp_server() to pre-trust certificate via registry
- Two-phase embed: dialog first, then re-embed main TscShellContainerClass
- Fix disconnect/is_alive to handle mstsc child processes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 11:42:19 -05:00
chrome-storm-c442
4e9012e2ab v1.8.26: right-click context menu on sidebar servers
Type-adaptive menu: SSH (terminal/files/keys), SQL (query editor),
Redis (console), Grafana/Prometheus (open browser), WinRM (PowerShell),
RDP/VNC (connect). Universal: check status, copy alias, edit, delete.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 10:00:00 -05:00
chrome-storm-c442
1b3fb30680 v1.8.25: update CLAUDE.md — full multi-type architecture docs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 09:44:24 -05:00
chrome-storm-c442
65a71c4947 docs: workflow — build+test before commit, push exe in releases/
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 09:40:37 -05:00
chrome-storm-c442
c57febea62 docs: fix workflow — don't commit exe, only build and test before push
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 09:40:07 -05:00
chrome-storm-c442
d7959f5b8d docs: enforce build-before-commit workflow in CLAUDE.md
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 09:39:02 -05:00
chrome-storm-c442
fc33c18881 v1.8.24: build with multi-type server support
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 09:38:17 -05:00
chrome-storm-c442
fce17078ae chore: clean old releases, keep v1.0.0 and last 5
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 09:36:12 -05:00
chrome-storm-c442
eede67e6a9 feat: multi-type server support — SQL, Redis, Grafana, Prometheus, Telnet, WinRM, RDP/VNC
Full implementation of multi-type server management across GUI and CLI:

New clients: SQLClient (MariaDB/MSSQL/PostgreSQL), RedisClient, GrafanaClient,
PrometheusClient, TelnetSession, WinRMClient, RemoteDesktopLauncher.

New GUI tabs: QueryTab (SQL editor + Treeview), RedisTab (console + history),
GrafanaTab (dashboards + alerts), PrometheusTab (PromQL + targets),
PowershellTab (PS/CMD), LaunchTab (RDP/VNC external client).

Infrastructure: TAB_REGISTRY for conditional tabs per server type,
adaptive server_dialog fields, colored type badges in sidebar,
status checker for all types (SSH/TCP/SQL/Redis/HTTP), 100+ i18n keys.

CLI: ssh.py extended with --sql, --redis, --grafana-*, --prom-*, --ps, --cmd.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 09:35:24 -05:00
chrome-storm-c442
2d1d942ddc docs: fix skill syntax, update fallback generator, add progress docs
- Fix --info/--set-note syntax in CLAUDE.md (global flags, not per-alias)
- Add --remove, --install-key to CLAUDE.md examples
- Replace minimal fallback skill generator with full version (security rules, all commands, progress, SFTP double-slash)
- Add upload/download progress reporting to skill-ssh.md and README
- Fix outdated v1.5.4 version in README build examples

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 07:43:15 -05:00
chrome-storm-c442
7d29f8446a feat: add upload/download progress reporting in ssh.py
Files <1MB show size+time in OK line. Files >=1MB show 25/50/75% milestones with transferred/total, plus speed in final OK line.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 07:38:40 -05:00
chrome-storm-c442
e7634bf397 docs: update README, CHANGELOG, CLAUDE.md with new ssh.py features 2026-02-24 07:19:02 -05:00
chrome-storm-c442
e75afddb99 fix: SFTP paths on Windows — double-slash for remote, remove broken MSYS env
- Remote paths in upload/download require // prefix on Windows/Git Bash
- Removed useless MSYS_NO_PATHCONV from Python (must be shell-level)
- Removed broken bash wrapper
- Updated skill docs with // path rule and examples

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 07:14:49 -05:00
chrome-storm-c442
d7101a12d2 chore: add release binaries v1.6.x, v1.8.9-v1.8.23 and fix MSYS path conversion
- Add 17 release executables that were missing from the remote repo
- Fix MSYS path conversion issue in tools/ssh.py for Windows compatibility
- Add nul to .gitignore to prevent Windows special file conflicts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 07:08:40 -05:00
chrome-storm-c442
8554c73ba0 fix: word-boundary fuzzy alias search, _resolve_alias in remove_server
- "tor" now matches "API TOR contabo..." but NOT "investor"
- Whole-word match first, substring fallback second
- remove_server() now uses _resolve_alias() for consistency

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 07:02:38 -05:00
chrome-storm-c442
afa3210260 v1.8.23: upgrade ssh.py + skill for secure Claude Code integration
- Add --info (safe server details without credentials)
- Add --set-note (update server notes for context)
- Add --no-sudo flag documentation in skill
- Fix --add leaking user@ip:port in output
- Add WARNING to --list-full, forbid in skill
- Add notes column to --list output
- Update skill: portable path ~/.server-connections/, security rules, behavior docs
- Update CLAUDE.md: security section, architecture, dev commands, doc references

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 06:51:59 -05:00
chrome-storm-c442
8e51b6f786 Update screenshot
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 06:17:25 -05:00
chrome-storm-c442
5cf856069b v1.8.23: fix Ctrl+V/C/X/A/Z for non-Latin keyboard layouts, add Entry undo/redo
- Global keycode-based handler for Ctrl shortcuts (works with Russian, Chinese, any layout)
- Tkinter maps <<Paste>> to <Control-v> by keysym which fails on non-Latin layouts
- New handler intercepts <Control-Key> at 'all' level, checks keycodes and generates correct virtual events
- Added Undo/Redo support for Entry widgets (tk.Entry has no built-in undo)
- Tab switch focus management: terminal releases focus when switching away

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 06:13:27 -05:00
chrome-storm-c442
a8f3bd04e1 v1.8.17: revert broken undo, keep only alias-edit feature
Fully reverted sidebar, files_tab, totp_tab, server_dialog to v1.8.10
base. Removed all entry_undo bindings that broke Ctrl+V paste globally.
Only alias editing feature preserved (editable alias + rename support).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 05:45:53 -05:00
chrome-storm-c442
5d55d41f34 v1.8.13: fix entry_undo Cyrillic bind crash
tkinter rejects Cyrillic chars in bind(). Use keycode-based
<Control-Key> dispatch instead (same approach as terminal_widget).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 05:30:13 -05:00
chrome-storm-c442
afffc4177e v1.8.12: fix Ctrl+Z undo — manual implementation for tk.Entry
tk.Entry has no built-in undo (unlike tk.Text), so _entry.config(undo=True)
crashed. Replaced with custom entry_undo.py that tracks history manually
and binds Ctrl+Z/Ctrl+Y (+ Russian layout support).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 05:28:56 -05:00
chrome-storm-c442
0554d8782f v1.8.11: editable alias + Ctrl+Z undo for all input fields
- Alias field now editable when editing server profile
- Duplicate alias validation, session pool migration on rename
- Ctrl+Z undo enabled on all CTkEntry widgets (11 fields)
- Audit plan added to plans/

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 05:21:13 -05:00
chrome-storm-c442
7b0e7dd6ac fix: editable alias in server dialog + Ctrl+Z undo for all input fields
- Alias field no longer disabled when editing server profile
- Duplicate alias check on rename, session pool migration
- Enable undo (Ctrl+Z) on all CTkEntry widgets across the project

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 05:17:21 -05:00
chrome-storm-c442
efb508c982 v1.8.10: security audit fixes
- --list and --status no longer expose IP/port/user (only aliases)
- --list-full for admin use (not in skill)
- Removed --add from /ssh skill (servers added via GUI only)
- Removed exact file paths from skill template
- Added deny-read rules for ~/.server-connections/ files
- Wrapped main() in try/except to prevent traceback leaking
- Added needs_reencrypt() to encryption.py for future migration
- install_key no longer prints server IP

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 04:56:16 -05:00
chrome-storm-c442
831fb66110 Update CLAUDE.md: primary goal, auto-bump docs, architecture
- Document primary purpose: Claude Code manages servers via /ssh skill by alias only
- Update versioning section: auto-bump in build.py, remove outdated release.py refs
- Add terminal features, session pool, keyboard layout independence
- Update project structure to reflect current architecture

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 04:37:20 -05:00
chrome-storm-c442
c778e2bdba v1.8.8: auto-version bump + keycode-based Ctrl+key dispatch
- build.py auto-increments patch version on every build (--no-bump to skip)
- Ctrl+C/V/D/L/Z routed by physical keycode, works with any keyboard layout
- No more manual version bumping needed

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 04:23:22 -05:00
chrome-storm-c442
8285e33555 v1.8.7: fix Ctrl+key for non-Latin keyboard layouts
- Replace Cyrillic char bindings (tkinter rejects them) with keycode dispatch
- <Control-Key> handler routes by physical keycode (67=C, 86=V, etc.)
- Works with Russian, Ukrainian, and any other keyboard layout

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 04:19:23 -05:00
chrome-storm-c442
0d3c433bac v1.8.7: fix Ctrl+C/V with Russian keyboard layout
- Add Cyrillic key bindings for Ctrl+C/V/D/L/Z and Ctrl+Shift+C/V
- Russian layout: с=C, м=V, в=D, д=L, я=Z
- Fixes: Ctrl+C (SIGINT/copy), Ctrl+V (paste) not working with РУС layout

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 04:17:24 -05:00
chrome-storm-c442
11ea811c4f v1.8.7: robust sudo auto-password + debug status
- Strip ANSI escapes before sudo prompt detection
- Normalize \r\n/\r line endings for reliable matching
- 300ms delay before sending password (PTY settle time)
- Status bar feedback: "sudo: password sent automatically"
- Encode password explicitly as UTF-8

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