Repository navigation
Releases: Dosash/web_panel_acc
Release list
TG Panel 0.15.1
Левая рейка: боты отдельно, версия панели внизу.
- Интерфейс: кнопки бота постинга и бота рекламы в рейке собраны в отдельную карточку с синими иконками
(открытый бот — с заливкой), чтобы не сливались с кнопками невидимки, темы и поддержки ниже - Интерфейс: в самом низу рейки — версия панели; по нажатию открывается окно «Поддержка» с проверкой обновлений
Скачать: Windows — setup.exe (или portable.zip), Linux — .AppImage (или .tar.gz), macOS — .dmg (arm64 — Apple Silicon, x86_64 — Intel). Установленные программы обновятся сами.
TG Panel 0.15.0
Панель на сервере обновляется кнопкой из окна «Обновление».
- Обновление панели: в окне значка «Вышло обновление» — кнопка «Обновить панель». В Docker панель через
/var/run/docker.sockзапускает рядом временный контейнер<проект>-updater(образdocker:27-cli), который
делаетgit pullот владельца папки иdocker compose up -d --build; без Docker —git pull,pip install
и штатный перезапуск процесса. Ход и журнал обновления видны в окне, страница перезагрузится сама, когда
ответит новая версия. Команда для ручного обновления осталась под «Обновить вручную».
Новые эндпоинтыPOST /api/update/installиGET /api/update/progress, вGET /api/update— полеself_update - Docker: в
docker-compose.ymlдобавлен/var/run/docker.sock(это права root на сервере для контейнера:
без кнопки строку можно убрать). Новая настройкаSELF_UPDATE(0— только команда). Панели до 0.15.0
первый раз обновляются командой — после этого строка с сокетом появится сама
Скачать: Windows — setup.exe (или portable.zip), Linux — .AppImage (или .tar.gz), macOS — .dmg (arm64 — Apple Silicon, x86_64 — Intel). Установленные программы обновятся сами.
TG Panel 0.14.0
Новая программа для Windows: Tauri 2 + WebView2 вместо PyQt5 + Qt WebEngine. Установленная программа
обновится на неё сама — режим, адрес сервера и аккаунты сохранятся.
- Программа для Windows (
desktop-win/): оболочка на Rust и встроенный в Windows движок Edge WebView2 —
свежий Chromium, окно через ~1 с вместо ~4 с, установщик 28,5 МБ вместо 85 МБ (в установленном виде 63 МБ
вместо 246 МБ). Python запускается только в режиме «на этом компьютере»: сервер панели — отдельный процесс
server\tg-panel-server.exe, из Qt в нём только QtCore для чтения tdata. Всё прежнее на месте: два режима,
трей, системные уведомления, «Сохранить как», окна фото/видео и встроенных ботов, разрешения мини-приложений,
масштаб, горячие клавиши, автозапуск, одна копия; заголовок окна — в теме панели - Переход без вопросов: тот же
desktop.ini(режим, адрес сервера, порт, масштаб, автообновление, папка
загрузок), те же имена файлов релиза и установщик с тем же AppId — установленные программы на PyQt5 обновятся
на новую сами, их_internalудаляется, данные в%APPDATA%не трогаются - Обновление (Windows): проверка и скачивание в фоне с докачкой при обрыве; файл сверяется с
TG-Panel-<версия>-SHA256SUMS.txtиз релиза — битый или подменённый не ставится; установка без окон, когда
программа в трее и простаивает, при выходе, при следующем запуске или по кнопке «Перезапустить» на плашке
в окне. В локальном режиме аккаунты отключаются штатно, простой — около 10 секунд. Новая версия не
запустилась — возвращается прежняя, сломанная больше не ставится. После обновления — «Обновлено до X.Y.Z»
с описанием. Установка «для всех» один раз предлагает перейти на установку для пользователя — обновления без UAC - Релизы: в каждом релизе — файл контрольных сумм
TG-Panel-<версия>-SHA256SUMS.txt; Windows собирается
desktop-win/build.ps1, Linux и macOS — по-прежнемуdesktop/build.py - Панель (Windows): имена файлов из загруженной папки tdata вида
/etc/xилиC:xпод Windows не считались
абсолютными и могли вывести запись из временной папки — теперь такие файлы пропускаются
Скачать: Windows — setup.exe (или portable.zip), Linux — .AppImage (или .tar.gz), macOS — .dmg (arm64 — Apple Silicon, x86_64 — Intel). Установленные программы обновятся сами.
TG Panel 0.13.1
Демо-ролик проекта в README и в репозитории.
- Документация: демо-ролик проекта
docs/video/demo.mp4(1080p, 60 fps, со звуком) и его превью в README.
Ролик не записан с экрана, а собран как детерминированная HTML/JS-сцена на настоящих стилях панели
(docs/video/src/, рендер —render.pyчерез Chromium и ffmpeg), поэтому его можно пересобрать после изменений интерфейса
Скачать: Windows — setup.exe (или portable.zip), Linux — .AppImage (или .tar.gz), macOS — .dmg (arm64 — Apple Silicon, x86_64 — Intel). Установленные программы обновятся сами.
TG Panel 0.13.0
Аккаунты из файлов сессий: формат «session + json» рядом с tdata.
- Аккаунты: импорт из файлов
.session(Telethon или Pyrogram, в том числе строковые сессии) и.json
с параметрами приложения — формат «session + json». В окне «Новый аккаунт» появилась вкладка Файлы .session:
можно выбрать или перетащить несколько пар файлов либо zip с ними — каждая сессия станет аккаунтом.
Из.jsonберутсяapp_id/app_hash, устройство и версия (вход для Telegram выглядит прежним), облачный
пароль и прокси; имя при пачке — из.json. Новый эндпоинтPOST /api/accounts/import-sessions - Интерфейс: у переключателей-сегментов («Папка tdata / Файлы .session», «Ссылка / Копировать текст»
в редакторе поста) подложка активной кнопки плавно переезжает к нажатой; иконка и подпись в одну строку,
вместо оранжевой рамки фокуса браузера — мягкая подсветка
Скачать: Windows — setup.exe (или portable.zip), Linux — .AppImage (или .tar.gz), macOS — .dmg (arm64 — Apple Silicon, x86_64 — Intel). Установленные программы обновятся сами.
TG Panel 0.12.1
Диагностика проекта: устойчивость панели и ботов, совместимость с Windows-программой, тесты и CI.
- Панель: при двойном «Переподключить» (или смене прокси во время подключения) первый клиент аккаунта
оставался в сети вне панели — события приходили дважды. Подключение аккаунта теперь под замком - Панель: сеанс, завершённый с телефона уже после подключения, панель показывает как ошибку аккаунта
(«Сессия недействительна»), а не отвечает 400 на каждый запрос - Панель:
data/cache(медиа из чатов, аватары) раньше не очищался никогда — теперь при старте и раз в 6 часов:
медиа старше 7 дней, аватары старше 30 дней, затем самые старые файлы до размераCACHE_MAX_MB(по умолчанию 2 ГБ);
data/tmpчистится от папок, оставшихся после аварийного завершения - Панель: загрузка медиа в ленте — не больше нескольких на аккаунт разом (как у аватаров) и один раз на файл:
несколько одинаковых запросов подряд больше не качают файл параллельно - Панель: первая пачка запросов к чатам после перезапуска грузит список диалогов один раз, а не из каждого
запроса (меньше шансов на flood wait); зависшее WebSocket-соединение не задерживает события остальным вкладкам - Панель: вход — не больше 10 неверных паролей за 10 минут (
429сRetry-After), сравнение пароля без утечки
по времени;/api/healthне расшифровывает сессии всех аккаунтов при каждой проверке - Панель: «аккаунт не найден» и «аккаунт не в сети» — свои исключения; любые другие
KeyError/RuntimeError
попадают в журнал с трассировкой и возвращают500вместо того, чтобы прятаться под «Аккаунт не найден».
Фоновые задачи (подключение аккаунтов, операции с ботами) пишут ошибки в журнал - Панель: SQLite в режиме WAL, соединения закрываются, ожидание занятой базы 10 с
- Интерфейс: после обрыва WebSocket (сон ноутбука, перезапуск сервера) панель перечитывает список чатов,
аккаунты и открытый чат — пропущенные сообщения появляются без F5 - Windows-программа (Chromium 83): модальные окна, оверлей мини-приложений, чат на телефоне и панели ботов
позиционировались неправильно — CSSinsetзаменён наtop/right/bottom/left; уcolor-mix()появились запасные
цвета (раньше чипы и полупрозрачные панели оставались без фона); панель бота постинга не открывалась из-за
replaceChildren— добавлен полифил - Бот постинга: уборка папки загрузок раз в час — файлы медиа, на которые не ссылается ни один пост (старше суток),
кэш превью из Telegram старше 7 дней и.part-файлы прерванных загрузок; раньше папка росла бесконечно - Бот постинга: записи статистики (снимки подписчиков, вступления и отписки, посты каналов) старше 400 дней удаляются
- Бот постинга: токен, на который Telegram отвечает 404, считается отклонённым, а не «нет связи» с бесконечными
повторами; некорректныйBOT_TOKENдаёт понятную ошибку в журнале; ошибки фоновых задач запуска пишутся в журнал;
при ограничении частоты во время проверки каналов бот ждёт и проверяет канал повторно - Бот рекламы: заказы, застрявшие в статусе «оплачен» после остановки процесса (оплата прошла, публикации нет),
доводятся до конца при старте и из планировщика — бронь и очередь или публикация без дублей в уже получивших пост
каналах; при остановке бот дожидается незавершённых обработчиков оплаты и публикации, прежде чем закрыть базу - Бот рекламы: веб-панель поднимается до связи с Telegram; без сети бот ждёт её, а не падает в цикле перезапусков,
при отклонённом токене панель остаётся доступной, чтобы сменить токен - Бот рекламы: оплата звёздами не теряется, если администратор в этот момент принимает пост для рассылки или
находится в сценарии админки или поддержки (обработчики оплаты — первыми в диспетчере) - Бот рекламы: оплата заказа с уже прошедшим временем не публикует пост «сразу» в произвольный момент —
пользователю предлагается выбрать новое время - Бот рекламы: опрос счетов CryptoBot и xRocket — только по счетам, выставленным за последние двое суток, у заказов
с ещё не наступившим временем (список не рос бесконечно, а переполнение ломало проверку всех оплат разом) - Бот рекламы: падение фоновой задачи попадает в журнал; сводка автообнаружения каналов не умирает после первой
ошибки; негодныеTEST_CHANNEL_ID,WORK_HOURS,BOOKING_DAYS,MIN_LEAD_MINUTESв настройках запуска
не роняют бота на старте — значения по умолчанию с предупреждением в журнале - Интерфейс — оформление: экран входа с плывущими пятнами света и «стеклянной» карточкой, свечение активного аккаунта
и кнопок, блик по кромке панелей, переливающийся градиент главных кнопок, плавная смена темы; появление списка чатов
«лесенкой», сообщений, окон и тостов — с лёгким «перелётом», окна закрываются плавно; отклик кнопок, плиток,
меню и поля ввода при наведении и нажатии; пульс точки «подключение», парящие логотипы на пустых экранах;
аккуратные полосы прокрутки. Всё на токенах и безcolor-mix()/:focus-visibleв общих правилах (Chromium 83) - Панели ботов — оформление: тот же уровень, что у панели: стеклянное боковое меню, градиентная метка активного
раздела, карточки и плитки с бликом по кромке и подъёмом при наведении, переливающиеся главные кнопки, пружинное
появление окон и тостов с размытым фоном, страницы появляются снизу, экран входа бота постинга с плывущими
пятнами света. Всё в общемstatic/bots-theme.css, стили самих ботов не тронуты - Боты: бот, выходящий сам (например, с неверным токеном), падал при завершении с «Fatal Python error:
_enter_buffered_busy» из-за потока, читающего stdin от панели, — теперь завершается обычным кодом - Разработка:
ruff.toml, тестыtests/(чистые функции и HTTP-слой без Telegram),requirements-dev.txt
и CI «Проверки» (ruff, компиляция, тесты, синтаксис JS) при каждом пуше; вdocs/DEVELOPMENT.md— раздел
о совместимости интерфейса с Chromium 83
Скачать: Windows — setup.exe (или portable.zip), Linux — .AppImage (или .tar.gz), macOS — .dmg (arm64 — Apple Silicon, x86_64 — Intel). Установленные программы обновятся сами.
TG Panel 0.12.0
Бот постинга и бот рекламы — внутри панели.
- Встроенные боты: в левой колонке вместо «Все панели» — кнопки «Бот постинга» и «Бот рекламы»
(бывшие отдельные проекты post_channel_bot и ads_chanel_bot, теперь — папкаbots/). Первый раз кнопка
открывает экран запуска: токен бота от @Botfather (проверяется у Telegram), администраторы — можно выбрать
из своих аккаунтов — и часовой пояс. Дальше на месте чатов открывается собственная панель бота:
посты, контент-план, каналы, заказы, оплата — всё как раньше, тем же адресом и паролем, что и TG Panel - Каждый бот работает отдельным процессом: панель запускает его, поднимает после падения и останавливает
вместе с собой. Точка на кнопке — состояние бота (работает, запускается, ошибка); журнал — в
data/bots/<бот>/bot.logи на экране ошибки - Тема панели переключает и тему в панелях ботов
- Панели ботов оформлены как TG Panel: та же палитра в обеих темах, шрифт Inter, градиентные кнопки
и логотипы, фон как у ленты чата (static/bots-theme.cssподключается последним в их страницах) - Правый клик по кнопке бота — меню: открыть в панели, в отдельном окне, в новой вкладке (в браузере),
настройки запуска, запустить или выключить. Кнопка «отдельное окно» есть и в шапке бота. В программе для
ПК панель бота открывается своим окном программы — одно окно на бота, Esc его не закрывает - Панель бота на
127.0.0.1отвечает только с ключом, который знает TG Panel (новый на каждый запуск бота), —
в обход входа в панель её не открыть. Вебхук оплаты xRocket проходит без входа: подпись проверяет сам бот - Токен, администраторы и пояс, заданные в «Настройках запуска», применяются, даже если раньше их меняли
в панели самого бота; имя бота в TG Panel берётся у работающего бота. Старые адреса/posts/,/ads/
за nginx можно перенаправить на/accounts/#bot=postsи#bot=ads— панель сразу откроет бота /api/healthпоказывает состояние подключённых ботов (bots)- Убрана настройка
HUB_URLи ссылка «Все панели» - Docker:
stop_grace_period— 90 с (бот постинга даёт начатым публикациям завершиться), память — 1 ГБ - Программа под Windows останавливает бота сразу, без ожидания начатых публикаций (так работает
terminateв Windows) — для отложенных постов лучше панель на сервере
Скачать: Windows — setup.exe (или portable.zip), Linux — .AppImage (или .tar.gz), macOS — .dmg (arm64 — Apple Silicon, x86_64 — Intel). Установленные программы обновятся сами.
TG Panel 0.11.3
Обновление и перезапуск программы под Windows.
- Исправлено: под Windows программа не ставила скачанное обновление и не перезапускалась после смены
подключения. Скрипт установки запускался с флагомDETACHED_PROCESS, а без консоли PowerShell 5.1 молча
завершается, не выполнив скрипт. Исправление из 0.11.2 (выход из задания Windows) этого не лечило.
Из 0.11.2 и раньше обновиться кнопкой нельзя — 0.11.3 нужно один раз распаковать поверх вручную - Исправлено: в режиме «На моём сервере» первый запуск после обновления на 0.11.2 давал пустое окно —
очистка кэша страниц (clearHttpCache) в Qt 5.15.2 подвешивала загрузку. Теперь папка кэша удаляется
до того, как встроенный браузер её откроет
Скачать: Windows — setup.exe (или portable.zip), Linux — .AppImage (или .tar.gz), macOS — .dmg (arm64 — Apple Silicon, x86_64 — Intel). Установленные программы обновятся сами.
TG Panel 0.11.2
Обновление программы под Windows и свежий интерфейс после обновления.
- Исправлено: под Windows программа скачивала обновление, закрывалась и не ставила его — скрипт установки
завершался вместе с программой (она работает в задании Windows, Job Object). Теперь скрипт выводится из задания - Исправлено: после обновления встроенный браузер мог показывать старый интерфейс из своего кэша (в 0.11.1 —
по-прежнему пустое окно). Панель отдаёт свои файлы сCache-Control: no-cache(каждый раз сверка по ETag,
без изменений — короткий ответ 304), а программа очищает кэш страниц при смене версии
Скачать: Windows — setup.exe (или portable.zip), Linux — .AppImage (или .tar.gz), macOS — .dmg (arm64 — Apple Silicon, x86_64 — Intel). Установленные программы обновятся сами.
TG Panel 0.11.1
Исправлено пустое окно программы под Windows.
- Исправлено: программа под Windows показывала пустое окно — встроенный браузер (Qt 5.15.2, Chromium 83)
не понимал оператор||=вapp.js, и интерфейс не запускался - Ошибки JavaScript страницы теперь пишутся в журнал программы (
logs/tg-panel.log)
Скачать: Windows — setup.exe (или portable.zip), Linux — .AppImage (или .tar.gz), macOS — .dmg (arm64 — Apple Silicon, x86_64 — Intel). Установленные программы обновятся сами.