"""Pipeline progress bar — CSS-animated fill with elapsed counter.""" import random def pipeline_progress_bar_html(estimated_duration_s): """Return HTML for a continuous progress bar timed to *estimated_duration_s*. The container ``
`` carries a ``data-ppb-duration`` attribute that a MutationObserver in the page head reads to start a 0.1 s elapsed-time counter (``Xs / Ys``). """ uid = f"ppb{random.randint(0, 999999)}" duration = max(estimated_duration_s, 5) return f'''
0s / {duration}s
'''