openvibers/openvibe.bot Commits
Motion: Calm reduces, only Off stops (#372)
Changes
@@@ -146,7 +146,7 @@ Sitemap entries use the release commit time for these code-backed pages.- OpenVibe.Network: user and service tokens, node tokens, pairing when the authority is `network`, and identity resolution (a `@username` to a subject, and subjects to names, for the panel's People card).- OpenRestream: the WHIP ingest base (`BOT_WHIP_BASE`) devices publish to.- OpenVibe.Billing: job usage readings go to `billing.usage.record` (`BOT_BILLING_URL`; Bot mints its own Network service token for audience `openvibe.billing` with `billing.usage.record`, and `BOT_BILLING_TOKEN` overrides it); unset, they wait in `run_usage_outbox`.--- `openvibe-contracts` v0.129.0, `openvibe-sdk` v0.133.0 and `openvibe-shared` v4.179.0 (package.json).++- `openvibe-contracts` v0.129.0, `openvibe-sdk` v0.133.0 and `openvibe-shared` v4.183.0 (package.json).- Account export and deletion (ADR-033): Network grants `events.subscription.manage` (openvibe.events) for the twosubscriptions created at boot, then, last and once the release is live, `network.account.export.contribute` and`network.account.deletion.confirm` (openvibe.network).@@@ -238,5 +238,5 @@ OpenVibe.Sites no longer generates `deploy/nginx/openvibe.bot.conf` (sites.json<!-- versions:start -->- openvibe-contracts: v0.384.0- openvibe-sdk: v0.133.0--- openvibe-shared: v4.179.0++- openvibe-shared: v4.183.0<!-- versions:end -->@@@ -7,11 +7,11 @@"domain": "openvibe.bot (www -> apex; /device and /control WebSockets; /install)","contracts": "openvibe-contracts v0.384.0","sdk": "openvibe-sdk v0.133.0",-- "shared": "openvibe-shared v4.179.0",++ "shared": "openvibe-shared v4.183.0","packages": ["openvibe-contracts v0.384.0","openvibe-sdk v0.133.0",-- "openvibe-shared v4.179.0"++ "openvibe-shared v4.183.0"],"capabilities": ["bot.robot.read",@@@ -15,7 +15,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.133.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","qrcode-generator": "^2.0.4","ws": "^8.18.0"@@@ -1164,9 +1164,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",@@@ -27,7 +27,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.133.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","qrcode-generator": "^2.0.4","ws": "^8.18.0"@@@ -117,7 +117,6 @@.sd-status[data-state="paired"] .sd-dot { background: #22c55e; }.sd-status[data-state="expired"] .sd-dot, .sd-status[data-state="revoked"] .sd-dot { background: #ef4444; }@keyframes sd-pulse { 50% { opacity: .35; } }--@media (prefers-reduced-motion: reduce) { .sd-status .sd-dot { animation: none !important; } }@media (max-width: 560px) { .sd-step { padding: 56px 16px 16px; } .sd-step::before { left: 16px; top: 14px; } }/* hidden wins over .dir-btn's display (the panel link waits for a robot, the downloads for the files). */.sd [hidden] { display: none !important; }@@@ -92,7 +92,6 @@.hm .sc-code { grid-template-columns: repeat(auto-fit, minmax(min(320px, 100%), 1fr)); }@media (max-width: 520px) { .hm .sc-code pre { white-space: pre-wrap; overflow-wrap: anywhere; } .hm-term pre { font-size: 13px; } }@media (max-width: 420px) { .sc-hero, .sc-sec, .sc-cta { padding-left: 16px; padding-right: 16px; } }--@media (prefers-reduced-motion: reduce) { .hm-card, .hm-stats a, .hm-rows a { transition: none; } }/* ── The short home (2026-10-29): rails, one list of ways to connect, folds for what is read once ── */.hm .ovk-rail { margin-top: 0; }@@@ -203,7 +203,6 @@ main { padding: 1rem max(1rem, env(safe-area-inset-right)) calc(1.5rem + env(saf.widget-camera { grid-column: 1 / span 2; grid-row: span 2; align-self: start; }.widget-drive { grid-column: 3; }}--@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation: none !important; transition: none !important; } }/* ── Robots and pairing pages ───────────────────────────────────────────────────────────────────────── */.page { max-width: 44rem; }@@@ -305,7 +304,6 @@ main { padding: 1rem max(1rem, env(safe-area-inset-right)) calc(1.5rem + env(saf.kit-parts summary::-webkit-details-marker { display: none; }.kit-parts summary::before { content: ''; width: 0.45rem; height: 0.45rem; margin: 0 0.4rem 0 0.15rem; border-right: 2px solid var(--muted); border-bottom: 2px solid var(--muted); transform: rotate(-45deg); transition: transform 0.12s; }.kit-parts[open] summary::before { transform: rotate(45deg); }--@media (prefers-reduced-motion: reduce) { .kit-parts summary::before { transition: none; } }/* The owner's People card and the turn-queue strip. */.people-list { list-style: none; margin: 0 0 0.75rem; padding: 0; display: grid; grid-template-columns: minmax(0, 1fr); gap: 0.4rem; }
@@ -146,7 +146,7 @@ Sitemap entries use the release commit time for these code-backed pages.
@@ -146,7 +146,7 @@ Sitemap entries use the release commit time for these code-backed pages.
- OpenVibe.Network: user and service tokens, node tokens, pairing when the authority is `network`, and identity resolution (a `@username` to a subject, and subjects to names, for the panel's People card).
- OpenVibe.Network: user and service tokens, node tokens, pairing when the authority is `network`, and identity resolution (a `@username` to a subject, and subjects to names, for the panel's People card).
- OpenRestream: the WHIP ingest base (`BOT_WHIP_BASE`) devices publish to.
- OpenRestream: the WHIP ingest base (`BOT_WHIP_BASE`) devices publish to.
- OpenVibe.Billing: job usage readings go to `billing.usage.record` (`BOT_BILLING_URL`; Bot mints its own Network service token for audience `openvibe.billing` with `billing.usage.record`, and `BOT_BILLING_TOKEN` overrides it); unset, they wait in `run_usage_outbox`.
- OpenVibe.Billing: job usage readings go to `billing.usage.record` (`BOT_BILLING_URL`; Bot mints its own Network service token for audience `openvibe.billing` with `billing.usage.record`, and `BOT_BILLING_TOKEN` overrides it); unset, they wait in `run_usage_outbox`.
-- `openvibe-contracts` v0.129.0, `openvibe-sdk` v0.133.0 and `openvibe-shared` v4.179.0 (package.json).
+- `openvibe-contracts` v0.129.0, `openvibe-sdk` v0.133.0 and `openvibe-shared` v4.183.0 (package.json).
- Account export and deletion (ADR-033): Network grants `events.subscription.manage` (openvibe.events) for the two
- Account export and deletion (ADR-033): Network grants `events.subscription.manage` (openvibe.events) for the two
subscriptions created at boot, then, last and once the release is live, `network.account.export.contribute` and
subscriptions created at boot, then, last and once the release is live, `network.account.export.contribute` and
`network.account.deletion.confirm` (openvibe.network).
`network.account.deletion.confirm` (openvibe.network).
@@ -238,5 +238,5 @@ OpenVibe.Sites no longer generates `deploy/nginx/openvibe.bot.conf` (sites.json
@@ -238,5 +238,5 @@ OpenVibe.Sites no longer generates `deploy/nginx/openvibe.bot.conf` (sites.json
<!-- versions:start -->
<!-- versions:start -->
- openvibe-contracts: v0.384.0
- openvibe-contracts: v0.384.0
- openvibe-sdk: v0.133.0
- openvibe-sdk: v0.133.0
-- openvibe-shared: v4.179.0
+- openvibe-shared: v4.183.0
<!-- versions:end -->
<!-- versions:end -->
@@ -7,11 +7,11 @@
@@ -7,11 +7,11 @@
"domain": "openvibe.bot (www -> apex; /device and /control WebSockets; /install)",
"domain": "openvibe.bot (www -> apex; /device and /control WebSockets; /install)",
"contracts": "openvibe-contracts v0.384.0",
"contracts": "openvibe-contracts v0.384.0",
"sdk": "openvibe-sdk v0.133.0",
"sdk": "openvibe-sdk v0.133.0",
- "shared": "openvibe-shared v4.179.0",
+ "shared": "openvibe-shared v4.183.0",
"packages": [
"packages": [
"openvibe-contracts v0.384.0",
"openvibe-contracts v0.384.0",
"openvibe-sdk v0.133.0",
"openvibe-sdk v0.133.0",
- "openvibe-shared v4.179.0"
+ "openvibe-shared v4.183.0"
],
],
"capabilities": [
"capabilities": [
"bot.robot.read",
"bot.robot.read",
@@ -15,7 +15,7 @@
@@ -15,7 +15,7 @@
"iovalkey": "^0.4.0",
"iovalkey": "^0.4.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.384.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.133.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.133.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",
"pg": "^8.23.0",
"qrcode-generator": "^2.0.4",
"qrcode-generator": "^2.0.4",
"ws": "^8.18.0"
"ws": "^8.18.0"
@@ -1164,9 +1164,9 @@
@@ -1164,9 +1164,9 @@
}
}
},
},
"node_modules/openvibe-shared": {
"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",
"license": "MIT",
"dependencies": {
"dependencies": {
"jsonwebtoken": "^9.0.0",
"jsonwebtoken": "^9.0.0",
@@ -27,7 +27,7 @@
@@ -27,7 +27,7 @@
"iovalkey": "^0.4.0",
"iovalkey": "^0.4.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.384.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.133.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.133.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",
"pg": "^8.23.0",
"qrcode-generator": "^2.0.4",
"qrcode-generator": "^2.0.4",
"ws": "^8.18.0"
"ws": "^8.18.0"
@@ -117,7 +117,6 @@
@@ -117,7 +117,6 @@
.sd-status[data-state="paired"] .sd-dot { background: #22c55e; }
.sd-status[data-state="paired"] .sd-dot { background: #22c55e; }
.sd-status[data-state="expired"] .sd-dot, .sd-status[data-state="revoked"] .sd-dot { background: #ef4444; }
.sd-status[data-state="expired"] .sd-dot, .sd-status[data-state="revoked"] .sd-dot { background: #ef4444; }
@keyframes sd-pulse { 50% { opacity: .35; } }
@keyframes sd-pulse { 50% { opacity: .35; } }
-@media (prefers-reduced-motion: reduce) { .sd-status .sd-dot { animation: none !important; } }
@media (max-width: 560px) { .sd-step { padding: 56px 16px 16px; } .sd-step::before { left: 16px; top: 14px; } }
@media (max-width: 560px) { .sd-step { padding: 56px 16px 16px; } .sd-step::before { left: 16px; top: 14px; } }
/* hidden wins over .dir-btn's display (the panel link waits for a robot, the downloads for the files). */
/* hidden wins over .dir-btn's display (the panel link waits for a robot, the downloads for the files). */
.sd [hidden] { display: none !important; }
.sd [hidden] { display: none !important; }
@@ -92,7 +92,6 @@
@@ -92,7 +92,6 @@
.hm .sc-code { grid-template-columns: repeat(auto-fit, minmax(min(320px, 100%), 1fr)); }
.hm .sc-code { grid-template-columns: repeat(auto-fit, minmax(min(320px, 100%), 1fr)); }
@media (max-width: 520px) { .hm .sc-code pre { white-space: pre-wrap; overflow-wrap: anywhere; } .hm-term pre { font-size: 13px; } }
@media (max-width: 520px) { .hm .sc-code pre { white-space: pre-wrap; overflow-wrap: anywhere; } .hm-term pre { font-size: 13px; } }
@media (max-width: 420px) { .sc-hero, .sc-sec, .sc-cta { padding-left: 16px; padding-right: 16px; } }
@media (max-width: 420px) { .sc-hero, .sc-sec, .sc-cta { padding-left: 16px; padding-right: 16px; } }
-@media (prefers-reduced-motion: reduce) { .hm-card, .hm-stats a, .hm-rows a { transition: none; } }
/* ── The short home (2026-10-29): rails, one list of ways to connect, folds for what is read once ── */
/* ── The short home (2026-10-29): rails, one list of ways to connect, folds for what is read once ── */
.hm .ovk-rail { margin-top: 0; }
.hm .ovk-rail { margin-top: 0; }
@@ -203,7 +203,6 @@ main { padding: 1rem max(1rem, env(safe-area-inset-right)) calc(1.5rem + env(saf
@@ -203,7 +203,6 @@ main { padding: 1rem max(1rem, env(safe-area-inset-right)) calc(1.5rem + env(saf
.widget-camera { grid-column: 1 / span 2; grid-row: span 2; align-self: start; }
.widget-camera { grid-column: 1 / span 2; grid-row: span 2; align-self: start; }
.widget-drive { grid-column: 3; }
.widget-drive { grid-column: 3; }
}
}
-@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation: none !important; transition: none !important; } }
/* ── Robots and pairing pages ───────────────────────────────────────────────────────────────────────── */
/* ── Robots and pairing pages ───────────────────────────────────────────────────────────────────────── */
.page { max-width: 44rem; }
.page { max-width: 44rem; }
@@ -305,7 +304,6 @@ main { padding: 1rem max(1rem, env(safe-area-inset-right)) calc(1.5rem + env(saf
@@ -305,7 +304,6 @@ main { padding: 1rem max(1rem, env(safe-area-inset-right)) calc(1.5rem + env(saf
.kit-parts summary::-webkit-details-marker { display: none; }
.kit-parts summary::-webkit-details-marker { display: none; }
.kit-parts summary::before { content: ''; width: 0.45rem; height: 0.45rem; margin: 0 0.4rem 0 0.15rem; border-right: 2px solid var(--muted); border-bottom: 2px solid var(--muted); transform: rotate(-45deg); transition: transform 0.12s; }
.kit-parts summary::before { content: ''; width: 0.45rem; height: 0.45rem; margin: 0 0.4rem 0 0.15rem; border-right: 2px solid var(--muted); border-bottom: 2px solid var(--muted); transform: rotate(-45deg); transition: transform 0.12s; }
.kit-parts[open] summary::before { transform: rotate(45deg); }
.kit-parts[open] summary::before { transform: rotate(45deg); }
-@media (prefers-reduced-motion: reduce) { .kit-parts summary::before { transition: none; } }
/* The owner's People card and the turn-queue strip. */
/* The owner's People card and the turn-queue strip. */
.people-list { list-style: none; margin: 0 0 0.75rem; padding: 0; display: grid; grid-template-columns: minmax(0, 1fr); gap: 0.4rem; }
.people-list { list-style: none; margin: 0 0 0.75rem; padding: 0; display: grid; grid-template-columns: minmax(0, 1fr); gap: 0.4rem; }