openvibers/openvibe.media Commits

Note the read-only paste surface is being retired (#20)

OP OpenVibers committed 3 Oct 2026 · e7d6f335b2 · 3 files, +9 −3

checks run by GitHub CI (test, test-pg) · CI ✓ 3/3 · review SHIP by DeepSeek harness

https://github.com/OpenVibers/OpenVibe.Media/pull/20

Changes

ddiff --git a/STATUS.json b/STATUS.json
iindex f959e9f..0583c5e 100644
---- a/STATUS.json
++++ b/STATUS.json
@@@ -19,7 +19,7 @@
"media.lifecycle.transition"
],
"capabilitiesRegistered": true,
-- "pastes": "OpenVibe.Community is the paste authority since 2026-09-22 (PASTES_MOVED_TO); Media's paste API is read-only and every write answers 410 pastes.moved",
++ "pastes": "OpenVibe.Community is the paste authority since 2026-09-22 (PASTES_MOVED_TO); Media's paste API is read-only and every write answers 410 pastes.moved, /p/:slug 301s to Community and Media serves screenshot bytes only (the read-only API is being retired, T10 step 2)",
"deployed": true,
"deployment": "Public at https://openvibe.media: deployed with `sudo ovhost deploy media` (restart refused while a VOD records; --wait-idle), /opt/openvibe.media, unit openvibe-media on 127.0.0.1:4100 behind the openvibe.media nginx vhost, principal media.",
"features": [
ddiff --git a/server/admin/routes.js b/server/admin/routes.js
iindex ddd66b3..3e5a938 100644
---- a/server/admin/routes.js
++++ b/server/admin/routes.js
@@@ -124,6 +124,9 @@ router.get('/', async (req, res) => {
FROM vods WHERE app_id = ?
`, [req.appId]) || {};
const clipStats = await db.get('SELECT COUNT(*) AS count FROM clips WHERE app_id = ?', [req.appId]) || {};
++ // Paste rows are frozen (pastes moved to OpenVibe.Community, 2026-09-22) and
++ // the read-only paste API is being retired (T10 step 2); the count stays
++ // while the table exists (it feeds /api/v2/me and operator stats).
const pasteStats = await db.get(`
SELECT COUNT(*) AS count,
SUM(CASE WHEN type = 'screenshot' THEN 1 ELSE 0 END) AS screenshots
ddiff --git a/server/pastes/routes.js b/server/pastes/routes.js
iindex 1fa019e..10e7d35 100644
---- a/server/pastes/routes.js
++++ b/server/pastes/routes.js
@@@ -2,8 +2,11 @@
* OpenVibe.Media — Pastes API, read-only (mounted at /api/v1/:app/pastes)
*
* OpenVibe.Community owns pastes since the 2026-09-22 cutover (PASTES_MOVED_TO).
-- * Media keeps the rows and answers reads for anything still pointed here; public
-- * pages live at /p/:slug (HTML) and /p/:slug/raw.
++ * This read-only surface is being retired (T10 step 2): nothing calls the app
++ * API any more, so the router and its GET handlers go; the `pastes` table and
++ * the screenshot leaves below stay until Pics owns the bytes. Media keeps the
++ * rows and answers reads for anything still pointed here; public pages live at
++ * /p/:slug (HTML) and /p/:slug/raw.
*
* GET / list (?limit&offset&type&search&user_id&include_unlisted&sort)
* GET /config paste limits (+ the caller's count today)