@@ -152,7 +152,7 @@ function SessionOverview({
152152 return (
153153 < section className = "grid min-w-0 gap-5" data-codex-live-overview = "true" >
154154 < div
155- className = "grid min-w-0 gap-3 lg:grid-cols-[minmax(0,1.25fr)_minmax(9rem,0.65fr)_minmax(9rem,0.65fr)_minmax(9rem,0.65fr)]"
155+ className = "relative grid min-w-0 gap-3 lg:grid-cols-[minmax(0,1.25fr)_minmax(9rem,0.65fr)_minmax(9rem,0.65fr)_minmax(9rem,0.65fr)]"
156156 data-codex-overview-summary-cards = "true"
157157 >
158158 < section className = "grid min-h-[5.75rem] min-w-0 content-between border border-[color:color-mix(in_srgb,var(--border-color)_28%,transparent)] bg-[var(--bg-main)] p-2.5" data-codex-overview-card = "identity" >
@@ -186,14 +186,7 @@ function SessionOverview({
186186 secondaryValue = { `${ summary . errorSessions } ${ t ( 'codex_live_sessions.summary_failed' ) } ` }
187187 accent = { summary . errorSessions > 0 ? 'danger' : summary . degradedSessions > 0 ? 'warning' : 'neutral' }
188188 />
189- { loading || errorMessage ? (
190- < div className = "flex min-h-8 items-center justify-between gap-3 border border-dashed border-[color:color-mix(in_srgb,var(--border-color)_35%,transparent)] px-3 py-1.5 font-mono text-[length:var(--font-size-ui-2xs)] font-black uppercase lg:col-span-4" >
191- < span className = "text-[var(--text-muted)]" >
192- { loading ? t ( 'codex_live_sessions.detail_loading' ) : t ( 'codex_live_sessions.detail_stale' ) }
193- </ span >
194- { errorMessage ? < span className = "min-w-0 truncate text-right text-[var(--color-status-warning)]" > { errorMessage } </ span > : null }
195- </ div >
196- ) : null }
189+ < OverviewStatusNotice loading = { loading } errorMessage = { errorMessage } t = { t } />
197190 </ div >
198191
199192 < OverviewTimingTrend
@@ -214,6 +207,26 @@ function SessionOverview({
214207 ) ;
215208}
216209
210+ function OverviewStatusNotice ( { loading, errorMessage, t } : { loading ?: boolean ; errorMessage ?: string ; t : Translate } ) {
211+ if ( ! loading && ! errorMessage ) {
212+ return null ;
213+ }
214+
215+ return (
216+ < div
217+ className = "pointer-events-none absolute right-0 top-[calc(100%+0.5rem)] z-10 flex max-w-[min(32rem,100%)] items-center gap-3 bg-[var(--bg-main)] px-2.5 py-1 font-mono text-[length:var(--font-size-ui-2xs)] font-black uppercase shadow-[0_0_0_1px_color-mix(in_srgb,var(--border-color)_28%,transparent),3px_3px_0_color-mix(in_srgb,var(--shadow-color)_42%,transparent)]"
218+ data-codex-overview-status-overlay = "true"
219+ role = "status"
220+ aria-live = "polite"
221+ >
222+ < span className = "shrink-0 text-[var(--text-muted)]" >
223+ { loading ? t ( 'codex_live_sessions.detail_loading' ) : t ( 'codex_live_sessions.detail_stale' ) }
224+ </ span >
225+ { errorMessage ? < span className = "min-w-0 truncate text-right text-[var(--color-status-warning)]" > { errorMessage } </ span > : null }
226+ </ div >
227+ ) ;
228+ }
229+
217230function OverviewSummaryCard ( {
218231 label,
219232 primaryValue,
0 commit comments