ductor v0.7.0
ductor v0.7.0
Named background sessions, @model shortcuts, config hot-reload, and a streamlined README.
Named background sessions
Background tasks are no longer fire-and-forget. /session creates named sessions with persistent CLI session IDs that support follow-up messages, provider isolation, and interactive management.
- Named sessions:
/session Fix the login bugstarts a named session (e.g. "firmowl") and delivers tagged results. - Provider targeting:
/session @codex Refactor the parserruns on a specific provider. - @model shortcuts:
/session @opus Analyze architectureresolves model-to-provider automatically (@opus= Claude,@flash= Gemini,@codex= Codex). - Foreground follow-ups:
@firmowl Also check the testsstreams a follow-up in the current chat. - Background follow-ups:
/session @firmowl Add error handlingqueues a background follow-up. - Session management:
/sessionsshows all active sessions with end/refresh buttons. - Button routing: Buttons in session results route back to the correct session.
- Per-label process control: Sessions can be individually stopped without killing the main chat.
Smart per-provider model resolution
Cross-provider sessions now correctly resolve models instead of leaking the default provider's model.
BackgroundSubmitcarriesprovider_overrideandmodel_overridethrough the full execution chain.CLIService._make_cli()separates the provider-override path from the normal model-resolution path.- Gemini sessions pass empty model (CLI auto-selects) instead of inheriting Claude's "sonnet".
- Auth-aware
/sessionhelp text shows only providers you have authenticated.
Config hot-reload
Edit config.json while the bot is running — hot-reloadable fields apply immediately without restart.
- Mtime-based watcher: 5-second poll on
config.json, same pattern as cron/webhook watchers. - Hot-reloadable fields:
model,provider,reasoning_effort,cli_timeout,max_budget_usd,max_turns,permission_mode,streaming.*,heartbeat.*,cleanup.*,cli_parameters.*, and more. - Restart-required fields:
telegram_token,allowed_user_ids,docker.*,api.*— logged as warnings. - Safe reload: Pydantic validation before applying. Failed reloads are logged and skipped.
Documentation overhaul
- README: Streamlined from 337 to 206 lines with Mermaid architecture diagram, focused structure, and named sessions documentation.
- 14 module docs synchronized with implementation changes.
- "Why ductor?" section: Explains the official-CLIs-only philosophy.
Other improvements
- Compact session names without hyphens for better mobile readability.
- Improved cron job display in
/cronselector. - CI quality gate with pre-commit config.
Upgrade
ductor upgrade
# or
pip install --upgrade ductor