Skip to content

v0.18.0

Choose a tag to compare

@PleasePrompto PleasePrompto released this 12 Jun 14:17

ductor v0.18.0

Antigravity (agy) is now a first-class provider, plus the new Fable model, a /reset command, a batch of Windows reliability fixes, and Telegram polish.

TL;DR

  • Antigravity (agy) provider — Google's Antigravity CLI joins Claude, Codex, and Gemini. Models are pulled live from agy models, switching models actually works, and answers come back reliably even though agy's headless mode is rough around the edges.
  • Fable modelfable now shows up in the Claude model menu.
  • /reset — clears the current provider's session and leaves the others untouched.
  • Windows reliability — an authenticated Claude/agy CLI is detected correctly now (npm .cmd shim resolution), plus Docker stdin, process/path, and MIME fixes.
  • /model polish — provider buttons sit two per row instead of one long line.
  • Cron/webhook tasks — task tools only offer providers the one-shot runner can actually run (webhooks gained Gemini).

Antigravity in a nutshell

agy's headless CLI has some sharp edges, so this took a few workarounds — all handled for you:

  • agy --print silently drops stdout in non-TTY subprocesses (agy #76), so answers are read straight from agy's own transcript — which also strips the agentic step-by-step narration and leaves the clean final answer.
  • agy rejects any workspace under a dotted path like ~/.ductor (agy #20), so ductor exposes it through a non-dotted symlink agy accepts — created lazily, only when you actually use agy.
  • Fixed the --print argument order so the selected model and your prompt actually reach agy instead of being swallowed.

Heads-up: agy's auth token can expire ~1h after login on Linux and isn't refreshable headlessly. If Antigravity suddenly falls back to its default model, just run agy once in a terminal to re-login.

Merged PRs

  • #148 by @liuh886 — add the Antigravity (agy) provider.
  • #147 by @liuh886 — Windows compatibility and Telegram streaming edge cases (Docker stdin, process/path handling, MIME fallbacks; duplicate-message dedup on HTML-split overflow, topic-scoped abort in Gemini streaming).
  • #151 by @ryuhaneul — add the fable model to the Claude selector.
  • #146 by @ryuhaneul/reset to clear the current provider session.
  • #143 by @askhatsoltanov1984-lang — fix provider_for for full Claude model IDs.
  • #142 by @ryuhaneul — inject prompts using the active session's provider/model.
  • #139 by @ryuhaneul — forward ~/.ductor/.env secrets to one-shot task subprocesses.
  • #136 by @ryuhaneul — scope /stop to the current forum topic.

Other fixes

  • Claude/agy auth on Windows (#149) — auth checks resolve the npm shim via shutil.which, so an authenticated Claude CLI is no longer misreported as just "installed".
  • /reset is wired into the help text and command routing.

Verification

  • pytest — full suite green (3773 tests)
  • ruff format --check ., ruff check ., mypy ductor_bot — clean
  • ductor --versionductor 0.18.0

Full changelog: v0.17.0...v0.18.0