Skip to content

Track upstream ductor release v0.17.0 #10

Description

@github-actions

Upstream published a new release: v0.17.0.

Suggested follow-up

  1. Review the upstream changelog and commits.
  2. Decide which changes need to be ported into this fork.
  3. Track any fork-specific conflicts before merging or cherry-picking.

Upstream release notes

ductor v0.17.0

Release with Docker port publishing, Gemini CLI aliases, Telegram routing fixes, background task environment improvements, and cleaner Codex/workspace error handling.

TL;DR

  • Docker port publishing — new docker.published_ports config maps host/container ports through Docker, useful for local web UIs and services started inside the sandbox.
  • Gemini aliases in /modelauto, pro, flash, and flash-lite now appear before discovered Gemini models.
  • Cleaner Telegram group behavior — unaddressed group messages are dropped before queue indicators, including media prompts.
  • Forum topic delivery fixes — inter-agent and webhook wake replies preserve Telegram forum topics.
  • Background task environment fix — cron, webhook, and named background task subprocesses receive the correct DUCTOR_HOME.
  • Codex error cleanup — protocol-only Codex JSONL events are no longer shown to users as raw output.
  • Skill sync cleanup — invalid synced skills without required SKILL.md frontmatter are skipped/cleaned without touching user-owned skill folders.

Merged PRs

Fixes

Codex raw JSONL output (PleasePrompto#128)

Codex background/interrupted error paths no longer leak protocol-only JSONL events into user-visible output. If Codex provides a structured error, stderr, or partial assistant text, ductor still shows the best available message.

Skill frontmatter warnings (PleasePrompto#119)

Skill sync now validates required YAML frontmatter before sharing skills across CLI homes. Invalid Ductor-managed links/copies are cleaned up, while user-owned real directories are preserved.

Session preservation polish

Error/abort paths can keep a newly returned session ID for resume, but failed turns no longer overwrite a known good session ID or count as successful messages.

Verification

  • pytest — 3697 passed
  • ruff format --check .
  • ruff check .
  • mypy ductor_bot
  • python -m ductor_bot --versionductor 0.17.0
  • python -m build → built ductor-0.17.0.tar.gz and ductor-0.17.0-py3-none-any.whl

Full changelog: PleasePrompto/ductor@v0.16.3...v0.17.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    upstream-releaseTracks upstream PleasePrompto/ductor releases

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions