Сейчас реализовано подключение к vpn через конфиг. В папке bin лежит sing-box.exe.
При нажатии подключить - включается прокси в windows как положено и происходит краш программы:
PS C:\\Users\\hamy\\HamyDev\\HamyVPNClient\\HamyVPNClient> go run .
2026/01/16 19:53:28 Sing-box configuration written to config.json
Exception 0xc0000005 0x1 0x1 0x7ffbb351b5d5
PC=0x7ffbb351b5d5
signal arrived during external code execution
Функционал подключения уже реализован. В главном окне кнопка для подключения остается неактивной даже при импортированном и выбранном конфиге. Нужно сделать так чтобы кнопка становилась активной при выборе конфига. Также проверь - реализована ли логика подключения при нажатии на кнопку.
Чтобы интернет пошел через VPN, нужно менять настройки прокси в Windows. Напиши функции для изменения реестра Windows:
1. Путь: `HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings`.
2. Параметры: `ProxyEnable` (1 или 0) и `ProxyServer` ("127.0.0.1:1080").
Программа должна автоматически выключать прокси при выходе из приложения или при отключении vpn
Реализуй функцию, которая парсит ссылку `vless://`.
1. Извлеки: UUID, адрес сервера, порт, тип передачи (TCP), и SNI (если есть) и другие данные.
2. Сгенерируй JSON-конфиг в файл config.json специально в формате **Sing-box** (не Xray!).
3. В секции `outbounds` укажи `type: vless`.
4. Обязательно добавь секцию `v2ray-transport` внутри `outbound`, если на сервере 3X-UI используются специфические настройки транспорта.
5. Настрой `inbound` на `mixed` (SOCKS5 + HTTP) на порту 1080, чтобы через это ядро мог ходить любой трафик Windows.
в окне конфигураций есть баг с отображением списка конфигураций - этот скроллвью сжат по высоте (он приклеился к верху и отображается не во всё пространство окна).
на данный момент в проекте есть ошибки (я неправильно сделал merge и теперь проект с ошибками) - нужно их исправить, а также пофиксить баг в окне настроек - поле ввода ссылки очень сжатое в длину - нужно пофиксить.
Обязательно проверь компиляцию
Создай визуальный интерфейс в `main.go`. Нам нужно:
1. Статусный индикатор (Текст: "Отключено", цвет: серый).
2. Поле ввода (Entry) для VLESS-ссылки с плейсхолдером "vless://...", при нажатии на enter - сохраняется (применяется), поле ввода скрывается и появляется toast с текстом "конфиг применён" после проверки ссылки на валидность (парсинг ссылок напишем позже) или toast "конфиг невалидный" при ошибке в url и поле ввода снова показывается.
3. Большая кнопка "Подключить/Отключить". Неактивна до тех пор, пока не будет импортирована VLESS ссылка.
4. Кнопка-шестеренка для перехода в настройки.
Используй `container.VBox` для вертикальной разметки. Сделай дизайн чистым и минималистичным.
5. Верхний, встроенный из windows заголовок приложения мне не нравится, переделаем так: уберем его, сделаем свой заголовок сверху жирным текстом "Hamy VPN", родные windows кнопки управления окном (скрыть, окно, закрыть) изменим на свои кастомные - две кнопки в стиле macos: скрыть (круглый желтый фон, полоска), закрыть (круглый красный фон, крестик).
1. Создай папку `bin` в корне проекта.
2. Напиши логику на Go, которая проверяет наличие `bin/sing-box.exe`.
3. Напиши функцию `runSingBox(configPath string)`, которая запускает `sing-box.exe` как скрытый фоновый процесс (`os/exec`).
4. Реализуй корректное завершение процесса (Kill) при нажатии кнопки "Отключить".
Инициализируй проект. Создай файл `main.go`. Импортируй библиотеку `fyne.io/fyne/v2`. Создай базовое окно с заголовком 'Hamy VPN Client', размером: ширина: 200 x высота: 300 и одной кнопкой 'Подключить', которая при нажатии покажет текст 'Подключение...'. Убедись, что все зависимости скачаны через `go mod tidy`.
Инициализируй проект. Создай файл `main.go`. Импортируй библиотеку `fyne.io/fyne/v2`. Создай базовое окно с заголовком 'Hamy VPN Client', размером: ширина: 200 x высота: 300 и одной кнопкой 'Подключить', которая при нажатии покажет текст 'Подключение...'. Убедись, что все зависимости скачаны через `go mod tidy`.