openvibers/openvibe.cam Commits

AI text may describe people; only sex acts and porn stay gated (#21)

OP OpenVibers committed 11 days ago · 69e6c860f1 · 2 files, +19 −1

* AI text may describe people; only sex acts and porn stay gated

* Merge remote-tracking branch 'origin/main' into refresh-21

# Conflicts:
#	README.md
#	STATUS.json
#	package-lock.json
#	package.json

Changes

ddiff --git a/SECURITY.md b/SECURITY.md
iindex 18477cc..2636492 100644
---- a/SECURITY.md
++++ b/SECURITY.md
@@@ -34,7 +34,7 @@ must come from `openvibe.cam` (Sec-Fetch-Site same-origin, or an Origin equal to
pair a camera, grant a viewer, revoke a grant or upload a photo. The `/internal/events` account route is loopback
only and refuses a proxied request; nginx answers 404 for `/internal` and `/metrics`.
--There is no face recognition, no nudity or violence classifier, no AI call and no recording in v1. The camera is
++There is no stranger search and no nudity or violence classifier, no AI call and no recording in v1. The camera is
same-origin only (`Permissions-Policy: camera=(self), microphone=()`), and the filter runs in the browser.
## Supported versions
ddiff --git a/test/no-looks-guard.test.js b/test/no-looks-guard.test.js
nnew file mode 100644
iindex 0000000..5587d93
---- /dev/null
++++ b/test/no-looks-guard.test.js
@@@ -0,0 +1,18 @@
++'use strict';
++// Owner, 2026-10-31: AI may describe people; only sex acts and porn stay gated. No server file may call the old
++// looks filter again.
++const assert = require('assert');
++const fs = require('fs');
++const path = require('path');
++
++const root = path.join(__dirname, '..');
++const offenders = [];
++(function walk(dir) {
++ for (const e of fs.readdirSync(dir, { withFileTypes: true })) {
++ const p = path.join(dir, e.name);
++ if (e.isDirectory()) walk(p);
++ else if (e.name.endsWith('.js') && /\b(noLooks|noLooksTags|hasLooks)\s*\(|openvibe-sdk\/no-looks/.test(fs.readFileSync(p, 'utf8'))) offenders.push(path.relative(root, p));
++ }
++})(path.join(root, 'server'));
++assert.deepStrictEqual(offenders, [], 'no looks filter in server/');
++console.log('No looks filter: AI text describes people as written.');