refactor(demos): promote the account demo to a top-level /demos section - #44
Merged
Conversation
Demos were nested under Vibenet (/vibenet/demos), which framed them as a Vibenet feature rather than a surface of their own. They now live at /demos with the account-abstraction demo at /demos/account, and Demos is a top-level sidebar item instead of a Vibenet child. - git mv preserves history for all 21 files. Imports rewired: shared UI moved one level closer, and Vibenet's client library one level further away — the demo still runs on Vibenet and keeps consuming vibenetApi rather than duplicating it. - app/demos/layout.tsx carries over what the section previously inherited from app/vibenet/layout.tsx: the content column and MaintenanceBanner, which is a functional signal since a demo is unusable while the devnet is down. - Breadcrumbs: /demos/* now renders Demos / <Demo> instead of being handled by the Vibenet branch. - /vibenet/demos and /vibenet/demos/:path* permanently redirect. Both were in the published sitemap and the site-wide announcement banner links the account demo, so existing links and search results keep working. - Repointed the banner, the Vibenet feature CTA, and the upgrades data entry; titles now follow the "· Base Chain" convention. Updates llms.txt.
Collaborator
🟡 Heimdall Review Status
|
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Demos may run on any of our test networks, not just Vibenet, so nothing at the section level should assume one. - /demos description no longer says "running on the vibenet developer network"; each demo now states its own network. - DemoHeader's default eyebrow was hardcoded to "Base Vibenet · Demo", which every future demo would have inherited. Defaults to "Base · Demo"; a demo names its network by passing `eyebrow`. - Move Vibenet's MaintenanceBanner from the section layout down to the account demo's layout. At the section level it would show a Vibenet outage notice on a demo that does not use Vibenet; the demo that depends on the devnet owns that concern. No visual change while Vibenet is healthy. - Drop an unused DemoHeader import from AccountDemo, and a stray double period in the demo description. Vibenet references inside the account demo itself are unchanged — it genuinely runs there. Updates llms.txt.
The breadcrumb derived its label from the URL slug and only uppercased the first character, so a future demo at /demos/smart-wallet would have rendered "Smart-wallet". It also ignored the demo's real name, letting the crumb and the index card drift apart. Extract the catalogue from app/demos/page.tsx into app/demos/catalogue.ts — plain data, no server-only imports, so the client AppShell can read it too — and add demoLabel(slug), which prefers the catalogue entry and degrades to a title-cased slug for anything unregistered. Adding a demo is now one entry that drives both the card and the crumb. Rendering is unchanged: /demos/account still reads "Demos / Account", via the new shortTitle field.
montycheese
force-pushed
the
refactor/demos-top-level
branch
from
August 4, 2026 15:25
a62fdd7 to
f0706b8
Compare
mbeutt-cb
reviewed
Aug 4, 2026
Collaborator
There was a problem hiding this comment.
Since we're making these changes, should we change the title to be 'EIP-8130 · Demos' to match the format of how the other subpages do their titles?
Page titles follow two shapes: a section root is "{Section} · Base Chain"
(Snapshots · Base Chain, Vibenet · Base Chain) and a page inside a section is
"{Page} · {Section}" (Faucet · Vibenet, Explorer · Vibenet). Two titles did not.
- /demos/account was "EIP-8130 · Base Chain", naming the spec rather than the
demo and pointing at the wrong section. Now "Native Account Abstraction ·
Demos". Documented on DemoEntry.title so the next demo follows it.
- The upgrade detail page separated with a pipe, "{name} | Base Upgrades",
where every other title in the app uses a middle dot. Now "·", matching its
sibling changelog pages.
Written out in full rather than composed from a parent title.template: the
llms/agents generator resolves a template to its `default`, so a child page
would publish its bare title while the browser rendered the composed one.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Moves the account-abstraction demo out from under Vibenet into its own top-level section.
/vibenet/demos/demos/vibenet/demos/account/demos/accountWhat changed
git mvfor all 21 files, so history is preserved. Imports rewired in one pass: shared UI (app/components/ui/*) moved one level closer, and Vibenet's client library one level further away. The demo still runs on Vibenet and keeps consumingvibenetApi— no duplication.app/demos/layout.tsx(new) carries over what the section used to inherit fromapp/vibenet/layout.tsx: themax-w-5xlcontent column andMaintenanceBanner. The banner is deliberate, not incidental — a demo is unusable while the devnet is down, so the signal is still relevant./demos/*rendersDemos / <Demo>via its own branch instead of being special-cased inside the Vibenet handler./vibenet/demosand/vibenet/demos/:path*→ 308 permanent. Both were in the published sitemap, and the site-wide announcement banner links the account demo, so existing links and search results keep working rather than 404ing.· Base Chainconvention.Verification
typecheck,lint,test,build,docs:checkall pass. Against a production build:/demos→ 200,/demos/account→ 200/vibenet/demos→ 308 →/demos;/vibenet/demos/account→ 308 →/demos/account(also confirmed following the redirect in a browser)/vibenet,/vibenet/faucet→ 200 (unaffected)Demos / Account, parent links to/demos/vibenet/demoslinks left anywhere in the rendered DOM; all three demo CTAs point at/demos/account