Merge - Streaming Winner #2

Merged
daniel merged 86 commits from dev into master 2026-06-27 02:47:43 +00:00
Showing only changes of commit adbd376d42 - Show all commits
@@ -246,13 +246,15 @@ public partial class AudioPlayerBar : ComponentBase, IAsyncDisposable
}
// For the docked player: we observe in BOTH expanded and minimized states
// so --player-height always reflects the live height of whichever element
// is visible. This keeps the WaveformVisualizer clipped to the top of
// the footer in both states (fix §1).
// so --player-height stays non-zero and always reflects the live height of
// whichever element is visible. The var's sole live consumer is the
// player-spacer's .expanded height (keeps the spacer sized correctly across
// breakpoints and banner reflows).
// expanded → observe _playerRoot (full player bar, reflows across breakpoints)
// minimized → observe _miniDock (floating FAB container, ~5660px)
// The player-spacer's .minimized class uses a hardcoded height and ignores
// the var, so publishing the FAB height here does not regress the spacer.
// The player-spacer's .minimized class uses a hardcoded 60px and ignores
// the var, so observing in minimized state is belt-and-braces; it does not
// regress the spacer.
var elementToObserve = _isMinimized ? _miniDock : _playerRoot;
var alreadyOnThisElement = _spacerObserved && elementToObserve.Id == _lastObservedElement.Id;