/**
* Shared helper for live (auto-refreshing) generated dashboards.
*
* The footgun this prevents: a generated page that auto-refreshes
* UNCONDITIONALLY keeps reloading forever โ flickering long after the work it
* was watching has finished. Every live page must gate its refresh on "is
* something actually still rendering", so a finished/idle page goes quiet.
*/
export interface LiveRefreshOptions {
/** Refresh ONLY while true (work is actively rendering). */
isRendering: boolean;
/** Seconds between refreshes while rendering. Default 15. */
intervalSec?: number;
}
/**
* The `` tag for a live dashboard โ emitted ONLY
* while work is actively rendering. Returns `''` (no auto-refresh) once nothing
* is rendering, so an idle/finished page stops reloading and never flickers.
*/
export function emitLiveRefresh(opts: LiveRefreshOptions): string {
if (!opts.isRendering) return '';
const sec = opts.intervalSec ?? 15;
return ``;
}
/** Human label for the refresh state โ matches what {@link emitLiveRefresh} actually does. */
export function liveRefreshLabel(isRendering: boolean, intervalSec = 15): string {
return isRendering ? `auto-refresh ${intervalSec}s` : 'auto-refresh paused ยท idle';
}