BooksTabVisibilityObserving

@MainActor
public protocol BooksTabVisibilityObserving : AnyObject

Adopted by a books tab’s content view controller (or a container that forwards to it) so the hosting standalone tab can tell it when it actually becomes the visible tab, or is hidden.

UIKit appearance callbacks are not a reliable “the user is looking at this tab” signal for the standalone tab hosts: the swiper hosts page views (not view controllers), so viewDidAppear(_:) does not re-fire on revisit. Tabs forward their own per-visit signal through this protocol instead, so a screen can fire its “open” analytics event only when it is actually visited.