openvibers/openvibe.wiki Commits
Home: a taste and a door on phones (#150)
Changes
@@@ -161,3 +161,19 @@ main .wk-h-group h3 { display: flex; flex-wrap: wrap; align-items: baseline; gap@media (max-width: 640px) { .wk-content .ov-media { float: none; width: 100%; margin: 8px 0 12px; } }.wk-vibe-panel .wk-h-stats { margin-top: 14px; }.wk-vibe-ideas { margin: 6px 0 0; font-size: 13.5px; color: var(--wk-muted); }++++/* Phones (2026-10-29): a taste and a door. Each group of the official wiki is one row that scrolls sideways (every page++ is still there), three most-linked pages and five recent revisions show (each list is a link away). */++.wk-h-fold { border: 1px solid var(--border, #1f2d47); border-radius: 14px; background: var(--bg-card, #131c2e); }++.wk-h-fold > summary { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 48px; padding: 0 16px; cursor: pointer; font-weight: 700; list-style: none; }++.wk-h-fold > summary::-webkit-details-marker { display: none; }++.wk-h-fold > summary span { color: var(--text-muted, #7386a3); font-weight: 600; font-size: .86rem; text-align: right; }++.wk-h-fold > summary:focus-visible { outline: 2px solid var(--accent, #3b82f6); outline-offset: -2px; border-radius: 14px; }++.wk-h-fold .sc-sec { margin: 0; max-width: none; padding: 0 16px 16px; }++@media (max-width: 599px) {++ .wk-h-group .sc-grid { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-inline: 16px; scrollbar-width: none; gap: 10px; margin-left: -16px; margin-right: -16px; padding: 0 16px 4px; }++ .wk-h-group .sc-grid::-webkit-scrollbar { display: none; }++ .wk-h-group .sc-grid > * { flex: 0 0 46%; min-width: 0; scroll-snap-align: start; }++ .wk-h-rank > li:nth-child(n+4), .wk-recent > li:nth-child(n+6) { display: none; }++ .wk-h-fold > summary span { display: none; }++}@@@ -124,14 +124,6 @@ ${stats && stats.pages ? html`<dl class="wk-h-stats">${tiles.slice(0, 4).map(([k{ title: 'Publish and keep going', text: 'Publish now or schedule it. Every revision stays in the history, ready to compare or restore.' },],});-- const links = [-- { href: '/recent', title: 'Recent changes', text: 'Every public page, newest revision first.' },-- { href: '/search', title: 'Search', text: 'Titles and text across the wikis you can read.' },-- firstOfficial ? { href: `/s/${e(firstOfficial.slug)}`, title: `The ${firstOfficial.name} page tree`, text: 'Every page of the official wiki, nested.' } : null,-- { href: start.href, title: 'Start a wiki', text: 'Public, members-only, VIP or private.' },-- { href: '/feed.atom', title: 'Atom and JSON feeds', text: 'Follow new revisions in any reader.' },-- { href: '/updates', title: 'What shipped', text: 'Every change to OpenVibe.Wiki itself.' },-- ].filter(Boolean);return html`${raw(showcase.hero({eyebrow: 'OpenVibe.Wiki',title: 'Any topic.', accent: 'A whole wiki.',@@@ -149,7 +141,7 @@ ${recent.length ? html`<section class="sc-sec" aria-labelledby="wk-recent-h"><h2<p class="wk-more"><a href="/recent">All recent changes</a> · <a href="/feed.atom">Atom</a> · <a href="/feed.json">JSON Feed</a></p></section>` : ''}${unshelved.length ? html`<section class="sc-sec" aria-labelledby="wk-official"><h2 id="wk-official">Official wikis</h2><ul class="wk-spaces">${unshelved.map(card)}</ul></section>` : ''}${user.length ? html`<section class="sc-sec" aria-labelledby="wk-community"><h2 id="wk-community">Community wikis</h2><ul class="wk-spaces">${user.map(card)}</ul></section>` : ''}--${raw(showcase.features({++<div class="sc-sec"><details class="wk-h-fold"><summary>Start a wiki of your own<span>what it gets, how a page comes together</span></summary>${raw(showcase.features({title: 'What a wiki gets',items: [{ icon: 'ov:wiki', title: 'Page trees', text: 'Pages nest under pages, so a wiki reads like a book.' },@@@ -160,11 +152,9 @@ ${raw(showcase.features({{ icon: 'ov:search', title: 'Search and feeds', text: 'Full-text search across the wikis you can see, and Atom and JSON feeds.' },],}))}--${raw(steps)}++${raw(steps)}</details></div><section class="sc-sec wk-h-faq" aria-labelledby="wk-faq-h"><h2 id="wk-faq-h">Questions</h2>${FAQ.map((f) => html`<details><summary>${f.q}</summary><p>${f.a}</p></details>`)}</section>--<section class="sc-sec" aria-labelledby="wk-links-h"><h2 id="wk-links-h">Find your way around</h2><ul class="wk-h-links">${links.map((l) => html`<li><a href="${l.href}"><b>${l.title}</b><small>${l.text}</small></a></li>`)}</ul></section>--${raw(showcase.network({ service: 'wiki' }))}--${raw(showcase.cta({ title: 'Start a wiki of your own', text: 'A team handbook, a game guide, a project\'s docs: write it with history and sources from the first page.', actions: [start] }))}`;++${raw(showcase.network({ service: 'wiki' }))}`;}// ── "Vibe a wiki" (server/wiki/vibe.js) ─────────────────────@@@ -19,7 +19,7 @@ const BUDGETS = {jsBrotliKB: 76, // 74.2 openvibe-shared 4.25.0: the menu's orb beside the brand, both balances on phones, messages, the account sheet on phones and the bar stepping away on phones; 70.5 Shared 4.17.0: OpenCoins and Vibes chips (wallet: true) in the navbar; 67.9 openvibe-shared 4.15 footer: the compact footer opens into the whole one, and the pulse line; 65.3 Shared 4.12.0: the light/dark switch, the seasonal mark and the theme pairs; 61.7 with shared 4.11.0's seasonal navbar; 59.1 with openvibe-shared 4.4.0 (every site in the launcher, 2026-10-17); 56.3 (45.6 before web-runtime.js)cssFiles: 2, // 1cssRawKB: 41, // 36.2 openvibe-shared 4.26.1 (hero visual); 30.7 with Shared 4.13.0 (2026-10-26: account links); 23.5 on 2026-10-22 (the home's numbers, shelves by site group, ranked pages, questions and links); 19.1 (wiki.css + the cached /shared/showcase.css; 2026-10-15 the home's space cards, shelf and recent list)-- cssBrotliKB: 8.3, // 6.6–6.7 with Shared 4.13.0; raised from 8 for openvibe-shared v4.39.0 (+1.5 KB raw of kit/room/showcase CSS); measured 8.3++ cssBrotliKB: 8.8, // 8.6 the home's phone rows and fold (2026-10-29); 6.6–6.7 with Shared 4.13.0; raised from 8 for openvibe-shared v4.39.0 (+1.5 KB raw of kit/room/showcase CSS); measured 8.3externalFiles: 1, // 0};
@@ -161,3 +161,19 @@ main .wk-h-group h3 { display: flex; flex-wrap: wrap; align-items: baseline; gap
@@ -161,3 +161,19 @@ main .wk-h-group h3 { display: flex; flex-wrap: wrap; align-items: baseline; gap
@media (max-width: 640px) { .wk-content .ov-media { float: none; width: 100%; margin: 8px 0 12px; } }
@media (max-width: 640px) { .wk-content .ov-media { float: none; width: 100%; margin: 8px 0 12px; } }
.wk-vibe-panel .wk-h-stats { margin-top: 14px; }
.wk-vibe-panel .wk-h-stats { margin-top: 14px; }
.wk-vibe-ideas { margin: 6px 0 0; font-size: 13.5px; color: var(--wk-muted); }
.wk-vibe-ideas { margin: 6px 0 0; font-size: 13.5px; color: var(--wk-muted); }
+
+/* Phones (2026-10-29): a taste and a door. Each group of the official wiki is one row that scrolls sideways (every page
+ is still there), three most-linked pages and five recent revisions show (each list is a link away). */
+.wk-h-fold { border: 1px solid var(--border, #1f2d47); border-radius: 14px; background: var(--bg-card, #131c2e); }
+.wk-h-fold > summary { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 48px; padding: 0 16px; cursor: pointer; font-weight: 700; list-style: none; }
+.wk-h-fold > summary::-webkit-details-marker { display: none; }
+.wk-h-fold > summary span { color: var(--text-muted, #7386a3); font-weight: 600; font-size: .86rem; text-align: right; }
+.wk-h-fold > summary:focus-visible { outline: 2px solid var(--accent, #3b82f6); outline-offset: -2px; border-radius: 14px; }
+.wk-h-fold .sc-sec { margin: 0; max-width: none; padding: 0 16px 16px; }
+@media (max-width: 599px) {
+ .wk-h-group .sc-grid { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-inline: 16px; scrollbar-width: none; gap: 10px; margin-left: -16px; margin-right: -16px; padding: 0 16px 4px; }
+ .wk-h-group .sc-grid::-webkit-scrollbar { display: none; }
+ .wk-h-group .sc-grid > * { flex: 0 0 46%; min-width: 0; scroll-snap-align: start; }
+ .wk-h-rank > li:nth-child(n+4), .wk-recent > li:nth-child(n+6) { display: none; }
+ .wk-h-fold > summary span { display: none; }
+}
@@ -124,14 +124,6 @@ ${stats && stats.pages ? html`<dl class="wk-h-stats">${tiles.slice(0, 4).map(([k
@@ -124,14 +124,6 @@ ${stats && stats.pages ? html`<dl class="wk-h-stats">${tiles.slice(0, 4).map(([k
{ title: 'Publish and keep going', text: 'Publish now or schedule it. Every revision stays in the history, ready to compare or restore.' },
{ title: 'Publish and keep going', text: 'Publish now or schedule it. Every revision stays in the history, ready to compare or restore.' },
],
],
});
});
- const links = [
- { href: '/recent', title: 'Recent changes', text: 'Every public page, newest revision first.' },
- { href: '/search', title: 'Search', text: 'Titles and text across the wikis you can read.' },
- firstOfficial ? { href: `/s/${e(firstOfficial.slug)}`, title: `The ${firstOfficial.name} page tree`, text: 'Every page of the official wiki, nested.' } : null,
- { href: start.href, title: 'Start a wiki', text: 'Public, members-only, VIP or private.' },
- { href: '/feed.atom', title: 'Atom and JSON feeds', text: 'Follow new revisions in any reader.' },
- { href: '/updates', title: 'What shipped', text: 'Every change to OpenVibe.Wiki itself.' },
- ].filter(Boolean);
return html`${raw(showcase.hero({
return html`${raw(showcase.hero({
eyebrow: 'OpenVibe.Wiki',
eyebrow: 'OpenVibe.Wiki',
title: 'Any topic.', accent: 'A whole wiki.',
title: 'Any topic.', accent: 'A whole wiki.',
@@ -149,7 +141,7 @@ ${recent.length ? html`<section class="sc-sec" aria-labelledby="wk-recent-h"><h2
@@ -149,7 +141,7 @@ ${recent.length ? html`<section class="sc-sec" aria-labelledby="wk-recent-h"><h2
<p class="wk-more"><a href="/recent">All recent changes</a> · <a href="/feed.atom">Atom</a> · <a href="/feed.json">JSON Feed</a></p></section>` : ''}
<p class="wk-more"><a href="/recent">All recent changes</a> · <a href="/feed.atom">Atom</a> · <a href="/feed.json">JSON Feed</a></p></section>` : ''}
${unshelved.length ? html`<section class="sc-sec" aria-labelledby="wk-official"><h2 id="wk-official">Official wikis</h2><ul class="wk-spaces">${unshelved.map(card)}</ul></section>` : ''}
${unshelved.length ? html`<section class="sc-sec" aria-labelledby="wk-official"><h2 id="wk-official">Official wikis</h2><ul class="wk-spaces">${unshelved.map(card)}</ul></section>` : ''}
${user.length ? html`<section class="sc-sec" aria-labelledby="wk-community"><h2 id="wk-community">Community wikis</h2><ul class="wk-spaces">${user.map(card)}</ul></section>` : ''}
${user.length ? html`<section class="sc-sec" aria-labelledby="wk-community"><h2 id="wk-community">Community wikis</h2><ul class="wk-spaces">${user.map(card)}</ul></section>` : ''}
-${raw(showcase.features({
+<div class="sc-sec"><details class="wk-h-fold"><summary>Start a wiki of your own<span>what it gets, how a page comes together</span></summary>${raw(showcase.features({
title: 'What a wiki gets',
title: 'What a wiki gets',
items: [
items: [
{ icon: 'ov:wiki', title: 'Page trees', text: 'Pages nest under pages, so a wiki reads like a book.' },
{ icon: 'ov:wiki', title: 'Page trees', text: 'Pages nest under pages, so a wiki reads like a book.' },
@@ -160,11 +152,9 @@ ${raw(showcase.features({
@@ -160,11 +152,9 @@ ${raw(showcase.features({
{ icon: 'ov:search', title: 'Search and feeds', text: 'Full-text search across the wikis you can see, and Atom and JSON feeds.' },
{ icon: 'ov:search', title: 'Search and feeds', text: 'Full-text search across the wikis you can see, and Atom and JSON feeds.' },
],
],
}))}
}))}
-${raw(steps)}
+${raw(steps)}</details></div>
<section class="sc-sec wk-h-faq" aria-labelledby="wk-faq-h"><h2 id="wk-faq-h">Questions</h2>${FAQ.map((f) => html`<details><summary>${f.q}</summary><p>${f.a}</p></details>`)}</section>
<section class="sc-sec wk-h-faq" aria-labelledby="wk-faq-h"><h2 id="wk-faq-h">Questions</h2>${FAQ.map((f) => html`<details><summary>${f.q}</summary><p>${f.a}</p></details>`)}</section>
-<section class="sc-sec" aria-labelledby="wk-links-h"><h2 id="wk-links-h">Find your way around</h2><ul class="wk-h-links">${links.map((l) => html`<li><a href="${l.href}"><b>${l.title}</b><small>${l.text}</small></a></li>`)}</ul></section>
-${raw(showcase.network({ service: 'wiki' }))}
-${raw(showcase.cta({ title: 'Start a wiki of your own', text: 'A team handbook, a game guide, a project\'s docs: write it with history and sources from the first page.', actions: [start] }))}`;
+${raw(showcase.network({ service: 'wiki' }))}`;
}
}
// ── "Vibe a wiki" (server/wiki/vibe.js) ─────────────────────
// ── "Vibe a wiki" (server/wiki/vibe.js) ─────────────────────
@@ -19,7 +19,7 @@ const BUDGETS = {
@@ -19,7 +19,7 @@ const BUDGETS = {
jsBrotliKB: 76, // 74.2 openvibe-shared 4.25.0: the menu's orb beside the brand, both balances on phones, messages, the account sheet on phones and the bar stepping away on phones; 70.5 Shared 4.17.0: OpenCoins and Vibes chips (wallet: true) in the navbar; 67.9 openvibe-shared 4.15 footer: the compact footer opens into the whole one, and the pulse line; 65.3 Shared 4.12.0: the light/dark switch, the seasonal mark and the theme pairs; 61.7 with shared 4.11.0's seasonal navbar; 59.1 with openvibe-shared 4.4.0 (every site in the launcher, 2026-10-17); 56.3 (45.6 before web-runtime.js)
jsBrotliKB: 76, // 74.2 openvibe-shared 4.25.0: the menu's orb beside the brand, both balances on phones, messages, the account sheet on phones and the bar stepping away on phones; 70.5 Shared 4.17.0: OpenCoins and Vibes chips (wallet: true) in the navbar; 67.9 openvibe-shared 4.15 footer: the compact footer opens into the whole one, and the pulse line; 65.3 Shared 4.12.0: the light/dark switch, the seasonal mark and the theme pairs; 61.7 with shared 4.11.0's seasonal navbar; 59.1 with openvibe-shared 4.4.0 (every site in the launcher, 2026-10-17); 56.3 (45.6 before web-runtime.js)
cssFiles: 2, // 1
cssFiles: 2, // 1
cssRawKB: 41, // 36.2 openvibe-shared 4.26.1 (hero visual); 30.7 with Shared 4.13.0 (2026-10-26: account links); 23.5 on 2026-10-22 (the home's numbers, shelves by site group, ranked pages, questions and links); 19.1 (wiki.css + the cached /shared/showcase.css; 2026-10-15 the home's space cards, shelf and recent list)
cssRawKB: 41, // 36.2 openvibe-shared 4.26.1 (hero visual); 30.7 with Shared 4.13.0 (2026-10-26: account links); 23.5 on 2026-10-22 (the home's numbers, shelves by site group, ranked pages, questions and links); 19.1 (wiki.css + the cached /shared/showcase.css; 2026-10-15 the home's space cards, shelf and recent list)
- cssBrotliKB: 8.3, // 6.6–6.7 with Shared 4.13.0; raised from 8 for openvibe-shared v4.39.0 (+1.5 KB raw of kit/room/showcase CSS); measured 8.3
+ cssBrotliKB: 8.8, // 8.6 the home's phone rows and fold (2026-10-29); 6.6–6.7 with Shared 4.13.0; raised from 8 for openvibe-shared v4.39.0 (+1.5 KB raw of kit/room/showcase CSS); measured 8.3
externalFiles: 1, // 0
externalFiles: 1, // 0
};
};