openvibers/openvibe.design Commits

Four rules: buttons show their state, section heads in one row, controls where you put them, the chat reaches the player (#268)

OP OpenVibers committed 2 days ago · afef4cbc93 · 1 file, +12 −0

Changes

ddiff --git a/server/rules/register.js b/server/rules/register.js
iindex a0805ee..592870d 100644
---- a/server/rules/register.js
++++ b/server/rules/register.js
@@@ -408,6 +408,18 @@ const RULES = Object.freeze([
R('the-user-card', 'products', 'A person is one card on every site.',
'Pressing a face or an @mention opens their card beside it (a sheet on a phone): a banner from their picture, the live ring and Live now first when they stream, level, streak, badges and followers as chips, the sites they used this week, then Profile and Channel.',
'2026-11-10', 'The owner: "one user card … across all sites … level … live streams … like Discord, but way better."'),
++ R('buttons-show-state', 'look', 'A button says what it does and shows what is happening.',
++ 'Its kind is its importance: hero for the one thing a page is for, primary, soft for a second choice that matters, quiet, ghost, danger, live. It shows its state on itself: busy keeps its words and adds the wait, then a check or a shake and red; a count badge, a status dot, a toggle\'s fill, a progress fill. The one next step on a screen may glow now and then (attention) until it is pressed; destructive ones can ask for a press and hold. Every motion follows the motion setting. kit.button() and OpenVibeKitWeb.busy().',
++ '2026-11-11', 'The owner: "improve our buttons across the site … animations and effects … indicators or statuses … idle animation … more important buttons … more intuitive … shared across everything through openvibe.design."'),
++ R('section-heads-one-row', 'look', 'A section\'s head is one row: its icon, its name, its count, its tools.',
++ 'The icon in a tinted tile, the name, the count as a quiet pill; the section\'s tools (filter, order, select, open elsewhere, view all) as one family of buttons in the same row: on a wide screen each says what it is (a picker says the value it holds), on a phone the icon carries it (the order\'s icon is the order, a filter shows a dot while it filters). Never a second row of buttons under the heading.',
++ '2026-11-11', 'The owner, on a channel\'s Videos: "buttons need to be moved to where the title bar is … use icons … add an icon for the header … better font sizing."'),
++ R('controls-where-you-put-them', 'products', 'Controls go where the viewer puts them, and always come back.',
++ 'A robot\'s (or any device\'s) controls on a stream page have one switch of places: on the video, a row under it, the full panel, in a window you move and size, hidden; the choice is kept per channel and device. Hidden keeps the switch in view, so nothing is lost. A locked control takes the controls when pressed (it asks, as Drive does). On a phone the full panel shares the chat\'s sheet as a Robot tab.',
++ '2026-11-11', 'Maticus: "i clicked hide on the controls … i don\'t see how to unhide them"; and the controls "don\'t seem to work" (they were waiting for Drive).'),
++ R('chat-reaches-the-player', 'look', 'On a phone the stream\'s chat reaches the player.',
++ 'Upright, while live, the chat is one sheet right under the player with one header row (Chat, Robot when there is one, its tools, the fold). A grip on its top edge (or the arrow keys on it) sets its height and the channel line shows in the room it leaves; most of the way down folds it to a round chat button in the corner.',
++ '2026-11-11', 'The owner: "the chat should actually go all the way up to the video … then it can be collapsed … a little circle in the corner … resize how tall the chat is."'),
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.'),