The post-task follow-up hook resumes the finished conversation and its own reply used to end with the same DONE marker as the original task, which also meant it silently overwrote doneMarker (the resumed reply is the new last message) with a false value once the wording stopped matching. It now ends with a distinct COMPLETED marker, and _resolve_state() accepts either marker for the finished state so this can't regress a conversation back to running. The already-fired post-task hook's meta.hooks["post-task"] timestamp now also drives a round green completion stamp on conversation cards (home rail/drawer + the browsable conversations list), as a visual complement to the plain emerald finished dot: it marks that a task was tidied up after, not just finished.
20 KiB
20 KiB