feat: close STREAMING.md production readiness gaps
- Added run ID + unique segment naming (r-{ISOTIME}/seg-{seq}.m4s)
- Added fsnotify watcher for real-time R2 segment upload (~7s)
- Added atomic manifest publication (temp key → CopyObject)
- Fixed manifest Cache-Control: public, max-age=1, s-maxage=2, must-revalidate
- Added hls.js error recovery: bounded retries (5x), exponential backoff, reconnecting UI
- Enriched /health endpoint: run_id, active_item, last_segment_seq, last_r2_pub, consecutive_failures, unhealthy detection
- Updated tests: HealthHandler (new fields + unhealthy), player error recovery test
- Updated TODO.md, BACKLOG.md, DONE.md, MEMORY.md
This commit is contained in:
1 parent
f6ca89747e
commit
18459a9811
12 files changed
+699
-48
No files matched your search
@@ -1056,3 +1056,40 @@ select {
|
||||
scroll-behavior: auto !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* Reconnecting overlay (player error recovery) */
|
||||
.reconnecting-overlay {
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
background: rgba(0, 0, 0, 0.85);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: var(--space-4, 1rem);
|
||||
z-index: 1000;
|
||||
backdrop-filter: blur(8px);
|
||||
}
|
||||
|
||||
.reconnecting-overlay.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.reconnecting-spinner {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
border: 3px solid var(--line, #2a2a2a);
|
||||
border-top-color: var(--brand, #587792);
|
||||
border-radius: 50%;
|
||||
animation: lv-spin 0.8s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes lv-spin {
|
||||
to { transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
#reconnecting-text {
|
||||
color: var(--ink-0, #ede8e6);
|
||||
font-family: var(--font-body);
|
||||
font-size: 1.125rem;
|
||||
}
|
||||
Reference in new issue
Block a user