Lift the free/busy engine out of the webinar feature

Refactorkamo-shared-library
Shipped
26 Agosti 2026, 06:46 UTC
Author
Kamo
Commit
97ae24c

The interval arithmetic — expand, restrictionMask, candidateStarts, and the whole of AvailabilityInterval — was never webinar-specific. All the coupling sat in one method, blockersFor, which is now the BusySource interface. Moved verbatim: the +/-1 day expansion pad, the midnight-crossing rule, the clip-don't-drop trimming and the empty-mask-means-no-mask rule each encode a bug someone already found. The 30 tests moved with them, unchanged. MemberAvailabilityWindow implements AvailabilityWindowSpec without a body change; the entity stays in its package, since moving a mapped class buys boot risk and nothing else.

All changes

Je, unaona nini kuhusu usafiri?

Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.

Kuwa Huru MileleMtazamo wa bei