Skip to content

v0.4.0 - #79

Merged
andre487 merged 1 commit into
mainfrom
prepare-release/v0.4.0
Nov 12, 2026
Merged

andre487 merged 1 commit into
mainfrom
prepare-release/v0.4.0

Conversation

@andre487

Copy link
Copy Markdown
Owner

Prepare v0.4.0. The requested release workflow waits for full CI, squash merges this PR and tags the merged commit v0.4.0 to publish.

v0.4.0

English

  • License re-scope and installer acceptance: repository root license changed to MIT while src/ and native/core/ contain GPL text, the interactive installer now shows an offline license acceptance page that must be checked to advance, the installer defaults to per-user for new installs and preserves scope on upgrades, silent installs skip the acceptance step, and packaging now includes LICENSING.md plus per-component license files in the payload.
  • App update gate depends on WindowsOptions["version"]: if WindowsOptions["version"] is present and not equal to 1, ThroughProxy(...) returns false regardless of the previous option, and Enabled(...) returns true for unsupported version values, changing when update-through-proxy is honored.
  • Import/export sanitization and fingerprint normalization: portable configuration import/export now runs ConfigurationFields.Project to prune unknown/unsupported fields and to normalize TLS/SSH fingerprint tokens to canonical uppercase tokens (e.g. CHROME_ANDROID → normalized), and the UI portable-fingerprint controls were updated to those tokens.
  • TLS/uTLS behavior and removed "native" special-case: the code no longer treats a "native" fingerprint as a special branch and always enables the uTLS object with a resolved fingerprint; UI options are reduced to DEFAULT, CHROME_ANDROID, FIREFOX_ANDROID, EDGE_ANDROID and RANDOMIZED, which are mapped to lower-case core strings for outbound traffic.
  • IPv6 handling change: per-profile allowIpv6 is ignored on Windows (ProxyProfile.AllowIpv6 returns true) and the client no longer injects ip_version=6 reject rules or switches to an ipv4-only DNS strategy when imported settings attempted to disable IPv6.
  • Tray icon recovery: MainWindow now watches for TaskbarCreated and polls the NotifyIcon registration, restoring the tray icon automatically if Explorer/taskbar recreation or missing registration is detected.
  • Shared SSH fingerprint propagation: a shared SSH fingerprint in settings.SharedOptions["ssh"]["fingerprint"] is applied into SSH and SSH_JUMP profile outbound data at build time, and the profile editor surfaces this global SSH fingerprint when present.
  • Source packaging changes: release/source packaging scripts now copy LICENSING.md into the payload and can append linked Go module sources, pinned Go runtime sources and a hash-verified WiX source snapshot into the published source ZIP, and the bundling code fails early if required dependency sources are missing.
  • Documentation and UX clarifications: docs were updated to state that portable exports include passwords/private keys by default (documented policy), reverse-DNS and connection-row refresh happen only while the Connections tab is focused, and release notes now document VirusTotal submission as a publication policy (the repo contains the documentation and packaging scripts that change archive composition).

Русский

  • Перераспределение лицензий и приём лицензии в установщике: корневая LICENSE переведена на MIT, в src/ и native/core/ оставлены тексты под GPL, в интерактивном установщике появился офлайн-экран принятия лицензии, который нужно отметить для продолжения; новый установщик по умолчанию предлагает установку для текущего пользователя и сохраняет область установки при обновлении, тихие установки пропускают экран принятия, а пакетный сборщик теперь включает LICENSING.md и файлы лицензий по компонентам в payload.
  • Зависимость обновлений от WindowsOptions["version"]: если WindowsOptions["version"] присутствует и не равен 1, ThroughProxy(...) всегда возвращает false независимо от прежней опции, а Enabled(...) возвращает true для неподдерживаемых значений версии, что меняет условие использования обновлений через прокси.
  • Санитизация конфигураций и нормализация отпечатков: импорт/экспорт портируемой конфигурации теперь проходят через ConfigurationFields.Project, который удаляет неизвестные/неподдерживаемые поля и нормализует TLS/SSH‑отпечатки к каноническим верхним токенам (например, CHROME_ANDROID), UI‑элементы выбора отпечатка приведены к этим токенам.
  • uTLS и удаление ветви "native": код больше не обрабатывает "native" как особый случай и всегда включает объект uTLS с вычисленным отпечатком; в UI остались только DEFAULT, CHROME_ANDROID, FIREFOX_ANDROID, EDGE_ANDROID и RANDOMIZED, которые затем отображаются в ядре в виде нижних строчных строк для исходящего трафика.
  • Работа с IPv6: флаг allowIpv6 на уровне профиля игнорируется в Windows (ProxyProfile.AllowIpv6 всегда true), импортированные настройки, отключающие IPv6, больше не создают правил-отказов ip_version=6 и не переключают DNS‑стратегию в ipv4‑only.
  • Восстановление иконки в трее: MainWindow отслеживает TaskbarCreated и опрашивает регистрацию NotifyIcon, автоматически восстанавливая иконку в трее при перепуске Explorer/восстановлении панели задач или при пропаже регистрации.
  • Глобальный SSH-отпечаток: общий SSH‑отпечаток в settings.SharedOptions["ssh"]["fingerprint"] применяется к профилям типа SSH и SSH_JUMP при построении outbound, а редактор профиля отображает информацию о глобальном SSH‑отпечатке, если он установлен.
  • Изменения в упаковке исходников: скрипты упаковки теперь копируют LICENSING.md в payload и могут добавлять в ZIP исходники связанных Go‑модулей, зафиксированные исходники рантайма Go и хеш‑проверенный WiX‑снимок, причём сборка завершается ошибкой при отсутствии ожидаемых зависимостей.
  • Документация и UX: обновлены документы — экспорт портируемых конфигураций теперь в тексте документации указан как включающий пароли/ключи по умолчанию, обратный DNS и обновление строк соединений выполняются только при открытой вкладке Connections, а в релизных заметках задокументирована политика отправки сборок в VirusTotal (это зафиксировано в документации и скриптах упаковки).

@andre487
andre487 merged commit 1131893 into main Nov 12, 2026
9 checks passed
@andre487
andre487 deleted the prepare-release/v0.4.0 branch November 12, 2026 15:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant