OpenVibe.Shared releases

Release 1.0.0

22 Sep 2026 · pinned package [email protected]

1.0.0

First release from its own repository. Imported history-free from OpenVibe.Network/packages/openvibe-shared at Network commit f337eb6; every module is byte-identical to that commit except navbar.js, which only changed as listed below. Vendored copies in Media, Tools and Community carried a stale ov-icons.js (and Community a stale navbar test); canonical was correct everywhere — see docs/divergence-2026-09-22.md.

Changed

  • navbar.js no longer ships every glyph. The 87 Font Awesome solid glyph paths moved to a new browser file, nav-icons.js. navbar.js keeps the 13 glyphs it draws itself (account menu, admin link, wallet chip) plus the widths of the rest, and fetches nav-icons.js?v=<content hash> once, after first paint, the first time a site's link, chip or menu row names another glyph — from the directory navbar.js was loaded from, else https://openvibe.network/shared/. The slot is an empty <svg> of the glyph's exact size until the path arrives, so nothing moves; the finished DOM and pixels are identical to the Network copy (checked in headless Chrome). If nav-icons.js cannot load, those icons fall back to <i class="fa-solid …"> (the behaviour before inline glyphs). A page that loads nav-icons.js before navbar.js gets every glyph synchronously. New option: iconsUrl. navbar.js: 151.8 KB raw / 39.0 KB brotli → 118.6 KB / 27.6 KB.
  • scripts/build-nav-icons.py now writes nav-icons.js; scripts/build-navbar-icons.js regenerates navbar.js's block from it (--check in the tests).

Added

  • files.js (require('openvibe-shared/files')): the list of browser files a site may serve at /shared/<file>, the package directory, isBrowserFile() and path().
  • exports for every module (openvibe-shared/navbar, /nav-icons, /theme-loader, … and /package.json); every subpath the Network copy exported still resolves to the same file.
  • Tests: test/run.js, a navbar.js size budget (29 KB brotli) and icon availability test, browser-bundle hygiene (no require() or Node globals in served files), package exports.
  • scripts/size-report.js: raw and brotli (q11) size of every browser file.
  • CI on Node 22.22.1, including an install of a tag-style tarball into an empty project.

PagesThe menuThe navbarIconsThemes

Rules39 The account lives in the menu's You tab, not in a dropdown.38 The balances are one pill that shows one balance at a time.31 One navbar per page, owned by the shared Frame.

All releases