Commits
-
4.204.0: buttons that show their state, resizable windows, the composer everywhere, players, csp (#460)OpenVibers · 2 days ago
1bbce3b -
4.186.0: the mark works as a ring of dots and can think; the menu and the Dock are one sheet; bare controls wear the theme (#407)OpenVibers · 3 days ago
1d71393 -
4.105.0: eight more solid glyphs; taglines without a full stop; a text check in the release browser check (#267)OpenVibers · 11 days ago
eecf760 -
4.100.1: the browser harness counts a counted fold's text as on the page (#261)OpenVibers · 11 days ago
bc48403 -
CI: Shared's suite on Windows and macOS too (#140)OpenVibers · 16 days ago
bc7d413 -
Home page kit: stats, cards/rails, spotlight, FAQ, related products, JSON-LD, motion (#108)OpenVibers · 19 days ago
f094384 -
Shared 2.14.0: a boost page move no longer keeps the old navbar alive (panels + probe) (#34)OpenVibers · 8 Oct 2026
7cd39f8 -
v1.22.0: the notification bell in realtime, off by default (roadmap WS-E task 3, WS-F task 1; openvibe-contracts 0.61.0, ADR-005 amendment 2). New browser file notification-live.js (OVNotificationLive, 2.4 KB brotli, budget 3 KB): a realtime ticket from Network (POST /api/v1/realtime/ticket, Bearer or the openvibe.network cookie) for every (re)connect, then Events' /realtime/stream?topics=network.notification.*&ticket= without credentials, resuming with last_event_id; only the ticket's person's events count; gaps reported; errors close and back off from 2 s with jitter, ten in a row stop it until online; hidden 5 min closes, shown resumes; CSP refusal, 401/403 and 503 stop it. notification-ui.js (budget 13 KB) loads it from its own directory with init({ realtime: true }) (navbar: notificationsRealtime: true): an event re-reads the count once per burst (and again after a poll in flight), a gap also reloads open lists, the 15 s poll runs every 2 min while the stream is open; setToken() restarts it; realtimeState(). files.js and exports list it; browser-harness exports openPage. Tests: linkedom (subscribe, resume from the cursor, gap -> refetch, CSP-blocked -> polling, guessed topic yields nothing) and headless Chrome with a real EventSource (drop and resume with nothing lost or repeated, retention gap, another person's event ignored)OpenVibers · 26 Sept 2026
3282427 -
v1.21.0: browser harness checkUnreachable (ADR-024, roadmap WS-E task 1): openPage({ block }) fails every request matching a pattern, and checkUnreachable(url) reports whether a page still paints (200, settled, text, a --accent token, a background) with openvibe.network unreachable; blocked requests are not page errors. Tested in headless ChromeOpenVibers · 26 Sept 2026
749cbcf -
browser-harness: Chrome runs in its own process group and close() stops that group (only what this launch started: the browser and its renderer/GPU helpers, which outlived a killed browser and kept writing), then removes the temporary profile with retries and resolves once it is gone; if the process ends first, an exit handler does the same. The profile used to be removed on an unref'd timer that never ran when the process ended right after, leaving one per run on a nearly full disk (H7). run() awaits close(); the Chrome test checks the profile is goneOpenVibers · 26 Sept 2026
55c28eb -
browser-harness: a noindex page (meta robots or X-Robots-Tag) needs no canonical link (Sources' landing page is noindex); a canonical it has is still judgedOpenVibers · 26 Sept 2026
6d4420f -
browser-harness: an ItemList's JSON-LD is judged by its items (80 % of the item names visible), not by its own name, which is a label (often a nav's aria-label: Tools' "Tool families"); a list without item names falls back to its nameOpenVibers · 26 Sept 2026
9b8eac3 -
v1.16.0: openvibe-shared/browser-harness (WS-Q task 3, WS-T tasks 3-4): Live's browser smoke suite generalised for any site, headless Chrome over the DevTools protocol with Node's own WebSocket (no dependency). Per route at 390/768/1280 px: HTTP status, console errors (exceptions, console.error, failed loads, CSP), horizontal overflow with the offending elements, scripts requested twice; with JavaScript off: visible text, one absolute canonical, JSON-LD parses and its headline/name is visible (title-style names by their leading part, web pages by their title); axe-core at the widest width (serious/critical fail, moderate reported); a non-HTML answer is judged on its status only. Per site: A->B->A navigation five times (links clicked, so an SPA navigates in place; no back/forward cache) with heap, nodes, listeners, documents, intervals, pending timeouts and sockets sampled after a forced GC, failing growth past BUDGETS that is still growing; idle CPU (script/style/layout), requests and running animations reported. ignoreErrors rules are counted per label. axe-core 4.13.0 from an installed package or jsDelivr checked against a pinned sha384, cached. test/browser-harness-chrome.test.js runs it in real Chrome against a fixture and skips without ChromeOpenVibers · 26 Sept 2026
9fc27a5