From dcb515d3d0c6e9c51ad69865348584ccdf88517e Mon Sep 17 00:00:00 2001 From: Regstar2 Date: Wed, 7 Oct 2026 07:06:53 -0700 Subject: [PATCH 01/13] release: bump Android version to 1.11.1 --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 82f026b6e..2e51d0ff6 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -3,8 +3,8 @@ plugins { id("org.jetbrains.kotlin.android") } -val releaseVersionCode = 54 -val releaseVersionName = "1.11.0" +val releaseVersionCode = 57 +val releaseVersionName = "1.11.1" val buildNativeAndroid by tasks.registering(org.gradle.api.tasks.Exec::class) { val script = rootProject.file("scripts/build-native-android.ps1") From f3f708a54f87fddb9eb6920485dadd2e3ca820a0 Mon Sep 17 00:00:00 2001 From: Regstar2 Date: Wed, 7 Oct 2026 07:06:56 -0700 Subject: [PATCH 02/13] release: point CI preflight at v1.11.1 --- scripts/ci.ps1 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/ci.ps1 b/scripts/ci.ps1 index 268cd1119..912b0778e 100644 --- a/scripts/ci.ps1 +++ b/scripts/ci.ps1 @@ -63,7 +63,7 @@ if (-not (Test-Path $releaseScript)) { } Write-Host "`n==> Audit release metadata, localization and tracked private files" -& $releaseAudit -ExpectedVersion '1.11.0' -ExpectedVersionCode 54 +& $releaseAudit -ExpectedVersion '1.11.1' -ExpectedVersionCode 57 if ($LASTEXITCODE -ne 0) { throw "Release audit failed with exit code $LASTEXITCODE." } @@ -75,12 +75,12 @@ Invoke-CheckedCommand ` '-NoProfile', '-ExecutionPolicy', 'Bypass', '-File', $releaseAudit, - '-ExpectedVersion', '1.11.0', - '-ExpectedVersionCode', '54' + '-ExpectedVersion', '1.11.1', + '-ExpectedVersionCode', '57' ) Write-Host "`n==> Validate release-script metadata preflight" -& $releaseScript -Version 'v1.11.0' -PreflightOnly +& $releaseScript -Version 'v1.11.1' -PreflightOnly if ($LASTEXITCODE -ne 0) { throw "Release-script preflight failed with exit code $LASTEXITCODE." } From c78e4b8674bc8f5f3d6d9eeb9757ccae5499dec5 Mon Sep 17 00:00:00 2001 From: Regstar2 Date: Wed, 7 Oct 2026 07:06:59 -0700 Subject: [PATCH 03/13] release: update audit defaults for v1.11.1 --- scripts/audit-release.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/audit-release.ps1 b/scripts/audit-release.ps1 index f0deb16c6..5d9cf362d 100644 --- a/scripts/audit-release.ps1 +++ b/scripts/audit-release.ps1 @@ -1,7 +1,7 @@ [CmdletBinding()] param( - [string]$ExpectedVersion = '1.11.0', - [int]$ExpectedVersionCode = 54 + [string]$ExpectedVersion = '1.11.1', + [int]$ExpectedVersionCode = 57 ) Set-StrictMode -Version Latest From 2713b83764f5ad0feaf937d6978e15311af45f2d Mon Sep 17 00:00:00 2001 From: Regstar2 Date: Wed, 7 Oct 2026 07:07:02 -0700 Subject: [PATCH 04/13] docs: update Russian README for v1.11.1 --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 3472fad9b..e9f2ce5c2 100644 --- a/README.md +++ b/README.md @@ -32,8 +32,8 @@ TgWsProxy запускает локальный прокси на Android-уст ## Статус проекта -**Версия исходников:** `1.11.0` (`versionCode 54`) -**Стадия:** stable release candidate; перед тегом требуется финальная проверка signed APK на устройстве +**Версия исходников:** `1.11.1` (`versionCode 57`) +**Стадия:** stable patch release candidate; автозапуск после reboot проверен на реальном устройстве | Область | Статус | |---|---| @@ -57,7 +57,7 @@ TgWsProxy запускает локальный прокси на Android-уст - отдельные политики маршрутов для Wi-Fi, мобильной и неизвестной сети; - Fake TLS secrets формата `dd` и `ee`; - необязательный passthrough probe-соединений на указанный masking domain; -- foreground service, уведомление о состоянии и watchdog локального listener; +- foreground service, уведомление о состоянии, watchdog локального listener и опциональный автозапуск прокси после загрузки Android; - диагностика маршрутов, runtime status, экспорт отчёта и настраиваемое логирование; - отдельные экраны обратной связи и проверки обновлений; - русский и английский интерфейс. @@ -279,7 +279,7 @@ app\build\outputs\apk\debug\app-debug.apk Финальная signed release-сборка выполняется только при локально настроенном keystore: ```powershell -.\scripts\release.ps1 -Version v1.11.0 +.\scripts\release.ps1 -Version v1.11.1 ``` Скрипт проверяет соответствие тега `versionName`, подпись APK и формирует APK + SHA-256 в `dist/`. From ca185a583ad96fd52bd19df0dd2e825eef7879c0 Mon Sep 17 00:00:00 2001 From: Regstar2 Date: Wed, 7 Oct 2026 07:07:05 -0700 Subject: [PATCH 05/13] docs: update English README for v1.11.1 --- README_EN.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README_EN.md b/README_EN.md index 59fcfcd9c..d3d94e1fe 100644 --- a/README_EN.md +++ b/README_EN.md @@ -32,8 +32,8 @@ The primary use case remains **MTProto Proxy → Cloudflare Proxy** on `127.0.0. ## Project status -**Source version:** `1.11.0` (`versionCode 54`) -**Stage:** stable release candidate; final signed-APK device acceptance is required before tagging +**Source version:** `1.11.1` (`versionCode 57`) +**Stage:** stable patch release candidate; boot autostart has been verified on a physical device | Area | Status | |---|---| @@ -57,7 +57,7 @@ The primary use case remains **MTProto Proxy → Cloudflare Proxy** on `127.0.0. - separate route policies for Wi-Fi, mobile data, and unknown networks; - Fake TLS secrets in `dd` and `ee` formats; - optional probe passthrough to a configured masking domain; -- foreground service, status notification, and a local listener watchdog; +- foreground service, status notification, local listener watchdog, and optional proxy autostart after Android boot; - route diagnostics, runtime status, report export, and configurable logging; - dedicated Feedback and Updates screens; - English and Russian UI. @@ -279,7 +279,7 @@ Build and copy the APK to the local `artifacts/` directory: Build the final signed release only when the local keystore is configured: ```powershell -.\scripts\release.ps1 -Version v1.11.0 +.\scripts\release.ps1 -Version v1.11.1 ``` The script verifies that the tag matches `versionName`, verifies the APK signature, and produces the APK plus SHA-256 in `dist/`. @@ -314,7 +314,7 @@ Current checklist: [docs/testing/README.md](docs/testing/README.md). | Repository structure | [docs/development/repository-structure.md](docs/development/repository-structure.md) | | Manual testing | [docs/testing/README.md](docs/testing/README.md) | | Release preparation | [docs/releases/release.md](docs/releases/release.md) | -| `1.11.0` release notes | [docs/releases/v1.11.0_EN.md](docs/releases/v1.11.0_EN.md) | +| `1.11.1` release notes | [docs/releases/v1.11.1_EN.md](docs/releases/v1.11.1_EN.md) | | `1.10.13` final audit | [docs/releases/v1.10.13-final-audit.md](docs/releases/v1.10.13-final-audit.md) | | Change history | [CHANGELOG.md](CHANGELOG.md) | From 29e4e4141adaf6fec26b7f79f746fa945c2ad29b Mon Sep 17 00:00:00 2001 From: Regstar2 Date: Wed, 7 Oct 2026 07:07:08 -0700 Subject: [PATCH 06/13] docs: add v1.11.1 changelog --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 00b1c85da..3db7efec3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ All notable user-facing changes are listed here. Detailed notes for older releas ## Unreleased +## 1.11.1 - 2026-10-07 +- Added an opt-in **Autostart on boot** setting that restores the existing `ProxyService` from the last saved configuration after Android finishes booting. +- Added a non-exported `BOOT_COMPLETED` receiver using the existing foreground-service notification path; the app UI is not opened automatically. +- Boot autostart validates saved frontend state, skips invalid SOCKS5 configuration, avoids duplicate runtime startup, and records privacy-safe `BOOT_*` diagnostics. +- Added unit coverage for autostart persistence, boot-start decisions, saved proxy startup configuration, and repeated boot delivery. +- Verified reboot autostart on a physical Xiaomi/HyperOS device. HyperOS requires the user to grant the app its separate background/autostart permission. + ## 1.11.0 - 2026-09-19 - Promoted the userspace `awg_warp` backend to the stable channel. Telegram traffic can use AmneziaWG/WARP inside the app without Android `VpnService`, root, or a system TUN interface. - Added in-app Consumer WARP profile creation, multi-profile storage, explicit profile selection, manual `.conf` import, profile details, deletion, and safe private-key handling. From 2a34d7039a9a50853318c2e7b0daebabfface48d Mon Sep 17 00:00:00 2001 From: Regstar2 Date: Wed, 7 Oct 2026 07:07:11 -0700 Subject: [PATCH 07/13] release: update workflow docs for v1.11.1 --- docs/releases/release.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/releases/release.md b/docs/releases/release.md index 12a0f9058..711d8d47e 100644 --- a/docs/releases/release.md +++ b/docs/releases/release.md @@ -1,16 +1,16 @@ # Release workflow -Актуальный release target: **v1.11.0 stable**. +Актуальный release target: **v1.11.1 stable**. ## Метаданные -- `versionName 1.11.0` -- `versionCode 54` -- tag: `v1.11.0` -- APK: `TgWsProxy-Android-v1.11.0-arm64-v8a.apk` -- full RU notes: [v1.11.0.md](v1.11.0.md) -- full EN notes: [v1.11.0_EN.md](v1.11.0_EN.md) -- GitHub Release body: [RELEASE_NOTES_v1.11.0.md](RELEASE_NOTES_v1.11.0.md) +- `versionName 1.11.1` +- `versionCode 57` +- tag: `v1.11.1` +- APK: `TgWsProxy-Android-v1.11.1-arm64-v8a.apk` +- full RU notes: [v1.11.1.md](v1.11.1.md) +- full EN notes: [v1.11.1_EN.md](v1.11.1_EN.md) +- GitHub Release body: [RELEASE_NOTES_v1.11.1.md](RELEASE_NOTES_v1.11.1.md) ## Перед тегом @@ -20,10 +20,10 @@ ``` 2. Собрать подписанный release: ```powershell - .\scripts\release.ps1 -Version v1.11.0 + .\scripts\release.ps1 -Version v1.11.1 ``` -3. Установить signed APK поверх `v1.10.14` и отдельно поверх `v1.11.0-beta.1`; uninstall не использовать как способ обхода проверки подписи. -4. Проверить MTProto/CF, `awg_warp`, создание WARP-профиля, сообщения/media, reconnect и Wi-Fi ↔ mobile. +3. Установить signed APK поверх `v1.10.14` и отдельно поверх `v1.11.1-beta.1`; uninstall не использовать как способ обхода проверки подписи. +4. Проверить MTProto/CF, `awg_warp`, сообщения/media, reconnect, Wi-Fi ↔ mobile и boot autostart с последней сохранённой конфигурацией. 5. Проверить custom provisioning Worker и поведение переключателя встроенных Worker. 6. Просмотреть экспорт diagnostics/logs на наличие секретов. 7. Зафиксировать результат в [RELEASE_CHECKLIST.md](RELEASE_CHECKLIST.md). @@ -32,7 +32,7 @@ `.\scripts\ci.ps1` проверяет release metadata/localization/private-file audit, release preflight, Go module/tests, Android unit tests, debug APK build и packaged-resource audit. -`.\scripts\release.ps1 -Version v1.11.0` дополнительно: +`.\scripts\release.ps1 -Version v1.11.1` дополнительно: - требует release signing material вне Git; - собирает release APK; @@ -42,12 +42,12 @@ ## Публикация -`.github/workflows/release.yml` запускается для существующего tag `v1.11.0`. Workflow: +`.github/workflows/release.yml` запускается для существующего tag `v1.11.1`. Workflow: 1. checkout exact tag; 2. повторно запускает `scripts/ci.ps1`; 3. восстанавливает release keystore из GitHub Actions secrets во временный каталог hosted runner; -4. запускает `scripts/release.ps1 -Version v1.11.0`; +4. запускает `scripts/release.ps1 -Version v1.11.1`; 5. проверяет наличие одного APK и одного `.sha256`; 6. создаёт GitHub Release только если предыдущие шаги завершились успешно. From 2631019b6f35c4bc82934ce2305f2e08bf5b4504 Mon Sep 17 00:00:00 2001 From: Regstar2 Date: Wed, 7 Oct 2026 07:07:15 -0700 Subject: [PATCH 08/13] release: refresh v1.11.1 checklist --- docs/releases/RELEASE_CHECKLIST.md | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/docs/releases/RELEASE_CHECKLIST.md b/docs/releases/RELEASE_CHECKLIST.md index a68adf0b9..af5932c55 100644 --- a/docs/releases/RELEASE_CHECKLIST.md +++ b/docs/releases/RELEASE_CHECKLIST.md @@ -1,9 +1,9 @@ -# Release checklist — v1.11.0 stable +# Release checklist — v1.11.1 stable ## Metadata / documentation -- [ ] `releaseVersionName = 1.11.0`, `releaseVersionCode = 54`. -- [ ] `.\scripts\audit-release.ps1 -ExpectedVersion 1.11.0 -ExpectedVersionCode 54` passes. +- [ ] `releaseVersionName = 1.11.1`, `releaseVersionCode = 57`. +- [ ] `.\scripts\audit-release.ps1 -ExpectedVersion 1.11.1 -ExpectedVersionCode 57` passes. - [ ] README RU/EN, CHANGELOG and release notes agree with source metadata. - [ ] Canonical Worker guide is `docs/cloudflare-worker.md`; legacy path only redirects to it. - [ ] No keystore, signing secret, local log, `.env`, `local.properties` or private governance files are tracked. @@ -16,17 +16,25 @@ - [ ] Android unit tests pass. - [ ] `assembleDebug` passes. - [ ] packaged APK resource audit passes. -- [ ] release preflight accepts `v1.11.0`. +- [ ] release preflight accepts `v1.11.1`. ## Signed release artifact -- [ ] `.\scripts\release.ps1 -Version v1.11.0` succeeds with the release keystore. +- [ ] `.\scripts\release.ps1 -Version v1.11.1` succeeds with the release keystore. - [ ] `apksigner verify --verbose --print-certs` succeeds. -- [ ] `dist\TgWsProxy-Android-v1.11.0-arm64-v8a.apk` exists. +- [ ] `dist\TgWsProxy-Android-v1.11.1-arm64-v8a.apk` exists. - [ ] matching `.sha256` exists. -- [ ] APK reports `versionName 1.11.0` / `versionCode 54`. +- [ ] APK reports `versionName 1.11.1` / `versionCode 57`. - [ ] upgrade over signed `v1.10.14` succeeds without uninstall/data loss. -- [ ] upgrade over signed `v1.11.0-beta.1` succeeds without uninstall/data loss. +- [ ] upgrade over signed `v1.11.1-beta.1` succeeds without uninstall/data loss. + +## Boot autostart + +- [x] Autostart setting is disabled by default and persists when changed. +- [x] Real reboot starts the existing `ProxyService` without opening the Activity when the setting is enabled and saved config is valid. +- [x] Existing foreground notification path is reused. +- [x] Xiaomi/HyperOS device smoke confirmed that the OEM background/autostart permission may need to be enabled by the user. +- [ ] Reboot with autostart disabled leaves the proxy service stopped. ## Core Telegram runtime @@ -80,6 +88,6 @@ - [ ] All automated checks above pass. - [ ] Signed APK device smoke is complete. - [ ] Release notes contain no unverified success claims. -- [ ] Create/push exact tag `v1.11.0`. +- [ ] Create/push exact tag `v1.11.1`. - [ ] Release workflow publishes exactly APK + SHA-256. - [ ] Downloaded release APK can be installed and launched. From 67b06dcbe831ccb36cb58b19425c1af17c4d2320 Mon Sep 17 00:00:00 2001 From: Regstar2 Date: Wed, 7 Oct 2026 07:08:01 -0700 Subject: [PATCH 09/13] release: add GitHub notes for v1.11.1 --- docs/releases/RELEASE_NOTES_v1.11.1.md | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 docs/releases/RELEASE_NOTES_v1.11.1.md diff --git a/docs/releases/RELEASE_NOTES_v1.11.1.md b/docs/releases/RELEASE_NOTES_v1.11.1.md new file mode 100644 index 000000000..36a558967 --- /dev/null +++ b/docs/releases/RELEASE_NOTES_v1.11.1.md @@ -0,0 +1,34 @@ +# TgWsProxy Android v1.11.1 + +- `versionName 1.11.1` +- `versionCode 57` +- channel: **stable** + +`v1.11.1` adds opt-in proxy autostart after Android boot while reusing the existing `ProxyService`, saved configuration, and foreground notification path. + +[Полное описание на русском](https://github.com/Regstar2/tg-ws-proxy-android/blob/v1.11.1/docs/releases/v1.11.1.md) · [Full release notes in English](https://github.com/Regstar2/tg-ws-proxy-android/blob/v1.11.1/docs/releases/v1.11.1_EN.md) + +## Главное + +- Добавлена настройка **«Автозапуск при включении устройства»**, выключенная по умолчанию. +- После `BOOT_COMPLETED` приложение может автоматически восстановить локальный прокси с последней сохранённой конфигурацией. +- Activity не открывается автоматически: запускается только существующий foreground `ProxyService`. +- Для SOCKS5 невалидная сохранённая runtime-конфигурация безопасно пропускается; поддерживаемые frontend без `last_runtime_ips` не блокируются искусственно. +- Повторная доставка boot broadcast не должна создавать второй proxy runtime. +- Добавлены privacy-safe `BOOT_*` события и unit-тесты boot/autostart policy. +- Реальный reboot smoke подтверждён на Xiaomi/HyperOS. На таких прошивках пользователю может потребоваться отдельно разрешить фоновый автозапуск TgWsProxy в системных настройках. + +## Установка + +Скачайте `TgWsProxy-Android-v1.11.1-arm64-v8a.apk` из Assets. Поддерживается Android 8.0+ / `arm64-v8a`. + +APK предназначен для обычного обновления поверх подписанного `v1.11.0` при той же release-подписи. + +## Assets + +Release workflow публикует: + +- `TgWsProxy-Android-v1.11.1-arm64-v8a.apk` +- `TgWsProxy-Android-v1.11.1-arm64-v8a.apk.sha256` + +Фактический SHA-256 находится в checksum asset. From 8941feb1ca962219a700b604b8a072668aa33223 Mon Sep 17 00:00:00 2001 From: Regstar2 Date: Wed, 7 Oct 2026 07:08:04 -0700 Subject: [PATCH 10/13] docs: add Russian v1.11.1 release notes --- docs/releases/v1.11.1.md | 87 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 docs/releases/v1.11.1.md diff --git a/docs/releases/v1.11.1.md b/docs/releases/v1.11.1.md new file mode 100644 index 000000000..3b09dab34 --- /dev/null +++ b/docs/releases/v1.11.1.md @@ -0,0 +1,87 @@ +# v1.11.1 — автозапуск прокси после загрузки Android + +**Русский** · [English](v1.11.1_EN.md) + +## О релизе + +`v1.11.1` — стабильный patch-релиз TgWsProxy Android для Android 8.0+ / `arm64-v8a`. + +Метаданные: `versionName 1.11.1`, `versionCode 57`. + +Главное изменение — опциональный автозапуск существующего локального proxy runtime после завершения загрузки Android. Настройка выключена по умолчанию и не меняет текущее поведение приложения, пока пользователь явно её не включит. + +## Автозапуск + +В **Настройки → Приложение → Служба** добавлен переключатель **«Автозапуск при включении устройства»**. + +Когда он включён: + +1. Android отправляет приложению `BOOT_COMPLETED`; +2. TgWsProxy проверяет сохранённую настройку и последнюю конфигурацию прокси; +3. запускается существующий `ProxyService.ACTION_START`; +4. используется тот же foreground notification path, что и при обычном ручном запуске; +5. Activity не открывается автоматически. + +Используются уже существующие сохранённые параметры: локальный порт, runtime config/IPs, pool size, выбранный frontend и связанные настройки маршрутизации. + +Для SOCKS5 пустая/невалидная runtime-конфигурация не приводит к бессмысленному foreground service. Frontend, которому `last_runtime_ips` не требуется, не блокируется искусственно. + +Ручная остановка прокси не выключает настройку автозапуска: она отвечает только за поведение при следующей загрузке системы. + +## Совместимость с OEM-прошивками + +Некоторые Android-прошивки дополнительно ограничивают boot/background autostart. + +Реальный reboot smoke был подтверждён на Xiaomi/HyperOS после включения отдельного системного разрешения фонового автозапуска для TgWsProxy. Приложение не пытается обходить OEM-ограничения скрытыми механизмами. + +## Диагностика + +Добавлены privacy-safe события `BOOT_*` для: + +- получения `BOOT_COMPLETED`; +- отключённого автозапуска; +- успешной отправки `ACTION_START`; +- пропуска из-за невалидного сохранённого состояния; +- уже запущенного runtime; +- ошибки старта. + +Секреты, WARP/AWG ключи, токены и приватная runtime-конфигурация в эти события не записываются. + +## Тесты + +Добавлены unit-тесты для: + +- значения по умолчанию `false`; +- сохранения/чтения настройки; +- disabled → skip; +- enabled + valid config → start; +- enabled + invalid SOCKS5 config → skip; +- MTProto/frontend без обязательного runtime IP config; +- повторной доставки boot события; +- сохранения и загрузки общей стартовой конфигурации. + +Реальный reboot/device smoke подтверждён перед подготовкой релиза. + +## Установка и обновление + +Скачайте: + +`TgWsProxy-Android-v1.11.1-arm64-v8a.apk` + +Требования: Android 8.0+ и `arm64-v8a`. + +Официальный APK использует ту же release-подпись и предназначен для обновления поверх `v1.11.0` без удаления приложения и потери app-private настроек. + +## Артефакты + +Release workflow создаёт: + +- `TgWsProxy-Android-v1.11.1-arm64-v8a.apk`; +- `TgWsProxy-Android-v1.11.1-arm64-v8a.apk.sha256`. + +## Ссылки + +- [CHANGELOG](../../CHANGELOG.md) +- [Issue #95 — пользовательский запрос](https://github.com/Regstar2/tg-ws-proxy-android/issues/95) +- [Issue #96 — техническая реализация](https://github.com/Regstar2/tg-ws-proxy-android/issues/96) +- [v1.11.0](https://github.com/Regstar2/tg-ws-proxy-android/releases/tag/v1.11.0) From 0b509fbe20e01ff36586d02b0e768e756c3bb0c5 Mon Sep 17 00:00:00 2001 From: Regstar2 Date: Wed, 7 Oct 2026 07:08:07 -0700 Subject: [PATCH 11/13] docs: add English v1.11.1 release notes --- docs/releases/v1.11.1_EN.md | 87 +++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 docs/releases/v1.11.1_EN.md diff --git a/docs/releases/v1.11.1_EN.md b/docs/releases/v1.11.1_EN.md new file mode 100644 index 000000000..3e812f2d2 --- /dev/null +++ b/docs/releases/v1.11.1_EN.md @@ -0,0 +1,87 @@ +# v1.11.1 — proxy autostart after Android boot + +[Русский](v1.11.1.md) · **English** + +## About this release + +`v1.11.1` is a stable patch release of TgWsProxy Android for Android 8.0+ / `arm64-v8a`. + +Metadata: `versionName 1.11.1`, `versionCode 57`. + +The main change is optional restoration of the existing local proxy runtime after Android finishes booting. The setting is disabled by default and does not change current behavior until the user explicitly enables it. + +## Boot autostart + +A **Start automatically when device turns on** switch is available under **Settings → App → Service**. + +When enabled: + +1. Android delivers `BOOT_COMPLETED`; +2. TgWsProxy checks the stored preference and last proxy configuration; +3. the existing `ProxyService.ACTION_START` path is used; +4. the normal foreground notification infrastructure is reused; +5. no Activity or UI is opened automatically. + +The same persisted startup state is reused: local port, runtime config/IPs, pool size, selected frontend, and the related routing settings already consumed by the service. + +SOCKS5 with an empty/invalid runtime configuration is skipped safely. Frontends that do not require `last_runtime_ips` are not blocked artificially. + +Manually stopping the proxy does not disable the boot-autostart preference; the setting controls only behavior after the next system boot. + +## OEM compatibility + +Some Android vendors apply additional background/autostart restrictions. + +A physical reboot smoke test was confirmed on Xiaomi/HyperOS after enabling the separate system background/autostart permission for TgWsProxy. The application does not attempt to bypass OEM restrictions. + +## Diagnostics + +Privacy-safe `BOOT_*` events cover: + +- receipt of `BOOT_COMPLETED`; +- disabled autostart; +- successful `ACTION_START` request; +- invalid saved-state skip; +- already-running runtime; +- start failure. + +Secrets, WARP/AWG keys, tokens, and private runtime configuration are not written to these events. + +## Tests + +Unit coverage includes: + +- default `false`; +- preference persistence; +- disabled → skip; +- enabled + valid config → start; +- enabled + invalid SOCKS5 config → skip; +- frontend start without mandatory runtime IP config; +- repeated boot delivery; +- shared saved startup configuration round-trip. + +A real reboot/device smoke test was completed before release preparation. + +## Installation and updating + +Download: + +`TgWsProxy-Android-v1.11.1-arm64-v8a.apk` + +Requirements: Android 8.0+ and `arm64-v8a`. + +The official APK uses the same release signature and is intended to update `v1.11.0` without uninstalling the app or losing app-private settings. + +## Assets + +The release workflow creates: + +- `TgWsProxy-Android-v1.11.1-arm64-v8a.apk`; +- `TgWsProxy-Android-v1.11.1-arm64-v8a.apk.sha256`. + +## Links + +- [CHANGELOG](../../CHANGELOG.md) +- [Issue #95 — user request](https://github.com/Regstar2/tg-ws-proxy-android/issues/95) +- [Issue #96 — implementation task](https://github.com/Regstar2/tg-ws-proxy-android/issues/96) +- [v1.11.0](https://github.com/Regstar2/tg-ws-proxy-android/releases/tag/v1.11.0) From 7b7e23441838ffcb1b96c9f8eb34e6e112c49f2b Mon Sep 17 00:00:00 2001 From: Regstar2 Date: Wed, 7 Oct 2026 07:08:43 -0700 Subject: [PATCH 12/13] release: fix v1.11.1 upgrade baseline --- docs/releases/release.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/releases/release.md b/docs/releases/release.md index 711d8d47e..e506ec894 100644 --- a/docs/releases/release.md +++ b/docs/releases/release.md @@ -22,7 +22,7 @@ ```powershell .\scripts\release.ps1 -Version v1.11.1 ``` -3. Установить signed APK поверх `v1.10.14` и отдельно поверх `v1.11.1-beta.1`; uninstall не использовать как способ обхода проверки подписи. +3. Установить signed APK поверх `v1.11.0` с той же release-подписью; uninstall не использовать как способ обхода проверки подписи. 4. Проверить MTProto/CF, `awg_warp`, сообщения/media, reconnect, Wi-Fi ↔ mobile и boot autostart с последней сохранённой конфигурацией. 5. Проверить custom provisioning Worker и поведение переключателя встроенных Worker. 6. Просмотреть экспорт diagnostics/logs на наличие секретов. From 1552af03d097ae363e6cf07447a656005351b00e Mon Sep 17 00:00:00 2001 From: Regstar2 Date: Wed, 7 Oct 2026 07:08:46 -0700 Subject: [PATCH 13/13] release: fix v1.11.1 upgrade checklist baseline --- docs/releases/RELEASE_CHECKLIST.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/releases/RELEASE_CHECKLIST.md b/docs/releases/RELEASE_CHECKLIST.md index af5932c55..4bc0d4496 100644 --- a/docs/releases/RELEASE_CHECKLIST.md +++ b/docs/releases/RELEASE_CHECKLIST.md @@ -25,8 +25,7 @@ - [ ] `dist\TgWsProxy-Android-v1.11.1-arm64-v8a.apk` exists. - [ ] matching `.sha256` exists. - [ ] APK reports `versionName 1.11.1` / `versionCode 57`. -- [ ] upgrade over signed `v1.10.14` succeeds without uninstall/data loss. -- [ ] upgrade over signed `v1.11.1-beta.1` succeeds without uninstall/data loss. +- [ ] upgrade over signed `v1.11.0` succeeds without uninstall/data loss. ## Boot autostart