2026-01-08 - 2026-07-08
Overview
18 Pull requests merged by 2 users
Merged
#42 refactor(render): этап 6 — косметика (#33, финал эпика #34)
Merged
#41 refactor(render): этап 5 — таблица медиа-типов (5a байт-в-байт + 5b фиксы) (#32)
Merged
#40 refactor(render): этап 4 — группировка без deepcopy + фикс naive/aware (#31)
Merged
#39 refactor(render): этап 3 — слияние близнецов вокруг _prepare_feed_posts (#30)
Merged
#38 refactor(render): этап 2 — футер merged-групп из настоящего Message (#29)
Merged
#37 refactor(render): этап 1 — sanitizer.py (#28, переоткрыт на main после стек-орфана)
Merged
#36 refactor(render): этап 1 — sanitizer.py + санитайз per-post (#28)
Merged
#35 test(render): этап 0 — golden-эталоны фидов (оракул) (#27)
Merged
#21 feat: Kurigram 2.2.23 + рендеринг новых типов медиа Telegram
Merged
#20 fix: XSS в debug-title (#13) + order-independent тест-сьют (#17)
Merged
#19 Стабилизация: статика без флаки + устранение зависаний (стадии 1–7)
Merged
#8 fix(stability): стадия 1 — таймауты на все TG RPC + устойчивый воркер загрузок + супервизия
Merged
#10 fix(stability): стадия 2 — атомарные скачивания медиа, in-flight дедуп, FloodWait->429, ограниченный семафор
Merged
#11 fix(stability): стадия 3 — раздача через FileResponse, чистый ASGI-логгер, больший executor
Merged
#12 fix(stability): стадия 4 — гигиена event loop (рендер фида в поток, ленивый raw_message, один sanitize на выход)
Merged
#15 fix(stability): стадия 5 — батчинг записи access-time в SQLite
Merged
#16 feat(stability): стадия 6 — лёгкий /ping healthcheck без TG RPC
Merged
#18 test(stability): стадия 7 — сквозная верификация (интеграционные тесты + отчёт)
19 Issues closed from 3 users
Closed
#33 Рефакторинг рендера [этап 6/6]: косметика (обёртка поста, константы стилей, чистка)
Closed
#32 Рефакторинг рендера [этап 5/6]: таблица медиа-типов в post_parser (два коммита: 5a байт-в-байт + 5b фиксы)
Closed
#31 Рефакторинг рендера [этап 4/6]: группировка без deepcopy и мутаций, фикс naive/aware краша
Closed
#30 Рефакторинг рендера [этап 3/6]: слияние generate_channel_rss/html вокруг _prepare_feed_posts
Closed
#29 Рефакторинг рендера [этап 2/6]: футер merged-групп из настоящего Message, выпил конвертера
Closed
#28 Рефакторинг рендера [этап 1/6]: sanitizer.py + санитайз per-post внутри _render_pipeline
Closed
#27 Рефакторинг рендера [этап 0/6]: golden-эталоны фидов (оракул эквивалентности)
Closed
#9 security: /health и /raw_json логируют TOKEN-секрет в plaintext при неудачной авторизации
Closed
#22 Рефакторинг рендера [этап 1/6]: единый модуль sanitizer.py, санитайз per-post внутри _render_pipeline
Closed
#17 Тест-сьют order-fragile: голый pytest -> 17 падений (sys.modules['config'] pollution, пре-существует)
Closed
#13 Reflected XSS: несанитайзенный title в debug /post/html (пре-существующий, найден при ревью #12)
Closed
#14 security: debug-HTML выводит несанитайзенный title (reflected-XSS, token-gated)
Closed
#1 Стадия 1 — устранение зависаний: таймауты на все TG RPC + починка фонового воркера
Closed
#2 Стадия 2 — статика: атомарные скачивания больших видео, FloodWait→429, семафор с таймаутом
Closed
#3 Стадия 3 — отдача файлов через FileResponse, удаление BaseHTTPMiddleware, расширение executor
Closed
#4 Стадия 4 — гигиена event loop: рендер фидов в поток, lazy raw_message, один sanitize на выход
Closed
#5 Стадия 5 — SQLite: батчинг записей вместо connect+write на каждый запрос
Closed
#6 Стадия 6 — лёгкий /ping и починка healthcheck (docker-compose)
Closed
#7 Стадия 7 — сквозная верификация и наблюдение после деплоя
25 Issues created by 1 user
Opened
#1 Стадия 1 — устранение зависаний: таймауты на все TG RPC + починка фонового воркера
Opened
#2 Стадия 2 — статика: атомарные скачивания больших видео, FloodWait→429, семафор с таймаутом
Opened
#3 Стадия 3 — отдача файлов через FileResponse, удаление BaseHTTPMiddleware, расширение executor
Opened
#4 Стадия 4 — гигиена event loop: рендер фидов в поток, lazy raw_message, один sanitize на выход
Opened
#5 Стадия 5 — SQLite: батчинг записей вместо connect+write на каждый запрос
Opened
#6 Стадия 6 — лёгкий /ping и починка healthcheck (docker-compose)
Opened
#7 Стадия 7 — сквозная верификация и наблюдение после деплоя
Opened
#9 security: /health и /raw_json логируют TOKEN-секрет в plaintext при неудачной авторизации
Opened
#13 Reflected XSS: несанитайзенный title в debug /post/html (пре-существующий, найден при ревью #12)
Opened
#14 security: debug-HTML выводит несанитайзенный title (reflected-XSS, token-gated)
Opened
#17 Тест-сьют order-fragile: голый pytest -> 17 падений (sys.modules['config'] pollution, пре-существует)
Opened
#22 Рефакторинг рендера [этап 1/6]: единый модуль sanitizer.py, санитайз per-post внутри _render_pipeline
Opened
#23 Кеши, PR-юнит 1 (пакеты A+B+F): снапшот-кеш истории вместо pickle, префиксный limit, джиттер при записи + age-sweep
Opened
#24 Кеши, PR-юнит 2 (пакет C): единая канонизация ключа канала + one-shot миграция данных
Opened
#25 Кеши, PR-юнит 3 (пакет D): фиксы свипера медиа-кеша + дедуп очереди фоновых загрузок
Opened
#26 Кеши, PR-юнит 4 (пакет E): хелпер путей медиа-кеша + in-memory MIME-кеш на горячем пути /media
Opened
#27 Рефакторинг рендера [этап 0/6]: golden-эталоны фидов (оракул эквивалентности)
Opened
#28 Рефакторинг рендера [этап 1/6]: sanitizer.py + санитайз per-post внутри _render_pipeline
Opened
#29 Рефакторинг рендера [этап 2/6]: футер merged-групп из настоящего Message, выпил конвертера
Opened
#30 Рефакторинг рендера [этап 3/6]: слияние generate_channel_rss/html вокруг _prepare_feed_posts
Opened
#31 Рефакторинг рендера [этап 4/6]: группировка без deepcopy и мутаций, фикс naive/aware краша
Opened
#32 Рефакторинг рендера [этап 5/6]: таблица медиа-типов в post_parser (два коммита: 5a байт-в-байт + 5b фиксы)
Opened
#33 Рефакторинг рендера [этап 6/6]: косметика (обёртка поста, константы стилей, чистка)
Opened
#34 ЭПИК: рефакторинг пайплайна рендера (спека v5, этапы 0–6)
Opened
#43 Долг: постфактум-ревью медиа-самолечения (3c9ce72, влито в main без ревью)