- 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
186 lines
7.1 KiB
Markdown
186 lines
7.1 KiB
Markdown
# 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 требует установки официального клиента
|
||
|
||
### Планы на будущее
|
||
|
||
- [ ] Темная тема
|
||
- [ ] Системный трей
|
||
- [ ] Автозапуск при старте системы
|
||
- [ ] Экспорт/импорт конфигураций
|
||
- [ ] Графики статистики трафика
|
||
- [ ] Уведомления о событиях
|
||
- [ ] Мультиязычность
|
||
- [ ] Автоматическая настройка системного прокси
|
||
- [ ] Профили подключений
|
||
- [ ] История подключений
|