openvibers/openvibe.design Commits

Rules 128-135: menus escape their box, motion keeps its look and lands, views keep their own rules (#282)

OP OpenVibers committed 1 days ago · 58c6185e3e · 1 file, +24 −0

* Rules 128-135: menus escape their box, motion keeps its look and lands, views keep their own rules

From 11-11: the paste-card menu cut off by a rail mask (128), the menu button
flying whiter than idle (129) and the landings the owner asked for (130), the
robot overlay broken by a full-panel redesign and a lock badge (131, 132), a
data: lock refused by the CSP (133), the paste-kind chips (134), and the owner
direction that every set of controls can be remade by its person, by hand or
with OpenVibe AI (135).

* Run the checks

Changes

ddiff --git a/server/rules/register.js b/server/rules/register.js
iindex ba61943..10492e9 100644
---- a/server/rules/register.js
++++ b/server/rules/register.js
@@@ -475,6 +475,30 @@ const RULES = Object.freeze([
R("defaults-follow-the-choice", "data", "A form's defaults follow what the person already chose.",
"When one field narrows another (a kind narrows the engines, a site narrows the categories), the defaults come from the narrowed set: Web picks two web engines, never two picture engines that happened to come first.",
'2026-11-11', "Exchange's compare form picked Openverse and Wikimedia Commons with Web selected."),
++ R("menus-escape-their-box", "navigation", "A menu opens above everything, never inside the box that holds it.",
++ "A menu, popover or tip that starts inside a scroller, a rail, a card or anything with a mask, a clip or hidden overflow opens in the browser's top layer (the Popover API; kit-web.js does it for a rail's ⋯ menu) and is placed under its button. No card or rail it came from may cut it.",
++ '2026-11-11', "The ⋯ menu on Community's paste cards was cut off: the rail's edge fade is a mask, and it hid even a fixed menu."),
++ R("motion-copies-keep-their-look", "motion", "What moves looks exactly like what it came from.",
++ "A copy that flies, morphs or lands (the menu button into its tab, a card into a sheet) carries the source's own computed colour, size and state from before the press, and turns into the target's on the way. It never falls back to a default colour once it leaves its own CSS.",
++ '2026-11-11', "The menu button flew whiter than it was idle: the copy lost the navbar's colour rules and caught the pressed state."),
++ R("arrivals-land", "motion", "A moving thing lands.",
++ "Motion that carries something somewhere ends with a landing the eye can read: a short give (a squash that settles) and a ring at the target, and the same on the way back. Calm keeps the path, short, without trail or glow; only Off removes it.",
++ '2026-11-11', 'The owner: "added animations and effects as well when it lands where it should, and improve both the open and close transitions."'),
++ R("variants-keep-their-own-rules", "building", "A redesign names the views it changes.",
++ "A change to one view (the full robot panel) is scoped to that view in its selectors; the overlay, the one-row controls and every embed keep their own rules unless the change is meant for them too, and each view is checked at its own sizes before it ships.",
++ '2026-11-11', "Controls v2 styled every #panel stick, so the overlay's joystick drew at the full panel's size. Maticus: \"the previous size and position was perfect.\""),
++ R("states-never-move-controls", "building", "A state never moves a control.",
++ "A badge, a lock, a hover or a pressed state is drawn on top of a control (a pseudo-element, an outline, its own layer). It never changes the control's position, size or layout: a placed control stays where it was put.",
++ '2026-11-11', "A lock badge set position: relative on the overlay's stick and slider and dropped them to the top of the stream."),
++ R("assets-are-files-under-csp", "building", "A picture in a page's CSS is a file from its own origin.",
++ "Where a page runs a strict content policy (default-src 'self'), an icon or picture is a same-origin file, never a data: URL the policy refuses. A test keeps data: out of those stylesheets.",
++ '2026-11-11', "The robot panel's lock badge was a data: image and drew as a bare blue dot."),
++ R("filters-say-what-they-hold", "look", "A filter chip shows an icon, its name and its count.",
++ "Quick filters are chips with an icon in the kind's own tint, the name, and the count beside it in a quieter weight, never one run of text (\"Images 200\"). A kind the system could not name is \"Other\", not the picker's word for guessing.",
++ '2026-11-11', 'The owner, on the paste kinds under Community\'s newest: "improve design and add icon."'),
++ R("people-make-their-own-controls", "agents", "Every set of controls can be remade by the person using it.",
++ "Controls and panels are built from parts a person can move, resize, restyle, hide and add, by hand or by asking OpenVibe's AI (\"put Stop on the left, make the stick bigger\"). The result is theirs, kept with their account, shareable as a layout others can use, and one tap brings back the default. A layout only arranges and styles the controls that exist; it never adds a power the person does not have.",
++ '2026-11-11', 'The owner: "All controls and other interfaces should use a system where the user can make their own completely how they want it using our AI systems."'),
]);
// The register's order is the rule's number: a person can cite "rule 7" and a link can carry it.