Repository navigation
envsbot v2.1.0
envsbot v2.1.0 focuses on runtime/reconnect hardening, clearer operator diagnostics, deployment consistency, and a more usable RSS administration workflow.
Highlights
- Added scoped RSS subscription search with
,rss search. - Hardened XMPP session startup and reconnect handling against stale session work.
- Added true in-process XMPP reconnect using the shared
envs-xmpp 1.3.0reconnect runtime, so an ordinary transport loss no longer requires a full process/systemd restart. - Reduced normal room-startup log noise with compact per-room MUC join reporting.
- Unified task and room health/status presentation with the shared
envs-xmppoperator primitives. - Added runtime dependency-drift checks to deployment validation.
- Improved release/version observation and post-release operational guidance.
- Adopted shared JID text normalization from
envs-xmpp 1.2.0.
RSS
A new ,rss search subcommand makes large subscription sets easier to manage.
Search is case-insensitive and matches:
- stable feed number;
- feed title;
- subscribed feed URL;
- website URL advertised by the feed.
Examples:
,rss search linux
,rss search 42
,rss search own example.org
,rss search room@conference.example.org kernel 2
,rss search linux all
Search follows the same visibility rules as RSS listing:
- room/MUC-PM searches stay scoped to that room;
- trusted users in direct chat see only their own direct subscriptions;
- global RSS managers can use broader permitted scopes;
- direct subscriber identities are not exposed in search results.
The RSS command implementation was also split so the command module remains within the repository's architecture boundary.
Runtime and reconnect handling
- Separated process initialization from per-session XMPP startup.
- Migrated retry/backoff/readiness orchestration to the shared
envs-xmpp 1.3.0reconnect runtime used by both envsbot and muc_banbot. - Unexpected XMPP transport loss now keeps process-lifetime storage, plugins, caches, outbox and watchdog state alive while only the XMPP session is recovered.
- systemd
Restart=on-failureremains the final process-failure safety net rather than the normal reconnect mechanism. - Made reconnect startup generation-aware so stale session work is rejected/cancelled.
- Moved room reconciliation and profile updates into explicit session lifecycle hooks.
- Compacted successful session-start room joins to one log line per MUC while keeping detailed warnings/results for later recovery and rejoin attempts.
- Hardened cleanup/rollback when later startup phases fail or are cancelled.
- Ignored delayed MUC history arriving after reconnect so old room history is not treated as fresh traffic.
- Reduced unnecessary vCard work during rapid MUC join/leave churn.
- Avoided negative birthday caching after transient vCard lookup failures.
- Corrected target handling for timezone-related vCard lookups.
Operator status and diagnostics
- Unified task status rendering with the shared operator layout.
- Added focused task views such as problems/stale/restarting/restarted.
- Aligned room status/listing with joined/offline/problems filters.
,status fullnow favors health-first output instead of dumping complete healthy inventories.- Added session/reconnect health visibility.
- Added a structured 72-hour production-observation checklist.
Deployment and release tooling
- Added runtime dependency-drift detection to deploy checks.
- Added shared-core release consistency checks.
- Added config-free runtime version visibility through the CLI.
- Hardened the mutmut bootstrap test so mutation runs resolve the standalone deployment bootstrap correctly.
Shared JID normalization
envsbot now uses the shared JID normalization introduced in envs-xmpp 1.2.0 for common room/feed identity keys.
This includes protection against copied JIDs containing the known zero-width presentation artifacts handled by the shared core, while stricter Slixmpp-based validation remains application-owned.
Compatibility / configuration
- Requires Python 3.12+.
- Requires
envs-xmpp >= 1.3.0, < 2.0. - The reviewed constraint snapshots pin
envs-xmpp 1.3.0. - No new mandatory configuration options were introduced.
- No database schema migration is required for this release.
Testing and quality
The release candidate passes the project's full warning-strict quality/test gate after the envs-xmpp 1.3.0 reconnect integration.
Production startup validation also completed cleanly with all configured plugins loaded and all configured rooms joined successfully. A final live transport-reconnect smoke test should be completed on the release commit before tagging so the new in-process reconnect path is production-verified.
Upgrade notes
For production deployments, update to the stable v2.1.0 tag rather than running from main.
After deployment, verify:
envsbot --version
./scripts/deploy.sh status
./scripts/deploy.sh checkThen use the normal XMPP smoke/status commands and follow docs/production-observation.md for the post-release observation window.