Skip to content

Releases: Krablante/opencodebot

v0.4.3 — Detect interrupted runs after backend restarts

Choose a tag to compare

@Krablante Krablante released this 01 Oct 20:11

English

A backend restart can leave an unfinished assistant turn without emitting an idle/error event. The bot previously skipped outcome verification when a session's history timestamp was unchanged, so that interruption could remain silent.

The existing one-minute watchdog now verifies tracked unfinished runs even with unchanged history. Reconnection also checks unfinished recovered turns. Fresh history and a second idle check protect against warnings while another prompt is running or an agent is waiting for an answer. Expected stops remain quiet, and handled-run markers retain normal notification deduplication.

Verified backend idle and delivered-terminal queue gates are released together, so a following queued prompt keeps its own running state. /session now labels an idle backend Not running, rather than implying that the task completed successfully. Interruption wording is clearer in both languages.

Validation: existing syntax/documentation/smoke checks and CI; bounded manual scenarios for lost events with unchanged history, reconnect after lost in-memory state, completed tasks, questions, expected stops, backend backoff, overlapping prompts and queued dispatch. English/Russian phone previews were inspected. Deployed revision, live health and retained profiles/bindings were verified. No new dependencies or test files.

Русский

Перезапуск сервера может оставить ответ ассистента незавершённым, без события idle или ошибки. Раньше бот пропускал проверку исхода, если отметка обновления истории не изменилась, и такой обрыв мог остаться без предупреждения.

Существующая проверка раз в минуту теперь сверяет незавершённые запуски и при неизменной истории. Переподключение также проверяет незавершённые восстановленные ходы. Свежая история и повторная проверка idle защищают от предупреждений во время нового запроса или ожидания ответа на вопрос. Ожидаемые остановки остаются тихими; отметки обработанных запусков защищают от повторных оповещений при обычном восстановлении.

Условия свободного сервера и доставленного исхода снимаются вместе, поэтому следующий запрос в очереди сохраняет свой статус выполняющейся работы. /session теперь показывает для свободного сервера «Не выполняется», не подразумевая успешное завершение задачи. Формулировки предупреждения уточнены на обоих языках.

Проверены существующие проверки синтаксиса, документации и smoke, CI, потеря события при неизменной истории, переподключение после утраты состояния в памяти, завершённые задачи, вопросы, ожидаемые остановки, backoff, пересечение запросов и выпуск очереди. Телефонные превью ENG/RU просмотрены визуально. Рабочая ревизия, здоровье бота и сохранность профилей/привязок подтверждены. Новых зависимостей и тестовых файлов нет.

v0.4.2 — Confirm automatic compaction replays

Choose a tag to compare

@Krablante Krablante released this 01 Oct 12:56

English

Automatic compaction can repeat the original request inside OpenCodez before the next model turn. OpenCodeBot previously skipped the reminder notice for this pre-turn path even though the backend had persisted the replay.

The bot now confirms OpenCodez's replay_id and shows “🔁 Original prompt added as a reminder.” It does not submit another copy of a request already replayed by the backend. Delayed replay events use the existing reconciliation path; normal retry/restart recovery retains notice deduplication. Manual compaction and disabled reminders remain quiet. Mid-run bot-injected reminders keep their existing admission confirmation.

English/Russian workflow and architecture documentation are updated. Validation covered live-backend replay metadata, exact preservation of text and attachments, delayed events, notification retry, durable notice state, exclusions and mid-run admission, plus existing smoke/syntax/docs checks and GitHub CI. Deployed revision and live health were verified. No new dependencies or test files.

Русский

При автоматическом сжатии OpenCodez может сам повторить исходный запрос перед следующим обращением к модели. Бот раньше пропускал уведомление для этого случая (pre-turn), хотя повтор уже был сохранён на сервере.

Теперь бот подтверждает серверный replay_id и показывает «🔁 Промпт продублирован в виде напоминания.» Дополнительная копия уже повторённого запроса не отправляется. Задержавшиеся события обрабатывает существующее восстановление; при обычных повторах обработки и рестарте сохраняется отметка уведомления. Ручное сжатие и выключенные напоминания остаются тихими. Напоминания, которые бот добавляет посреди работы, по-прежнему требуют подтверждения приёма.

Обновлены документация поведения и архитектуры ENG/RU. Проверены реальные серверные данные повтора, сохранность текста и вложений, задержки событий, повтор после ошибки уведомления, постоянная отметка доставки, исключения и отправка напоминания посреди работы. Прошли существующие smoke-проверки, синтаксис, документация и CI. Рабочая ревизия и здоровье бота подтверждены. Новых зависимостей и тестовых файлов нет.

v0.4.1 — Single-server setup and large-file help

Choose a tag to compare

@Krablante Krablante released this 01 Oct 10:52

English

A single OpenCodez connection no longer needs a user-chosen name. Its ID may be omitted or blank in the server inventory; the bot assigns local internally. Existing IDs stay intact, and the sole connection is selected automatically even when an old default points elsewhere. With several servers, explicit selection remains available; omitting the default uses the first inventory entry.

The Files and audio help page now explains files up to 2000 MB through the optional local Telegram Bot API, the cloud's 50 MB upload / 20 MB download limits, and the need to run the local service in addition to obtaining api_id and api_hash. It links directly to setup instructions. Both downloadable eight-page guides and the corresponding English/Russian documentation are updated.

/help is removed from Telegram's suggested command list. How to use remains in General, and manually typing /help still opens the guide. Unknown commands point to the menu.

Validation: existing syntax/documentation/smoke checks and GitHub CI; isolated single/multiple-server launch scenarios; real Telegram Rich Message parser acceptance; phone previews and PDF page review. Production revision, guide bytes, command scopes and preserved profiles/session bindings were verified after deployment. No new runtime dependencies or test files.

Русский

Единственному подключению OpenCodez больше не нужно придумывать имя. ID в списке серверов можно пропустить или оставить пустым — бот назначит внутренний local. Существующие ID сохраняются. Единственное подключение выбирается автоматически, даже если старое значение по умолчанию указывает на другой сервер. При нескольких серверах выбор остаётся; без настроенного основного используется первая запись.

Страница помощи «Файлы и аудио» теперь объясняет передачу файлов до 2000 МБ через необязательный локальный Telegram Bot API, облачные ограничения отправки 50 МБ / скачивания 20 МБ и необходимость запустить сервис дополнительно к получению api_id и api_hash. Есть прямая ссылка на подключение. Обновлены оба восьмистраничных PDF и соответствующая документация ENG/RU.

/help убран из списка подсказок Telegram. «Как пользоваться» остаётся в General; ручная команда /help по-прежнему открывает гайд. Неизвестные команды направляют в меню.

Проверены существующие проверки синтаксиса, документации и smoke, CI, изолированные сценарии одного/нескольких серверов, приём Rich Message через настоящий API Telegram, телефонные превью и страницы PDF. После развёртывания сверены ревизия, файлы гайдов, области команд, сохранность профилей и привязок сессий. Новых зависимостей и тестовых файлов нет.

v0.4.0 — Reliable launches, safer files and complete docs

Choose a tag to compare

@Krablante Krablante released this 01 Oct 10:16

OpenCodeBot 0.4.0 makes topic launches, stopped work and file delivery more predictable, and gives users and operators complete matching English/Russian documentation.

  • Launches keep what the card showed. The first prompt and unfinished setup retries use the saved model/reasoning snapshot. Concurrent first prompts share one session creation. Password-protected backend HTTP and SSE now use the correct opencode Basic Auth username, with a configurable custom name.
  • Stopping a topic stops its buffered input. Kill/reset, closure and conversion to FILES/AUDIO discard the whole topic's multipart/attachment buffers. Notification shortcuts change only their caller's preference. Recent-topic checks preserve newer names instead of reapplying stale titles.
  • Files preserve existing data. Incoming uploads refuse collisions and report earlier successful files after a partial failure. Filename limits count UTF-8 bytes, and long escaped captions retain valid HTML. Photo-to-document retry happens only after a definite photo rejection, avoiding a second send after an uncertain transport error.
  • Work stays bounded. Prompt/transcription queues and concurrent gateway deliveries have explicit limits. JSON metadata accepts 64 KiB; files keep streaming. Waiting attachments keep paths instead of base64 copies in memory, enforce the remaining download budget and clean staging after dispatch. Abandoned owned spools are cleaned hourly.
  • Long histories cost less. Delivery IDs use per-session Set indexes, no-op updates skip state rewrites, and restart recovery discards torn marker-journal tails while rejecting complete corruption. Disabled binding history prevents old stopped topics from returning after the discovery cache expires.
  • Clearer setup and maintenance. POSIX setup records the owner's UID/GID. Native startup includes dependency installation. The Windows deployment wrapper calls npm's JavaScript entrypoint directly. The optional WireGuard helper saves client credentials before installation and avoids a duplicate restart.
  • Documentation follows the product. README includes bilingual renderer previews. Language directories share installation, usage, configuration, operations and development categories, with a separate architecture page and language index. One CI job checks syntax, documentation links/examples, existing contracts and isolated smoke.

Validation: 29 existing tests and the extended central smoke passed; GitHub CI passed on Node 22. Real Telegram checks confirmed title-preserving topic probes, deletion detection and long-caption parsing. Local and real POSIX SSH transfers preserved bytes and refused overwrite. UI previews and representative pages of the unchanged eight-page PDF guides were visually inspected. Production passed live health, matched the committed runtime files, and retained pre-rollout profiles and session bindings. Native Windows/Windows SSH execution was not tested on a live host.

Update with git pull --ff-only then npm run deploy:bot. This range changes the host update runner, so Telegram correctly requires manual deployment. Installed artifact plugin/skill copies are unchanged. Back up stopped state and journals before updating; memory-only queues retain their documented restart limits.


Версия 0.4.0 исправляет запуск тем, остановку отложенного ввода и доставку файлов. Документация на русском и английском теперь описывает одинаковые возможности и ограничения.

  • Сохраняются показанные модель/reasoning; параллельные первые промпты не создают две сессии. Исправлена авторизация HTTP/SSE на серверах с паролем.
  • Kill/reset и перевод темы в служебную очищают её буферы целиком. Команды уведомлений персональные. Проверка «Недавних» больше не откатывает переименование.
  • FILES не перезаписывает существующий файл. Исправлены длинные кириллические имена, HTML-подписи и повторная отправка после неоднозначной ошибки сети.
  • Очереди и шлюз ограничены; ожидающие вложения не хранят base64 в памяти. Проверка маркеров истории ускорена, лишние записи состояния убраны, оборванный хвост журнала восстанавливается.
  • Обновлены установщик, запуск npm на Windows, вспомогательный WireGuard-процесс и двуязычная документация. Добавлены наглядные README-превью, описание архитектуры и одна задача CI.

Проверки кода, документации, 29 существующих тестов, smoke и CI прошли. Реальные Telegram/POSIX SSH-сценарии подтверждены; Windows и Windows SSH на живом хосте не проверялись. Рабочий бот обновлён с сохранением профилей и привязок.

v0.3.9 — Clear session details and copyable IDs

Choose a tag to compare

@Krablante Krablante released this 01 Oct 07:46

/session now makes the session and its destinations clear. The main table includes the server and full session ID with Telegram's native tap-to-copy button. Expanded details separately identify the topic where the command was called, its OpenCodez connection, and the assigned file and audio topics with direct links.

  • Track service-topic renames without restoring an agent server suffix. Unknown names remain unknown rather than using a fabricated topic or group name.
  • Distinguish pending launches, previous sessions after /reset, inactive bindings, deleted sessions and unavailable servers. Service topics omit obsolete agent settings.
  • Run session lookups concurrently with a five-second timeout; preserve the web link from the saved directory when the server is unavailable.
  • Update English/Russian documentation, built-in help and both eight-page PDF guides. Remove the obsolete ambiguous session labels.

Validation: syntax checks, existing smoke checks and 29 tests passed; Telegram accepted all eight principal session states in both languages and the updated guide pages. Phone-sized previews and the changed PDF pages were visually inspected. The deployed bot passed runtime health checks and a session-screen check using a real backend binding.

v0.3.8 — Complete topic creation guide

Choose a tag to compare

@Krablante Krablante released this 01 Oct 00:26

Expand the built-in English/Russian guide from six to eight pages, with separate pages for the topic-creation wizard, quick /new commands, and saved profiles.

  • Cover every combination of optional server, profile and title, plus explicit directories, the directory: alias, quoted paths and multiword titles.
  • Explain default selections, random/manual naming, exact configured IDs, typo handling and names that match a profile or server.
  • Explain creation versus first prompt, supported reasoning, unavailable models/providers, profile changes, field cancellation and draft expiry.
  • Add all four /reset forms, its profile-first argument order, directory rules when changing server, and pending-topic behavior.
  • Clarify first-prompt delivery, queue commands, retrying after failures and stopping before closing a topic.
  • Regenerate both eight-page PDF guides with expanded additional sections, readable command blocks and complete page layout. Preview generation now includes each actual guide page and its navigation.

Verified all 16 combinations of /new parameters with the real parser, wizard/direct routing, quoted directory aliases, title/name collisions, the four reset forms, and eight-page navigation in both languages. Telegram accepted all 16 native Rich Message pages with their buttons. Reviewed phone-sized previews and rendered PDFs visually; the temporary Telegram topic was deleted.

This release updates instructions and guide presentation; command behavior and launch settings remain unchanged.

v0.3.7 — Remove the Home subtitle

Choose a tag to compare

@Krablante Krablante released this 30 Sep 23:58

Remove the workspace subtitle beneath OpenCodeBot in the General Home menu, in both Russian and English. The heading now leads directly into the statistics table.

Checked syntax, menu rendering in both languages and the narrow-screen visual preview.

v0.3.6 — Simplify the running count

Choose a tag to compare

@Krablante Krablante released this 30 Sep 23:55

Home now shows a plain numeric Running count, removing the + ? suffix when a server is unavailable. Availability remains in the dedicated Servers line.

The count includes sessions with a known active status. No additional requests, dependencies or state changes are introduced.

Checked syntax, Russian/English rendering with unavailable servers and active sessions, and the narrow-screen visual preview. Updated the matching documentation.

v0.3.5 — Random Old Russian topic names

Choose a tag to compare

@Krablante Krablante released this 30 Sep 23:40

New Telegram topics now default to a random Old Russian word, ready to use as soon as the creation card opens. General → Settings → Random topic names turns this mode off.

  • Bundle 2,630 Old Russian nouns from Russian Wiktionary in a 38 KB list. Pick each word with equal probability using crypto.randomInt, without network requests, model inference or naming-history storage. Repetitions are possible.
  • Another word draws again; Title lets you enter a custom name. Explicit titles in /new ... Title take precedence. The name stays fixed while changing launch settings and retrying creation.
  • Apply the mode to new topics created from both Telegram and web sessions. Preserve the chosen name through OpenCodez title updates and reset, using the existing topic-title ownership rules and server suffix.
  • Save the setting across restarts. Disabling restores the manual-title wizard and session-based naming for future web topics. Existing topics keep their names.
  • Update English/Russian documentation and the illustrated six-page PDF guides. The word list has separate CC BY-SA 4.0 attribution in assets/old-russian-words.LICENSE.md; the application remains MIT licensed.

Verified with existing syntax/smoke checks; dictionary-source, persistence, default/disabled mode, title override, retry and backend-title probes; native Telegram topic creation and Rich Message acceptance; narrow-screen and PDF visual checks; and deployed runtime health, source/asset hashes and preservation of existing topic names.

No additional dependencies or installation settings are required. Random names are enabled by default after upgrading unless the saved setting is explicitly disabled.

v0.3.4 — Daily answers and server availability

Choose a tag to compare

@Krablante Krablante released this 30 Sep 23:06

Home now shows Answers today and a compact Servers: 4 of 5 · backup unavailable line. Both English and Russian interfaces are supported.

  • Count completed text answers delivered to the forum once per assistant message, including answers split across multiple Telegram messages. Progress text, personal notifications and voice replies do not add to the count.
  • Keep delivery identifiers and timestamps in existing bot state for eight days, preserving counts across restarts without storing answer content or scanning conversation history. Show the tracking start time on the first partial day.
  • Use optional ui.timeZone, falling back to the configured update time zone or the process zone. Refresh at local midnight with DST support.
  • Derive availability for every configured server from existing event connections. Disconnects and reconnects update Home without extra health polling; unknown execution status is shown with ?.

Validated with syntax and existing smoke checks, persistence/deduplication and calendar-boundary probes, real event-stream reconnects, native Telegram delivery and Rich Message acceptance, narrow-screen visual previews, and deployed runtime health/source checks.

No additional dependencies or configuration changes are required. Answer tracking begins after installation; earlier answers are not backfilled.