openvibers/openvibe.design Commits
Rules: one list of sites in eight groups; a player's row never runs off the screen (#258)
Changes
@@@ -381,6 +381,12 @@ const RULES = Object.freeze([R('only-the-pair', 'look', 'The Pair is the only mark, and it does the waiting.','Every logo, favicon, app card and share image is the Pair from openvibe-shared/mark; a page at work shows the mark\'s own wait (ov-mark.js), never a generic spinner.','2026-11-10', 'The owner, with an old round V on a sign-in card: "why is there still remnants of the old logo … why isn\'t the logo animations used everywhere."'),++ R('one-list-of-sites', 'products', 'One list of sites, in eight groups of at most seven.',++ 'Watch & stream, Talk & belong, Play, Read & ask, Shop & money, Free tools, Make with AI, For developers: the menu, its folders, the footer and every home page read the same list; a site whose visits are not visits (an API, a section) is a section of another, not a tile.',++ '2026-11-10', 'The owner: "a huge cleanup and re-analysis across all sites … what\'s the most intuitive way to have everything advertised." Three groupings disagreed; usage and co-use (site-inventory, 2026-11-10) set the eight.'),++ R('player-row-never-runs-off', 'phone', 'A player\'s controls are one row that never runs off the screen.',++ 'What does not fit steps out in a fixed order (speed and picture-in-picture, then the volume slider, then the length beside the position); play, mute, captions and fullscreen always show. Phone rules sit last in a stylesheet so a later sizing block cannot win over them.',++ '2026-11-10', 'At 390 px the fullscreen button was cut off on openvibe.video: the phone rules lost to the bar\'s sizing block later in the file.'),R('cascade-in-order', 'building', 'Check a style in the order the page loads it.','A preview that appends a rule last proves nothing about a rule that loads first; measure on the real page.','2026-10-25', 'A phone rule looked right in a preview and lost to a later file in production.'),
@@ -381,6 +381,12 @@ const RULES = Object.freeze([
@@ -381,6 +381,12 @@ const RULES = Object.freeze([
R('only-the-pair', 'look', 'The Pair is the only mark, and it does the waiting.',
R('only-the-pair', 'look', 'The Pair is the only mark, and it does the waiting.',
'Every logo, favicon, app card and share image is the Pair from openvibe-shared/mark; a page at work shows the mark\'s own wait (ov-mark.js), never a generic spinner.',
'Every logo, favicon, app card and share image is the Pair from openvibe-shared/mark; a page at work shows the mark\'s own wait (ov-mark.js), never a generic spinner.',
'2026-11-10', 'The owner, with an old round V on a sign-in card: "why is there still remnants of the old logo … why isn\'t the logo animations used everywhere."'),
'2026-11-10', 'The owner, with an old round V on a sign-in card: "why is there still remnants of the old logo … why isn\'t the logo animations used everywhere."'),
+ R('one-list-of-sites', 'products', 'One list of sites, in eight groups of at most seven.',
+ 'Watch & stream, Talk & belong, Play, Read & ask, Shop & money, Free tools, Make with AI, For developers: the menu, its folders, the footer and every home page read the same list; a site whose visits are not visits (an API, a section) is a section of another, not a tile.',
+ '2026-11-10', 'The owner: "a huge cleanup and re-analysis across all sites … what\'s the most intuitive way to have everything advertised." Three groupings disagreed; usage and co-use (site-inventory, 2026-11-10) set the eight.'),
+ R('player-row-never-runs-off', 'phone', 'A player\'s controls are one row that never runs off the screen.',
+ 'What does not fit steps out in a fixed order (speed and picture-in-picture, then the volume slider, then the length beside the position); play, mute, captions and fullscreen always show. Phone rules sit last in a stylesheet so a later sizing block cannot win over them.',
+ '2026-11-10', 'At 390 px the fullscreen button was cut off on openvibe.video: the phone rules lost to the bar\'s sizing block later in the file.'),
R('cascade-in-order', 'building', 'Check a style in the order the page loads it.',
R('cascade-in-order', 'building', 'Check a style in the order the page loads it.',
'A preview that appends a rule last proves nothing about a rule that loads first; measure on the real page.',
'A preview that appends a rule last proves nothing about a rule that loads first; measure on the real page.',
'2026-10-25', 'A phone rule looked right in a preview and lost to a later file in production.'),
'2026-10-25', 'A phone rule looked right in a preview and lost to a later file in production.'),