Skip to content

Latest commit

 

History

History
97 lines (78 loc) · 6.05 KB

File metadata and controls

97 lines (78 loc) · 6.05 KB

FORK_CHANGES — журнал изменений форка

Этот репозиторий — форк официального VPNclient/libh2.

Документ ведётся по требованию §2.1 / §2.3 лицензии NativeMind NONC (см. wrappers/flutter_h2/LICENSE — единственная копия текста лицензии в репозитории на момент форка).

Атрибуция (§2.3)

  • Правообладатель / автор оригинала: NativeMind. © 2010–2025 NativeMind. Все права защищены.
  • Официальный репозиторий (upstream): https://github.com/VPNclient/libh2
  • Связанный core-репозиторий: https://github.com/VPNclient/h2.core
  • Оригинальная лицензия: NativeMind NONC — wrappers/flutter_h2/LICENSE.
  • Этот форк: https://github.com/PrabhuArjun/libh2 (публичный, по §2.1).
  • Цель форка: помощь апстриму — реорганизация структуры обёрток (wrappers) и подготовка PR обратно в upstream. Коммерческого использования НЕТ (коммерция — только по отдельной письменной лицензии NativeMind, в работе). Помощь апстриму и публичный форк лицензией разрешены.

Лог изменений

2026-05-19 — ветка refactor/separation-cleanup

Реорганизация структуры обёрток (подготовка к разделению ответственности h2.core ↔ libh2). Изменения только структурные, бизнес-логика обёрток не менялась.

  1. mobile/wrappers/gomobile/. Пакет gomobile-обёртки (висевший в корне без go.mod) перенесён в wrappers/gomobile/ и получил собственный модуль github.com/vpnclient/libh2/wrappers/gomobile (require github.com/vpnclient/https-vpn, replace на локальный ../../../h2.core) — по образцу существующего wrappers/cgo/go.mod. Старый каталог mobile/ удалён.

  2. Каркасы wrappers/swift_h2/ и wrappers/kotlin_h2/ заведены по утверждённым спецификациям flows/sdd-h2.core-wrapper-swift/ и flows/sdd-h2.core-wrapper-kotlin/:

    • swift_h2/: README, Package.swift (бинарная цель на H2Core.xcframework), Sources/H2Core/H2Core.swift (тонкий Swift-фасад над gomobile Mobile.*), build/gomobile-ios.sh.
    • kotlin_h2/: README, build.gradle.kts (Android library, подключает h2core.aar), src/main/kotlin/dev/vpnclient/h2core/H2Core.kt (тонкий Kotlin-фасад), build/gomobile-android.sh.
    • Оба собираются из общего источника wrappers/gomobile/ командой gomobile bind -target=ios|android.
  3. План разделения flows/sdd-h2-libh2-separation/ скопирован из репозитория h2.core, чтобы вся история обёрток жила в одном месте.

2026-05-19 (продолжение) — верификация и зависимости

  1. wrappers/gomobile/tools.go добавлен — фиксирует golang.org/x/mobile/bind как зависимость модуля (blank-import под build-tag tools). Причина: go mod tidy без него удаляет x/mobile (обычный go build её не использует), и gomobile bind ломается. Стандартный паттерн tools.go.

  2. go mod tidy прогнан в cgo и gomobile — go.sum актуализированы.

  3. Верификация каркасов через gobind (без NDK/Xcode):

    • gobind -lang=javamobile/{Mobile,Client,Stats}.java (API: newClient(serverAddr, cryptoProvider), version()) ✓
    • gobind -lang=objcMobile.objc.h, Universe.objc.h
    • go build ./... в обоих модулях — чисто (Go 1.26.3) ✓ Это подтверждает: общий wrappers/gomobile/ корректно конвертируется gomobile'ом и в Android-, и в iOS-биндинги. Полная сборка .aar/.xcframework требует Android NDK / Xcode (ставятся на CI-раннере; на dev-машине не выполнялась).

Решение по replace (pinned-зависимость)

go.mod обёрток используют replace github.com/vpnclient/https-vpn => ../../../h2.core — это dev-конвенция этого репозитория (так же в wrappers/cgo/go.mod). Для production-релиза upstream VPNclient/libh2 запинит конкретную версию/commit модуля h2.core. В форке replace сохранён, чтобы локальная сборка работала из соседнего каталога ../h2.core — не ломаем dev-flow.

Параллельные изменения в h2.core (контекст)

Ветка refactor/separation-cleanup в PrabhuArjun/h2.core: удалены дубли каталогов cgo/ и mobile/ (логика обёрток переезжает в libh2).

Что НЕ делалось

  • PR в upstream VPNclient/libh2 не открывался — будет открыт владельцем форка после согласования.
  • Релизы через GitHub Actions (§2.2) на этой ветке не выполнялись.
  • Имя/UI продукта (§2.5) не затрагивались.