15 Commits

Author SHA1 Message Date
Vibe Kanban
fbc595f568 Портирование программы на линукс (debian) (vibe-kanban 5dca5182)
Теперь, когда я убедился что программа хорошо работает на windows, мы будем ее портировать на debian.

как я это вижу:
Ты создашь папку внутри проекта и будешь писать его там (чтобы не поломать текущий)

1. **Удалить Windows-специфичные зависимости** (`golang.org/x/sys/windows/registry` и всё, что связано с реестром).
2. **Заменить `sing-box.exe` → `sing-box`** (бинарник для Linux: https://github.com/SagerNet/sing-box/releases/download/v1.12.16/sing-box-1.12.16-linux-amd64.tar.gz) и реализовать автозагрузку с latest с источника.
3. **Убрать скрытие окна процесса** (`HideWindow` — это Windows-only).
4. **Реализовать управление системным прокси в Linux** (или отказаться от него, если не критично).
5. **Собрать проект под Linux** (cross-compilation или нативно).
6. **Подготовить структуру папок и права**.
7. **(Опционально) Упаковать в `.deb`**

И главное - не редактируй текущий windows проект - он не требует вмешательств!
2026-01-16 23:53:16 +03:00
Vibe Kanban
9fbc7066cd фикс (vibe-kanban a33b2270)
На данный момент возникает краш при подключении или при отключении vpn (именно после нажатия на кнопку подключения - в настройках windows включается proxy на 1080 порту и затем возникает краш).
Сделай максимально стабильное подключение и отключение, не вызывающее крашей. Сделай обработку ошибок на все случаи жизни.
Логи:
PS C:\\Users\\hamy\\HamyDev\\HamyVPNClient\\HamyVPNClient> go run .

2026/01/16 20:13:31 Sing-box configuration written to config.json

Exception 0xc0000005 0x1 0x7ff7c750fa38 0x7ffbb351b5d5

PC=0x7ffbb351b5d5

signal arrived during external code execution
2026-01-16 20:29:51 +03:00
Vibe Kanban
a0d76586a9 фикс краша при отключении vpn (vibe-kanban 4dcd8b1b)
У нас реализовано подключение к vpn и оно отлично работает. Но при нажатии на кнопку отключить происходит краш:
PS C:\\Users\\hamy\\HamyDev\\HamyVPNClient\\HamyVPNClient> go run .

2026/01/16 20:01:32 Sing-box configuration written to config.json

Exception 0xc0000005 0x1 0x1 0x7ffbb351b5d5

PC=0x7ffbb351b5d5

signal arrived during external code execution
2026-01-16 20:12:04 +03:00
Vibe Kanban
1f54670e3e краш фикс (vibe-kanban fd9bb887)
Сейчас реализовано подключение к 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
2026-01-16 20:00:53 +03:00
Vibe Kanban
49f21a1bfd тест подключения к впн (vibe-kanban 618b1de6)
Функционал подключения уже реализован. В главном окне кнопка для подключения остается неактивной даже при импортированном и выбранном конфиге. Нужно сделать так чтобы кнопка становилась активной при выборе конфига. Также проверь - реализована ли логика подключения при нажатии на кнопку.
2026-01-16 19:49:30 +03:00
Vibe Kanban
0bc4f92e06 4. Управление системным прокси (vibe-kanban d1a01027)
Чтобы интернет пошел через VPN, нужно менять настройки прокси в Windows. Напиши функции для изменения реестра Windows:

1. Путь: `HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings`.
2. Параметры: `ProxyEnable` (1 или 0) и `ProxyServer` ("127.0.0.1:1080").
Программа должна автоматически выключать прокси при выходе из приложения или при отключении vpn
2026-01-16 19:31:18 +03:00
Vibe Kanban
2704069be1 3. Парсинг ссылок и генерация конфига (vibe-kanban 09e20645)
Реализуй функцию, которая парсит ссылку `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.
2026-01-16 19:24:58 +03:00
Vibe Kanban
5b0affda59 фикс окна конфигураций (vibe-kanban 3fe07924)
в окне конфигураций есть баг с отображением списка конфигураций - этот скроллвью сжат по высоте (он приклеился к верху и отображается не во всё пространство окна).
2026-01-16 18:59:58 +03:00
Vibe Kanban
a58413d778 фикс для окна конфигураций (vibe-kanban b9621dd9)
Окно конфигураций не открывается:
PS C:\\Users\\hamy\\AppData\\Local\\Temp\\vibe-kanban\\worktrees\\a880-\\HamyVPNClient> go run .

panic: runtime error: invalid memory address or nil pointer dereference

[signal 0xc0000005 code=0x1 addr=0x38 pc=0x7ff69290cb17]

goroutine 1 [running, locked to thread]:

main.main.func4.2()

        C:/Users/hamy/AppData/Local/Temp/vibe-kanban/worktrees/a880-/HamyVPNClient/main.go:323 +0x177

main.main.func4()

        C:/Users/hamy/AppData/Local/Temp/vibe-kanban/worktrees/a880-/HamyVPNClient/main.go:328 +0x27a

fyne.io/fyne/v2/widget.(\*Button).Tapped(0xc00021e7e0, 0x7ff69328c860?)

        C:/Users/hamy/go/pkg/mod/fyne.io/fyne/v2@v2.7.2/widget/button.go:192 +0x9f

fyne.io/fyne/v2/internal/driver/glfw.(\*window).mouseClickedHandleTapDoubleTap(0xc00011a000, {0x7ff6933cbac0, 0xc00021e7e0}, 0xc000c579a0)

        C:/Users/hamy/go/pkg/mod/fyne.io/fyne/v2@v2.7.2/internal/driver/glfw/window.go:581 +0x182

fyne.io/fyne/v2/internal/driver/glfw.(\*window).processMouseClicked(0xc00011a000, 0x1, 0x0, 0x0)

        C:/Users/hamy/go/pkg/mod/fyne.io/fyne/v2@v2.7.2/internal/driver/glfw/window.go:542 +0x718

fyne.io/fyne/v2/internal/driver/glfw.(\*window).mouseClicked(0xc00021ebd0?, 0xc000c3d9c8?, 0x7ff6928935a0?, 0x7ff6938e1480?, 0xc000c3d9a8?)

        C:/Users/hamy/go/pkg/mod/fyne.io/fyne/v2@v2.7.2/internal/driver/glfw/window\_desktop.go:409 +0xaf

github.com/go-gl/glfw/v3.3/glfw.goMouseButtonCB(0xc0000021c0?, 0x0, 0x0, 0x0)

        C:/Users/hamy/go/pkg/mod/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20240506104042-037f3cc74f2a/input.go:333 +0x4e

github.com/go-gl/glfw/v3.3/glfw.\_Cfunc\_glfwPollEvents()

        \_cgo\_gotypes.go:1544 +0x45

github.com/go-gl/glfw/v3.3/glfw.PollEvents()

        C:/Users/hamy/go/pkg/mod/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20240506104042-037f3cc74f2a/window.go:931 +0x13

fyne.io/fyne/v2/internal/driver/glfw.(\*gLDriver).pollEvents(...)

        C:/Users/hamy/go/pkg/mod/fyne.io/fyne/v2@v2.7.2/internal/driver/glfw/loop\_desktop.go:22

fyne.io/fyne/v2/internal/driver/glfw.(\*gLDriver).runGL(0xc00004bda8?)

        C:/Users/hamy/go/pkg/mod/fyne.io/fyne/v2@v2.7.2/internal/driver/glfw/loop.go:154 +0x1aa

fyne.io/fyne/v2/internal/driver/glfw.(\*gLDriver).Run(0xc0000ea000)

        C:/Users/hamy/go/pkg/mod/fyne.io/fyne/v2@v2.7.2/internal/driver/glfw/driver.go:162 +0x72

fyne.io/fyne/v2/app.(\*fyneApp).Run(0xc0000ea0b0)

        C:/Users/hamy/go/pkg/mod/fyne.io/fyne/v2@v2.7.2/app/app.go:77 +0x102

fyne.io/fyne/v2/internal/driver/glfw.(\*window).ShowAndRun(0xc00011a000)

        C:/Users/hamy/go/pkg/mod/fyne.io/fyne/v2@v2.7.2/internal/driver/glfw/window.go:217 +0x64

main.main()

        C:/Users/hamy/AppData/Local/Temp/vibe-kanban/worktrees/a880-/HamyVPNClient/main.go:363 +0xa18

exit status 2

PS C:\\Users\\hamy\\AppData\\Local\\Temp\\vibe-kanban\\worktrees\\a880-\\HamyVPNClient>

также там была проблема с полем ввода - оно сжатое (отображается не во всю ширину окна)
2026-01-16 18:52:48 +03:00
Vibe Kanban
9e0625ef0e Доработка интерфейса (vibe-kanban 3c7ecd26)
на данный момент в проекте есть ошибки (я неправильно сделал merge и теперь проект с ошибками) - нужно их исправить, а также пофиксить баг в окне настроек - поле ввода ссылки очень сжатое в длину - нужно пофиксить.
Обязательно проверь компиляцию
2026-01-16 18:49:23 +03:00
Vibe Kanban
56e290934d 2. Разработка интерфейса (Main UI) (vibe-kanban de1be345)
Создай визуальный интерфейс в `main.go`. Нам нужно:

1. Статусный индикатор (Текст: "Отключено", цвет: серый).
2. Поле ввода (Entry) для VLESS-ссылки с плейсхолдером "vless://...", при нажатии на enter - сохраняется (применяется), поле ввода скрывается и появляется toast с текстом "конфиг применён" после проверки ссылки на валидность (парсинг ссылок напишем позже) или toast "конфиг невалидный" при ошибке в url и поле ввода снова показывается.
3. Большая кнопка "Подключить/Отключить". Неактивна до тех пор, пока не будет импортирована VLESS ссылка.
4. Кнопка-шестеренка для перехода в настройки.
Используй `container.VBox` для вертикальной разметки. Сделай дизайн чистым и минималистичным.
5. Верхний, встроенный из windows заголовок приложения мне не нравится, переделаем так: уберем его, сделаем свой заголовок сверху жирным текстом "Hamy VPN", родные windows кнопки управления окном (скрыть, окно, закрыть) изменим на свои кастомные - две кнопки в стиле macos: скрыть (круглый желтый фон, полоска), закрыть (круглый красный фон, крестик).
2026-01-14 23:49:52 +03:00
Vibe Kanban
2e07222465 1. Подготовка ядра Sing-box (vibe-kanban 79e12836)
1. Создай папку `bin` в корне проекта.
2. Напиши логику на Go, которая проверяет наличие `bin/sing-box.exe`.
3. Напиши функцию `runSingBox(configPath string)`, которая запускает `sing-box.exe` как скрытый фоновый процесс (`os/exec`).
4. Реализуй корректное завершение процесса (Kill) при нажатии кнопки "Отключить".
2026-01-14 20:31:32 +03:00
Vibe Kanban
ef6bfdf5d6 Инициализация проекта (vibe-kanban a3c8e30f)
Инициализируй проект. Создай файл `main.go`. Импортируй библиотеку `fyne.io/fyne/v2`. Создай базовое окно с заголовком 'Hamy VPN Client', размером: ширина: 200 x высота: 300 и одной кнопкой 'Подключить', которая при нажатии покажет текст 'Подключение...'. Убедись, что все зависимости скачаны через `go mod tidy`.
2026-01-13 22:58:06 +03:00
Vibe Kanban
4e2c6865e1 Инициализация проекта (vibe-kanban a3c8e30f)
Инициализируй проект. Создай файл `main.go`. Импортируй библиотеку `fyne.io/fyne/v2`. Создай базовое окно с заголовком 'Hamy VPN Client', размером: ширина: 200 x высота: 300 и одной кнопкой 'Подключить', которая при нажатии покажет текст 'Подключение...'. Убедись, что все зависимости скачаны через `go mod tidy`.
2026-01-13 22:11:51 +03:00
Vibe Kanban
d6dd14808e Initial commit 2026-01-13 21:07:08 +03:00