openvibers/openvibe.shared Commits
4.171.0: the page head's icon and actions sit on the title's first line (#389)
Changes
@@@ -1,5 +1,11 @@# Changelog++## 4.171.0 — 2026-11-09++++- **The page head's icon and actions sit on the title's first line** (`kit.pageHead`): a title that wraps to three++ lines (a home page's hero, openvibe.space) kept them floating beside its middle. The row aligns to the top and++ both are centred on the first line (`--ovk-page-line`, in rem and vw, so a text button in the actions keeps its size).++## 4.170.0 — 2026-11-09- **The wallet, one sheet on every site** (`ov-wallet.js`, opened from the navbar's balance chips): OpenCoins, Vibes@@@ -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.170.0 (every release is a tag; see [CHANGELOG.md](CHANGELOG.md)). Every deployed++**Status:** alpha, v4.171.0 (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.170.0",++ "version": "4.171.0","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)",@@@ -475,7 +475,11 @@ html[data-ov-motion=reduced] .ovk-skel { animation: none; }.ovk-page-back::after { content: ""; position: absolute; inset: -6px -4px; } /* 44 px under the finger */.ovk-page-back .ovk-i { width: 18px; height: 18px; }@media (hover: hover) { .ovk-page-back:hover { background: color-mix(in srgb, var(--text-primary, #e8ecf3) 11%, transparent); color: var(--text-primary, #e8ecf3); } }--.ovk-page-head-row { display: flex; align-items: center; gap: 12px; min-width: 0; }++/* The icon and the actions sit on the title's FIRST line (centred on it), so a title that wraps to three lines (a home++ page's hero, Space 11-09) keeps them beside its start instead of floating in the middle. --ovk-page-line is the++ title's line (1.15 × its size, in rem and vw so it means the same on every child). */++.ovk-page-head-row { --ovk-page-line: calc(1.15 * clamp(1.45rem, 2.4vw + .7rem, 2.2rem)); display: flex; align-items: flex-start; gap: 12px; min-width: 0; }++.ovk-page-head-row > .ovk-heading-icon, .ovk-page-head-row > .ovk-page-actions { margin-top: calc(var(--ovk-page-line) / 2 - 22px); }.ovk-page-head-row > .ovk-heading-icon { flex-basis: 44px; width: 44px; height: 44px; border-radius: 13px;background: linear-gradient(150deg, color-mix(in srgb, var(--accent, #3b82f6) 26%, transparent), color-mix(in srgb, var(--accent, #3b82f6) 9%, transparent));box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent, #3b82f6) 26%, transparent); }@@@ -1,12 +1,12 @@{"name": "openvibe-shared",-- "version": "4.170.0",++ "version": "4.171.0","lockfileVersion": 3,"requires": true,"packages": {"": {"name": "openvibe-shared",-- "version": "4.170.0",++ "version": "4.171.0","license": "MIT","dependencies": {"jsonwebtoken": "^9.0.0",@@@ -1,6 +1,6 @@{"name": "openvibe-shared",-- "version": "4.170.0",++ "version": "4.171.0","description": "Shared navbar, footer, themes, icons, legal pages, SEO, auth and analytics for every OpenVibe site","main": "index.js","bin": {
@@ -1,5 +1,11 @@
@@ -1,5 +1,11 @@
# Changelog
# Changelog
+## 4.171.0 — 2026-11-09
+
+- **The page head's icon and actions sit on the title's first line** (`kit.pageHead`): a title that wraps to three
+ lines (a home page's hero, openvibe.space) kept them floating beside its middle. The row aligns to the top and
+ both are centred on the first line (`--ovk-page-line`, in rem and vw, so a text button in the actions keeps its size).
+
## 4.170.0 — 2026-11-09
## 4.170.0 — 2026-11-09
- **The wallet, one sheet on every site** (`ov-wallet.js`, opened from the navbar's balance chips): OpenCoins, Vibes
- **The wallet, one sheet on every site** (`ov-wallet.js`, opened from the navbar's balance chips): OpenCoins, Vibes
@@ -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.170.0 (every release is a tag; see [CHANGELOG.md](CHANGELOG.md)). Every deployed
+**Status:** alpha, v4.171.0 (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.170.0",
+ "version": "4.171.0",
"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)",
@@ -475,7 +475,11 @@ html[data-ov-motion=reduced] .ovk-skel { animation: none; }
@@ -475,7 +475,11 @@ html[data-ov-motion=reduced] .ovk-skel { animation: none; }
.ovk-page-back::after { content: ""; position: absolute; inset: -6px -4px; } /* 44 px under the finger */
.ovk-page-back::after { content: ""; position: absolute; inset: -6px -4px; } /* 44 px under the finger */
.ovk-page-back .ovk-i { width: 18px; height: 18px; }
.ovk-page-back .ovk-i { width: 18px; height: 18px; }
@media (hover: hover) { .ovk-page-back:hover { background: color-mix(in srgb, var(--text-primary, #e8ecf3) 11%, transparent); color: var(--text-primary, #e8ecf3); } }
@media (hover: hover) { .ovk-page-back:hover { background: color-mix(in srgb, var(--text-primary, #e8ecf3) 11%, transparent); color: var(--text-primary, #e8ecf3); } }
-.ovk-page-head-row { display: flex; align-items: center; gap: 12px; min-width: 0; }
+/* The icon and the actions sit on the title's FIRST line (centred on it), so a title that wraps to three lines (a home
+ page's hero, Space 11-09) keeps them beside its start instead of floating in the middle. --ovk-page-line is the
+ title's line (1.15 × its size, in rem and vw so it means the same on every child). */
+.ovk-page-head-row { --ovk-page-line: calc(1.15 * clamp(1.45rem, 2.4vw + .7rem, 2.2rem)); display: flex; align-items: flex-start; gap: 12px; min-width: 0; }
+.ovk-page-head-row > .ovk-heading-icon, .ovk-page-head-row > .ovk-page-actions { margin-top: calc(var(--ovk-page-line) / 2 - 22px); }
.ovk-page-head-row > .ovk-heading-icon { flex-basis: 44px; width: 44px; height: 44px; border-radius: 13px;
.ovk-page-head-row > .ovk-heading-icon { flex-basis: 44px; width: 44px; height: 44px; border-radius: 13px;
background: linear-gradient(150deg, color-mix(in srgb, var(--accent, #3b82f6) 26%, transparent), color-mix(in srgb, var(--accent, #3b82f6) 9%, transparent));
background: linear-gradient(150deg, color-mix(in srgb, var(--accent, #3b82f6) 26%, transparent), color-mix(in srgb, var(--accent, #3b82f6) 9%, transparent));
box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent, #3b82f6) 26%, transparent); }
box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent, #3b82f6) 26%, transparent); }
@@ -1,12 +1,12 @@
@@ -1,12 +1,12 @@
{
{
"name": "openvibe-shared",
"name": "openvibe-shared",
- "version": "4.170.0",
+ "version": "4.171.0",
"lockfileVersion": 3,
"lockfileVersion": 3,
"requires": true,
"requires": true,
"packages": {
"packages": {
"": {
"": {
"name": "openvibe-shared",
"name": "openvibe-shared",
- "version": "4.170.0",
+ "version": "4.171.0",
"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.170.0",
+ "version": "4.171.0",
"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": {