Repository navigation
Releases: danilinao/dsh-telegram-channel-ru
Release list
v0.9.0 — настройки в Web-интерфейсе, несколько пользователей
Настройки переехали в Web-интерфейс, и пользователей стало можно несколько.
Добавлено
- Страница настроек в GUI.
Plugins → dsh-telegram-channel-ru: токен,
список пользователей, доступ, формат сообщений, лимиты. Браузерная половина
(client/client.js, слотplugins.bundle.config) собирает правки в одну
атомарную запись профиля и пишет только изменённые поля. - Живое применение без рестарта
dsh. Все поля Config помечены
.volatile(); плагин слушаетloader/volatile-update, останавливает старый
мост (long-poll теперь прерывается поAbortSignal, а не ждёт таймаута) и
поднимает новый с новыми значениями. СмещениеgetUpdatesпереносится,
поэтому уже обработанные сообщения не обрабатываются дважды; при смене
токена (другой бот) смещение сбрасывается. - Несколько пользователей.
users: [{ id, name?, enabled? }]— список из
GUI, у каждого своя галочка «Отвечать». ПлоскийallowedUserIdsиз 0.8.x
остаётся фолбэком, покаusersпуст; первое сохранение из GUI переносит
список и убирает старый ключ, чтобы не было второго, невидимого белого списка. - Добавление по
@username. Страница зовёт/settings/resolve, хост
резолвитgetChat; рядом — чипсы «недавно писали боту» из запомненных имён. - Токен как секрет.
.role('secret')— DSH вырезает токен из документа
настроек, страница показывает «сохранён» и живой статус «Бот подключён:
@имя» (черезgetMe), а не сам токен. - Два хост-маршрута
/plugins/dsh-telegram-channel-ru/settings/{info,resolve}
(только несекретные сведения;no-store, same-origin проверка на POST). - Имена людей в состоянии бота и сохранение
getUpdates-смещения в
telegram-channel-bindings.json. - Браузерная проверка страницы —
npm run test:browser: настоящий React и
headless Chrome, 19 проверок (рендер, статус, добавление по@username,
пакетная запись, снятие галочки, удаление, предупреждение «разрешить всем»).
Не входит вnpm run check(нужен Chrome).
Изменено
npm test— 99 тестов (было 62): конфиг/белый список, маршруты настроек,
несколько пользователей, проводка браузерной половины.applyразложен наapply+applyWith(ctx, config, options): клиент
Telegram внедряется в тестах, сеть в тестах не нужна.
Известные ограничения
- Бот по-прежнему не разделяет доступ к сессиям между пользователями: каждый из
списка видит все рабочие области и может привязаться к любой сессии. - Страница настроек требует DSH 0.2.x (в 0.1.x у Plugins нет форм).
npm: dsh-telegram-channel-ru@0.9.0 (опубликован из CI, provenance в sigstore).
Как обновить
dsh plugin --profile web add dsh-telegram-channel-ru@0.9.0
systemctl restart dsh # плагин монтируется при стартеПосле обновления: Plugins → dsh-telegram-channel-ru — токен, пользователи, доступ, оформление.
v0.8.3
Проверено на живом прогоне: публикацию в npm делает CI, токенов нет.
Изменено
- Actions обновлены до текущих мажоров —
actions/checkout@v7,
actions/setup-node@v7(v4 предупреждал о deprecation Node 20 на раннере). BUILD.md: CI-публикация описана как рабочий путь с фактами первого
прогона (v0.8.2, provenance ушла в sigstore, версия становится публичной
через ~1,5 минуты); добавлена грабля «пуш.github/workflows/*требует scope
workflowу GitHub-токена».
npm
Опубликовано из CI (publish.yml, Trusted Publishing + provenance):
https://www.npmjs.com/package/dsh-telegram-channel-ru
dsh plugin --profile web add dsh-telegram-channel-ruCI-прогон: https://github.com/danilinao/dsh-telegram-channel-ru/actions
v0.8.1 — dsh-telegram-channel-ru
Пакет и репозиторий переименованы, публикация переехала в CI.
Изменено
- Имя пакета и репозитория:
dsh-telegram-channel→
dsh-telegram-channel-ru. Суффикс отделяет русское ответвление от
оригинала (hi-wenw/dsh-telegram-channel) в общем пространстве имён npm.
GitHub редиректит старые адреса,npm i dsh-telegram-channel@0.8.0продолжает
работать (старое имя осталось опубликованным). Вместе с пакетом изменился
idплагина в профиле DSH — строка с токеном в
~/.dsh/profiles/web/cordis.patch.ymlдолжна быть
- id: dsh-telegram-channel-ru(порядок переезда — в README). - Публикация в npm — из GitHub Actions. Workflow
.github/workflows/publish.ymlна тегv*:npm ci→npm run check→
npm publish --provenanceчерез Trusted Publishing (OIDC), без токенов в
репозитории и без секретов. Если версия уже в реестре, шаг публикации
пропускается; расхождение тега и версии вpackage.jsonвалит сборку.
Локальный./PUBLISH-npm.shостаётся запасным путём (без provenance).
Добавлено
- Тест, который сверяет имя пакета,
export const nameплагина иidв
cordis.patch.yml— разъехавшиеся имена ломают id-оверрайд с токеном.
npm
Пакет переименован: dsh-telegram-channel@0.8.0 → dsh-telegram-channel-ru@0.8.1
(https://www.npmjs.com/package/dsh-telegram-channel-ru).
dsh plugin --profile web add dsh-telegram-channel-ruПодписка на релизы: старый пакет dsh-telegram-channel больше не обновляется.
v0.8.0 — самодостаточная сборка, тесты 62/62
Проект стал самодостаточным: собирается, тестируется и пакуется на месте.
Добавлено
- Сборка из исходников.
npm install && npm run buildкомпилирует
src/*.ts→lib/*.js+.d.ts(tsc,strict, NodeNext). Ручное
дублирование кода междуsrc/иlib/больше не нужно. npm run check— typecheck → build → тесты → проверка свежести сборки.npm run test:lib— два теста, которые падают, еслиlib/не собран из
текущегоsrc/(паритет экспортов и текстов команд).BUILD.md— сборка, проверки, упаковка, установка, релизный цикл.CHANGELOG.md(этот файл).
Исправлено
- Живые сессии больше не считаются пустыми. Сессия из
catalogFromLiveAgents
помечается названной и не скрывается, если её журнала ещё нет на диске; в
ensureSessionNamesпустой считается только «холодная» сессия без сообщений.
Раньше сессия, запущенная только в памяти, могла исчезнуть из выбора. - Старт не падает на частичном клиенте. Карточка бота
(setMyShortDescription/setMyDescription) вызывается только если метод
есть у клиента. - Типы приведены в порядок: 13 ошибок
tsc(сужение union событий
assistant/chunk/todo/write,contentToText,projectionTitle,
неопределённаяcwdвresolveSessionTitleFromHost— из-за неё имя холодной
сессии молча терялось).
Изменено
- Тесты: 62/62. Изолированы от реального хоста (
DSH_HOMEи
DSH_TELEGRAM_BINDINGS_FILEуказывают в temp), ожидания переведены с
китайских строк upstream на русские, обновлены под текущее поведение
(кнопка «новый проект», история при привязке, форматы/statusи/compact). - Peer-зависимости
@deepseek-ai/dsh-agent|dsh-llm|dsh-session—
^0.2.1-alpha.2,cordis^4.0.5-alpha.1,schemastery^3.18.5-alpha.1:
рантайм0.2.1-alpha.2удовлетворяет им, поэтому исключение
allow-versionне требуется. devDependencies— точные версии, с которыми работает хост (проверка типов
по настоящим типам, а не по заглушкам).npm testиспользуетtsx;npm run test:native— то же на нативном
стриппинге типов Node 26..gitignoreпереписан (без BOM), добавлены.tmp/,*.tgz,coverage/.