# 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 требует установки официального клиента

### Планы на будущее

- [ ] Темная тема
- [ ] Системный трей
- [ ] Автозапуск при старте системы
- [ ] Экспорт/импорт конфигураций
- [ ] Графики статистики трафика
- [ ] Уведомления о событиях
- [ ] Мультиязычность
- [ ] Автоматическая настройка системного прокси
- [ ] Профили подключений
- [ ] История подключений
