Added
completesWithChildrenandtype("parallel" | "sequential") writable onadd_tasks/edit_taskswith patch semantics —nullrejected ontype- Omitted
completesWithChildren/typeonadd_tasksresolve to the user's OmniFocus preference explicitly (factory fallbacks:true/"parallel") — server never relies on OmniFocus implicit defaulting - Derived presence flags on default task/project responses —
hasNote,hasRepetition,hasAttachments(strip when false) isSequentialon tasks and projects;dependsOnChildrenon tasks (hasChildren AND NOT completesWithChildren)hierarchyinclude group extended — addshasChildren,type,completesWithChildrenon tasks and projects (typeon projects includes"singleActions")parentfilter onlist_tasks— single reference (name or ID); returns all descendants at any depth; resolved task preserved as anchor (bypasses subtree-pruning filters)parent: "$inbox"supported as equivalent toproject: "$inbox"- New warnings: empty-scope-intersection when
project+parentare disjoint; parent-resolves-to-project hint; filtered-subtree warning now also fires onparent
Changed
- Name-resolver filters (
project,parent,tags) resolving to zero matches now return empty results +FILTER_NO_MATCHwarning — previouslyprojectsilently skipped the filter and returned all tasks — breaking behavior change
Infrastructure
- PyPI publishing via
uvx omnifocus-operator - Dynamic versioning with
hatch-vcs(git tags as source of truth) - Platform check — non-macOS prints clear error and exits
Full CHANGELOG: https://github.com/HelloThisIsFlo/omnifocus-operator/blob/main/CHANGELOG.md