Skip to content

ductor v0.7.0

Choose a tag to compare

@PleasePrompto PleasePrompto released this 27 Feb 09:33
· 302 commits to main since this release

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 bug starts a named session (e.g. "firmowl") and delivers tagged results.
  • Provider targeting: /session @codex Refactor the parser runs on a specific provider.
  • @model shortcuts: /session @opus Analyze architecture resolves model-to-provider automatically (@opus = Claude, @flash = Gemini, @codex = Codex).
  • Foreground follow-ups: @firmowl Also check the tests streams a follow-up in the current chat.
  • Background follow-ups: /session @firmowl Add error handling queues a background follow-up.
  • Session management: /sessions shows 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.

  • BackgroundSubmit carries provider_override and model_override through 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 /session help 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 /cron selector.
  • CI quality gate with pre-commit config.

Upgrade

ductor upgrade
# or
pip install --upgrade ductor