docs: синхронизировать документацию с состоянием кода (#27)

Аудит репозитория после #25 и #26. Расхождения между тем, что написано, и тем,
что есть:

- README обещал `tglock-cli-*` в таблице загрузок, но в релизе
  v2.0.0-beta.1 такого артефакта нет: задача `cli` в release.yml сработает
  только на следующем теге. Заменено на честную формулировку с командой
  сборки из main.
- ui/main.ts держал начальным значением маршрута строку «Автоматический
  маршрут», которую бэкенд больше не отдаёт: при коде 0 возвращается
  «Маршрут ещё не выбран». Иначе до первого опроса статуса интерфейс
  показывал название несуществующего маршрута.
- ARCHITECTURE_V2.md не упоминал ни разделения на библиотеку и два бинаря, ни
  фичи `gui`, ни правила различения протоколов, ни политики прямого релея, ни
  того, что GUI не запускается без WebView. Добавлены разделы, а последнее
  внесено в Current limitations вместе с отсутствием подписи бинарей.
- ISSUE_AUDIT.md описывал состояние на 29 июля. Сам аудит оставлен как
  фиксация на дату, сверху добавлен статус на 30 июля: что закрыто, что
  осталось открытым и почему, и что исправлено вне списка issues.
- HABR.md — черновик статьи, а не документация, но был указан в README как
  «подробный технический разбор». В нём «два файла, 350 строк, четыре
  платформы», тогда как сейчас 2872 строки Rust, семь файлов и три платформы
  плюс headless. Добавлена шапка с поправкой, ссылка в README переписана так,
  чтобы читателя не отправляли к устаревшим числам за документацией.

Проверено: fmt, clippy в обоих вариантах сборки, 47 + 12 тестов, npm run build,
все ссылки на файлы в .md существуют.

Co-authored-by: by-sonic <171230345+by-sonic@users.noreply.github.com>
This commit is contained in:
Никита Sonic
2026-07-30 13:34:43 +03:00
committed by GitHub
parent 95059f5449
commit 9bacc488a5
5 changed files with 108 additions and 4 deletions
+28
View File
@@ -3,6 +3,34 @@
Проверено 29 июля 2026 года: все 15 issues и 5 pull requests, существовавшие
в репозитории на момент аудита.
> **Статус на 30 июля 2026.** Аудит ниже оставлен как есть — это фиксация
> состояния на дату проверки. Что с тех пор сделано:
>
> - Разобраны все issues и pull requests. Открытых PR не осталось.
> - Закрыты #1–#5, #8, #11, #13, #14, #19, #23 и #3 — с техническими
> объяснениями в самих issues.
> - #15 реализован заново поверх архитектуры 2.0 в #25: смерджить исходный PR
> было нельзя, он патчил `bypass.rs`, `network.rs` и `ws_proxy.rs`, которых
> больше нет, и правил системный DNS. Взято разделение GUI/CLI и произвольный
> bind-адрес; DNS-менеджмент и проверка root отброшены как ненужные.
> - #12 закрыт: относился к шрифту старого egui-интерфейса.
> - #10 и #17 **оставлены открытыми осознанно.** Появился headless `tglock-cli`,
> который на таких машинах работает, но сам GUI по-прежнему не создаёт окно
> без 3D-ускорения. Это обход, а не исправление.
> - #9 (Android) остаётся в backlog без сроков, #21 ждёт подтверждения на
> пересобранной сборке macOS.
>
> Дополнительно исправлено то, чего в issues не было: коллизия MTProto-init с
> байтом `0x05` (одно соединение из 256 уходило в SOCKS5-ветку и умирало),
> подсчёт туннеля до успешного рукопожатия, неверные подписи маршрутов в
> интерфейсе и генерация нового секрета при каждом старте сервиса. Подробности —
> в [ARCHITECTURE_V2.md](ARCHITECTURE_V2.md).
>
> Из списка «не подтверждённых обещаний» в конце документа закрыты все четыре
> пункта: формулировки про звонки и про «Подключено» приведены в соответствие с
> кодом, LAN-режим ограничен адресами Telegram на уровне типа, Cloudflare Worker
> остаётся исключительно пользовательской настройкой.
## Выводы
Главная причина жалоб «прокси подключён, но Telegram не работает» — приложение