bridge.py: в cf worker fallback не было break после успешного коннекта, открывались коннекты ко всем доменам, брался последний, остальные висели
raw_websocket.py: continuation фреймы 0x0 просто выбрасывались, фрагментированное сообщение приходило обрезанным, теперь склеивается. а так же длина фрейма шла в readexactly без лимита, поставил 16 мб
config.py: inet_aton жрал 149.154 и делал из него 149.0.0.154, поменял на inet_pton
Dockerfile: utils не копировался в образ, --log-file падал с ModuleNotFoundError
по мелочи
pyproject.toml: был ignore без select, ruff check выдавал разное от версии, у меня 344 штуки, зафиксировал правила и добил остатки
накидал 56 тестов на чистую логику (конфиг, MsgSplitter, fake tls, ws фрейминг, версии), только stdlib, команды в CONTRIBUTING
ruff чисто, тесты зелёные, прокси стартует. винду вживую не собирал, сижу на маке
pool.py:313 не трогал, там return перед обработкой 429, по todo видно что вырубили специально
надеюсь за форк опять не забанят
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
## 📋 Pull Request Information
**Original PR:** https://github.com/Flowseal/tg-ws-proxy/pull/1187
**Author:** [@IMDelewer](https://github.com/IMDelewer)
**Created:** 8/8/2026
**Status:** 🔄 Open
**Base:** `main` ← **Head:** `chore/generic-fixes`
---
### 📝 Commits (10+)
- [`e9c90c9`](https://github.com/Flowseal/tg-ws-proxy/commit/e9c90c934b8f3634e3f3aef6ff73660f6fb0a15b) fix(cfproxy): stop probing worker domains after a successful connect
- [`4d0011d`](https://github.com/Flowseal/tg-ws-proxy/commit/4d0011d6c3f7b151dedcc0c0d1846fe2b4af8a8c) fix(websocket): reassemble fragmented frames instead of dropping continuations
- [`cad5f7c`](https://github.com/Flowseal/tg-ws-proxy/commit/cad5f7cab4fc9f7b585eb7ba40cd8f5144a6f8e6) fix(update): verify sha256 digest of downloaded release asset before install
- [`d168644`](https://github.com/Flowseal/tg-ws-proxy/commit/d168644d13f77c6eba984568ff7c81f643b98dbb) fix(config): reject short-form IPv4 in --dc-ip
- [`f4ca8a4`](https://github.com/Flowseal/tg-ws-proxy/commit/f4ca8a4e9d8e1517c471f5736df4c2fef71cdf87) fix(docker): ship utils package so --log-file works in the image
- [`659d8c2`](https://github.com/Flowseal/tg-ws-proxy/commit/659d8c2019afb171174dd95d563c8d5d3f7987c5) chore(lint): pin ruff rule selection and clear remaining violations
- [`0087dda`](https://github.com/Flowseal/tg-ws-proxy/commit/0087dda9ffc4693656fb1e0df180a3c7031d7ff6) test: cover config parsing, packet splitting, fake TLS and WS framing
- [`6832559`](https://github.com/Flowseal/tg-ws-proxy/commit/6832559de6cd0c4b074a4cac2d10b0ae8a41ebbe) refactor(update): make expected_digest a required argument
- [`7ec2dba`](https://github.com/Flowseal/tg-ws-proxy/commit/7ec2dbabcaa5c4db35b6c03aa84da37e9ab8b587) revert: drop the update digest verification
- [`eb86e2d`](https://github.com/Flowseal/tg-ws-proxy/commit/eb86e2dee934b77483ba04cff89c26faa81f6127) revert: drop the watchdog loop-variable binding and ignore B023
### 📊 Changes
**15 files changed** (+608 additions, -18 deletions)
<details>
<summary>View changed files</summary>
📝 `Dockerfile` (+1 -0)
📝 `docs/CONTRIBUTING.md` (+15 -1)
📝 `docs/EN/CONTRIBUTING.md` (+15 -1)
📝 `proxy/bridge.py` (+1 -0)
📝 `proxy/config.py` (+2 -2)
📝 `proxy/pool.py` (+1 -1)
📝 `proxy/raw_websocket.py` (+24 -7)
📝 `pyproject.toml` (+8 -1)
➕ `tests/__init__.py` (+0 -0)
➕ `tests/test_bridge.py` (+116 -0)
➕ `tests/test_config.py` (+87 -0)
➕ `tests/test_fake_tls.py` (+133 -0)
➕ `tests/test_raw_websocket.py` (+130 -0)
➕ `tests/test_update_check.py` (+70 -0)
📝 `ui/ctk_tray_ui.py` (+5 -5)
</details>
### 📄 Description
## фиксы
- `bridge.py`: в cf worker fallback не было break после успешного коннекта, открывались коннекты ко всем доменам, брался последний, остальные висели
- `raw_websocket.py`: continuation фреймы 0x0 просто выбрасывались, фрагментированное сообщение приходило обрезанным, теперь склеивается. а так же длина фрейма шла в readexactly без лимита, поставил 16 мб
- `config.py`: inet_aton жрал 149.154 и делал из него 149.0.0.154, поменял на inet_pton
- `Dockerfile`: utils не копировался в образ, --log-file падал с ModuleNotFoundError
## по мелочи
- `pyproject.toml`: был ignore без select, ruff check выдавал разное от версии, у меня 344 штуки, зафиксировал правила и добил остатки
- накидал 56 тестов на чистую логику (конфиг, MsgSplitter, fake tls, ws фрейминг, версии), только stdlib, команды в CONTRIBUTING
ruff чисто, тесты зелёные, прокси стартует. винду вживую не собирал, сижу на маке
pool.py:313 не трогал, там return перед обработкой 429, по todo видно что вырубили специально
_надеюсь за форк опять не забанят_
---
<sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 Pull Request Information
Original PR: https://github.com/Flowseal/tg-ws-proxy/pull/1187
Author: @IMDelewer
Created: 8/8/2026
Status: 🔄 Open
Base:
main← Head:chore/generic-fixes📝 Commits (10+)
e9c90c9fix(cfproxy): stop probing worker domains after a successful connect4d0011dfix(websocket): reassemble fragmented frames instead of dropping continuationscad5f7cfix(update): verify sha256 digest of downloaded release asset before installd168644fix(config): reject short-form IPv4 in --dc-ipf4ca8a4fix(docker): ship utils package so --log-file works in the image659d8c2chore(lint): pin ruff rule selection and clear remaining violations0087ddatest: cover config parsing, packet splitting, fake TLS and WS framing6832559refactor(update): make expected_digest a required argument7ec2dbarevert: drop the update digest verificationeb86e2drevert: drop the watchdog loop-variable binding and ignore B023📊 Changes
15 files changed (+608 additions, -18 deletions)
View changed files
📝
Dockerfile(+1 -0)📝
docs/CONTRIBUTING.md(+15 -1)📝
docs/EN/CONTRIBUTING.md(+15 -1)📝
proxy/bridge.py(+1 -0)📝
proxy/config.py(+2 -2)📝
proxy/pool.py(+1 -1)📝
proxy/raw_websocket.py(+24 -7)📝
pyproject.toml(+8 -1)➕
tests/__init__.py(+0 -0)➕
tests/test_bridge.py(+116 -0)➕
tests/test_config.py(+87 -0)➕
tests/test_fake_tls.py(+133 -0)➕
tests/test_raw_websocket.py(+130 -0)➕
tests/test_update_check.py(+70 -0)📝
ui/ctk_tray_ui.py(+5 -5)📄 Description
фиксы
bridge.py: в cf worker fallback не было break после успешного коннекта, открывались коннекты ко всем доменам, брался последний, остальные виселиraw_websocket.py: continuation фреймы 0x0 просто выбрасывались, фрагментированное сообщение приходило обрезанным, теперь склеивается. а так же длина фрейма шла в readexactly без лимита, поставил 16 мбconfig.py: inet_aton жрал 149.154 и делал из него 149.0.0.154, поменял на inet_ptonDockerfile: utils не копировался в образ, --log-file падал с ModuleNotFoundErrorпо мелочи
pyproject.toml: был ignore без select, ruff check выдавал разное от версии, у меня 344 штуки, зафиксировал правила и добил остаткиruff чисто, тесты зелёные, прокси стартует. винду вживую не собирал, сижу на маке
pool.py:313 не трогал, там return перед обработкой 429, по todo видно что вырубили специально
надеюсь за форк опять не забанят
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.