feat(homepage): AI-first refresh + VeKit rebrand#617
Conversation
Adds `@gitbook/embed@^0.4.0` to the homepage example so we can render the live GitBook docs (search + Assistant) inline on the landing page. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Refreshes the homepage example (deployed at vechainkit.vechain.org) to promote the new VeChain AI Skills marketplace and surface live docs. - Replace the stale "Version 2 has been released" banner with a news-style "Introducing VeChain AI Skills" announcement; the CTA smooth-scrolls to the new AI section below. - Insert a new "AI-native development" card into the scrollable feature sections (after "Boosted Development") with a terminal mockup of the Skills CLI install. - Add `AISkillsSection`: a full-width section between QuickStart and FAQ with two terminal blocks (Skills CLI + Claude Code marketplace), a grid of all 11 published skills (vechain-dev, vechain-kit, vebetterdao, …), a prompt example, and a GitHub CTA. - Add `DocsEmbedSection`: embeds the live GitBook docs widget (Assistant + Docs tabs) from docs.vechainkit.vechain.org using `@gitbook/embed`, dynamically imported with `ssr: false`. - Replace the static "Boosted Development" screenshot with a styled code window (macOS-style chrome, syntax-highlighted) showing the same hooks usage that was previously rendered as a PNG. Removes a remote image dependency and keeps light/dark theme consistent. - Add the 27 new translation keys across all 7 locales (en/de/it/fr/es /zh/ja). Non-English files use English fallbacks for now — to be filled in via the `translate` skill. - Drop the now-unused "Version 2 has been released" / "View Release Notes" keys from all 7 locale files. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
The "Get Started Now" buttons (hero + floating mobile CTA) previously linked off-site to docs.vechainkit.vechain.org/quickstart/installation. That's the highest-friction action at the most important conversion point — the user reads instead of installs. Both buttons now smooth-scroll to QuickStartSection (which already renders the `npx create-vechain-dapp@latest` terminal with a copy button). Adds `id="quick-start"` to the section as the scroll target. Docs are still accessible inline further down the page via the new DocsEmbedSection. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
The standalone DocsEmbedSection sat awkwardly between AISkillsSection
and FAQSection, taking ~700px of vertical real estate for a widget most
visitors won't engage with. Worse, the inline iframe is dead weight on
mobile.
Instead, fold it into the existing floating Get Started CTA:
- Until the QuickStartSection enters the viewport, the floating button
reads "Get Started Now 🚀" and scrolls to the install block.
- Once the user reaches QuickStart, the button flips to "✨ Ask Docs"
and opens a full-width Chakra Modal containing the GitBook embed
(Assistant + Docs tabs). The iframe only mounts on first open, so
there's zero embed cost until the user asks for it.
- Drop DocsEmbedSection (component + Home.tsx wiring + the now-unused
"Ask the docs" / long-subtitle translation keys).
- Switch the embed import to a static `import { GitBookFrame }` — the
parent is already 'use client', and Turbopack's HMR was choking on
the next/dynamic chunk.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
… scroll on mobile
The BoostedDevSection card was overflowing the viewport on narrow
screens: the title clipped on the left ("d Development") and the page
gained horizontal scroll. Root cause is a CSS Grid pitfall — `1fr`
columns default to `min-width: auto`, so the long `import { useWallet,
useThor, useBuildTransaction } from "@vechain/vechain-kit";` pre line
inside the code window grew the column past the viewport.
- Switch the Grid in both BoostedDevSection and AISection to
`minmax(0, 1fr)` so columns can shrink below their content's intrinsic
size and the inner `overflowX: auto` actually engages.
- Break the long import in the code window across multiple lines. More
readable on narrow screens; matches common style; less reliance on
horizontal scroll inside the box.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Audit pass on the homepage's marketing copy — most strings were vague
("Out of the box", "Boosted Development"), wordy ("Use our hooks and
components to speed up your development and interact with the
blockchain"), or had filler tails ("Give your users the flexibility
they need"). Rewrote for concrete value and active voice; dropped dead
and duplicate translation keys.
- Hero subtitle: list concrete benefits instead of a generic "toolkit
for building" sentence. Drop "Now" from the CTA — implicit.
- Scrollable cards: rewrote all 6 titles + bodies. Each title is now a
specific claim ("No blockchain plumbing", "Hooks, not boilerplate",
"Yours to shape", "Login your way", "Speaks 15 languages"); bodies
drop the filler and lead with the artefact the dev cares about.
- QuickStart: "Only one command to setup" → "One command, full stack."
(fixes the "setup" vs "set up" verb grammar). Stack listing now
names Next.js and VeChain SDK explicitly.
- AISkillsSection: "Build with AI, faster than ever" → "Ship VeChain
dApps with AI" (concrete verb + object). Tightened two skill blurbs
that were either just type names (`indexer-core`) or too cute
(`grill-me`). Punched up the prompt-response example.
- FAQ: rewrote the two longest answers (free-to-use, limitations) as
short two-clause sentences instead of run-on paragraphs.
- en.json: dropped 5 dead/duplicate keys ("connect-wallet" Italian
leftover, the alt "all-in-one SDK" hero subtitle, "What are the
limitations?" unused, a no-period variant of the Cleanify app blurb,
and a duplicate limitations answer). All 7 locales are now in sync at
82 keys each.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Display-only rebrand of the marketing site (vechainkit.vechain.org). Replaces 206 occurrences of the string "VeChain Kit" with "VeKit" across 25 files — TSX/TS components, all 7 locale JSONs, the README, and the OG/Twitter meta tags in layout.tsx. Intentionally NOT touched: - @vechain/vechain-kit package name / npm imports - docs.vechainkit.vechain.org / vechainkit.vechain.org URLs - code identifiers (VechainKitProvider, VechainKitThemeProvider, vechain-kit-* CSS tokens) - the kit's own user-facing strings under packages/vechain-kit/ - other example apps (next-template, playground, next-chakra-v3, test-tailwind-vck) Scope is the public marketing site only — downstream apps still see "VeChain Kit" in modals and connect UI. Lets us test the new name on real users before propagating it to the kit and breaking anything. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
After the AI Skills refresh + the VeKit rebrand, the non-English locale files were full of English fallbacks. This commit fills them in with real translations for German, Italian, French, Spanish, Chinese, and Japanese. - Translated all newly-added marketing copy: hero subtitle, scrollable card titles and bodies, QuickStart sub, AISkills section (heading, install labels, skill blurbs, prompt example, CTA), banner, FAQ rewrites, "Ask Docs" modal trigger. - Intentionally kept English in every locale: brand names (VeKit, VeChain AI Skills, Claude Code) and globally-borrowed acronyms (DAO, DeFi). For DE/IT/FR/ES the technology nouns Gaming / Staking / Trading are also kept as-is since they're commonly borrowed unchanged; ZH and JA do translate them. - Re-sorted all 7 files case-insensitively per the translate skill's sort rule. - All locales now in sync at 82 keys each, zero missing / zero extra. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
📝 WalkthroughWalkthroughThe PR redesigns the VeChain homepage by introducing AI Skills and Boosted Development sections, integrating an embedded GitBook modal for documentation, implementing scroll-anchored navigation, rebranding all references from "VeChain Kit" to "VeKit", revising FAQ answers about Privy integration and hooks usage, and updating translations across six languages with new keys and restructured messaging. ChangesVeKit Homepage Redesign and Rebranding
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Suggested labels
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (1)
examples/homepage/src/app/components/features/AISkillsSection/AISkillsSection.tsx (1)
56-64: ⚡ Quick winAdd cleanup for the timeout on component unmount.
The
setTimeoutused to reset thecopiedstate isn't cleaned up if the component unmounts before the 2-second delay completes, which can cause a state update on an unmounted component warning.♻️ Proposed fix to add cleanup
const handleCopy = async () => { try { await navigator.clipboard.writeText(command); setCopied(true); - setTimeout(() => setCopied(false), 2000); + const timeoutId = setTimeout(() => setCopied(false), 2000); + return () => clearTimeout(timeoutId); } catch { // Silently fail if clipboard access is not available } };Alternatively, use
useEffectwith a cleanup function to manage the timeout lifecycle properly.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@examples/homepage/src/app/components/features/AISkillsSection/AISkillsSection.tsx` around lines 56 - 64, The timeout created in handleCopy can fire after the component unmounts and call setCopied on an unmounted component; to fix, store the timeout id (e.g., in a ref like timerRef) instead of an anonymous setTimeout, clear any existing timeout before assigning a new one, and add a useEffect cleanup that calls clearTimeout(timerRef.current) on unmount; update handleCopy to assign timerRef.current = setTimeout(...) and ensure the cleanup clears timerRef.current to prevent state updates after unmount.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In
`@examples/homepage/src/app/components/features/FloatingGetStartedButton/FloatingGetStartedButton.tsx`:
- Around line 24-29: Extract the duplicated DOM-scrolling logic into a shared
utility function (e.g., export function scrollToElement(elementId: string):
void) that gets an element by id and calls el.scrollIntoView({ behavior:
'smooth', block: 'start' }); then replace the inline implementations of
scrollToQuickStart (in FloatingGetStartedButton and HeroSection) and
scrollToAiSkills (in Home) to import and call scrollToElement('quick-start') or
scrollToElement('ai-skills') respectively; ensure the new utility is exported
and each component adds the appropriate import and uses the utility instead of
duplicating the logic.
In `@examples/homepage/src/app/languages/en.json`:
- Line 55: Update the English translation string that begins "Supports only
VeWorld, WalletConnect, and Sync2 wallets, and fully integrates VeKit UI into
the app to enhance the user experience Profile and Wallet modals." by inserting
the missing preposition "in" before "Profile and Wallet modals" so it reads
"...to enhance the user experience in Profile and Wallet modals." Locate and
update the JSON value for that exact key in the languages/en.json file.
- Line 82: The user-facing string entry with key "Yes. You can decide to use
only veworld, or only social login methods. To maximize flexibility, you can
also use your own Privy account and connect it to VeKit, allowing you to use
OAuth2-based login methods like Google, Apple, Twitter, GitHub, etc. and
completely customize the login experience." in
examples/homepage/src/app/languages/en.json uses the lowercase "veworld"; update
that occurrence to the proper brand capitalization "VeWorld" (and ensure any
other occurrences in the same JSON value are also corrected) so the displayed
copy consistently reads "VeWorld".
---
Nitpick comments:
In
`@examples/homepage/src/app/components/features/AISkillsSection/AISkillsSection.tsx`:
- Around line 56-64: The timeout created in handleCopy can fire after the
component unmounts and call setCopied on an unmounted component; to fix, store
the timeout id (e.g., in a ref like timerRef) instead of an anonymous
setTimeout, clear any existing timeout before assigning a new one, and add a
useEffect cleanup that calls clearTimeout(timerRef.current) on unmount; update
handleCopy to assign timerRef.current = setTimeout(...) and ensure the cleanup
clears timerRef.current to prevent state updates after unmount.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: c1c775db-ed30-4c28-a45a-378ba3cedf2c
⛔ Files ignored due to path filters (1)
yarn.lockis excluded by!**/yarn.lock,!**/*.lock
📒 Files selected for processing (36)
examples/homepage/README.mdexamples/homepage/package.jsonexamples/homepage/src/app/components/features/AISection/AISection.tsxexamples/homepage/src/app/components/features/AISection/index.tsexamples/homepage/src/app/components/features/AISkillsSection/AISkillsSection.tsxexamples/homepage/src/app/components/features/AISkillsSection/index.tsexamples/homepage/src/app/components/features/AppShowcase/AppShowcase.tsxexamples/homepage/src/app/components/features/AppShowcase/appData.tsexamples/homepage/src/app/components/features/BoostedDevSection/BoostedDevSection.tsxexamples/homepage/src/app/components/features/BoostedDevSection/index.tsexamples/homepage/src/app/components/features/DaoInfo/DaoInfo.tsxexamples/homepage/src/app/components/features/DataReading/DataReadingExample.tsxexamples/homepage/src/app/components/features/DocsModal/DocsModal.tsxexamples/homepage/src/app/components/features/DocsModal/index.tsexamples/homepage/src/app/components/features/FAQSection/FAQSection.tsxexamples/homepage/src/app/components/features/FeaturesToTry/FeaturesToTry.tsxexamples/homepage/src/app/components/features/FloatingGetStartedButton/FloatingGetStartedButton.tsxexamples/homepage/src/app/components/features/HeroSection/HeroSection.tsxexamples/homepage/src/app/components/features/Introduction/Introduction.tsxexamples/homepage/src/app/components/features/LoginUIControl/LoginUIControl.tsxexamples/homepage/src/app/components/features/QuickStartSection/QuickStartSection.tsxexamples/homepage/src/app/components/features/ScrollableInfoSections/ScrollableInfoSections.tsxexamples/homepage/src/app/components/features/Signing/SigningExample.tsxexamples/homepage/src/app/components/features/TransactionExamples/TransactionExamples.tsxexamples/homepage/src/app/components/features/UIControls/UIControls.tsxexamples/homepage/src/app/components/features/WelcomeSection/WelcomeSection.tsxexamples/homepage/src/app/components/layout/Header/Header.tsxexamples/homepage/src/app/languages/de.jsonexamples/homepage/src/app/languages/en.jsonexamples/homepage/src/app/languages/es.jsonexamples/homepage/src/app/languages/fr.jsonexamples/homepage/src/app/languages/it.jsonexamples/homepage/src/app/languages/ja.jsonexamples/homepage/src/app/languages/zh.jsonexamples/homepage/src/app/layout.tsxexamples/homepage/src/app/pages/Home.tsx
| const scrollToQuickStart = () => { | ||
| const el = document.getElementById('quick-start'); | ||
| if (el) { | ||
| el.scrollIntoView({ behavior: 'smooth', block: 'start' }); | ||
| } | ||
| }; |
There was a problem hiding this comment.
🛠️ Refactor suggestion | 🟠 Major | ⚡ Quick win
Extract duplicated scroll helper into a shared utility.
The scrollToQuickStart function (lines 24-29) is duplicated in HeroSection.tsx (lines 10-15), and a similar scrollToAiSkills function appears in Home.tsx (lines 31-36). Extract this pattern into a reusable utility function.
♻️ Proposed refactor to create a shared utility
Create a new utility file examples/homepage/src/app/utils/scroll.ts:
export function scrollToElement(elementId: string): void {
const el = document.getElementById(elementId);
if (el) {
el.scrollIntoView({ behavior: 'smooth', block: 'start' });
}
}Then update this file:
+import { scrollToElement } from '@/app/utils/scroll';
+
- const scrollToQuickStart = () => {
- const el = document.getElementById('quick-start');
- if (el) {
- el.scrollIntoView({ behavior: 'smooth', block: 'start' });
- }
- };
+ const scrollToQuickStart = () => scrollToElement('quick-start');Apply similar changes to HeroSection.tsx and Home.tsx.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@examples/homepage/src/app/components/features/FloatingGetStartedButton/FloatingGetStartedButton.tsx`
around lines 24 - 29, Extract the duplicated DOM-scrolling logic into a shared
utility function (e.g., export function scrollToElement(elementId: string):
void) that gets an element by id and calls el.scrollIntoView({ behavior:
'smooth', block: 'start' }); then replace the inline implementations of
scrollToQuickStart (in FloatingGetStartedButton and HeroSection) and
scrollToAiSkills (in Home) to import and call scrollToElement('quick-start') or
scrollToElement('ai-skills') respectively; ensure the new utility is exported
and each component adds the appropriate import and uses the utility instead of
duplicating the logic.
| "Staking": "Staking", | ||
| "Supports only VeWorld, WalletConnect, and Sync2 wallets, and fully integrates VeChain Kit UI into the app to enhance the user experience Profile and Wallet modals.": "Supports only VeWorld, WalletConnect, and Sync2 wallets, and fully integrates VeChain Kit UI into the app to enhance the user experience Profile and Wallet modals.", | ||
| "Start building your new app now": "Start building your new app now", | ||
| "Supports only VeWorld, WalletConnect, and Sync2 wallets, and fully integrates VeKit UI into the app to enhance the user experience Profile and Wallet modals.": "Supports only VeWorld, WalletConnect, and Sync2 wallets, and fully integrates VeKit UI into the app to enhance the user experience Profile and Wallet modals.", |
There was a problem hiding this comment.
Fix grammar in the wallet-support sentence.
Line 55 is missing “in” before “Profile and Wallet modals,” which reads awkwardly in the UI.
✏️ Suggested copy fix
- "Supports only VeWorld, WalletConnect, and Sync2 wallets, and fully integrates VeKit UI into the app to enhance the user experience Profile and Wallet modals.": "Supports only VeWorld, WalletConnect, and Sync2 wallets, and fully integrates VeKit UI into the app to enhance the user experience Profile and Wallet modals.",
+ "Supports only VeWorld, WalletConnect, and Sync2 wallets, and fully integrates VeKit UI into the app to enhance the user experience Profile and Wallet modals.": "Supports only VeWorld, WalletConnect, and Sync2 wallets, and fully integrates VeKit UI into the app to enhance the user experience in Profile and Wallet modals.",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "Supports only VeWorld, WalletConnect, and Sync2 wallets, and fully integrates VeKit UI into the app to enhance the user experience Profile and Wallet modals.": "Supports only VeWorld, WalletConnect, and Sync2 wallets, and fully integrates VeKit UI into the app to enhance the user experience Profile and Wallet modals.", | |
| "Supports only VeWorld, WalletConnect, and Sync2 wallets, and fully integrates VeKit UI into the app to enhance the user experience Profile and Wallet modals.": "Supports only VeWorld, WalletConnect, and Sync2 wallets, and fully integrates VeKit UI into the app to enhance the user experience in Profile and Wallet modals.", |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@examples/homepage/src/app/languages/en.json` at line 55, Update the English
translation string that begins "Supports only VeWorld, WalletConnect, and Sync2
wallets, and fully integrates VeKit UI into the app to enhance the user
experience Profile and Wallet modals." by inserting the missing preposition "in"
before "Profile and Wallet modals" so it reads "...to enhance the user
experience in Profile and Wallet modals." Locate and update the JSON value for
that exact key in the languages/en.json file.
| "X2Earn apps, B3TR/VOT3, governance.": "X2Earn apps, B3TR/VOT3, governance.", | ||
| "Yes — free for the shared VeChain + Privy integration. Bring your own Privy account if you want full control over the login UX (Privy pricing applies).": "Yes — free for the shared VeChain + Privy integration. Bring your own Privy account if you want full control over the login UX (Privy pricing applies).", | ||
| "Yes. To support all login methods, use the kit's hooks (useSendTransaction, useSignMessage). For full control over the login UX, bring your own Privy account — the shared VeChain + Privy integration can't target specific social methods and always prompts for signatures.": "Yes. To support all login methods, use the kit's hooks (useSendTransaction, useSignMessage). For full control over the login UX, bring your own Privy account — the shared VeChain + Privy integration can't target specific social methods and always prompts for signatures.", | ||
| "Yes. You can decide to use only veworld, or only social login methods. To maximize flexibility, you can also use your own Privy account and connect it to VeKit, allowing you to use OAuth2-based login methods like Google, Apple, Twitter, GitHub, etc. and completely customize the login experience.": "Yes. You can decide to use only veworld, or only social login methods. To maximize flexibility, you can also use your own Privy account and connect it to VeKit, allowing you to use OAuth2-based login methods like Google, Apple, Twitter, GitHub, etc. and completely customize the login experience.", |
There was a problem hiding this comment.
Capitalize the VeWorld brand name consistently.
Line 82 value uses “veworld”; this should be “VeWorld” in user-facing copy.
✏️ Suggested copy fix
- "Yes. You can decide to use only veworld, or only social login methods. To maximize flexibility, you can also use your own Privy account and connect it to VeKit, allowing you to use OAuth2-based login methods like Google, Apple, Twitter, GitHub, etc. and completely customize the login experience.": "Yes. You can decide to use only veworld, or only social login methods. To maximize flexibility, you can also use your own Privy account and connect it to VeKit, allowing you to use OAuth2-based login methods like Google, Apple, Twitter, GitHub, etc. and completely customize the login experience.",
+ "Yes. You can decide to use only veworld, or only social login methods. To maximize flexibility, you can also use your own Privy account and connect it to VeKit, allowing you to use OAuth2-based login methods like Google, Apple, Twitter, GitHub, etc. and completely customize the login experience.": "Yes. You can decide to use only VeWorld, or only social login methods. To maximize flexibility, you can also use your own Privy account and connect it to VeKit, allowing you to use OAuth2-based login methods like Google, Apple, Twitter, GitHub, etc. and completely customize the login experience.",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "Yes. You can decide to use only veworld, or only social login methods. To maximize flexibility, you can also use your own Privy account and connect it to VeKit, allowing you to use OAuth2-based login methods like Google, Apple, Twitter, GitHub, etc. and completely customize the login experience.": "Yes. You can decide to use only veworld, or only social login methods. To maximize flexibility, you can also use your own Privy account and connect it to VeKit, allowing you to use OAuth2-based login methods like Google, Apple, Twitter, GitHub, etc. and completely customize the login experience.", | |
| "Yes. You can decide to use only veworld, or only social login methods. To maximize flexibility, you can also use your own Privy account and connect it to VeKit, allowing you to use OAuth2-based login methods like Google, Apple, Twitter, GitHub, etc. and completely customize the login experience.": "Yes. You can decide to use only VeWorld, or only social login methods. To maximize flexibility, you can also use your own Privy account and connect it to VeKit, allowing you to use OAuth2-based login methods like Google, Apple, Twitter, GitHub, etc. and completely customize the login experience.", |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@examples/homepage/src/app/languages/en.json` at line 82, The user-facing
string entry with key "Yes. You can decide to use only veworld, or only social
login methods. To maximize flexibility, you can also use your own Privy account
and connect it to VeKit, allowing you to use OAuth2-based login methods like
Google, Apple, Twitter, GitHub, etc. and completely customize the login
experience." in examples/homepage/src/app/languages/en.json uses the lowercase
"veworld"; update that occurrence to the proper brand capitalization "VeWorld"
(and ensure any other occurrences in the same JSON value are also corrected) so
the displayed copy consistently reads "VeWorld".
|
Size Change: 0 B Total Size: 8.47 MB ℹ️ View Unchanged
|
Summary
Full refresh of the public marketing homepage at
examples/homepage/(deployed tovechainkit.vechain.org).AISkillsSection(install commands for both Skills CLI and Claude Code marketplace + grid of all 11 published skills + prompt example + GitHub CTA).docs.vechainkit.vechain.orgvia@gitbook/embed. Lazy-mounted: zero embed cost until clicked.Intentionally not changed:
@vechain/vechain-kitpackage imports,vechainkit.vechain.org/docs.vechainkit.vechain.orgURLs, code identifiers likeVechainKitProvider, the kit's own user-facing strings, or other example apps.Test plan
cd examples/homepage && yarn dev— open the homepage, verify announcement banner reads "🎉 Introducing VeChain AI Skills" and its CTA scrolls to the AI section.ScrollableInfoSections— confirm the AI card and the Boosted Development card render styled windows (not PNGs) and the page has no horizontal scroll on mobile breakpoints.AISkillsSectionrenders between QuickStart and FAQ — both terminal blocks copy-to-clipboard, skills grid lays out 1/2/3 columns responsively, "View on GitHub" opens the vechain-ai-skills repo.frame-ancestors http:), so test on a deploy oryarn dev --experimental-https. Also requires "AI experience" set to Search/Assistant in the GitBook admin.de/it/fr/es/zh/ja— verify the new strings actually translate (brand names DAO/DeFi/VeKit/Claude Code stay English by design).yarn buildfromexamples/homepage— passes (already verified locally on each commit).🤖 Generated with Claude Code
Summary by CodeRabbit
Release Notes
New Features
Updates