openvibers/openvibe.mediahub Commits

Motion: Calm reduces, only Off removes (Shared 4.183.0) (#370)

OP OpenVibers committed 3 days ago · 6f6f4c4813 · 8 files, +11 −20

Calm (the Motion setting, or a device that asks for less motion) used to stop
every effect here. Pin openvibe-shared 4.183.0 and drop the rules that stopped an
effect under prefers-reduced-motion or html[data-ov-motion=reduced]: Calm plays
every effect, smaller and slower, and only html[data-ov-motion=off] stops it.

Changes

ddiff --git a/README.md b/README.md
iindex b69dac8..312fd66 100644
---- a/README.md
++++ b/README.md
@@@ -553,7 +553,7 @@ Part of the [OpenVibe network](https://openvibe.network). Built in the open by [
<!-- versions:start -->
- openvibe-contracts: v0.384.0
- openvibe-sdk: v0.125.0
--- openvibe-shared: v4.179.0
++- openvibe-shared: v4.183.0
<!-- versions:end -->
### Public Pics gallery
ddiff --git a/STATUS.json b/STATUS.json
iindex 1df79b7..60096b2 100644
---- a/STATUS.json
++++ b/STATUS.json
@@@ -44,7 +44,7 @@
],
"contracts": "openvibe-contracts v0.384.0",
"sdk": "openvibe-sdk v0.125.0",
-- "shared": "openvibe-shared v4.179.0",
++ "shared": "openvibe-shared v4.183.0",
"deployment": "openvibe-ovh: unit openvibe-media-hub.service on 127.0.0.1:4990 (git checkout /opt/openvibe.download, env /etc/openvibe/media-hub.env, database ov_media_hub), deployed with `sudo ovhost deploy media-hub`; public at https://openvibe.download since 2026-10-08, https://openvibe.video since 2026-10-12 and https://openvibe.pics since 2026-10-15.",
"updated": "2026-11-10"
}
ddiff --git a/package-lock.json b/package-lock.json
iindex 1954d71..3ea1dce 100644
---- a/package-lock.json
++++ b/package-lock.json
@@@ -17,7 +17,7 @@
"iovalkey": "^0.4.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.384.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.125.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.179.0",
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.183.0",
"pg": "^8.23.0",
"sharp": "^0.33.5"
},
@@@ -1654,9 +1654,9 @@
}
},
"node_modules/openvibe-shared": {
-- "version": "4.179.0",
-- "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.179.0",
-- "integrity": "sha512-Fjffjq3gLINhiXTqQJwsKQT/QbV4TYvsmz6GTp5hBJ8xA6KUQgu0wDgCQ3BRxCZ0ehmn0HGVAHUI+5m0LtPQCQ==",
++ "version": "4.183.0",
++ "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.183.0",
++ "integrity": "sha512-vp9gg++Dhyj3h0cwvBjujM6dSFYoeXdh1UXdZ6OXP/NjG672Fs7uRANV4MjT467JtFDN7r7qLI3OJAwGQxOuQw==",
"license": "MIT",
"dependencies": {
"jsonwebtoken": "^9.0.0",
ddiff --git a/package.json b/package.json
iindex 39ada90..cad8497 100644
---- a/package.json
++++ b/package.json
@@@ -24,7 +24,7 @@
"iovalkey": "^0.4.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.384.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.125.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.179.0",
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.183.0",
"pg": "^8.23.0",
"sharp": "^0.33.5"
},
ddiff --git a/public/css/drive.css b/public/css/drive.css
iindex 039de2c..49fe9be 100644
---- a/public/css/drive.css
++++ b/public/css/drive.css
@@@ -325,7 +325,4 @@
.fv-tile .dr-i { width: 72px; height: 72px; }
.fv-actions .dr-btn { flex: 1; }
}
--@media (prefers-reduced-motion: reduce) {
-- .dr-new-panel, .dr-menu, .dr-tray, .dr-drop, .dr-drop-box { animation: none; }
-- .dr-file:hover { transform: none; }
--}
++html[data-ov-motion=off] .dr-file:hover{transform: none}
ddiff --git a/public/css/labels.css b/public/css/labels.css
iindex 6b7fd40..afc9914 100644
---- a/public/css/labels.css
++++ b/public/css/labels.css
@@@ -24,4 +24,3 @@
.ovl-opt--adult input:checked + .ovl-card::before { border-color: var(--warning-text, #fbbf24); background-color: var(--warning-text, #fbbf24); }
.ovl-opt input:focus-visible + .ovl-card { outline: 3px solid var(--accent, #3b82f6); outline-offset: 2px; }
.ovl-opt:hover .ovl-card { border-color: color-mix(in srgb, var(--accent, #3b82f6) 60%, var(--border-light, #2c3d5c)); }
--@media (prefers-reduced-motion: reduce) { .ovl-card { transition: none; } }
ddiff --git a/public/css/pics.css b/public/css/pics.css
iindex ccf65be..be103fa 100644
---- a/public/css/pics.css
++++ b/public/css/pics.css
@@@ -155,7 +155,7 @@
.ovp-staff img, .ovp-staff .ovp-album-empty { width: 72px; }
.ovp-drop-inner { padding: 28px 14px 24px; }
}
--@media (prefers-reduced-motion: reduce) { .ovp-tile img, .ovp-drop { transition: none; } .ovp-tile:hover img { transform: none; } }
++html[data-ov-motion=off] .ovp-tile:hover img{transform: none}
/* Resize and convert: formats by width, each cell a link. Scrolls on its own on a narrow screen. */
.ovp-sizes { overflow-x: auto; }
@@@ -233,7 +233,7 @@
.ovp-gc-pic { display: block; overflow: hidden; border-radius: 14px; background: var(--ovp-card); box-shadow: 0 0 0 1px color-mix(in srgb, var(--ovp-line) 70%, transparent); }
.ovp-gc-pic img { display: block; width: 100%; height: auto; transition: transform .35s ease, filter .35s ease; }
.ovp-gallery-card:hover .ovp-gc-pic img { transform: scale(1.03); filter: brightness(1.06); }
--@media (prefers-reduced-motion: reduce) { .ovp-gc-pic img { transition: none; } .ovp-gallery-card:hover .ovp-gc-pic img { transform: none; } }
++html[data-ov-motion=off] .ovp-gallery-card:hover .ovp-gc-pic img{transform: none}
.ovp-gc-body { padding: 9px 4px 0; }
.ovp-gc-title { margin: 0; font-size: 15px; line-height: 1.3; font-weight: 650; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ovp-gc-title a { color: var(--text-primary, #e6edf7); text-decoration: none; }
ddiff --git a/public/css/video.css b/public/css/video.css
iindex 6ec1afd..28b143e 100644
---- a/public/css/video.css
++++ b/public/css/video.css
@@@ -114,7 +114,6 @@ body:has(> main.ovv-page) .openvibe-navbar.ovnav-top { background-color: var(--b
/* The picture's shape once it plays (video.js followShape: --ovv-ar), eased when a recording turns mid-stream; 16:9
before that. The height is capped so the title under the player stays on screen. */
.ovv-player { display: block; width: 100%; aspect-ratio: var(--ovv-ar, 16 / 9); max-height: calc(100vh - 150px); max-height: calc(100dvh - 150px); background: #000; object-fit: contain; transition: aspect-ratio .45s cubic-bezier(.22, 1, .36, 1); }
--@media (prefers-reduced-motion: reduce) { .ovv-player { transition: none; } }
/* An upright recording on a phone or tablet held upright: at most 70% of the screen, so its title and buttons show under
it without scrolling. */
@media (max-width: 1000px) and (orientation: portrait) { .ovv-player { max-height: 70vh; max-height: 70svh; } }
@@@ -548,8 +547,6 @@ a.ovv-channel-name:hover { text-decoration: underline; }
.ovv-mytitleline { display: grid; gap: 3px; }
.ovv-mystate { justify-self: start; }
}
--@media (prefers-reduced-motion: reduce) { .ovv-pulse { animation: none; } }
--html[data-ov-motion=reduced] .ovv-pulse { animation: none; }
/* Recording (/record) */
.ovv-record { display: grid; gap: 12px; max-width: 760px; }
@@@ -629,7 +626,6 @@ html[data-ov-motion=reduced] .ovv-pulse { animation: none; }
.ovv-vis-card { grid-template-columns: 28px minmax(0, 1fr); justify-items: start; align-items: center; column-gap: 10px; text-align: left; padding: 10px 12px; }
.ovv-vis-card i { grid-row: span 2; justify-self: center; }
}
--@media (prefers-reduced-motion: reduce) { .ovv-owner[open] { animation: none; } }
/* Home, 10-28: the stats are links laid out as an even grid (the live tile first, with its pulse), the hero's actions
stack cleanly on a phone, and anchored sections stop clear of the sticky bar. */
@@@ -654,7 +650,7 @@ html.ov-motion .ovv-stat.is-live .ovv-dot { animation: ovv-pulse 1.6s ease-out i
.ovv-stat { padding: 10px 12px; }
.ovv-stat b { font-size: 1.2rem; }
}
--@media (prefers-reduced-motion: reduce) { .ovv-stat { transition: none; } .ovv-stat:hover { transform: none; } }
++html[data-ov-motion=off] .ovv-stat:hover{transform: none}
/* The home on phones (2026-10-29): a taste and a door. Each video list is one row that scrolls sideways (every video is
still there), eight channels show, the figures are one strip, and how it works folds under its heading. */
@@@ -828,4 +824,3 @@ html.ov-motion .ovv-stat.is-live .ovv-dot { animation: ovv-pulse 1.6s ease-out i
.ovv-watch .ovv-actions .ovv-btn, .ovv-watch .ovv-actions details > summary.ovv-btn { min-height: 44px; padding: 0 16px; font-size: .84rem; }
.ovv-watch .ovv-actions .ovv-btn--icon { width: 44px; padding: 0; }
}
--@media (prefers-reduced-motion: reduce) { .ovv-watch .ovv-actions .ovv-btn, .ovv-watch .ovv-actions details > summary.ovv-btn, .ovv-watch .ovv-about::details-content { transition: none; animation: none; } .ovv-watch .ovv-like.ovv-like--pop i { animation: none; } }