openvibers/openvibe.shared Commits
4.36.2: the kit works after a boosted page swap, and long values wrap inside table cells (#174)
Changes
@@@ -6,6 +6,14 @@ A release is the git tag `vX.Y.Z`; consumers pin the tag's tarball (see README).## Unreleased++## 4.36.2 — 2026-10-29++++- **kit-web.js on boosted sites:** a page reached through boost.js (a swap of `#main`, no page load) now gets the kit's++ behaviour too — copy buttons, menus, sheets, rails, drop zones, chart readouts. kit-web listens for `ov:boost:load`;++ enhance() was already idempotent.++- **Tables:** a long value (a DNS name, a model id, a URL) wraps inside its cell instead of widening the table, on wide++ screens and in the stacked phone cards.++## 4.36.1 — 2026-10-29- **Kit 2 charts:** a scatter label right of centre could run past the chart and widen a phone page (a 390 px@@@ -2,7 +2,7 @@> Versioned UI, the OpenVibe Frame (the navbar, footer and "shipped" views every site sits in), SEO, legal and release-client packages every OpenVibe site renders.--**Status:** alpha, v4.36.1 (every release is a tag; see [CHANGELOG.md](CHANGELOG.md)). Every deployed++**Status:** alpha, v4.36.2 (every release is a tag; see [CHANGELOG.md](CHANGELOG.md)). Every deployedconsumer installs a tagged release and none keeps a vendored copy([docs/migration-plan.md](docs/migration-plan.md) is done); each repository's `package.json` namesthe tag it pins.@@@ -4,7 +4,7 @@"code": true,"wave": "W2","package": "openvibe-shared",-- "version": "4.36.1",++ "version": "4.36.2","plan": "OpenVibe End-to-End Realignment & Implementation Plan, revision 3 (20 Sep 2026)","deployed": false,"deployment": "none of its own: a package released as git tags; OpenVibe.Network serves /shared/* from its pinned tag, and a site can serve its own pinned copy (openvibe-shared/serve)",@@@ -280,5 +280,7 @@if (typeof document !== 'undefined') {if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', () => enhance(document));else enhance(document);++ // A boosted page swap (boost.js) brings new markup without a load: enhance it too (enhance is idempotent).++ document.addEventListener('ov:boost:load', () => enhance(document));}})(typeof globalThis !== 'undefined' ? globalThis : this);@@@ -296,7 +296,7 @@ div.ovk-set-row { cursor: default; }.ovk-table { width: 100%; border-collapse: collapse; font-size: .92rem; line-height: 1.4; }.ovk-table caption { padding: 12px 14px 6px; color: var(--ovk-muted); font-size: .74rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; text-align: left; }.ovk-table thead th { padding: 10px 14px; color: var(--ovk-muted); font-size: .72rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; text-align: left; white-space: nowrap; border-bottom: 1px solid var(--ovk-line); }--.ovk-table td, .ovk-table tbody th { padding: 11px 14px; text-align: left; vertical-align: top; border-top: 1px solid var(--ovk-line); }++.ovk-table td, .ovk-table tbody th { padding: 11px 14px; text-align: left; vertical-align: top; border-top: 1px solid var(--ovk-line); overflow-wrap: anywhere; }.ovk-table tbody tr:first-child > * { border-top: 0; }.ovk-table tbody th { font-weight: 700; }.ovk-table .is-num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }@@@ -312,6 +312,7 @@ div.ovk-set-row { cursor: default; }.ovk-table--stack tbody tr { padding: 12px 14px; border-top: 1px solid var(--ovk-line); }.ovk-table--stack tbody tr:first-child { border-top: 0; }.ovk-table--stack tbody tr:hover > * { background: none; }++ .ovk-table--stack td > *, .ovk-table--stack td { min-width: 0; }.ovk-table--stack td, .ovk-table--stack tbody th { display: flex; justify-content: space-between; align-items: baseline; gap: 14px; padding: 3px 0; border: 0; text-align: right; }.ovk-table--stack td::before { content: attr(data-label); flex: none; max-width: 50%; color: var(--ovk-muted); font-size: .8rem; text-align: left; }.ovk-table--stack .is-primary { display: block; padding: 0 0 4px; font-size: 1rem; font-weight: 800; text-align: left; }@@@ -1,12 +1,12 @@{"name": "openvibe-shared",-- "version": "4.36.1",++ "version": "4.36.2","lockfileVersion": 3,"requires": true,"packages": {"": {"name": "openvibe-shared",-- "version": "4.36.1",++ "version": "4.36.2","license": "MIT","dependencies": {"jsonwebtoken": "^9.0.0",@@@ -1,6 +1,6 @@{"name": "openvibe-shared",-- "version": "4.36.1",++ "version": "4.36.2","description": "Shared navbar, footer, themes, icons, legal pages, SEO, auth and analytics for every OpenVibe site","main": "index.js","bin": {
@@ -6,6 +6,14 @@ A release is the git tag `vX.Y.Z`; consumers pin the tag's tarball (see README).
@@ -6,6 +6,14 @@ A release is the git tag `vX.Y.Z`; consumers pin the tag's tarball (see README).
## Unreleased
## Unreleased
+## 4.36.2 — 2026-10-29
+
+- **kit-web.js on boosted sites:** a page reached through boost.js (a swap of `#main`, no page load) now gets the kit's
+ behaviour too — copy buttons, menus, sheets, rails, drop zones, chart readouts. kit-web listens for `ov:boost:load`;
+ enhance() was already idempotent.
+- **Tables:** a long value (a DNS name, a model id, a URL) wraps inside its cell instead of widening the table, on wide
+ screens and in the stacked phone cards.
+
## 4.36.1 — 2026-10-29
## 4.36.1 — 2026-10-29
- **Kit 2 charts:** a scatter label right of centre could run past the chart and widen a phone page (a 390 px
- **Kit 2 charts:** a scatter label right of centre could run past the chart and widen a phone page (a 390 px
@@ -2,7 +2,7 @@
@@ -2,7 +2,7 @@
> Versioned UI, the OpenVibe Frame (the navbar, footer and "shipped" views every site sits in), SEO, legal and release-client packages every OpenVibe site renders.
> Versioned UI, the OpenVibe Frame (the navbar, footer and "shipped" views every site sits in), SEO, legal and release-client packages every OpenVibe site renders.
-**Status:** alpha, v4.36.1 (every release is a tag; see [CHANGELOG.md](CHANGELOG.md)). Every deployed
+**Status:** alpha, v4.36.2 (every release is a tag; see [CHANGELOG.md](CHANGELOG.md)). Every deployed
consumer installs a tagged release and none keeps a vendored copy
consumer installs a tagged release and none keeps a vendored copy
([docs/migration-plan.md](docs/migration-plan.md) is done); each repository's `package.json` names
([docs/migration-plan.md](docs/migration-plan.md) is done); each repository's `package.json` names
the tag it pins.
the tag it pins.
@@ -4,7 +4,7 @@
@@ -4,7 +4,7 @@
"code": true,
"code": true,
"wave": "W2",
"wave": "W2",
"package": "openvibe-shared",
"package": "openvibe-shared",
- "version": "4.36.1",
+ "version": "4.36.2",
"plan": "OpenVibe End-to-End Realignment & Implementation Plan, revision 3 (20 Sep 2026)",
"plan": "OpenVibe End-to-End Realignment & Implementation Plan, revision 3 (20 Sep 2026)",
"deployed": false,
"deployed": false,
"deployment": "none of its own: a package released as git tags; OpenVibe.Network serves /shared/* from its pinned tag, and a site can serve its own pinned copy (openvibe-shared/serve)",
"deployment": "none of its own: a package released as git tags; OpenVibe.Network serves /shared/* from its pinned tag, and a site can serve its own pinned copy (openvibe-shared/serve)",
@@ -280,5 +280,7 @@
@@ -280,5 +280,7 @@
if (typeof document !== 'undefined') {
if (typeof document !== 'undefined') {
if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', () => enhance(document));
if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', () => enhance(document));
else enhance(document);
else enhance(document);
+ // A boosted page swap (boost.js) brings new markup without a load: enhance it too (enhance is idempotent).
+ document.addEventListener('ov:boost:load', () => enhance(document));
}
}
})(typeof globalThis !== 'undefined' ? globalThis : this);
})(typeof globalThis !== 'undefined' ? globalThis : this);
@@ -296,7 +296,7 @@ div.ovk-set-row { cursor: default; }
@@ -296,7 +296,7 @@ div.ovk-set-row { cursor: default; }
.ovk-table { width: 100%; border-collapse: collapse; font-size: .92rem; line-height: 1.4; }
.ovk-table { width: 100%; border-collapse: collapse; font-size: .92rem; line-height: 1.4; }
.ovk-table caption { padding: 12px 14px 6px; color: var(--ovk-muted); font-size: .74rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; text-align: left; }
.ovk-table caption { padding: 12px 14px 6px; color: var(--ovk-muted); font-size: .74rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; text-align: left; }
.ovk-table thead th { padding: 10px 14px; color: var(--ovk-muted); font-size: .72rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; text-align: left; white-space: nowrap; border-bottom: 1px solid var(--ovk-line); }
.ovk-table thead th { padding: 10px 14px; color: var(--ovk-muted); font-size: .72rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; text-align: left; white-space: nowrap; border-bottom: 1px solid var(--ovk-line); }
-.ovk-table td, .ovk-table tbody th { padding: 11px 14px; text-align: left; vertical-align: top; border-top: 1px solid var(--ovk-line); }
+.ovk-table td, .ovk-table tbody th { padding: 11px 14px; text-align: left; vertical-align: top; border-top: 1px solid var(--ovk-line); overflow-wrap: anywhere; }
.ovk-table tbody tr:first-child > * { border-top: 0; }
.ovk-table tbody tr:first-child > * { border-top: 0; }
.ovk-table tbody th { font-weight: 700; }
.ovk-table tbody th { font-weight: 700; }
.ovk-table .is-num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.ovk-table .is-num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
@@ -312,6 +312,7 @@ div.ovk-set-row { cursor: default; }
@@ -312,6 +312,7 @@ div.ovk-set-row { cursor: default; }
.ovk-table--stack tbody tr { padding: 12px 14px; border-top: 1px solid var(--ovk-line); }
.ovk-table--stack tbody tr { padding: 12px 14px; border-top: 1px solid var(--ovk-line); }
.ovk-table--stack tbody tr:first-child { border-top: 0; }
.ovk-table--stack tbody tr:first-child { border-top: 0; }
.ovk-table--stack tbody tr:hover > * { background: none; }
.ovk-table--stack tbody tr:hover > * { background: none; }
+ .ovk-table--stack td > *, .ovk-table--stack td { min-width: 0; }
.ovk-table--stack td, .ovk-table--stack tbody th { display: flex; justify-content: space-between; align-items: baseline; gap: 14px; padding: 3px 0; border: 0; text-align: right; }
.ovk-table--stack td, .ovk-table--stack tbody th { display: flex; justify-content: space-between; align-items: baseline; gap: 14px; padding: 3px 0; border: 0; text-align: right; }
.ovk-table--stack td::before { content: attr(data-label); flex: none; max-width: 50%; color: var(--ovk-muted); font-size: .8rem; text-align: left; }
.ovk-table--stack td::before { content: attr(data-label); flex: none; max-width: 50%; color: var(--ovk-muted); font-size: .8rem; text-align: left; }
.ovk-table--stack .is-primary { display: block; padding: 0 0 4px; font-size: 1rem; font-weight: 800; text-align: left; }
.ovk-table--stack .is-primary { display: block; padding: 0 0 4px; font-size: 1rem; font-weight: 800; text-align: left; }
@@ -1,12 +1,12 @@
@@ -1,12 +1,12 @@
{
{
"name": "openvibe-shared",
"name": "openvibe-shared",
- "version": "4.36.1",
+ "version": "4.36.2",
"lockfileVersion": 3,
"lockfileVersion": 3,
"requires": true,
"requires": true,
"packages": {
"packages": {
"": {
"": {
"name": "openvibe-shared",
"name": "openvibe-shared",
- "version": "4.36.1",
+ "version": "4.36.2",
"license": "MIT",
"license": "MIT",
"dependencies": {
"dependencies": {
"jsonwebtoken": "^9.0.0",
"jsonwebtoken": "^9.0.0",
@@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
{
{
"name": "openvibe-shared",
"name": "openvibe-shared",
- "version": "4.36.1",
+ "version": "4.36.2",
"description": "Shared navbar, footer, themes, icons, legal pages, SEO, auth and analytics for every OpenVibe site",
"description": "Shared navbar, footer, themes, icons, legal pages, SEO, auth and analytics for every OpenVibe site",
"main": "index.js",
"main": "index.js",
"bin": {
"bin": {