openvibers/openvibe.exchange Commits
Exchange: the floor says plainly that the second line holds for fiction and incest (#83)
Changes
@@@ -225,7 +225,7 @@ ${kit.chips({ name: 'models', label: 'Compare up to three models', options: mode}}}-- const empty = `<div class="ovt-welcome"><h2>Every model, one chat</h2><p>Pick one model, or up to three to compare side by side. The floor applies always: no sexual content involving minors, no non-consensual sexual content of real people, no help with mass harm.</p></div>`;++ const empty = `<div class="ovt-welcome"><h2>Every model, one chat</h2><p>Pick one model, or up to three to compare side by side. The floor applies always: no sexual content involving minors, no non-consensual sexual content (fiction included) and no incest, no help with mass harm.</p></div>`;return page(req, res, {title: chat ? chat.title : 'Chat', index: false,class: 'ex-chat', app: true,@@@ -429,9 +429,9 @@ ${panel({ title: 'How to use it', body: '<p class="ex-prose">Pick an uncensoredfunction floorText() {const body = `<ul class="ex-list ex-floor"><li>No sexual content involving minors.</li>--<li>No non-consensual sexual content of real people.</li>++<li>No non-consensual sexual content (fiction included), and no incest.</li><li>No help with weapons of mass harm or attacks on others.</li>--</ul><p class="ex-prose">A breach ends the account. This is not a suggestion a model may talk its way past; it is the condition of being here.</p>`;++</ul><p class="ex-prose">Non-consensual sexual content (fiction included) and incest are refused, because payment providers and hosts ban them.</p><p class="ex-prose">A breach ends the account. This is not a suggestion a model may talk its way past; it is the condition of being here.</p>`;return `<div class="ex-floor-box">${body}</div>`;}@@@ -86,8 +86,10 @@ const { createFakeAi, downAi } = require('./helpers/ai');assert.strictEqual(r.status, 200);assert.ok(r.text.includes('Sign in with OpenVibe'), 'signed out: sign in first');assert.ok(r.text.includes('No sexual content involving minors'));-- assert.ok(r.text.includes('No non-consensual sexual content of real people'));++ assert.ok(r.text.includes('No non-consensual sexual content (fiction included), and no incest'));assert.ok(r.text.includes('No help with weapons of mass harm'));++ // The policy says plainly why the second line is not negotiable.++ assert.ok(r.text.includes('Non-consensual sexual content (fiction included) and incest are refused, because payment providers and hosts ban them.'));});await check('AI in OpenVibe: which product runs which model, and the daily cost', async () => {
@@ -225,7 +225,7 @@ ${kit.chips({ name: 'models', label: 'Compare up to three models', options: mode
@@ -225,7 +225,7 @@ ${kit.chips({ name: 'models', label: 'Compare up to three models', options: mode
}
}
}
}
}
}
- const empty = `<div class="ovt-welcome"><h2>Every model, one chat</h2><p>Pick one model, or up to three to compare side by side. The floor applies always: no sexual content involving minors, no non-consensual sexual content of real people, no help with mass harm.</p></div>`;
+ const empty = `<div class="ovt-welcome"><h2>Every model, one chat</h2><p>Pick one model, or up to three to compare side by side. The floor applies always: no sexual content involving minors, no non-consensual sexual content (fiction included) and no incest, no help with mass harm.</p></div>`;
return page(req, res, {
return page(req, res, {
title: chat ? chat.title : 'Chat', index: false,
title: chat ? chat.title : 'Chat', index: false,
class: 'ex-chat', app: true,
class: 'ex-chat', app: true,
@@ -429,9 +429,9 @@ ${panel({ title: 'How to use it', body: '<p class="ex-prose">Pick an uncensored
@@ -429,9 +429,9 @@ ${panel({ title: 'How to use it', body: '<p class="ex-prose">Pick an uncensored
function floorText() {
function floorText() {
const body = `<ul class="ex-list ex-floor">
const body = `<ul class="ex-list ex-floor">
<li>No sexual content involving minors.</li>
<li>No sexual content involving minors.</li>
-<li>No non-consensual sexual content of real people.</li>
+<li>No non-consensual sexual content (fiction included), and no incest.</li>
<li>No help with weapons of mass harm or attacks on others.</li>
<li>No help with weapons of mass harm or attacks on others.</li>
-</ul><p class="ex-prose">A breach ends the account. This is not a suggestion a model may talk its way past; it is the condition of being here.</p>`;
+</ul><p class="ex-prose">Non-consensual sexual content (fiction included) and incest are refused, because payment providers and hosts ban them.</p><p class="ex-prose">A breach ends the account. This is not a suggestion a model may talk its way past; it is the condition of being here.</p>`;
return `<div class="ex-floor-box">${body}</div>`;
return `<div class="ex-floor-box">${body}</div>`;
}
}
@@ -86,8 +86,10 @@ const { createFakeAi, downAi } = require('./helpers/ai');
@@ -86,8 +86,10 @@ const { createFakeAi, downAi } = require('./helpers/ai');
assert.strictEqual(r.status, 200);
assert.strictEqual(r.status, 200);
assert.ok(r.text.includes('Sign in with OpenVibe'), 'signed out: sign in first');
assert.ok(r.text.includes('Sign in with OpenVibe'), 'signed out: sign in first');
assert.ok(r.text.includes('No sexual content involving minors'));
assert.ok(r.text.includes('No sexual content involving minors'));
- assert.ok(r.text.includes('No non-consensual sexual content of real people'));
+ assert.ok(r.text.includes('No non-consensual sexual content (fiction included), and no incest'));
assert.ok(r.text.includes('No help with weapons of mass harm'));
assert.ok(r.text.includes('No help with weapons of mass harm'));
+ // The policy says plainly why the second line is not negotiable.
+ assert.ok(r.text.includes('Non-consensual sexual content (fiction included) and incest are refused, because payment providers and hosts ban them.'));
});
});
await check('AI in OpenVibe: which product runs which model, and the daily cost', async () => {
await check('AI in OpenVibe: which product runs which model, and the daily cost', async () => {