openvibers/openvibe.design Commits
Rules: six decisions of 2026-11-10 (the menu, its motion, actions as icons, headline words, only the Pair) (#257)
Changes
@@@ -363,6 +363,24 @@ const RULES = Object.freeze([R('content-hashed-assets', 'building', 'Assets are addressed by their content, so people always get the current one.','Hashed file names, never a hand-written ?v=; a shared sibling file is busted by its own hash.','2026-11-07', 'Menus shipped but browsers kept the old files.'),++ R('button-becomes-its-tab', 'motion', 'A bar button turns into the tab it opens, and back.',++ 'The pressed button (the menu button, the bell, the picture, a balance) flies to its tab in the menu and becomes it, its picture fading into the tab\'s along one short arc; a count rides along; closing flies it home. Reduced plays it short and straight; Off removes it. A flying button stays pressable.',++ '2026-11-10', 'The owner: "when you click this button, I want it to animate into the tab it becomes. Same with the other buttons … if you click notifications, it should merge into the notifications tab."'),++ R('places-say-what-they-hold', 'navigation', 'The menu\'s places: Here, Feed, Chat, Vibe, You; Vibe holds Chat and Agents.',++ 'Messages is called Chat (on openvibe.chat, whose own tab is Chat, it stays Messages so a row never shows one word twice); the AI place is Vibe, with a two-part switch Chat · Agents. Notifications live in You, whose tab carries their red count; the bell opens You.',++ '2026-11-10', 'The owner: "instead of having this called AI as the tab, let\'s call it Vibe, and then under Vibe is Chat and Agents"; "rename this Chat"; "there should just be a notifications tab … in You … a badge … but it\'s red."'),++ R('actions-as-icons-in-the-pill', 'navigation', 'A place\'s actions are icons, not rows.',++ 'New (+) and Open in Chat (↗) are icon buttons with a label for screen readers and a tooltip; inside the menu they sit in the search pill beside the close button, so they cost no row; a floating panel keeps one slim row of them. No heading that repeats the tab\'s name.',++ '2026-11-10', 'The owner, on the Vibe list: "remove the text of Vibe conversations … the new conversation button can … move to an icon plus button that looks nice and integrated. Open in chat should be … a little button icon."'),++ R('every-site-from-the-name', 'navigation', 'A site\'s name opens its pages, and a way to every site.',++ 'The dropdown under the name lists the site\'s pages, then "All OpenVibe sites", which opens the menu scrolled past this site\'s pages to the list of sites.',++ '2026-11-10', 'The owner: "this drop-down menu should have … a way … to view all sites … past the list of pages … to the list of actual domains."'),++ R('a-sentence-finishes-with-a-doing', 'words', 'A headline that finishes a sentence takes a doing word.',++ '"Small tools that …" ends in what a tool does ("check a domain or IP address"), never in what it is; a phrase that would not finish the sentence is left out, not bent into it.',++ '2026-11-10', 'The home read "Small tools that one reputation report for a domain or IP." The owner: "the wording is kind of awkward."'),++ 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('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.'),
@@ -363,6 +363,24 @@ const RULES = Object.freeze([
@@ -363,6 +363,24 @@ const RULES = Object.freeze([
R('content-hashed-assets', 'building', 'Assets are addressed by their content, so people always get the current one.',
R('content-hashed-assets', 'building', 'Assets are addressed by their content, so people always get the current one.',
'Hashed file names, never a hand-written ?v=; a shared sibling file is busted by its own hash.',
'Hashed file names, never a hand-written ?v=; a shared sibling file is busted by its own hash.',
'2026-11-07', 'Menus shipped but browsers kept the old files.'),
'2026-11-07', 'Menus shipped but browsers kept the old files.'),
+ R('button-becomes-its-tab', 'motion', 'A bar button turns into the tab it opens, and back.',
+ 'The pressed button (the menu button, the bell, the picture, a balance) flies to its tab in the menu and becomes it, its picture fading into the tab\'s along one short arc; a count rides along; closing flies it home. Reduced plays it short and straight; Off removes it. A flying button stays pressable.',
+ '2026-11-10', 'The owner: "when you click this button, I want it to animate into the tab it becomes. Same with the other buttons … if you click notifications, it should merge into the notifications tab."'),
+ R('places-say-what-they-hold', 'navigation', 'The menu\'s places: Here, Feed, Chat, Vibe, You; Vibe holds Chat and Agents.',
+ 'Messages is called Chat (on openvibe.chat, whose own tab is Chat, it stays Messages so a row never shows one word twice); the AI place is Vibe, with a two-part switch Chat · Agents. Notifications live in You, whose tab carries their red count; the bell opens You.',
+ '2026-11-10', 'The owner: "instead of having this called AI as the tab, let\'s call it Vibe, and then under Vibe is Chat and Agents"; "rename this Chat"; "there should just be a notifications tab … in You … a badge … but it\'s red."'),
+ R('actions-as-icons-in-the-pill', 'navigation', 'A place\'s actions are icons, not rows.',
+ 'New (+) and Open in Chat (↗) are icon buttons with a label for screen readers and a tooltip; inside the menu they sit in the search pill beside the close button, so they cost no row; a floating panel keeps one slim row of them. No heading that repeats the tab\'s name.',
+ '2026-11-10', 'The owner, on the Vibe list: "remove the text of Vibe conversations … the new conversation button can … move to an icon plus button that looks nice and integrated. Open in chat should be … a little button icon."'),
+ R('every-site-from-the-name', 'navigation', 'A site\'s name opens its pages, and a way to every site.',
+ 'The dropdown under the name lists the site\'s pages, then "All OpenVibe sites", which opens the menu scrolled past this site\'s pages to the list of sites.',
+ '2026-11-10', 'The owner: "this drop-down menu should have … a way … to view all sites … past the list of pages … to the list of actual domains."'),
+ R('a-sentence-finishes-with-a-doing', 'words', 'A headline that finishes a sentence takes a doing word.',
+ '"Small tools that …" ends in what a tool does ("check a domain or IP address"), never in what it is; a phrase that would not finish the sentence is left out, not bent into it.',
+ '2026-11-10', 'The home read "Small tools that one reputation report for a domain or IP." The owner: "the wording is kind of awkward."'),
+ 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('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.'),