Back to the changelog

v0.79.0

August 3, 2026

The work-item lifecycle, with no blind spots. Events raised by activities and scripts now genuinely fire and start the listening flows, an unreachable child flow is stopped at publish instead of remaining a promise, every outcome — succeeded, failed, skipped — appears in the item's history, and a failed activity can be retried, skipped or resolved with a tracked note. Plus three security hardenings from an independent external audit.

  • Feature

    Events genuinely fire

    An event raised by an activity or a script was queued in a shape nobody read: it looked "sent" and nothing happened. Activities, scripts, the API and agents now all go through the same path, with the same duplicate protection — and calling twice no longer creates twice: a double click, a network retry or an agent's repeated attempt finds the item already created instead of duplicating it. An event reaching a queued item no longer lets it jump the line, and it is not lost either: it is recorded, and the item considers it as soon as it is admitted to work.

  • Feature

    Outcomes in the history, and a way out of failures

    Succeeded, failed or skipped: the outcome of every activity now appears in the item's history, including asynchronous ones — webhooks, timeouts, exhausted retries — that used to vanish without a trace. A failed activity can be retried, skipped or marked as resolved: the latter two with a mandatory note that stays in the history, and if the retry fails the server's real error message reaches the person who pressed the button. The typed outcome is saved clean, so surrounding spaces no longer stop automatic rules from recognising it.

  • Improvement

    Child flows are no longer promises

    An unreachable child flow stops publishing, and at runtime the activity fails explaining why, instead of waiting forever. Manually retrying a failed spawn does not create a second child: it resumes work on the one already created and brings it into the flow. And the child flow's name can be an expression over the data, like the other fields.

  • Improvement

    Configurations stopped before they mislead

    A badly written wait duration was accepted and counted as zero: the wait closed instantly. A webhook with no destination failed at runtime blaming an "unreachable endpoint" that was never configured. An event activity with no name and a non-existent AI assistant passed without objection. All four cases are now stopped at publish, with the real reason. And deleting an initiative from the Plan closes its governance item, from any state: no more orphaned items open forever.

  • Security

    Hardenings from the external audit

    An error in a JavaScript rule can no longer carry item data into the history: the entry reports only code, rule and category, while the full detail stays in the server logs. Deactivated users no longer receive operational emails: the recipient is re-checked at delivery time, not only when the policy was saved. And the integration key can no longer appear in the logs even with crafted addresses: the masking follows the server's own parsing model, not a text search.