openvibers/openvibe.design Commits

Seven rules from 11-10: one window, the composer, Chat · Code · Agents, fields that search, live cards, the user card, the brand button (#263)

OP OpenVibers committed 2 days ago · b73b59e553 · 1 file, +21 −0

Changes

ddiff --git a/server/rules/register.js b/server/rules/register.js
iindex 3d5f943..a0805ee 100644
---- a/server/rules/register.js
++++ b/server/rules/register.js
@@@ -387,6 +387,27 @@ const RULES = Object.freeze([
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('the-brand-is-one-button', 'navigation', 'The mark and the name are one button.',
++ 'The bar\'s left end is one button: the Pair, the site\'s name and a chevron, 40 px tall (46 px to tap), opening the site\'s pages and then "All OpenVibe sites". A site\'s own lead button (a sidebar, back) matches the menu button on the right: its size, its corner, its stroke.',
++ '2026-11-10', 'The owner: "make it so this whole thing becomes the drop down, not … two separate buttons … especially the left sidebar button … make it kind of match the right side."'),
++ R('the-composer-does-it-all', 'products', 'The one composer does the same things everywhere.',
++ 'Files by the picker, a paste or a drop, as chips (a long paste becomes a file you can put back, where the box takes files); "/" for the site\'s commands and your own; "@" for people; voice; a draft kept until sent; your settings (what sends, voice, compact, your commands) the same on every site. A site adds to it with a mod; it never builds its own. (Its shape: one-composer.)',
++ '2026-11-10', 'The owner: "how come on this composer there\'s no file attaching system and all the other features … a better composer system unified across all sites … moddable and fully customizable."'),
++ R('chat-code-agents', 'navigation', 'Vibe holds Chat, Code and Agents, and they hand work to each other.',
++ 'The menu\'s Vibe place (and the Dock) has three parts in one row: Chat, Code (start a coding task, follow yours, stop one) and Agents. "Build it in Code" hands a chat\'s words to Code; Vibe opens again on the part it was left on.',
++ '2026-11-10', 'The owner: "you can do chat, codes, and agents all in the same place and in one area."'),
++ R('fields-that-search', 'products', 'A field that searches is a real dropdown, never a datalist.',
++ 'An input that finds things (a repository, a person, a place) opens a listbox under it (above it near the bottom): sections, the match marked, arrows and Enter, a skeleton while it reads, a word when a source fails, and "Create … on OpenVibe Git" when a name is new. Without script it is a plain input.',
++ '2026-11-10', 'The owner, on the Git URL field: "a completely custom drop-down system … async or dynamic fetching or search … create the new repository or project through this UI."'),
++ R('one-window', 'look', 'Every little interface opens in the one window.',
++ 'Dialogs, sheets and panels share one frame (head, body, foot), one motion (they grow out of what opened them), one set of keys (Escape closes the top one, the focus stays inside and goes back), a sheet on a phone that a swipe down closes, and the person\'s window style (Glass, Solid, Outline), set once for all of them.',
++ '2026-11-10', 'The owner: "a system that\'s used for all the windows [in] harmony … people can make their own or … custom … everything … feels connected … matches."'),
++ R('live-looks-live', 'look', 'A live person\'s card looks live.',
++ 'Their own frame as a soft backdrop under the card (blurred, under a scrim of the card colour so words stay readable), a LIVE pill with a beating dot, a red ring on the face; hovered, or centred on a phone, the frame drifts closer. Never a backdrop from an address that is not ours, never on an NSFW card.',
++ '2026-11-10', 'The owner: "when they\'re live … sets the background based on … their thumbnail … modern, stand out, unique."'),
++ 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('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.'),