- Add GUI (Test) module with Fyne-based interface (internal/gui/gui.go, internal/gui/server.go) - Add CLI monitoring capability (internal/cli/monitor.go) - Add main_cli.go entry point for CLI-only builds - Add comprehensive documentation suite covering setup, build, quick start, and changelog - Add admin manifest (admin.manifest) for Windows UAC elevation support - Add rsrc.syso.json configuration for resource embedding - Update .gitignore to exclude build scripts (*.bat, *.sh) - Update main.go and cli.go to support dual GUI (Test)/CLI modes - Update README.md with new project information - Enables users to build and run both GUI (Test)and CLI versions with proper admin privileges on Windows
7.1 KiB
7.1 KiB
Changelog - GUI Version
[2.0.0] - 2026-04-05
Добавлено
- ✨ Современный графический интерфейс (GUI) на базе Fyne
- 🎨 Material Design стиль интерфейса
- 📊 Панель статуса в реальном времени с индикатором подключения
- ⏱️ Отображение времени подключения
- 📈 Статистика трафика для WireGuard (прием/передача)
- 🔄 Автоматическое обновление статуса каждые 2 секунды
- 🎯 Три вкладки: WireGuard, VLESS, Подписки
- 🧪 Тестирование серверов с визуальным прогрессом
- 📋 Просмотр конфигураций из подписок
- 🔍 Массовое тестирование серверов из подписки
- 💾 Добавление WireGuard конфигов из файла
- 🎨 Кастомная цветовая тема
- ⚡ Асинхронные операции с индикаторами прогресса
- 🔔 Диалоговые окна для подтверждения действий
- 📱 Адаптивный интерфейс
Изменено
- 🔧 main.go теперь поддерживает два режима: GUI (по умолчанию) и CLI (--cli флаг)
- 📦 Обновлены зависимости в go.mod (добавлен Fyne v2.4.5)
- 📝 Обновлен README.md с инструкциями по GUI
- 🛠️ Новые скрипты сборки: build_gui.bat, build_gui.sh
- 🔧 Новые скрипты инициализации: init_gui.bat, init_gui.sh
Сохранено
- ✅ Весь функционал CLI версии
- ✅ Поддержка WireGuard
- ✅ Поддержка VLESS через Xray
- ✅ Управление подписками
- ✅ Тестирование серверов
- ✅ Детальное логирование
- ✅ Кроссплатформенность
Технические детали
Новые файлы
internal/gui/gui.go- основной модуль GUI (1000+ строк)build_gui.bat- скрипт сборки для Windowsbuild_gui.sh- скрипт сборки для Linux/macOSinit_gui.bat- инициализация зависимостей для Windowsinit_gui.sh- инициализация зависимостей для Linux/macOSGUI_GUIDE.md- подробное руководство пользователя GUI
Архитектура GUI
Структура интерфейса:
MainWindow
├── Header (Title + Status)
│ ├── StatusIcon (Circle indicator)
│ ├── StatusLabel
│ └── ConnectionInfo
├── Tabs
│ ├── WireGuard Tab
│ │ ├── Config List
│ │ └── Action Buttons
│ ├── VLESS Tab
│ │ ├── Config List
│ │ └── Action Buttons
│ └── Subscriptions Tab
│ ├── Subscription List
│ └── Action Buttons
└── Footer
└── Disconnect Button
Основные компоненты:
-
GUI struct
- app: fyne.App
- window: fyne.Window
- statusLabel: динамический статус
- statusIcon: индикатор подключения
- connectionInfo: детальная информация
- statusTimer: таймер обновления
-
Функции WireGuard
- connectWireGuard()
- addWireGuardManual()
- addWireGuardFromFile()
- deleteWireGuard()
-
Функции VLESS
- connectVLESS()
- addVLESS()
- testVLESS()
- deleteVLESS()
-
Функции подписок
- addSubscription()
- updateSubscription()
- showSubscriptionConfigs()
- testSubscriptionConfigs()
- deleteSubscription()
-
Утилиты
- updateStatus() - обновление статуса
- disconnect() - отключение VPN
- makeCard() - создание карточек UI
- customTheme - кастомная тема
Особенности реализации
Асинхронность:
- Все длительные операции выполняются в горутинах
- Используются dialog.NewProgressInfinite для индикации
- UI остается отзывчивым во время операций
Обновление статуса:
- Автоматическое обновление каждые 2 секунды
- Изменение цвета индикатора (серый/зеленый)
- Отображение времени подключения в формате HH:MM:SS
- Статистика трафика для WireGuard
Тестирование серверов:
- Визуальный прогресс-бар
- Отображение текущего тестируемого сервера
- Сортировка результатов по пингу
- Топ-10 лучших серверов
Диалоги:
- Подтверждение удаления
- Формы ввода данных
- Информационные сообщения
- Ошибки с детальным описанием
Зависимости
Новые:
- fyne.io/fyne/v2 v2.4.5 - GUI фреймворк
- Множество транзитивных зависимостей Fyne
Существующие:
- github.com/fatih/color v1.16.0 - для CLI
- golang.org/x/sys v0.16.0 - системные вызовы
Сборка
Windows:
go build -ldflags="-s -w -H windowsgui" -o vpn-client-gui.exe main.go
-s -w- уменьшение размера-H windowsgui- скрытие консоли
Linux/macOS:
go build -ldflags="-s -w" -o vpn-client-gui main.go
Размер приложения
- Исполняемый файл: ~25-30 MB (с GUI)
- CLI версия: ~10-15 MB
- Потребление RAM: 50-100 MB (GUI), 20-30 MB (CLI)
Совместимость
- ✅ Windows 10/11
- ✅ Linux (Ubuntu, Debian, Fedora, Arch и др.)
- ✅ macOS 10.13+
- ✅ Обратная совместимость с CLI режимом
Известные ограничения
- GUI требует графическую среду (X11/Wayland/Windows)
- Для серверов рекомендуется использовать CLI режим
- WireGuard на Windows требует установки официального клиента
Планы на будущее
- Темная тема
- Системный трей
- Автозапуск при старте системы
- Экспорт/импорт конфигураций
- Графики статистики трафика
- Уведомления о событиях
- Мультиязычность
- Автоматическая настройка системного прокси
- Профили подключений
- История подключений