Skip to content
-
Real-user measurements: on a quarter of page loads, once idle, the browser reports its own TTFB/FCP/LCP/CLS/INP/blocking time and up to three script errors in one beacon; kept only as aggregates per page kind and device (staff: /api/admin/rum, /metrics: live_rum_p75); the privacy page says so (#217)OpenVibers · 27 days ago
6b701fb3
-
Offline channel page: 'most watched' is asked for with the channel, not after it, and its picture (the page's largest paint) loads at once with high priority instead of lazily (A/B on /@goosely, phone CPU: LCP 2.69 → 2.45 s) (#216)OpenVibers · 27 days ago
b7bcac12
-
/internal/analytics-summary: one computation per window per 10 minutes, shared by concurrent callers (the full stats behind a few totals took ~4 s of database time at p95) (#215)OpenVibers · 27 days ago
6c245b1f
-
VOD and clip API: their independent lookups (names, stream, AI state, Media's clip list, view count, Community's comment count) run together instead of one after another (#214)OpenVibers · 27 days ago
f675c1b1
-
Channel API: clippers' names and AI overviews in one query each, not one per clip/VOD in turn (~80 sequential round trips on a full channel page) (#213)OpenVibers · 27 days ago
49a056f6
-
Patch notes list: read the git log through the current link (a static-only release does not restart the process; the list stopped at #206 while #207–#210 were live) (#212)OpenVibers · 27 days ago
b177bd0e
-
trace-page --tasks: each main-thread task over 100 ms with what ran inside it (totals alone did not say which task was long) (#211)OpenVibers · 27 days ago
2f17d4f4
-
Channel chat history: the newest 50 rows first, then 10-row pieces per idle moment (A/B against production on /@goosely, phone CPU: TBT 2.3 s → 1.3 s, longest task 751 → 383 ms) (#210)OpenVibers · 27 days ago
d3f0fe09
-
Channel chat history: older scrollback in 25-row pieces, as many as fit in each idle moment (120-row pieces were still ~240 ms tasks on a phone CPU: TBT 2.6 s on /@goosely) (#209)OpenVibers · 27 days ago
2dbcefaa
-
measure-page: name the element behind the largest layout shift (clsEl) and collapse whitespace in element descriptions (#208)OpenVibers · 27 days ago
41d61a5c
-
Channel chat history: older scrollback goes above the newest 120 rows a piece at a time, not all 1000 rows in one idle task (2.7 s on a phone CPU, TBT 3.7 s on /@goosely); the cached first paint renders only its newest piece (#207)OpenVibers · 27 days ago
f67fe00a
-
Home: paint the hero frame with the HTML (largest paint was 2.9 s, after the hero API) (#206)OpenVibers · 27 days ago
e5822ecb
-
AGENTS.md: public AI text passes db.noLooks / noLooksTags / hasLooks (prompts alone miss about one in ten) (#205)OpenVibers · 27 days ago
138dc0ac
-
Chat popover + profile AI tab: no looks in any AI string; session titles about looks not used (#204)OpenVibers · 27 days ago
f0d44779
-
AI tags on public items drop looks too ('red-beanie', 'bearded', 'man', 'tanktop'): live pastes, moment pastes and backfilled paste tags pass db.noLooksTags (#203)OpenVibers · 27 days ago
2fa95a0f
-
Public AI text: no clothing, hair or face either; looks-titles fall back to stream title + time (#202)OpenVibers · 27 days ago
681de238
-
AI moments and auto clips: without an AI title, the stream's title and the time ('Fortnite! at 41:20'), not a frame caption's first words ('A Man With A Beard Is Speaking To') (#201)OpenVibers · 27 days ago
c70583f9
-
API docs: payments go through OpenVibe.Billing (the page still described Live's own orders and webhooks, removed at the cutover) (#200)OpenVibers · 27 days ago
cb986359
-
Not-found page: a long @name wraps (the full browser smoke saw /@no_such_channel_x9 overflow a 320px phone) (#199)OpenVibers · 27 days ago
fce36962
-
Thumbnails: an audio-only recording (Media's media.no_video) is asked about once a day, not hourly (three VODs cost Media a job an hour each) (#198)OpenVibers · 27 days ago
09426db9
-
/live-notify.js: cached 5 minutes, then stale-while-revalidate (other sites load it at a fixed address on every page view; ~980 full downloads in 3 h at max-age=0) (#197)OpenVibers · 27 days ago
a3e511c6
-
Channel 'Most watched': its three Media reads in parallel and the answer kept a minute per channel (p95 was 0.77 s, sequential reads on every offline channel view) (#196)OpenVibers · 27 days ago
9f047737
-
Home hero: the AI copy rules live in one place (server/ai/hero-copy.js) and also refuse crude words, keyboard-mash names and viewer-count jokes ('testicle banter crew', 'qeqweqwe watchers', "goosely's loyal 3 viewers" were on the front page) (#195)OpenVibers · 27 days ago
eb0bc8f4
-
Browser smoke: a channel nobody has must show the not-found page; CHANNEL names a real channel when BASE is production (#194)OpenVibers · 27 days ago
3da9269a
-
VODs, clips and old stream links that are gone say so at their address (they flashed a toast and dropped the visitor on a list while the server said 404) (#193)OpenVibers · 27 days ago
22a7c494
-
Channels: a name nobody has shows 'No channel called @name' at that address (it flashed a toast and dropped the visitor on the home page while the server said 404) (#192)OpenVibers · 27 days ago
053060c1
-
Phone chat buttons: the DM label no longer ends off-screen (button at 20px like Global's), and the Global chat button says Global, not G (#191)OpenVibers · 27 days ago
0727cb47
-
Channel: the offline header shows the streamer's picture in a circle (it only ever got the first letter, unstyled); one DOM helper for both headers (#190)OpenVibers · 27 days ago
382cde0d
-
Channel weather: an expired forecast is answered at once and refreshed behind it (p95 was 2.4 s), one shared refresh, 5 s timeouts, error answers never cached, unknown zips remembered (#188)OpenVibers · 27 days ago
2ac32f76
-
Home stats: an expired snapshot is answered at once and recomputed behind it, one recompute for everyone (the hero's p95 was 1 s: whoever came after each 30 s expiry waited for the COUNTs) (#189)OpenVibers · 27 days ago
343708d6
More commits