# 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` - скрипт сборки для Windows - `build_gui.sh` - скрипт сборки для Linux/macOS - `init_gui.bat` - инициализация зависимостей для Windows - `init_gui.sh` - инициализация зависимостей для Linux/macOS - `GUI_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 ``` **Основные компоненты:** 1. **GUI struct** - app: fyne.App - window: fyne.Window - statusLabel: динамический статус - statusIcon: индикатор подключения - connectionInfo: детальная информация - statusTimer: таймер обновления 2. **Функции WireGuard** - connectWireGuard() - addWireGuardManual() - addWireGuardFromFile() - deleteWireGuard() 3. **Функции VLESS** - connectVLESS() - addVLESS() - testVLESS() - deleteVLESS() 4. **Функции подписок** - addSubscription() - updateSubscription() - showSubscriptionConfigs() - testSubscriptionConfigs() - deleteSubscription() 5. **Утилиты** - 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:** ```bash go build -ldflags="-s -w -H windowsgui" -o vpn-client-gui.exe main.go ``` - `-s -w` - уменьшение размера - `-H windowsgui` - скрытие консоли **Linux/macOS:** ```bash 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 требует установки официального клиента ### Планы на будущее - [ ] Темная тема - [ ] Системный трей - [ ] Автозапуск при старте системы - [ ] Экспорт/импорт конфигураций - [ ] Графики статистики трафика - [ ] Уведомления о событиях - [ ] Мультиязычность - [ ] Автоматическая настройка системного прокси - [ ] Профили подключений - [ ] История подключений