Max Potential First Input Delay
150 ms
The maximum potential First Input Delay that your users could experience is the duration of the longest task. Learn more about the Maximum Potential First Input Delay metric.
Words
1483
Action candidates
3
Images
16
HTML
5 KB
Primary
按年订阅(年付立省 30%)
Vite / Tailwind
Simulated mobile · Performance
2026-09-06 · Lab data, not field data.
Simulated mobile · Lab data, not field data
2026-09-06T10:33:49.115Z · Lighthouse 13.4.1
Results vary by server, network and environment, independently of taste/conversion scores. Diagnostics retain Lighthouse wording.
150 ms
The maximum potential First Input Delay that your users could experience is the duration of the longest task. Learn more about the Maximum Potential First Input Delay metric.
3.8 s
Time to Interactive is the amount of time it takes for the page to become fully interactive. Learn more about the Time to Interactive metric.
1 layout shift found
These are the largest layout shifts observed on the page. Each table item represents a single layout shift, and shows the element that shifted the most. Below each item are possible root causes that led to the layout shift. Some of these layout shifts may not be included in the CLS metric value due to windowing. Learn how to improve CLS
{
"type": "table",
"items": [
{
"node": {
"lhId": "page-1-DIV",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,0,SECTION,1,DIV,0,DIV",
"type": "node",
"snippet": "<div class=\"relative w-full bg-transparent pt-4 sm:pt-6 pb-2 select-none\">",
"selector": "main > section.relative > div.mt-6 > div.relative",
"nodeLabel": "向左滚动",
"boundingRect": {
"top": 412,
"left": 0,
"right": 412,
"width": 412,
"bottom": 619,
"height": 207
}
},
"score": 0.1210945844433174
}
],
"headings": [
{
"key": "node",
"label": "Element",
"valueType": "node",
"subItemsHeading": {
"key": "extra"
}
},
{
"key": "score",
"label": "Layout shift score",
"valueType": "numeric",
"granularity": 0.001,
"subItemsHeading": {
"key": "cause",
"valueType": "text"
}
}
]
}Low-contrast text is difficult or impossible for many users to read. Learn how to provide sufficient color contrast.
{
"type": "table",
"items": [
{
"node": {
"lhId": "1-0-SPAN",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,2,SECTION,0,DIV,1,DIV,0,DIV,0,DIV,1,DIV,1,SPAN",
"type": "node",
"snippet": "<span class=\"text-xs text-[#616166] font-mono\">",
"selector": "div.rounded-2xl > div.space-y-6 > div.flex > span.text-xs",
"nodeLabel": "$168 / 年",
"explanation": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #616166, background color: #1b1b1e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1",
"boundingRect": {
"top": 5939,
"left": 138,
"right": 200,
"width": 62,
"bottom": 5955,
"height": 16
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-1-DIV",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,2,SECTION,0,DIV,1,DIV,0,DIV",
"type": "node",
"snippet": "<div class=\"rounded-2xl p-6 sm:p-8 flex flex-col justify-between transition-all bg-[#1…\">",
"selector": "section#pricing > div.rounded-3xl > div.grid > div.rounded-2xl",
"nodeLabel": "入门\n\n个人日常接入与轻量使用。\n\n$14\n$168 / 年\n可接入终端设备\n2 台\nApp / 网页端同时在线\n5 路\n数据传输带宽\n20 Mbps\n额外网…",
"boundingRect": {
"top": 5829,
"left": 52,
"right": 360,
"width": 308,
"bottom": 6256,
"height": 427
}
}
}
]
}
},
{
"node": {
"lhId": "1-2-SPAN",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,2,SECTION,0,DIV,1,DIV,1,DIV,0,DIV,1,DIV,1,SPAN",
"type": "node",
"snippet": "<span class=\"text-xs text-[#616166] font-mono\">",
"selector": "div.rounded-2xl > div.space-y-6 > div.flex > span.text-xs",
"nodeLabel": "$504 / 年",
"explanation": "Fix any of the following:\n Element has insufficient color contrast of 2.51 (foreground color: #616166, background color: #242428, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1",
"boundingRect": {
"top": 6390,
"left": 138,
"right": 200,
"width": 62,
"bottom": 6406,
"height": 16
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-3-DIV",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,2,SECTION,0,DIV,1,DIV,1,DIV",
"type": "node",
"snippet": "<div class=\"rounded-2xl p-6 sm:p-8 flex flex-col justify-between transition-all bg-[#2…\">",
"selector": "section#pricing > div.rounded-3xl > div.grid > div.rounded-2xl",
"nodeLabel": "专业\n推荐\n\n多机并行,覆盖日常开发与协作。\n\n$42\n$504 / 年\n可接入终端设备\n5 台\nApp / 网页端同时在线\n20 路\n数据传输带宽\n20 M…",
"boundingRect": {
"top": 6280,
"left": 52,
"right": 360,
"width": 308,
"bottom": 6707,
"height": 427
}
}
}
]
}
},
{
"node": {
"lhId": "1-4-SPAN",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,2,SECTION,0,DIV,1,DIV,2,DIV,0,DIV,1,DIV,1,SPAN",
"type": "node",
"snippet": "<span class=\"text-xs text-[#616166] font-mono\">",
"selector": "div.rounded-2xl > div.space-y-6 > div.flex > span.text-xs",
"nodeLabel": "$1680 / 年",
"explanation": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #616166, background color: #1b1b1e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1",
"boundingRect": {
"top": 6841,
"left": 156,
"right": 226,
"width": 70,
"bottom": 6857,
"height": 16
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-5-DIV",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,2,SECTION,0,DIV,1,DIV,2,DIV",
"type": "node",
"snippet": "<div class=\"rounded-2xl p-6 sm:p-8 flex flex-col justify-between transition-all bg-[#1…\">",
"selector": "section#pricing > div.rounded-3xl > div.grid > div.rounded-2xl",
"nodeLabel": "生产力\n\n不设接入上限,面向高强度使用。\n\n$140\n$1680 / 年\n可接入终端设备\n不限\nApp / 网页端同时在线\n不限\n数据传输带宽\n100 Mbp…",
"boundingRect": {
"top": 6731,
"left": 52,
"right": 360,
"width": 308,
"bottom": 7158,
"height": 427
}
}
}
]
}
},
{
"node": {
"lhId": "1-6-P",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,2,SECTION,0,DIV,2,DIV,0,P",
"type": "node",
"snippet": "<p>",
"selector": "section#pricing > div.rounded-3xl > div.flex > p",
"nodeLabel": "内测阶段暂未开放付费。正式定价与更多功能将于正式运营前公布。",
"explanation": "Fix any of the following:\n Element has insufficient color contrast of 2.98 (foreground color: #616166, background color: #141416, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1",
"boundingRect": {
"top": 7206,
"left": 52,
"right": 360,
"width": 308,
"bottom": 7238,
"height": 32
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-7-DIV",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,2,SECTION,0,DIV",
"type": "node",
"snippet": "<div class=\"rounded-3xl bg-[#141416] p-6 sm:p-12 space-y-10\">",
"selector": "div.min-h-screen > main > section#pricing > div.rounded-3xl",
"nodeLabel": "订阅方案\n\n内测阶段暂未开放付费。正式定价与更多功能将于正式运营前公布。\n\n按年订阅\n(年付立省 30%)\n按月订阅\n入门\n\n个人日常接入与轻量使用。\n\n$1…",
"boundingRect": {
"top": 5600,
"left": 28,
"right": 384,
"width": 356,
"bottom": 7286,
"height": 1686
}
}
}
]
}
},
{
"node": {
"lhId": "1-8-SPAN",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,3,SECTION,0,DIV,1,DIV,1,DIV,1,SPAN",
"type": "node",
"snippet": "<span class=\"text-xs text-[#616166] font-mono\">",
"selector": "div.rounded-3xl > div.space-y-2.5 > div.flex > span.text-xs",
"nodeLabel": "v0.6.7",
"explanation": "Fix any of the following:\n Element has insufficient color contrast of 2.98 (foreground color: #616166, background color: #141416, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1",
"boundingRect": {
"top": 7534,
"left": 310,
"right": 354,
"width": 43,
"bottom": 7550,
"height": 16
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-9-DIV",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,3,SECTION,0,DIV",
"type": "node",
"snippet": "<div class=\"rounded-3xl bg-[#141416] p-5 sm:p-8 space-y-6\">",
"selector": "div.min-h-screen > main > section#downloads > div.rounded-3xl",
"nodeLabel": "下载\n\n桌面原生客户端、手机 App 与一行命令的 CLI 安装器,选择你的平台即刻开始。\n\n桌面应用\n下载 macOS · Apple Silicon 版\n…",
"boundingRect": {
"top": 7375,
"left": 28,
"right": 384,
"width": 356,
"bottom": 8156,
"height": 781
}
}
}
]
}
},
{
"node": {
"lhId": "1-10-SPAN",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,3,SECTION,0,DIV,3,DIV,1,DIV,0,DIV,1,DIV,0,DIV,1,SPAN",
"type": "node",
"snippet": "<span class=\"font-mono text-[11px] text-[#616166]\">",
"selector": "div.flex > div.flex > div.flex > span.font-mono",
"nodeLabel": "v0.6.7",
"explanation": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #616166, background color: #1b1b1e, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1",
"boundingRect": {
"top": 7874,
"left": 311,
"right": 351,
"width": 40,
"bottom": 7890,
"height": 17
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-11-DIV",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,3,SECTION,0,DIV,3,DIV,1,DIV,0,DIV",
"type": "node",
"snippet": "<div class=\"flex gap-3 rounded-xl border border-white/[0.06] bg-[#1b1b1e] p-3\">",
"selector": "div.rounded-3xl > div.space-y-2.5 > div.grid > div.flex",
"nodeLabel": "iOS\nv0.6.7\nTestFlight\nApp Store\n即将上线",
"boundingRect": {
"top": 7857,
"left": 48,
"right": 364,
"width": 316,
"bottom": 7970,
"height": 113
}
}
}
]
}
},
{
"node": {
"lhId": "1-12-SPAN",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,3,SECTION,0,DIV,3,DIV,1,DIV,0,DIV,1,DIV,2,DIV,0,SPAN",
"type": "node",
"snippet": "<span>",
"selector": "div.flex > div.flex > div.mt-auto > span",
"nodeLabel": "App Store",
"explanation": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #616166, background color: #1b1b1e, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1",
"boundingRect": {
"top": 7933,
"left": 168,
"right": 217,
"width": 49,
"bottom": 7950,
"height": 17
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-11-DIV",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,3,SECTION,0,DIV,3,DIV,1,DIV,0,DIV",
"type": "node",
"snippet": "<div class=\"flex gap-3 rounded-xl border border-white/[0.06] bg-[#1b1b1e] p-3\">",
"selector": "div.rounded-3xl > div.space-y-2.5 > div.grid > div.flex",
"nodeLabel": "iOS\nv0.6.7\nTestFlight\nApp Store\n即将上线",
"boundingRect": {
"top": 7857,
"left": 48,
"right": 364,
"width": 316,
"bottom": 7970,
"height": 113
}
}
}
]
}
},
{
"node": {
"lhId": "1-13-SPAN",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,3,SECTION,0,DIV,3,DIV,1,DIV,0,DIV,1,DIV,2,DIV,1,SPAN",
"type": "node",
"snippet": "<span>",
"selector": "div.flex > div.flex > div.mt-auto > span",
"nodeLabel": "即将上线",
"explanation": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #616166, background color: #1b1b1e, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1",
"boundingRect": {
"top": 7933,
"left": 296,
"right": 340,
"width": 44,
"bottom": 7950,
"height": 17
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-11-DIV",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,3,SECTION,0,DIV,3,DIV,1,DIV,0,DIV",
"type": "node",
"snippet": "<div class=\"flex gap-3 rounded-xl border border-white/[0.06] bg-[#1b1b1e] p-3\">",
"selector": "div.rounded-3xl > div.space-y-2.5 > div.grid > div.flex",
"nodeLabel": "iOS\nv0.6.7\nTestFlight\nApp Store\n即将上线",
"boundingRect": {
"top": 7857,
"left": 48,
"right": 364,
"width": 316,
"bottom": 7970,
"height": 113
}
}
}
]
}
},
{
"node": {
"lhId": "1-14-SPAN",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,3,SECTION,0,DIV,3,DIV,1,DIV,1,DIV,1,DIV,0,DIV,1,SPAN",
"type": "node",
"snippet": "<span class=\"font-mono text-[11px] text-[#616166]\">",
"selector": "div.flex > div.flex > div.flex > span.font-mono",
"nodeLabel": "v0.6.7",
"explanation": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #616166, background color: #1b1b1e, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1",
"boundingRect": {
"top": 7999,
"left": 311,
"right": 351,
"width": 40,
"bottom": 8015,
"height": 17
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-15-DIV",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,3,SECTION,0,DIV,3,DIV,1,DIV,1,DIV",
"type": "node",
"snippet": "<div class=\"flex gap-3 rounded-xl border border-white/[0.06] bg-[#1b1b1e] p-3\">",
"selector": "div.rounded-3xl > div.space-y-2.5 > div.grid > div.flex",
"nodeLabel": "Android\nv0.6.7\n下载 APK\n\n安装 APK 需要允许来自未知来源的应用安装。\n\nGoogle Play\n即将上线",
"boundingRect": {
"top": 7982,
"left": 48,
"right": 364,
"width": 316,
"bottom": 8136,
"height": 155
}
}
}
]
}
},
{
"node": {
"lhId": "1-16-SPAN",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,3,SECTION,0,DIV,3,DIV,1,DIV,1,DIV,1,DIV,3,DIV,0,SPAN",
"type": "node",
"snippet": "<span>",
"selector": "div.flex > div.flex > div.mt-auto > span",
"nodeLabel": "Google Play",
"explanation": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #616166, background color: #1b1b1e, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1",
"boundingRect": {
"top": 8100,
"left": 168,
"right": 228,
"width": 60,
"bottom": 8116,
"height": 17
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-15-DIV",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,3,SECTION,0,DIV,3,DIV,1,DIV,1,DIV",
"type": "node",
"snippet": "<div class=\"flex gap-3 rounded-xl border border-white/[0.06] bg-[#1b1b1e] p-3\">",
"selector": "div.rounded-3xl > div.space-y-2.5 > div.grid > div.flex",
"nodeLabel": "Android\nv0.6.7\n下载 APK\n\n安装 APK 需要允许来自未知来源的应用安装。\n\nGoogle Play\n即将上线",
"boundingRect": {
"top": 7982,
"left": 48,
"right": 364,
"width": 316,
"bottom": 8136,
"height": 155
}
}
}
]
}
},
{
"node": {
"lhId": "1-17-SPAN",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,3,SECTION,0,DIV,3,DIV,1,DIV,1,DIV,1,DIV,3,DIV,1,SPAN",
"type": "node",
"snippet": "<span>",
"selector": "div.flex > div.flex > div.mt-auto > span",
"nodeLabel": "即将上线",
"explanation": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #616166, background color: #1b1b1e, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1",
"boundingRect": {
"top": 8100,
"left": 296,
"right": 340,
"width": 44,
"bottom": 8116,
"height": 17
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-15-DIV",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,3,SECTION,0,DIV,3,DIV,1,DIV,1,DIV",
"type": "node",
"snippet": "<div class=\"flex gap-3 rounded-xl border border-white/[0.06] bg-[#1b1b1e] p-3\">",
"selector": "div.rounded-3xl > div.space-y-2.5 > div.grid > div.flex",
"nodeLabel": "Android\nv0.6.7\n下载 APK\n\n安装 APK 需要允许来自未知来源的应用安装。\n\nGoogle Play\n即将上线",
"boundingRect": {
"top": 7982,
"left": 48,
"right": 364,
"width": 316,
"bottom": 8136,
"height": 155
}
}
}
]
}
},
{
"node": {
"lhId": "1-18-SPAN",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,4,SECTION,0,DIV,0,DIV,0,DIV,0,H2,1,SPAN",
"type": "node",
"snippet": "<span class=\"block text-[#616166]\">",
"selector": "div.md:flex > div.md:w-2/5 > h2.text-2xl > span.block",
"nodeLabel": "与解答",
"explanation": "Fix any of the following:\n Element has insufficient color contrast of 2.98 (foreground color: #616166, background color: #141416, font size: 18.0pt (24px), font weight: normal). Expected contrast ratio of 3:1",
"boundingRect": {
"top": 8299,
"left": 52,
"right": 360,
"width": 308,
"bottom": 8329,
"height": 30
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-19-DIV",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,4,SECTION,0,DIV",
"type": "node",
"snippet": "<div class=\"rounded-3xl bg-[#141416] p-6 md:p-12\">",
"selector": "div.min-h-screen > main > section#faq > div.rounded-3xl",
"nodeLabel": "常见问题\n与解答\n\n关于无需自建服务器、一键安装、厂商锁定与性能的解答。\n\n为什么是「终端优先」?\n+\n我需要自己买云服务器(VPS)或搭建中继节点吗?\n+\n…",
"boundingRect": {
"top": 8245,
"left": 28,
"right": 384,
"width": 356,
"bottom": 8937,
"height": 692
}
}
}
]
}
},
{
"node": {
"lhId": "1-20-SPAN",
"path": "1,HTML,1,BODY,7,DIV,3,FOOTER,0,DIV,1,DIV,1,SPAN",
"type": "node",
"snippet": "<span class=\"text-xs leading-none text-[#616166] select-none font-normal\">",
"selector": "footer.max-w-[1440px] > div.flex > div.order-2 > span.text-xs",
"nodeLabel": "© MMXXVI Vibe42",
"explanation": "Fix any of the following:\n Element has insufficient color contrast of 3.17 (foreground color: #616166, background color: #0c0c0e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1",
"boundingRect": {
"top": 9078,
"left": 62,
"right": 162,
"width": 100,
"bottom": 9090,
"height": 12
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-21-DIV",
"path": "1,HTML,1,BODY,7,DIV",
"type": "node",
"snippet": "<div class=\"min-h-screen bg-[#0c0c0e] text-[#d0d0d0] selection:bg-white/20 selection:t…\">",
"selector": "body.bg-[#0a0a0c] > div.min-h-screen",
"nodeLabel": "Vibe42\n进入工作区\n连上家里电脑,\n随时随地猛猛蹬。\n\nVibe42 是你的随身终端优先工作台。手机直连电脑,随时随地跑 Agent、审代码、控终端。免…",
"boundingRect": {
"top": 0,
"left": 0,
"right": 412,
"width": 412,
"bottom": 9158,
"height": 9158
}
}
}
]
}
}
],
"headings": [
{
"key": "node",
"label": "Failing Elements",
"valueType": "node",
"subItemsHeading": {
"key": "relatedNode",
"valueType": "node"
}
}
],
"debugData": {
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT",
"RGAAv4",
"RGAA-3.2.1"
],
"type": "debugdata",
"impact": "serious"
}
}Ensures SVG elements with an `img`, `graphics-document` or `graphics-symbol` role have an accessible text alternative. Learn more about SVG alt text.
{
"type": "table",
"items": [
{
"node": {
"lhId": "1-22-svg",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,3,SECTION,0,DIV,3,DIV,1,DIV,0,DIV,0,DIV,0,svg",
"type": "node",
"snippet": "<svg height=\"72\" width=\"72\" viewBox=\"0 0 29 29\" role=\"img\">",
"selector": "div.grid > div.flex > div.h-fit > svg",
"nodeLabel": "div.grid > div.flex > div.h-fit > svg",
"explanation": "Fix any of the following:\n Element has no child that is a title\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute",
"boundingRect": {
"top": 7876,
"left": 67,
"right": 139,
"width": 72,
"bottom": 7948,
"height": 72
}
}
},
{
"node": {
"lhId": "1-23-svg",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,3,SECTION,0,DIV,3,DIV,1,DIV,1,DIV,0,DIV,0,svg",
"type": "node",
"snippet": "<svg height=\"72\" width=\"72\" viewBox=\"0 0 45 45\" role=\"img\">",
"selector": "div.grid > div.flex > div.h-fit > svg",
"nodeLabel": "div.grid > div.flex > div.h-fit > svg",
"explanation": "Fix any of the following:\n Element has no child that is a title\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute",
"boundingRect": {
"top": 8001,
"left": 67,
"right": 139,
"width": 72,
"bottom": 8073,
"height": 72
}
}
}
],
"headings": [
{
"key": "node",
"label": "Failing Elements",
"valueType": "node",
"subItemsHeading": {
"key": "relatedNode",
"valueType": "node"
}
}
],
"debugData": {
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT",
"RGAAv4",
"RGAA-1.1.5"
],
"type": "debugdata",
"impact": "serious"
}
}Est savings of 41 KiB
Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. Learn how to reduce unused JavaScript.
{
"type": "opportunity",
"items": [
{
"url": "https://vibe42.ai/assets/jsx-runtime-Dyj-HpQn.js",
"totalBytes": 44276,
"wastedBytes": 21764,
"wastedPercent": 49.15512421872546
},
{
"url": "https://vibe42.ai/assets/entry.client-BHOJDzmE.js",
"totalBytes": 59893,
"wastedBytes": 20538,
"wastedPercent": 34.29113450542404
}
],
"headings": [
{
"key": "url",
"label": "URL",
"valueType": "url",
"subItemsHeading": {
"key": "source",
"valueType": "code"
}
},
{
"key": "totalBytes",
"label": "Transfer Size",
"valueType": "bytes",
"subItemsHeading": {
"key": "sourceBytes"
}
},
{
"key": "wastedBytes",
"label": "Est Savings",
"valueType": "bytes",
"subItemsHeading": {
"key": "sourceWastedBytes"
}
}
],
"sortedBy": [
"wastedBytes"
],
"debugData": {
"type": "debugdata",
"metricSavings": {
"FCP": 150,
"LCP": 150
}
},
"overallSavingsMs": 150,
"overallSavingsBytes": 42302
}86 errors found
If your robots.txt file is malformed, crawlers may not be able to understand how you want your website to be crawled or indexed. Learn more about robots.txt.
{
"type": "table",
"items": [
{
"line": "<!DOCTYPE html><html lang=\"zh-CN\" class=\"dark scroll-smooth\"><head><meta charSet=\"utf-8\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/><script async=\"\" defer=\"\" src=\"https://vibecafe.ai/telemetry/v1.js\" data-vc-product-id=\"cmsd01ldn00000al1ze0xlztd\" data-vc-auth-key=\"vc_web_9wprdvPpgBmExvAF1SBdFvfBWtsUzuG_fyTRtKREff8\"></script><title>Vibe42 — The Network for Agents</title><meta name=\"description\" content=\"Zero-config cross-device remote development network.\"/><meta property=\"og:title\" content=\"Vibe42 — The Network for Agents\"/><meta property=\"og:description\" content=\"Zero-config cross-device remote development network.\"/><link rel=\"icon\" type=\"image/svg+xml\" href=\"/favicon.svg\"/><link rel=\"preconnect\" href=\"https://fonts.googleapis.com\"/><link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin=\"anonymous\"/><link rel=\"modulepreload\" href=\"/assets/entry.client-BHOJDzmE.js\"/><link rel=\"modulepreload\" href=\"/assets/jsx-runtime-Dyj-HpQn.js\"/><link rel=\"modulepreload\" href=\"/assets/index-BPjdmoRX.js\"/><link rel=\"modulepreload\" href=\"/assets/root-3TAFfv6d.js\"/><link rel=\"modulepreload\" href=\"/assets/QueryClientProvider-B41i5k7B.js\"/><link rel=\"modulepreload\" href=\"/assets/locale-CtN9meVX.js\"/><link rel=\"modulepreload\" href=\"/assets/LandingPage-CmD2jhY8.js\"/><link rel=\"stylesheet\" href=\"/assets/root-DVXRIv-h.css\"/></head><body class=\"bg-[#0a0a0c] text-[#f2f2f5] min-h-screen antialiased\"><script>",
"index": "62",
"message": "Unknown directive"
},
{
"line": " console.log(",
"index": "63",
"message": "Syntax not understood"
},
{
"line": " \"💿 Hey developer 👋. You can provide a way better UX than this \" +",
"index": "64",
"message": "Syntax not understood"
},
{
"line": " \"when your app is loading JS modules and/or running `clientLoader` \" +",
"index": "65",
"message": "Syntax not understood"
},
{
"line": " \"functions. Check out https://reactrouter.com/start/framework/route-module#hydratefallback \" +",
"index": "66",
"message": "Unknown directive"
},
{
"line": " \"for more information.\"",
"index": "67",
"message": "Syntax not understood"
},
{
"line": " );",
"index": "68",
"message": "Syntax not understood"
},
{
"line": " </script><script>window.__reactRouterContext = {\"basename\":\"/\",\"future\":{\"unstable_optimizeDeps\":false,\"v8_passThroughRequests\":false,\"v8_trailingSlashAwareDataRequests\":false,\"unstable_previewServerPrerendering\":false,\"v8_middleware\":false,\"v8_splitRouteModules\":false,\"v8_viteEnvironmentApi\":false},\"routeDiscovery\":{\"mode\":\"lazy\",\"manifestPath\":\"/__manifest\"},\"ssr\":true,\"isSpaMode\":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamController = controller;}}).pipeThrough(new TextEncoderStream());</script><script type=\"module\" async=\"\">;",
"index": "69",
"message": "Unknown directive"
},
{
"line": "import * as route0 from \"/assets/root-3TAFfv6d.js\";",
"index": "70",
"message": "Syntax not understood"
},
{
"line": "import * as route1 from \"/assets/locale-CtN9meVX.js\";",
"index": "71",
"message": "Syntax not understood"
},
{
"line": " window.__reactRouterManifest = {",
"index": "72",
"message": "Syntax not understood"
},
{
"line": " \"entry\": {",
"index": "73",
"message": "Unknown directive"
},
{
"line": " \"module\": \"/assets/entry.client-BHOJDzmE.js\",",
"index": "74",
"message": "Unknown directive"
},
{
"line": " \"imports\": [",
"index": "75",
"message": "Unknown directive"
},
{
"line": " \"/assets/jsx-runtime-Dyj-HpQn.js\",",
"index": "76",
"message": "Syntax not understood"
},
{
"line": " \"/assets/index-BPjdmoRX.js\"",
"index": "77",
"message": "Syntax not understood"
},
{
"line": " ],",
"index": "78",
"message": "Syntax not understood"
},
{
"line": " \"css\": []",
"index": "79",
"message": "Unknown directive"
},
{
"line": " },",
"index": "80",
"message": "Syntax not understood"
},
{
"line": " \"routes\": {",
"index": "81",
"message": "Unknown directive"
},
{
"line": " \"root\": {",
"index": "82",
"message": "Unknown directive"
},
{
"line": " \"id\": \"root\",",
"index": "83",
"message": "Unknown directive"
},
{
"line": " \"path\": \"\",",
"index": "84",
"message": "Unknown directive"
},
{
"line": " \"hasAction\": false,",
"index": "85",
"message": "Unknown directive"
},
{
"line": " \"hasLoader\": false,",
"index": "86",
"message": "Unknown directive"
},
{
"line": " \"hasClientAction\": false,",
"index": "87",
"message": "Unknown directive"
},
{
"line": " \"hasClientLoader\": false,",
"index": "88",
"message": "Unknown directive"
},
{
"line": " \"hasClientMiddleware\": false,",
"index": "89",
"message": "Unknown directive"
},
{
"line": " \"hasDefaultExport\": true,",
"index": "90",
"message": "Unknown directive"
},
{
"line": " \"hasErrorBoundary\": true,",
"index": "91",
"message": "Unknown directive"
},
{
"line": " \"module\": \"/assets/root-3TAFfv6d.js\",",
"index": "92",
"message": "Unknown directive"
},
{
"line": " \"imports\": [",
"index": "93",
"message": "Unknown directive"
},
{
"line": " \"/assets/jsx-runtime-Dyj-HpQn.js\",",
"index": "94",
"message": "Syntax not understood"
},
{
"line": " \"/assets/index-BPjdmoRX.js\",",
"index": "95",
"message": "Syntax not understood"
},
{
"line": " \"/assets/QueryClientProvider-B41i5k7B.js\"",
"index": "96",
"message": "Syntax not understood"
},
{
"line": " ],",
"index": "97",
"message": "Syntax not understood"
},
{
"line": " \"css\": [",
"index": "98",
"message": "Unknown directive"
},
{
"line": " \"/assets/root-DVXRIv-h.css\"",
"index": "99",
"message": "Syntax not understood"
},
{
"line": " ]",
"index": "100",
"message": "Syntax not understood"
},
{
"line": " },",
"index": "101",
"message": "Syntax not understood"
},
{
"line": " \"routes/locale\": {",
"index": "102",
"message": "Unknown directive"
},
{
"line": " \"id\": \"routes/locale\",",
"index": "103",
"message": "Unknown directive"
},
{
"line": " \"parentId\": \"root\",",
"index": "104",
"message": "Unknown directive"
},
{
"line": " \"path\": \":lang\",",
"index": "105",
"message": "Unknown directive"
},
{
"line": " \"hasAction\": false,",
"index": "106",
"message": "Unknown directive"
},
{
"line": " \"hasLoader\": false,",
"index": "107",
"message": "Unknown directive"
},
{
"line": " \"hasClientAction\": false,",
"index": "108",
"message": "Unknown directive"
},
{
"line": " \"hasClientLoader\": true,",
"index": "109",
"message": "Unknown directive"
},
{
"line": " \"hasClientMiddleware\": false,",
"index": "110",
"message": "Unknown directive"
},
{
"line": " \"hasDefaultExport\": true,",
"index": "111",
"message": "Unknown directive"
},
{
"line": " \"hasErrorBoundary\": false,",
"index": "112",
"message": "Unknown directive"
},
{
"line": " \"module\": \"/assets/locale-CtN9meVX.js\",",
"index": "113",
"message": "Unknown directive"
},
{
"line": " \"imports\": [",
"index": "114",
"message": "Unknown directive"
},
{
"line": " \"/assets/jsx-runtime-Dyj-HpQn.js\",",
"index": "115",
"message": "Syntax not understood"
},
{
"line": " \"/assets/LandingPage-CmD2jhY8.js\",",
"index": "116",
"message": "Syntax not understood"
},
{
"line": " \"/assets/index-BPjdmoRX.js\",",
"index": "117",
"message": "Syntax not understood"
},
{
"line": " \"/assets/QueryClientProvider-B41i5k7B.js\"",
"index": "118",
"message": "Syntax not understood"
},
{
"line": " ],",
"index": "119",
"message": "Syntax not understood"
},
{
"line": " \"css\": []",
"index": "120",
"message": "Unknown directive"
},
{
"line": " },",
"index": "121",
"message": "Syntax not understood"
},
{
"line": " \"routes/home\": {",
"index": "122",
"message": "Unknown directive"
},
{
"line": " \"id\": \"routes/home\",",
"index": "123",
"message": "Unknown directive"
},
{
"line": " \"parentId\": \"root\",",
"index": "124",
"message": "Unknown directive"
},
{
"line": " \"index\": true,",
"index": "125",
"message": "Unknown directive"
},
{
"line": " \"hasAction\": false,",
"index": "126",
"message": "Unknown directive"
},
{
"line": " \"hasLoader\": false,",
"index": "127",
"message": "Unknown directive"
},
{
"line": " \"hasClientAction\": false,",
"index": "128",
"message": "Unknown directive"
},
{
"line": " \"hasClientLoader\": false,",
"index": "129",
"message": "Unknown directive"
},
{
"line": " \"hasClientMiddleware\": false,",
"index": "130",
"message": "Unknown directive"
},
{
"line": " \"hasDefaultExport\": true,",
"index": "131",
"message": "Unknown directive"
},
{
"line": " \"hasErrorBoundary\": false,",
"index": "132",
"message": "Unknown directive"
},
{
"line": " \"module\": \"/assets/home-HMd4y8ql.js\",",
"index": "133",
"message": "Unknown directive"
},
{
"line": " \"imports\": [",
"index": "134",
"message": "Unknown directive"
},
{
"line": " \"/assets/jsx-runtime-Dyj-HpQn.js\",",
"index": "135",
"message": "Syntax not understood"
},
{
"line": " \"/assets/LandingPage-CmD2jhY8.js\",",
"index": "136",
"message": "Syntax not understood"
},
{
"line": " \"/assets/index-BPjdmoRX.js\",",
"index": "137",
"message": "Syntax not understood"
},
{
"line": " \"/assets/QueryClientProvider-B41i5k7B.js\"",
"index": "138",
"message": "Syntax not understood"
},
{
"line": " ],",
"index": "139",
"message": "Syntax not understood"
},
{
"line": " \"css\": []",
"index": "140",
"message": "Unknown directive"
},
{
"line": " }",
"index": "141",
"message": "Syntax not understood"
},
{
"line": " },",
"index": "142",
"message": "Syntax not understood"
},
{
"line": " \"url\": \"/assets/manifest-e7b9e77c.js\",",
"index": "143",
"message": "Unknown directive"
},
{
"line": " \"version\": \"e7b9e77c\"",
"index": "144",
"message": "Unknown directive"
},
{
"line": "};",
"index": "145",
"message": "Syntax not understood"
},
{
"line": " window.__reactRouterRouteModules = {\"root\":route0,\"routes/locale\":route1};",
"index": "146",
"message": "Unknown directive"
},
{
"line": "import(\"/assets/entry.client-BHOJDzmE.js\");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue(\"[{\\\"_1\\\":2,\\\"_3\\\":-5,\\\"_4\\\":-5},\\\"loaderData\\\",{},\\\"actionData\\\",\\\"errors\\\"]\\n\");</script><!--$--><script>window.__reactRouterContext.streamController.close();</script><!--/$--><!--/$--></body></html>",
"index": "148",
"message": "Unknown directive"
}
],
"headings": [
{
"key": "index",
"label": "Line #",
"valueType": "text"
},
{
"key": "line",
"label": "Content",
"valueType": "code"
},
{
"key": "message",
"label": "Error",
"valueType": "code"
}
]
}Est savings of 4 KiB
A long cache lifetime can speed up repeat visits to your page. Learn more about caching.
{
"type": "table",
"items": [
{
"url": "https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495",
"totalBytes": 10338,
"wastedBytes": 4135.2,
"cacheLifetimeMs": 86400000
}
],
"headings": [
{
"key": "url",
"label": "Request",
"valueType": "url"
},
{
"key": "cacheLifetimeMs",
"label": "Cache TTL",
"valueType": "ms",
"displayUnit": "duration"
},
{
"key": "totalBytes",
"label": "Transfer Size",
"valueType": "bytes",
"displayUnit": "kb",
"granularity": 1
}
],
"sortedBy": [
"wastedBytes"
],
"debugData": {
"type": "debugdata",
"wastedBytes": 4135.2
},
"skipSumming": [
"cacheLifetimeMs"
]
}Layout shifts occur when elements move absent any user interaction. Investigate the causes of layout shifts, such as elements being added, removed, or their fonts changing as the page loads.
{
"type": "list",
"items": [
{
"type": "table",
"items": [
{
"node": {
"type": "text",
"value": "Total"
},
"score": 0.1210945844433174
},
{
"node": {
"lhId": "page-1-DIV",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,0,SECTION,1,DIV,0,DIV",
"type": "node",
"snippet": "<div class=\"relative w-full bg-transparent pt-4 sm:pt-6 pb-2 select-none\">",
"selector": "main > section.relative > div.mt-6 > div.relative",
"nodeLabel": "向左滚动",
"boundingRect": {
"top": 412,
"left": 0,
"right": 412,
"width": 412,
"bottom": 619,
"height": 207
}
},
"score": 0.1210945844433174
}
],
"headings": [
{
"key": "node",
"label": "Element",
"valueType": "node",
"subItemsHeading": {
"key": "extra"
}
},
{
"key": "score",
"label": "Layout shift score",
"valueType": "numeric",
"granularity": 0.001,
"subItemsHeading": {
"key": "cause",
"valueType": "text"
}
}
]
}
]
}A forced reflow occurs when JavaScript queries geometric properties (such as offsetWidth) after styles have been invalidated by a change to the DOM state. This can result in poor performance. Learn more about forced reflows and possible mitigations.
{
"type": "list",
"items": [
{
"type": "table",
"items": [
{
"source": {
"url": "https://vibe42.ai/assets/entry.client-BHOJDzmE.js",
"line": 13,
"type": "source-location",
"column": 1395,
"urlProvider": "network"
},
"reflowTime": 71.189
}
],
"headings": [
{
"key": "source",
"label": "Top function call",
"valueType": "source-location"
},
{
"key": "reflowTime",
"label": "Total reflow time",
"valueType": "ms",
"granularity": 1
}
]
},
{
"type": "table",
"items": [
{
"source": {
"url": "https://vibe42.ai/assets/LandingPage-CmD2jhY8.js",
"line": 110,
"type": "source-location",
"column": 14999,
"urlProvider": "network"
},
"reflowTime": 71.189
}
],
"headings": [
{
"key": "source",
"label": "Source",
"valueType": "source-location"
},
{
"key": "reflowTime",
"label": "Total reflow time",
"valueType": "ms",
"granularity": 1
}
]
}
]
}Est savings of 1,121 KiB
Reducing the download time of images can improve the perceived load time of the page and LCP. Learn more about optimizing image size
{
"type": "table",
"items": [
{
"url": "https://vibe42.ai/images/x/hero-slides/slide-macos-btop.webp",
"node": {
"lhId": "page-7-IMG",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,0,SECTION,1,DIV,0,DIV,1,DIV,0,DIV,0,DIV,0,FIGURE,0,IMG",
"type": "node",
"snippet": "<img alt=\"macOS 原生客户端:btop 实时系统监控与 Codex 终端流\" width=\"2400\" height=\"1800\" class=\"w-full h-full object-cover block\" loading=\"lazy\" src=\"/images/x/hero-slides/slide-macos-btop.webp\">",
"selector": "div.grid > div.group/tile > figure.w-full > img.w-full",
"nodeLabel": "macOS 原生客户端:btop 实时系统监控与 Codex 终端流",
"boundingRect": {
"top": 433,
"left": 33,
"right": 136,
"width": 103,
"bottom": 511,
"height": 78
}
},
"subItems": {
"type": "subitems",
"items": [
{
"reason": "This image file is larger than it needs to be (2043x1537) for its displayed dimensions (121x78). Use responsive images to reduce the image download size.",
"wastedBytes": 269234
}
]
},
"totalBytes": 270040,
"wastedBytes": 269234
},
{
"url": "https://vibe42.ai/images/x/all-platform-real.webp",
"node": {
"lhId": "page-8-IMG",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,1,DIV,2,SECTION,1,DIV,0,FIGURE,0,IMG",
"type": "node",
"snippet": "<img alt=\"Vibe42 全平台实景:电脑与手机会话无缝协同\" width=\"2400\" height=\"1800\" class=\"w-full h-auto object-cover block\" loading=\"lazy\" src=\"/images/x/all-platform-real.webp\">",
"selector": "section.grid > div.order-2 > figure.overflow-hidden > img.w-full",
"nodeLabel": "Vibe42 全平台实景:电脑与手机会话无缝协同",
"boundingRect": {
"top": 3004,
"left": 40,
"right": 372,
"width": 332,
"bottom": 3253,
"height": 249
}
},
"subItems": {
"type": "subitems",
"items": [
{
"reason": "This image file is larger than it needs to be (2400x1800) for its displayed dimensions (332x249). Use responsive images to reduce the image download size.",
"wastedBytes": 221720
}
]
},
"totalBytes": 226046,
"wastedBytes": 221720
},
{
"url": "https://vibe42.ai/images/x/hero-slides/slide-mobile-codex-notify.webp",
"node": {
"lhId": "page-9-IMG",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,0,SECTION,1,DIV,0,DIV,1,DIV,0,DIV,1,DIV,0,FIGURE,0,IMG",
"type": "node",
"snippet": "<img alt=\"iOS 手机端:真实系统通知推送与 OpenAI Codex 终端流\" width=\"1260\" height=\"2736\" class=\"w-full h-full object-cover block\" loading=\"lazy\" src=\"/images/x/hero-slides/slide-mobile-codex-notify.webp\">",
"selector": "div.grid > div.group/tile > figure.w-full > img.w-full",
"nodeLabel": "iOS 手机端:真实系统通知推送与 OpenAI Codex 终端流",
"boundingRect": {
"top": 433,
"left": 154,
"right": 258,
"width": 103,
"bottom": 511,
"height": 78
}
},
"subItems": {
"type": "subitems",
"items": [
{
"reason": "Increasing the image compression factor could improve this image's download size.",
"wastedBytes": 9206
},
{
"reason": "This image file is larger than it needs to be (1260x953) for its displayed dimensions (103x224). Use responsive images to reduce the image download size.",
"wastedBytes": 205234
}
]
},
"totalBytes": 209276,
"wastedBytes": 205412
},
{
"url": "https://vibe42.ai/images/x/hero-slides/slide-windows-session.webp",
"node": {
"lhId": "page-10-IMG",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,0,SECTION,1,DIV,0,DIV,1,DIV,0,DIV,2,DIV,0,FIGURE,0,IMG",
"type": "node",
"snippet": "<img alt=\"Windows 原生客户端:GLM-5.3 终端输出与状态流\" width=\"2400\" height=\"1800\" class=\"w-full h-full object-cover block\" loading=\"lazy\" src=\"/images/x/hero-slides/slide-windows-session.webp\">",
"selector": "div.grid > div.group/tile > figure.w-full > img.w-full",
"nodeLabel": "Windows 原生客户端:GLM-5.3 终端输出与状态流",
"boundingRect": {
"top": 433,
"left": 276,
"right": 379,
"width": 103,
"bottom": 511,
"height": 78
}
},
"subItems": {
"type": "subitems",
"items": [
{
"reason": "This image file is larger than it needs to be (1903x1438) for its displayed dimensions (107x78). Use responsive images to reduce the image download size.",
"wastedBytes": 178805
}
]
},
"totalBytes": 179346,
"wastedBytes": 178805
},
{
"url": "https://vibe42.ai/images/x/ghostty-kitty.webp",
"node": {
"lhId": "page-11-IMG",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,1,DIV,3,SECTION,0,DIV,0,DIV,0,FIGURE,0,IMG",
"type": "node",
"snippet": "<img alt=\"Ghostty 原生终端渲染 Kitty 图形协议真实截图\" width=\"1260\" height=\"2736\" class=\"w-full h-full object-cover block\" loading=\"lazy\" src=\"/images/x/ghostty-kitty.webp\">",
"selector": "div.order-2 > div.w-full > figure.w-full > img.w-full",
"nodeLabel": "Ghostty 原生终端渲染 Kitty 图形协议真实截图",
"boundingRect": {
"top": 3982,
"left": 40,
"right": 296,
"width": 256,
"bottom": 4538,
"height": 556
}
},
"subItems": {
"type": "subitems",
"items": [
{
"reason": "This image file is larger than it needs to be (1260x2736) for its displayed dimensions (256x556). Use responsive images to reduce the image download size.",
"wastedBytes": 99220
}
]
},
"totalBytes": 103492,
"wastedBytes": 99220
},
{
"url": "https://vibe42.ai/images/x/hero-slides/slide-mobile-markdown.webp",
"node": {
"lhId": "page-12-IMG",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,0,SECTION,1,DIV,0,DIV,1,DIV,0,DIV,3,DIV,0,FIGURE,0,IMG",
"type": "node",
"snippet": "<img alt=\"iOS 手机端:工作区 Markdown 与代码文件高精查看器\" width=\"1260\" height=\"2736\" class=\"w-full h-full object-cover block\" loading=\"lazy\" src=\"/images/x/hero-slides/slide-mobile-markdown.webp\">",
"selector": "div.grid > div.group/tile > figure.w-full > img.w-full",
"nodeLabel": "iOS 手机端:工作区 Markdown 与代码文件高精查看器",
"boundingRect": {
"top": 529,
"left": 33,
"right": 136,
"width": 103,
"bottom": 606,
"height": 78
}
},
"subItems": {
"type": "subitems",
"items": [
{
"reason": "This image file is larger than it needs to be (1260x936) for its displayed dimensions (103x224). Use responsive images to reduce the image download size.",
"wastedBytes": 86502
}
]
},
"totalBytes": 88236,
"wastedBytes": 86502
},
{
"url": "https://vibe42.ai/images/x/desktop.webp",
"node": {
"lhId": "page-13-IMG",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,0,SECTION,1,DIV,0,DIV,1,DIV,0,DIV,4,DIV,0,FIGURE,0,IMG",
"type": "node",
"snippet": "<img alt=\"Vibe42 桌面端:多会话工作区与终端\" width=\"2400\" height=\"1570\" class=\"w-full h-full object-cover block\" loading=\"lazy\" src=\"/images/x/desktop.webp\">",
"selector": "div.grid > div.group/tile > figure.w-full > img.w-full",
"nodeLabel": "Vibe42 桌面端:多会话工作区与终端",
"boundingRect": {
"top": 529,
"left": 154,
"right": 258,
"width": 103,
"bottom": 606,
"height": 78
}
},
"subItems": {
"type": "subitems",
"items": [
{
"reason": "This image file is larger than it needs to be (1128x837) for its displayed dimensions (119x78). Use responsive images to reduce the image download size.",
"wastedBytes": 52197
}
]
},
"totalBytes": 52710,
"wastedBytes": 52197
},
{
"url": "https://vibe42.ai/images/x/mobile.webp",
"node": {
"lhId": "page-14-IMG",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,1,DIV,1,SECTION,1,DIV,0,DIV,0,FIGURE,0,IMG",
"type": "node",
"snippet": "<img alt=\"Vibe42 手机端终端与系统推送\" width=\"1260\" height=\"2736\" class=\"w-full h-full object-cover block\" loading=\"lazy\" src=\"/images/x/mobile.webp\">",
"selector": "div.order-2 > div.w-full > figure.w-full > img.w-full",
"nodeLabel": "Vibe42 手机端终端与系统推送",
"boundingRect": {
"top": 1820,
"left": 40,
"right": 296,
"width": 256,
"bottom": 2376,
"height": 556
}
},
"subItems": {
"type": "subitems",
"items": [
{
"reason": "This image file is larger than it needs to be (589x1280) for its displayed dimensions (256x556). Use responsive images to reduce the image download size.",
"wastedBytes": 35013
}
]
},
"totalBytes": 43168,
"wastedBytes": 35013
}
],
"headings": [
{
"key": "node",
"label": "",
"valueType": "node"
},
{
"key": "url",
"label": "URL",
"valueType": "url",
"subItemsHeading": {
"key": "reason",
"valueType": "text"
}
},
{
"key": "totalBytes",
"label": "Resource Size",
"valueType": "bytes"
},
{
"key": "wastedBytes",
"label": "Est Savings",
"valueType": "bytes",
"subItemsHeading": {
"key": "wastedBytes",
"valueType": "bytes"
}
}
],
"debugData": {
"type": "debugdata",
"wastedBytes": 1148103
}
}Each subpart has specific improvement strategies. Ideally, most of the LCP time should be spent on loading the resources, not within delays.
{
"type": "list",
"items": [
{
"type": "table",
"items": [
{
"label": "Time to first byte",
"subpart": "timeToFirstByte",
"duration": 1400.448
},
{
"label": "Element render delay",
"subpart": "elementRenderDelay",
"duration": 2479.435
}
],
"headings": [
{
"key": "label",
"label": "Subpart",
"valueType": "text"
},
{
"key": "duration",
"label": "Duration",
"valueType": "ms"
}
]
},
{
"lhId": "page-0-P",
"path": "1,HTML,1,BODY,7,DIV,2,MAIN,1,DIV,0,DIV,0,DIV,0,DIV,1,P",
"type": "node",
"snippet": "<p class=\"text-sm sm:text-base text-[#8e8e93] leading-relaxed max-w-2xl\">",
"selector": "div.rounded-3xl > div.grid > div.lg:col-span-7 > p.text-sm",
"nodeLabel": "通勤路上、咖啡馆里,我们用手机连回家里电脑,驱动 Coding Agent 写代码、调协议、发版本——Vibe42 本身就是这样一天天做出来的。自己的产品每天…",
"boundingRect": {
"top": 779,
"left": 60,
"right": 352,
"width": 292,
"bottom": 893,
"height": 114
}
}
]
}{
"finalUrl": "https://vibe42.ai/zh-HANS",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/151.0.0.0 Safari/537.36",
"formFactor": "mobile",
"throttlingMethod": "simulate",
"throttling": {
"rttMs": 150,
"throughputKbps": 1638.4,
"requestLatencyMs": 562.5,
"uploadThroughputKbps": 675,
"cpuSlowdownMultiplier": 4,
"downloadThroughputKbps": 1474.5600000000002
},
"metrics": [
{
"id": "largest-contentful-paint",
"unit": "millisecond",
"value": 2892.709
},
{
"id": "cumulative-layout-shift",
"unit": "unitless",
"value": 0.1210945844433174
},
{
"id": "total-blocking-time",
"unit": "millisecond",
"value": 52
},
{
"id": "first-contentful-paint",
"unit": "millisecond",
"value": 2667.209
},
{
"id": "speed-index",
"unit": "millisecond",
"value": 6795.7892107879825
}
]
}01 / WHAT WORKS
Positioning around Kitty protocol, Ghostty terminal rendering, and zero-background-daemon push notifications speaks directly to terminal power users without generic AI hand-waving.
The #0a0a0c background, tight border lines (oklab with 0.08 alpha), and multi-pane screenshot previews create an authentic, cohesive CLI-native atmosphere across viewports.
02 / NEXT STEPS
On a 390px mobile viewport, the primary button is '下载 macOS · Intel 版'. Mobile visitors cannot run a macOS installer on a phone, creating immediate conversion friction.
Detect navigator.userAgent or userAgentData. On iOS, default the primary button to TestFlight or Web app; on Android, default to APK download; on desktop, default to Apple Silicon or detected architecture with an architecture picker.
Each tier has an active '选择' button beneath specific dollar amounts, yet notices above and below state that billing is not yet open, confusing intent.
Change the tier button copy from '选择' to '免费加入内测' or '加入候补', or route clicks directly to the active beta download and workspace onboarding flow.
03 / DESIGN LANGUAGE
Background
#0a0a0cText
#f2f2f2Accent
#ffffffBorder
#d0d0d0CLEARER WORDS
下载 macOS · Intel 版
下载客户端 / 手机端快速开始
Defaulting to Intel Mac is outdated for modern Mac users and meaningless for mobile visitors.选择
参与内测
The page states payment is not open yet, so a transactional 'Select' label creates confusion.04 / EVIDENCE
Explore each observation, recommendation and captured record.
A blank or generic unfurl on X, Slack, or WeChat wastes the click you already earned. This is distribution, not decoration.
Set og:title, og:description, and a 1200x630 image that matches the live headline.
og:title=yes og:image=no
If you cannot see who bounced, you cannot tell if the next fix worked. Shipping without a counter is flying blind.
Put Plausible, PostHog, or GA4 on the public pages. One snippet is enough.
no gtag / plausible / posthog / umami
Mobile visitors clicking the top CTA get a desktop DMG/installer rather than mobile app access.
Render platform-aware CTA buttons in the hero section based on client OS detection.
下载 macOS · Intel 版
Without Strict-Transport-Security, a first visit can still be downgraded to http. Browsers will not pin HTTPS.
Set Strict-Transport-Security: max-age=31536000; includeSubDomains at the edge.
strict-transport-security missing
A CSP is the standard way to limit script sources. Vibe-coded pages often load anything, including injected scripts.
Start with a report-only CSP, then default-src 'self' and an explicit script-src.
content-security-policy missing
Without nosniff, browsers may interpret a file as a different type than you sent. It is a one-line header.
Set X-Content-Type-Options: nosniff.
x-content-type-options missing
The default referrer can leak internal paths and query strings to third parties.
Set Referrer-Policy: strict-origin-when-cross-origin.
referrer-policy missing
Vibe42 是你的随身终端优先工作台。手机直连电脑,随时随地跑 Agent、审代码、控终端。免配置开箱即用,支持任意 AI 编程工具。
05 / MAKE IT HAPPEN
Use the improvement prompt for this page, or the design prompt to borrow its visual language. “Recreate” includes references and implementation steps. Paste either into your coding assistant.
Update the hero download CTA in the landing page component to detect client platform. On iOS, present '获取 iOS 客户端 (TestFlight)' linking to the TestFlight section or URL. On Android, present '下载 Android APK'. On desktop, detect Apple Silicon vs Intel and default appropriately. In the pricing section, update the button label on all three tier cards from '选择' to '免费体验内测', linking smoothly down to the #download section while keeping all existing pricing specs, cards, and styling intact.