Releases: saparjohnick/agents_control
Releases · saparjohnick/agents_control
Release list
v0.3.1
Fixed
- The daemon went permanently deaf on a routine network error.
Network failures were translated into a retry by matching a
hand-written list ofErrnoconstants.EADDRNOTAVAIL— what a VPN
reconnecting produces — wasn't on it, so it escaped every rescue and
killed the polling thread. The process stayed up, the hook port kept
answering, agent events kept arriving, and nothing from Telegram ever
did again. The list is now the wholeSystemCallErrorfamily, and a
backstop catches anything still unaccounted for.
Added
doctorreports whether the daemon is still listening, not just
whether it's running — the hook port answers the same either way, so
a dead poller was indistinguishable from a healthy one. A successful
poll leaves a timestamp;doctorreads it and says how long ago.
v0.3.0
Changed
/runnow holds back a few destructive commands. A recursive
force delete aimed at/or$HOME, a fork bomb,mkfs,ddto a
raw device. They come back naming what they do, and one tap sends
anyway.- Nothing else is affected:
rm -rf /tmp/build,cat .envand
git push --forcego straight through. A seatbelt against the wrong
tab number, not a filter —bash -c 'rm -rf ~'is not caught.
Added
- Optional passphrase for those commands, instead of a tap.
agents_control passphrase set|clear|status, offered duringsetup
and from the bot itself.- PBKDF2-HMAC-SHA256, 210k iterations, salted; Keychain or libsecret;
never argv. - The message carrying it is deleted from the chat once read.
- Set from the chat, it guards against whoever reaches that chat
later, not whoever has it now.
- PBKDF2-HMAC-SHA256, 210k iterations, salted; Keychain or libsecret;
- Files can be sent to a session — photos, video, voice, documents.
- Saved to
~/.local/state/agents_control/inbox/; the pane gets the
local path, never a link (the download URL contains the bot token). - Target: caption
/run N …, or reply with the file to a session's
message. Otherwise the path just comes back in the chat. - Kept
telegram.inbox_keep_days(14), then swept.
- Saved to
/status,/settingsanddoctorreport whether a passphrase is set.
Fixed
- No panes were listed on tmux 3.5 — Debian 13's and Ubuntu
24.10's. It prints the record separators as octal escapes where 3.7
emits the bytes, so the parse found nothing and/tabscame back
empty with no error. - The startup hook check probed whichever hook was listed first —
ours only until you have aStophook of your own. It replayed that
entry's headers to its URL without TLS, sending a third party's
bearer token in cleartext once per daemon start. Found by its marker
now, and only probed on loopback.
Internal
- The suite runs on Linux (554 tests, both platforms). It was green on
macOS and 88 failures deep on Linux, which is how the tmux bug above
survived a release. - The suite fails if a test is written where Minitest won't collect it.
v0.2.3
/run no longer types blindly into a busy tab
If a plain tab isn't actually at a shell prompt — stuck in less, vim, a REPL, man, anything that reads keystrokes as its own input instead of a line to submit — /run now asks for confirmation instead of sending straight in. The letters were never running as a command in that case; they were just being fed to whatever's already there (pager navigation, editor insert mode, and so on), silently.
Detection has two layers:
- A known list of interactive programs (
less,more,vim,nano,irb,psql, and a handful of others), checked against the tab's actual foreground process. - A fallback for anything not on that list: a bare
:as the entire last line of the screen — the one convention practically every pager in theless/morelineage agrees on for "waiting on you." No real shell prompt looks like that, so it's a safe backstop for a custom$PAGERor anything else unrecognized by name.
This only applies to plain (non-agent) tabs — an agent session already gets its own separate handling, and remote (ssh/mosh) commands already had their own confirmation step.
v0.2.1
v0.2.0
v0.1.0
Full Changelog: https://github.com/saparjohnick/agents_control/commits/v0.1.0