v1.9.0: S3 server type — bucket/object browser, drag-and-drop upload, resilient transfers

New server type: S3 (MinIO, AWS, any S3-compatible storage)
- core/s3_client.py: boto3 client with auto-reconnect, 10 retries, exponential backoff, multipart upload/download, tcp_keepalive
- gui/tabs/s3_tab.py: object browser (Treeview), bucket selector, folder navigation, drag-and-drop upload from Explorer (windnd), progress bar with %, multi-file upload
- CLI: --s3-buckets, --s3-ls, --s3-upload, --s3-download, --s3-delete with retry
- ServerDialog: access_key, secret_key, bucket fields
- Registration: server_store, connection_factory, status_checker, icons, app, i18n (EN/RU/ZH)
- Fix: build.py cleanup_old_releases now sorts by semver (was lexicographic, broke v1.8.100+)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
chrome-storm-c442
2026-03-03 06:32:03 -05:00
parent f2dc978c57
commit 9b0e4c76a3
19 changed files with 1277 additions and 8 deletions

View File

@@ -57,6 +57,7 @@ ICONS = {
"powershell": "\u2328", # ⌨
"launch": "\U0001f5a5", # 🖥
"totp": "\U0001f510", # 🔐
"objects": "\U0001faa3", # 🪣
# Context menu
"connect": "\u25b6", # ▶
@@ -91,6 +92,7 @@ TYPE_COLORS = {
"redis": "#dc2626",
"grafana": "#f97316",
"prometheus": "#e11d48",
"s3": "#16a34a",
}
# Unicode symbols for each server type (reliable, no PIL needed)
@@ -106,6 +108,7 @@ TYPE_SYMBOLS = {
"redis": "\u25c6", # ◆
"grafana": "\U0001f4ca", # 📊
"prometheus": "\U0001f525", # 🔥
"s3": "\U0001faa3", # 🪣
}
# Short text labels for sidebar badge
@@ -121,6 +124,7 @@ TYPE_LABELS = {
"redis": "RDS",
"grafana": "GRF",
"prometheus": "PRM",
"s3": "S3",
}
@@ -157,6 +161,7 @@ TAB_ICONS = {
"metrics": "metrics",
"powershell": "powershell",
"launch": "launch",
"objects": "objects",
}
# Context menu icon mapping (i18n_key -> icon_name)