What's Changed
* fix: fix excess reading of frame metadata in OMEZarrWriter by wl-stepp in https://github.com/pymmcore-plus/pymmcore-plus/pull/305
* feat: add post_sequence_started by tlambert03 in https://github.com/pymmcore-plus/pymmcore-plus/pull/319
* refactor!: more minimal, and overrideable MDA metadata by tlambert03 in https://github.com/pymmcore-plus/pymmcore-plus/pull/312
* fix: fix autofocus z_correction delta by fdrgsp in https://github.com/pymmcore-plus/pymmcore-plus/pull/317
* fix: only allow 'AcquireImage' Actions (or None) to be sequenced by fdrgsp in https://github.com/pymmcore-plus/pymmcore-plus/pull/315
* refactor: move imageSnapped event by tlambert03 in https://github.com/pymmcore-plus/pymmcore-plus/pull/314
* feat: new runner signals `awaitingEvent` and `eventStarted` by tlambert03 in https://github.com/pymmcore-plus/pymmcore-plus/pull/316
* chore: remove deprecated stuff for next version bump by tlambert03 in https://github.com/pymmcore-plus/pymmcore-plus/pull/320
* feat: OMETiff writer by tlambert03 in https://github.com/pymmcore-plus/pymmcore-plus/pull/265
* feat: control signal backend with MMCORE_PLUS_SIGNALS_BACKEND by tlambert03 in https://github.com/pymmcore-plus/pymmcore-plus/pull/321
* ci(pre-commit.ci): autoupdate by pre-commit-ci in https://github.com/pymmcore-plus/pymmcore-plus/pull/324
* ci(dependabot): bump codecov/codecov-action from 3 to 4 by dependabot in https://github.com/pymmcore-plus/pymmcore-plus/pull/325
* feat: support basic ImageJ hyperstack by tlambert03 in https://github.com/pymmcore-plus/pymmcore-plus/pull/323
* feat: Add file saving `output` argument to MDARunner.run by tlambert03 in https://github.com/pymmcore-plus/pymmcore-plus/pull/313
* fix: re-engage hardware autofocus after performing autofocus action if it was engaged by fdrgsp in https://github.com/pymmcore-plus/pymmcore-plus/pull/326
**Full Changelog**: https://github.com/pymmcore-plus/pymmcore-plus/compare/v0.8.7...v0.9.0