Skip to content

0.5.5

Latest

Choose a tag to compare

@Dean151 Dean151 released this 18 Jun 17:10
· 15 commits to main since this release

What's Changed

This release focuses on concurrency correctness for trigger evaluation, fixes several timing and throttling bugs around delayed rules, and adds
rule-management APIs.

New

  • Added RuleKit.removeRule(named:) to unregister a previously set rule by name.
  • Rule registration is now idempotent: re-registering a rule for the same trigger name replaces the existing one (and logs a warning) instead of
    stacking duplicates.

Fixes

  • Frequency throttle now survives concurrency — triggers are claimed atomically, so a throttled rule can no longer fire more than once under concurrent
    evaluation.
  • An interrupted delay no longer burns the throttle window — a trigger is claimed after its delay rather than before.
  • A rule's condition is re-checked after its delay before firing, so it won't fire if conditions changed in the meantime.
  • Event donations are no longer blocked waiting on a rule's delay.
  • Per-rule failures are now isolated — a failure evaluating one rule no longer aborts evaluation of the others.
  • A warning is now emitted when duplicate trigger names share a record.
  • Valid local directory URLs are now accepted as a store location.

Performance

  • Store moved off the main actor to its own actor, making trigger firing fully structured and concurrency-safe.

Internal & Tests

  • Migrated the test suite from XCTest to Swift Testing.
  • Added regression coverage for the concurrent trigger-frequency race and per-rule failure isolation.
  • Fixed the setRule example in the README and added SPI badges.

Full Changelog: 0.5.4...0.5.5