You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Follower Target Rebinding: When a follower instance registers or re-registers after a topic recreation, activeTurnRuntime.rebindTarget immediately updates any active turn's target and clears stale replyToMessageId to prevent Telegram API message not found errors.
Activity Target Rebinding: activityRuntime.rebindTarget updates activityTarget during live session handoff, ensuring subsequent tool and reasoning events emit with the follower's authoritative registered workspace thread.
Progress Tail Stale Recovery: In progress-tail.ts, ensureActivity now resets consecutive publish failure counters, clears the throttle timer, and marks dirty whenever the target moves, preventing live progress bubbles from getting permanently silenced after earlier failed attempts.
Follower Target Resolution Authority: resolveTarget and proactivePushTargetGetter strictly prioritize the registered follower workspace target over stale turn targets, ensuring progress tails and draft previews always route to the follower's bound thread.
Stale Target Reply Fallback: queue.ts delivery catches stale topic errors during final reply delivery and gracefully falls back to the current assigned workspace thread target without replyToMessageId, ensuring final assistant answers are never lost to deleted topics.
0.6.10: Dual-Scope Telegram Bot Commands and Menu Reset
Bot Command Dual-Scope Sync: Commands are now published to both default and all_private_chats scopes via setMyCommands. In Telegram's command resolution hierarchy, all_private_chats takes precedence over default, so bots previously configured by other agent runtimes (which register under all_private_chats) immediately display OMP commands instead of stale commands.
Command Reset & Deletion: Implemented deleteMyCommands in the Telegram Bot API client and bus forwarding runtime. A new reset flow clears lingering scoped commands across all_private_chats and default before re-registering clean commands.
Chat Menu Button Restoration: Added setChatMenuButton and getChatMenuButton to the API runtime and bus proxy. Command registration automatically restores the private chat menu button to { type: "commands" }, clearing lingering Web App / Mini App buttons left by previous bot configurations.
Automatic Polling Boot Sync: Polling startup in leader and standalone runtimes now automatically synchronizes bot commands and resets the menu button directly after webhook clearing, keeping commands fresh without requiring the user to issue /start.
Commands CLI Management: Registered /telegram-commands [sync|reset] with argument autocompletions for manual operator synchronization and complete scope reset on demand.
Resilient Dependency Audit: Wrapped npm run audit via scripts/audit.mjs to tolerate upstream npm registry maintenance (503 Service Unavailable) without masking real vulnerability failures.
Expanded Bot Command Surface: Promoted /status, /model, /thinking, and /queue to the visible Telegram bot command menu. Added built-in commands /diff (immediate workspace git status and stat inspection without model calls), /undo (safe dropping of the last queued turn before dispatch), and /share (compact session and queue summary card).
Unit Working Directory: 0.6.7 quoted WorkingDirectory=, but systemd parses path settings verbatim, so the quotes became part of the path and every reload answered path is not absolute and bad unit file setting. /telegram-host restart rewrites that unit before restarting, so it broke the installed host it was asked to repair. Path settings now render literally, % is escaped as %% in every expanded value, and systemd-analyze verify accepts the rendered unit.
Host Action Completions: /telegram-host registered no argument completions, so its actions were invisible at the prompt. It now completes install, uninstall, restart, status, and attach with descriptions, then offers --dry-run for the three actions that change the system.
Host PATH Resolution: resolveExecutableOnPath split PATH on :, so a Windows entry such as D:\tools was torn into two nonexistent directories and every host binary probe answered false. The lookup now splits on the platform delimiter.
Portable Host Assertions: The host suite asserted an unescaped ExecStart= line and spawned /bin/echo, so Windows validation failed on a feature it correctly refuses to install there. Unit arguments are now verified by unquoting them back to the rendered path, the executable-bit case is scoped to platforms that have one, and the spawn probe runs the current Node binary.
Changelog Sections Restored: The 0.6.1 and 0.6.5 headings were lost by later prepends, which left their records attributed to the following release. Both headings are restored with their original titles.
0.6.6: Delivery Reconcile, Plan Review Hardening, and Stream Optimizations
Multi-Chunk Edit Reconciliation: Bridge delivery reconciles unchanged chunks during editView without failing when Telegram returns 400 'message is not modified', allowing multi-chunk plan review cards to reliably update and clear inline keyboards.
Plan Review Hardening: resolveFromUpdate validates choices against active card options, sends keystrokes immediately to the CLI overlay, records failures accurately, and gracefully supersedes stale pending cards when newer plans arrive.
Progress Tail & Memory Leaks: Removed per-delta reasoning line derivation on streaming thinking deltas, bounded summary retention for completed tools, deleted expired guest placeholder rotation sessions, and resolved retired ask callbacks cleanly.
Full Plan Details Presentation: Approval cards for plan review no longer truncate plan content to a single message ceiling. Telegram rich message delivery automatically chunks long plans across messages while anchoring inline action buttons to the terminal chunk.
English Localization: Converted remaining Indonesian status messages and callback warnings in plan review and plan mode runtimes to standard English.
Full Plan Details Presentation: Approval cards for plan review no longer truncate plan content to a single message ceiling. Telegram rich message delivery automatically chunks long plans across messages while anchoring inline action buttons to the terminal chunk.
English Localization: Converted remaining Indonesian status messages and callback warnings in plan review and plan mode runtimes to standard English.
Host Auto-Connect Scope: The cold-start gate only read the agent-wide host.json anchor, so every ordinary OMP session sharing that agent directory typed /telegram-connect into its own terminal seconds after session start and took the bot from the resident host. Auto-connect now requires the host session itself, identified by the wrapper's OMP_TELEGRAM_HOST stamp or the host's private tmux socket.
Bun Virtual Path Rejection: Inside a Bun standalone binary existsSync("/$bunfs/...") answers true, so the 0.6.2 existence check still emitted a virtual executable path that no other process could run, and the installed host restarted forever. Candidate executables are now confirmed with realpathSync plus an executable-bit check, and a bare node/bun/deno runtime no longer stands in for the OMP command.
Silent Restart Loop: A tmux session whose command died at startup returned success, so the wrapper exited 0 and the unit restarted endlessly with no journal reason. The wrapper now probes the session after startup and exits non-zero naming the executable it tried to run.
Host Executables Are Absolute: The generated wrapper looked up tmux on PATH, which a systemd user unit does not inherit, so the installed host crash-looped with tmux: command not found while the same wrapper worked when run by hand. Both the tmux and OMP executables are now baked in as absolute paths at render time.
Bun Standalone Executable Resolution: A Bun-compiled OMP reports a virtual /$bunfs/... path in process.argv[1] that does not exist on disk, so the rendered wrapper pointed at a file nothing could execute. The resolver now verifies the candidate on the filesystem and otherwise resolves omp from PATH.
Cross-Platform Host Tests: The host test suite asserted POSIX path shapes, so Windows CI failed on a feature it correctly refuses to install there. Path, binary, and socket assertions are now separator-agnostic and verified against simulated Windows paths.
Cross-Platform Host Tests: The host test suite asserted POSIX path shapes, so Windows CI failed on a feature it correctly refuses to install there. Path, binary, and socket assertions are now separator-agnostic and verified against simulated Windows paths.