Changelog

Version 26.0.0

Released on February 18, 2026

Improvements

  • Asynchronous task execution: Otter now supports both synchronous and asynchronous tasks, with improved run logic and better coordination by using pull-style workers and a more robust process pool management system (@086911a, @b5d7dea, @2c8f37e, @f0e697e)

  • Improved storage handling: File operations are now handled through “StorageHandle” and “AsyncStorageHandle” classes which provide a consistent interface for local and cloud storage. (@aa6da20, @7e84c40, @dc2e4d2, @0c37f92, @6e62d59)

  • New copy_many task for batch operations: A new builtin task enables efficient copying of multiple files at once. This task is better suited for copying a large amount (100+) of relatively small (tens of MB) files. It avoids spawning a new process and a new client for each file. It supports passing a list of sources, a path to a file with a list of sources, or a glob (when copying from backends that can handle those, like cloud services). (@db0a2b9, @917e91f, @21a707e)

Bugfixes

  • Do not fail validation when file size cannot be determined (@8a3164f)

  • Fix find_latest task functionality (@b5d774d)

  • Fix Google Cloud Storage glob pattern handling (@5de3d9d)

  • Fix scratchpad and add comprehensive tests (@1b26ee2)

  • Ensure mtime changes are properly tracked (@991bb9e, @71ee4d8)

  • Fix help not showing defaults (@4c8e07f)

Internal Changes

  • Switch to IOBase for improved I/O handling (@8b344f3)

  • Refactor builtin tasks for improved maintainability (@eb9701b)

  • Refactor manifest handling (@58a4a9e)

  • Make async and improve run logic (@086911a)

  • Improved storage handling (@bf5e167, @4dfd507)

  • Remove gsheets special case and clean logs (@522e899)

  • Logger rename for clarity (@3fa8456)

  • Update dependencies and fix linting and tests (@3792e29)

  • Ensure process pool is larger than one (@f4a9be2)

  • Update dependencies (@50456a5)

  • Simplify download method (@87318af)

  • Switch to ty type system with type checking improvements (@3d29142, @4262c9c)

  • Update documentation (@843d36e)