Max Potential First Input Delay
140 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.
正文
1309
操作候选
48
图片
38
HTML
1238 KB
主要入口
Sign up
Next.js / Tailwind
移动端模拟 · 性能评分
2026-09-05 · 实验室数据,非真实用户体验数据。
移动端模拟 · 实验室数据,非真实用户体验数据
2026-09-05T03:58:46.586Z · Lighthouse 13.4.1
分数会受服务器、网络和测试环境影响,独立于品味/转化评分。诊断保留 Lighthouse 原文。
140 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.
Errors logged to the console indicate unresolved problems. They can come from network request failures and other browser concerns. Learn more about this errors in console diagnostic audit
{
"type": "table",
"items": [
{
"source": "exception",
"description": "Error: Minified React error #419; visit https://react.dev/errors/419 for the full message or use the non-minified dev environment for full errors and additional helpful warnings.",
"sourceLocation": {
"url": "https://static.linear.app/web/_next/static/chunks/index-GKpBX9i4.js",
"line": 2,
"type": "source-location",
"column": 92,
"urlProvider": "network"
}
},
{
"source": "exception",
"description": "Error: Minified React error #419; visit https://react.dev/errors/419 for the full message or use the non-minified dev environment for full errors and additional helpful warnings.",
"sourceLocation": {
"url": "https://static.linear.app/web/_next/static/chunks/index-GKpBX9i4.js",
"line": 2,
"type": "source-location",
"column": 92,
"urlProvider": "network"
}
}
],
"headings": [
{
"key": "sourceLocation",
"label": "Source",
"valueType": "source-location"
},
{
"key": "description",
"label": "Description",
"valueType": "code"
}
]
}Root document took 1,120 ms
Keep the server response time for the main document short because all other requests depend on it. Learn more about the Time to First Byte metric.
{
"type": "opportunity",
"items": [
{
"url": "https://linear.app/",
"responseTime": 1117
}
],
"headings": [
{
"key": "url",
"label": "URL",
"valueType": "url"
},
{
"key": "responseTime",
"label": "Time Spent",
"valueType": "timespanMs"
}
],
"overallSavingsMs": 1017
}15.7 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.
4.1 s
Consider reducing the time spent parsing, compiling and executing JS. You may find delivering smaller JS payloads helps with this. Learn how to minimize main-thread work
{
"type": "table",
"items": [
{
"group": "other",
"duration": 1702.0480000000318,
"groupLabel": "Other"
},
{
"group": "scriptEvaluation",
"duration": 1071.9200000000178,
"groupLabel": "Script Evaluation"
},
{
"group": "styleLayout",
"duration": 917.4120000000008,
"groupLabel": "Style & Layout"
},
{
"group": "paintCompositeRender",
"duration": 211.06799999999112,
"groupLabel": "Rendering"
},
{
"group": "parseHTML",
"duration": 80.512,
"groupLabel": "Parse HTML & CSS"
},
{
"group": "scriptParseCompile",
"duration": 53.54000000000007,
"groupLabel": "Script Parsing & Compilation"
},
{
"group": "garbageCollection",
"duration": 16.975999999999992,
"groupLabel": "Garbage Collection"
}
],
"headings": [
{
"key": "groupLabel",
"label": "Category",
"valueType": "text"
},
{
"key": "duration",
"label": "Time Spent",
"valueType": "ms",
"granularity": 1
}
],
"sortedBy": [
"duration"
]
}When a button doesn't have an accessible name, screen readers announce it as "button", making it unusable for users who rely on screen readers. Learn how to make buttons more accessible.
{
"type": "table",
"items": [
{
"node": {
"lhId": "1-0-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,0,DIV,0,HEADER,0,NAV,0,DIV,0,DIV,0,UL,2,LI,0,BUTTON",
"type": "node",
"snippet": "<button type=\"button\" aria-haspopup=\"dialog\" aria-expanded=\"false\" aria-controls=\"radix-_R_jqiplei_\" data-state=\"closed\" class=\"TZTsQG_mobileMenuTrigger hCgVwa_reset-button\">",
"selector": "div > ul.TZTsQG_list > li.TZTsQG_mobileItem > button.TZTsQG_mobileMenuTrigger",
"nodeLabel": "div > ul.TZTsQG_list > li.TZTsQG_mobileItem > button.TZTsQG_mobileMenuTrigger",
"explanation": "Fix any of the following:\n Element does not have inner text that is visible to screen readers\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\n Element does not have an implicit (wrapped) <label>\n Element does not have an explicit <label>\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\"",
"boundingRect": {
"top": 0,
"left": 353,
"right": 417,
"width": 64,
"bottom": 64,
"height": 64
}
}
}
],
"headings": [
{
"key": "node",
"label": "Failing Elements",
"valueType": "node",
"subItemsHeading": {
"key": "relatedNode",
"valueType": "node"
}
}
],
"debugData": {
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2",
"ACT",
"RGAAv4",
"RGAA-11.9.1"
],
"type": "debugdata",
"impact": "critical"
}
}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-1-P",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,6,P",
"type": "node",
"snippet": "<p class=\"sc-KOGVz igJSCV Fzcv4W_inset Fzcv4W_insetSmall\">",
"selector": "div._5l06ia_container > main._5l06ia_content > div._7bwwmq_root > p.sc-KOGVz",
"nodeLabel": "POWERING THE COMPANIES BUILDING THE FUTURE",
"explanation": "Fix any of the following:\n Element has insufficient color contrast of 3.45 (foreground color: #62666d, background color: #08090a, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1",
"boundingRect": {
"top": 1011,
"left": 15,
"right": 396,
"width": 381,
"bottom": 1028,
"height": 17
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-2-DIV",
"path": "1,HTML,1,BODY,0,DIV",
"type": "node",
"snippet": "<div style=\"isolation:isolate;background:inherit\">",
"selector": "body > div",
"nodeLabel": "Skip to content →\nLog in\nSign up\nThe product development system for teams and a…",
"boundingRect": {
"top": 0,
"left": 0,
"right": 412,
"width": 412,
"bottom": 5897,
"height": 5897
}
}
}
]
}
}
],
"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"
}
}Properly ordered headings that do not skip levels convey the semantic structure of the page, making it easier to navigate and understand when using assistive technologies. Learn more about heading order.
{
"type": "table",
"items": [
{
"node": {
"lhId": "1-3-H3",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,2,DIV,1,DIV,0,DIV,2,DIV,0,DIV,0,DIV,0,H3",
"type": "node",
"snippet": "<h3 class=\"sc-KOGVz bFMHeH KFZpfa_titleText\">",
"selector": "div.KFZpfa_viewBody > div.KFZpfa_body > div.KFZpfa_title > h3.sc-KOGVz",
"nodeLabel": "Faster app launch",
"explanation": "Fix any of the following:\n Heading order invalid",
"boundingRect": {
"top": 579,
"left": 174,
"right": 489,
"width": 315,
"bottom": 592,
"height": 13
}
}
}
],
"headings": [
{
"key": "node",
"label": "Failing Elements",
"valueType": "node",
"subItemsHeading": {
"key": "relatedNode",
"valueType": "node"
}
}
],
"debugData": {
"tags": [
"cat.semantics",
"best-practice"
],
"type": "debugdata",
"impact": "moderate"
}
}Link text (and alternate text for images, when used as links) that is discernible, unique, and focusable improves the navigation experience for screen reader users. Learn how to make links accessible.
{
"type": "table",
"items": [
{
"node": {
"lhId": "1-4-A",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,4,A",
"type": "node",
"snippet": "<a href=\"/customers\" class=\"MR81zG_logosLink I_mUeq_root\" rel=\"noopener\">",
"selector": "div._5l06ia_container > main._5l06ia_content > div._7bwwmq_root > a.MR81zG_logosLink",
"nodeLabel": "div._5l06ia_container > main._5l06ia_content > div._7bwwmq_root > a.MR81zG_logosLink",
"explanation": "Fix all of the following:\n Element is in tab order and does not have accessible text\n\nFix any of the following:\n Element does not have text that is visible to screen readers\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": 945,
"left": 16,
"right": 396,
"width": 380,
"bottom": 975,
"height": 30
}
}
}
],
"headings": [
{
"key": "node",
"label": "Failing Elements",
"valueType": "node",
"subItemsHeading": {
"key": "relatedNode",
"valueType": "node"
}
}
],
"debugData": {
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag244",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.2.4.4",
"EN-9.4.1.2",
"ACT",
"RGAAv4",
"RGAA-6.2.1"
],
"type": "debugdata",
"impact": "serious"
}
}Touch targets with sufficient size and spacing help users who may have difficulty targeting small controls to activate the targets. Learn more about touch targets.
{
"type": "table",
"items": [
{
"node": {
"lhId": "1-5-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,0,DIV,0,BUTTON",
"type": "node",
"snippet": "<button type=\"button\" tabindex=\"0\" aria-haspopup=\"menu\" id=\"base-ui-_R_qpaki1lqiplei_\" class=\"Mmx1Wq_switchWorkspaceButton\" aria-expanded=\"false\">",
"selector": "div.WS84WW_frame > nav.Mmx1Wq_sidebar > div.ImRUSq_root > button#base-ui-_R_qpaki1lqiplei_",
"nodeLabel": "Linear",
"explanation": "Fix any of the following:\n Target has insufficient size (48.5px by 14px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 20px instead of at least 24px.",
"boundingRect": {
"top": 529,
"left": 26,
"right": 75,
"width": 49,
"bottom": 543,
"height": 14
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-6-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,0,DIV,0,BUTTON",
"type": "node",
"snippet": "<button data-active=\"false\" data-interactive=\"true\" class=\"Mmx1Wq_navItem\">",
"selector": "nav.Mmx1Wq_sidebar > div > div.Mmx1Wq_navItems > button.Mmx1Wq_navItem",
"nodeLabel": "Pulse",
"boundingRect": {
"top": 551,
"left": 26,
"right": 130,
"width": 104,
"bottom": 565,
"height": 14
}
}
}
]
}
},
{
"node": {
"lhId": "1-6-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,0,DIV,0,BUTTON",
"type": "node",
"snippet": "<button data-active=\"false\" data-interactive=\"true\" class=\"Mmx1Wq_navItem\">",
"selector": "nav.Mmx1Wq_sidebar > div > div.Mmx1Wq_navItems > button.Mmx1Wq_navItem",
"nodeLabel": "Pulse",
"explanation": "Fix any of the following:\n Target has insufficient size (104px by 14px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 6px instead of at least 24px.",
"boundingRect": {
"top": 551,
"left": 26,
"right": 130,
"width": 104,
"bottom": 565,
"height": 14
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-5-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,0,DIV,0,BUTTON",
"type": "node",
"snippet": "<button type=\"button\" tabindex=\"0\" aria-haspopup=\"menu\" id=\"base-ui-_R_qpaki1lqiplei_\" class=\"Mmx1Wq_switchWorkspaceButton\" aria-expanded=\"false\">",
"selector": "div.WS84WW_frame > nav.Mmx1Wq_sidebar > div.ImRUSq_root > button#base-ui-_R_qpaki1lqiplei_",
"nodeLabel": "Linear",
"boundingRect": {
"top": 529,
"left": 26,
"right": 75,
"width": 49,
"bottom": 543,
"height": 14
}
}
},
{
"relatedNode": {
"lhId": "1-7-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,0,DIV,1,BUTTON",
"type": "node",
"snippet": "<button data-active=\"false\" data-interactive=\"true\" class=\"Mmx1Wq_navItem\">",
"selector": "nav.Mmx1Wq_sidebar > div > div.Mmx1Wq_navItems > button.Mmx1Wq_navItem",
"nodeLabel": "Inbox",
"boundingRect": {
"top": 566,
"left": 26,
"right": 130,
"width": 104,
"bottom": 580,
"height": 14
}
}
}
]
}
},
{
"node": {
"lhId": "1-7-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,0,DIV,1,BUTTON",
"type": "node",
"snippet": "<button data-active=\"false\" data-interactive=\"true\" class=\"Mmx1Wq_navItem\">",
"selector": "nav.Mmx1Wq_sidebar > div > div.Mmx1Wq_navItems > button.Mmx1Wq_navItem",
"nodeLabel": "Inbox",
"explanation": "Fix any of the following:\n Target has insufficient size (104px by 14px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 6px instead of at least 24px.",
"boundingRect": {
"top": 566,
"left": 26,
"right": 130,
"width": 104,
"bottom": 580,
"height": 14
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-6-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,0,DIV,0,BUTTON",
"type": "node",
"snippet": "<button data-active=\"false\" data-interactive=\"true\" class=\"Mmx1Wq_navItem\">",
"selector": "nav.Mmx1Wq_sidebar > div > div.Mmx1Wq_navItems > button.Mmx1Wq_navItem",
"nodeLabel": "Pulse",
"boundingRect": {
"top": 551,
"left": 26,
"right": 130,
"width": 104,
"bottom": 565,
"height": 14
}
}
},
{
"relatedNode": {
"lhId": "1-8-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,0,DIV,2,BUTTON",
"type": "node",
"snippet": "<button data-active=\"false\" data-interactive=\"true\" class=\"Mmx1Wq_navItem\">",
"selector": "nav.Mmx1Wq_sidebar > div > div.Mmx1Wq_navItems > button.Mmx1Wq_navItem",
"nodeLabel": "My issues",
"boundingRect": {
"top": 581,
"left": 26,
"right": 130,
"width": 104,
"bottom": 595,
"height": 14
}
}
}
]
}
},
{
"node": {
"lhId": "1-8-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,0,DIV,2,BUTTON",
"type": "node",
"snippet": "<button data-active=\"false\" data-interactive=\"true\" class=\"Mmx1Wq_navItem\">",
"selector": "nav.Mmx1Wq_sidebar > div > div.Mmx1Wq_navItems > button.Mmx1Wq_navItem",
"nodeLabel": "My issues",
"explanation": "Fix any of the following:\n Target has insufficient size (104px by 14px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 6px instead of at least 24px.",
"boundingRect": {
"top": 581,
"left": 26,
"right": 130,
"width": 104,
"bottom": 595,
"height": 14
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-7-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,0,DIV,1,BUTTON",
"type": "node",
"snippet": "<button data-active=\"false\" data-interactive=\"true\" class=\"Mmx1Wq_navItem\">",
"selector": "nav.Mmx1Wq_sidebar > div > div.Mmx1Wq_navItems > button.Mmx1Wq_navItem",
"nodeLabel": "Inbox",
"boundingRect": {
"top": 566,
"left": 26,
"right": 130,
"width": 104,
"bottom": 580,
"height": 14
}
}
},
{
"relatedNode": {
"lhId": "1-9-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,0,DIV,3,BUTTON",
"type": "node",
"snippet": "<button data-active=\"false\" data-interactive=\"true\" class=\"Mmx1Wq_navItem\">",
"selector": "nav.Mmx1Wq_sidebar > div > div.Mmx1Wq_navItems > button.Mmx1Wq_navItem",
"nodeLabel": "Reviews",
"boundingRect": {
"top": 596,
"left": 26,
"right": 130,
"width": 104,
"bottom": 610,
"height": 14
}
}
}
]
}
},
{
"node": {
"lhId": "1-9-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,0,DIV,3,BUTTON",
"type": "node",
"snippet": "<button data-active=\"false\" data-interactive=\"true\" class=\"Mmx1Wq_navItem\">",
"selector": "nav.Mmx1Wq_sidebar > div > div.Mmx1Wq_navItems > button.Mmx1Wq_navItem",
"nodeLabel": "Reviews",
"explanation": "Fix any of the following:\n Target has insufficient size (104px by 14px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 6px instead of at least 24px.",
"boundingRect": {
"top": 596,
"left": 26,
"right": 130,
"width": 104,
"bottom": 610,
"height": 14
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-8-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,0,DIV,2,BUTTON",
"type": "node",
"snippet": "<button data-active=\"false\" data-interactive=\"true\" class=\"Mmx1Wq_navItem\">",
"selector": "nav.Mmx1Wq_sidebar > div > div.Mmx1Wq_navItems > button.Mmx1Wq_navItem",
"nodeLabel": "My issues",
"boundingRect": {
"top": 581,
"left": 26,
"right": 130,
"width": 104,
"bottom": 595,
"height": 14
}
}
}
]
}
},
{
"node": {
"lhId": "1-10-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,3,DIV,0,BUTTON",
"type": "node",
"snippet": "<button data-active=\"false\" data-interactive=\"true\" class=\"Mmx1Wq_navItem\">",
"selector": "nav.Mmx1Wq_sidebar > div > div.Mmx1Wq_navItems > button.Mmx1Wq_navItem",
"nodeLabel": "Initiatives",
"explanation": "Fix any of the following:\n Target has insufficient size (104px by 14px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 2px instead of at least 24px.",
"boundingRect": {
"top": 630,
"left": 26,
"right": 130,
"width": 104,
"bottom": 644,
"height": 14
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-11-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,2,BUTTON",
"type": "node",
"snippet": "<button class=\"Mmx1Wq_navItem Mmx1Wq_collapsible\" tabindex=\"-1\">",
"selector": "div.WS84WW_frame > nav.Mmx1Wq_sidebar > div > button.Mmx1Wq_navItem",
"nodeLabel": "Workspace",
"boundingRect": {
"top": 618,
"left": 26,
"right": 130,
"width": 104,
"bottom": 630,
"height": 12
}
}
},
{
"relatedNode": {
"lhId": "1-12-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,3,DIV,1,BUTTON",
"type": "node",
"snippet": "<button data-active=\"false\" data-interactive=\"true\" class=\"Mmx1Wq_navItem\">",
"selector": "nav.Mmx1Wq_sidebar > div > div.Mmx1Wq_navItems > button.Mmx1Wq_navItem",
"nodeLabel": "Projects",
"boundingRect": {
"top": 645,
"left": 26,
"right": 130,
"width": 104,
"bottom": 659,
"height": 14
}
}
}
]
}
},
{
"node": {
"lhId": "1-12-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,3,DIV,1,BUTTON",
"type": "node",
"snippet": "<button data-active=\"false\" data-interactive=\"true\" class=\"Mmx1Wq_navItem\">",
"selector": "nav.Mmx1Wq_sidebar > div > div.Mmx1Wq_navItems > button.Mmx1Wq_navItem",
"nodeLabel": "Projects",
"explanation": "Fix any of the following:\n Target has insufficient size (104px by 14px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 6px instead of at least 24px.",
"boundingRect": {
"top": 645,
"left": 26,
"right": 130,
"width": 104,
"bottom": 659,
"height": 14
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-10-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,3,DIV,0,BUTTON",
"type": "node",
"snippet": "<button data-active=\"false\" data-interactive=\"true\" class=\"Mmx1Wq_navItem\">",
"selector": "nav.Mmx1Wq_sidebar > div > div.Mmx1Wq_navItems > button.Mmx1Wq_navItem",
"nodeLabel": "Initiatives",
"boundingRect": {
"top": 630,
"left": 26,
"right": 130,
"width": 104,
"bottom": 644,
"height": 14
}
}
},
{
"relatedNode": {
"lhId": "1-13-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,3,DIV,2,BUTTON",
"type": "node",
"snippet": "<button data-interactive=\"false\" class=\"Mmx1Wq_navItem\" tabindex=\"-1\">",
"selector": "nav.Mmx1Wq_sidebar > div > div.Mmx1Wq_navItems > button.Mmx1Wq_navItem",
"nodeLabel": "More",
"boundingRect": {
"top": 660,
"left": 26,
"right": 130,
"width": 104,
"bottom": 674,
"height": 14
}
}
}
]
}
},
{
"node": {
"lhId": "1-14-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,6,DIV,0,BUTTON",
"type": "node",
"snippet": "<button data-active=\"true\" data-interactive=\"true\" class=\"Mmx1Wq_navItem\">",
"selector": "nav.Mmx1Wq_sidebar > div > div.Mmx1Wq_navItems > button.Mmx1Wq_navItem",
"nodeLabel": "Faster app launch",
"explanation": "Fix any of the following:\n Target has insufficient size (104px by 14px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 2px instead of at least 24px.",
"boundingRect": {
"top": 694,
"left": 26,
"right": 130,
"width": 104,
"bottom": 708,
"height": 14
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-15-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,5,BUTTON",
"type": "node",
"snippet": "<button class=\"Mmx1Wq_navItem Mmx1Wq_collapsible\" tabindex=\"-1\">",
"selector": "div.WS84WW_frame > nav.Mmx1Wq_sidebar > div > button.Mmx1Wq_navItem",
"nodeLabel": "Favorites",
"boundingRect": {
"top": 682,
"left": 26,
"right": 130,
"width": 104,
"bottom": 694,
"height": 12
}
}
},
{
"relatedNode": {
"lhId": "1-16-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,6,DIV,1,BUTTON",
"type": "node",
"snippet": "<button data-active=\"false\" data-interactive=\"true\" class=\"Mmx1Wq_navItem\">",
"selector": "nav.Mmx1Wq_sidebar > div > div.Mmx1Wq_navItems > button.Mmx1Wq_navItem",
"nodeLabel": "Agent tasks",
"boundingRect": {
"top": 709,
"left": 26,
"right": 130,
"width": 104,
"bottom": 723,
"height": 14
}
}
}
]
}
},
{
"node": {
"lhId": "1-16-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,6,DIV,1,BUTTON",
"type": "node",
"snippet": "<button data-active=\"false\" data-interactive=\"true\" class=\"Mmx1Wq_navItem\">",
"selector": "nav.Mmx1Wq_sidebar > div > div.Mmx1Wq_navItems > button.Mmx1Wq_navItem",
"nodeLabel": "Agent tasks",
"explanation": "Fix any of the following:\n Target has insufficient size (104px by 14px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 6px instead of at least 24px.",
"boundingRect": {
"top": 709,
"left": 26,
"right": 130,
"width": 104,
"bottom": 723,
"height": 14
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-14-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,6,DIV,0,BUTTON",
"type": "node",
"snippet": "<button data-active=\"true\" data-interactive=\"true\" class=\"Mmx1Wq_navItem\">",
"selector": "nav.Mmx1Wq_sidebar > div > div.Mmx1Wq_navItems > button.Mmx1Wq_navItem",
"nodeLabel": "Faster app launch",
"boundingRect": {
"top": 694,
"left": 26,
"right": 130,
"width": 104,
"bottom": 708,
"height": 14
}
}
},
{
"relatedNode": {
"lhId": "1-17-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,6,DIV,2,BUTTON",
"type": "node",
"snippet": "<button data-active=\"false\" data-interactive=\"true\" class=\"Mmx1Wq_navItem\">",
"selector": "nav.Mmx1Wq_sidebar > div > div.Mmx1Wq_navItems > button.Mmx1Wq_navItem",
"nodeLabel": "Agent Insights",
"boundingRect": {
"top": 724,
"left": 26,
"right": 130,
"width": 104,
"bottom": 738,
"height": 14
}
}
}
]
}
},
{
"node": {
"lhId": "1-17-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,6,DIV,2,BUTTON",
"type": "node",
"snippet": "<button data-active=\"false\" data-interactive=\"true\" class=\"Mmx1Wq_navItem\">",
"selector": "nav.Mmx1Wq_sidebar > div > div.Mmx1Wq_navItems > button.Mmx1Wq_navItem",
"nodeLabel": "Agent Insights",
"explanation": "Fix any of the following:\n Target has insufficient size (104px by 14px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 6px instead of at least 24px.",
"boundingRect": {
"top": 724,
"left": 26,
"right": 130,
"width": 104,
"bottom": 738,
"height": 14
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-16-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,6,DIV,1,BUTTON",
"type": "node",
"snippet": "<button data-active=\"false\" data-interactive=\"true\" class=\"Mmx1Wq_navItem\">",
"selector": "nav.Mmx1Wq_sidebar > div > div.Mmx1Wq_navItems > button.Mmx1Wq_navItem",
"nodeLabel": "Agent tasks",
"boundingRect": {
"top": 709,
"left": 26,
"right": 130,
"width": 104,
"bottom": 723,
"height": 14
}
}
},
{
"relatedNode": {
"lhId": "1-18-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,6,DIV,3,BUTTON",
"type": "node",
"snippet": "<button data-active=\"false\" data-interactive=\"true\" class=\"Mmx1Wq_navItem\">",
"selector": "nav.Mmx1Wq_sidebar > div > div.Mmx1Wq_navItems > button.Mmx1Wq_navItem",
"nodeLabel": "UI Refresh",
"boundingRect": {
"top": 739,
"left": 26,
"right": 130,
"width": 104,
"bottom": 753,
"height": 14
}
}
}
]
}
},
{
"node": {
"lhId": "1-18-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,6,DIV,3,BUTTON",
"type": "node",
"snippet": "<button data-active=\"false\" data-interactive=\"true\" class=\"Mmx1Wq_navItem\">",
"selector": "nav.Mmx1Wq_sidebar > div > div.Mmx1Wq_navItems > button.Mmx1Wq_navItem",
"nodeLabel": "UI Refresh",
"explanation": "Fix any of the following:\n Target has insufficient size (104px by 14px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 6px instead of at least 24px.",
"boundingRect": {
"top": 739,
"left": 26,
"right": 130,
"width": 104,
"bottom": 753,
"height": 14
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-17-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,3,DIV,1,MAIN,1,DIV,0,DIV,8,DIV,0,DIV,3,DIV,0,DIV,1,NAV,2,DIV,6,DIV,2,BUTTON",
"type": "node",
"snippet": "<button data-active=\"false\" data-interactive=\"true\" class=\"Mmx1Wq_navItem\">",
"selector": "nav.Mmx1Wq_sidebar > div > div.Mmx1Wq_navItems > button.Mmx1Wq_navItem",
"nodeLabel": "Agent Insights",
"boundingRect": {
"top": 724,
"left": 26,
"right": 130,
"width": 104,
"bottom": 738,
"height": 14
}
}
}
]
}
}
],
"headings": [
{
"key": "node",
"label": "Failing Elements",
"valueType": "node",
"subItemsHeading": {
"key": "relatedNode",
"valueType": "node"
}
}
],
"debugData": {
"tags": [
"cat.sensory-and-visual-cues",
"wcag22aa",
"wcag258"
],
"type": "debugdata",
"impact": "serious"
}
}Est savings of 7 KiB
Minifying CSS files can reduce network payload sizes. Learn how to minify CSS.
{
"type": "opportunity",
"items": [
{
"url": ".cVAQDa { font-size: var(--title-8-size); letter-spacing: var(--title-8-letter-spacing); … } …",
"totalBytes": 36099,
"wastedBytes": 7563,
"wastedPercent": 20.95028089576385
}
],
"headings": [
{
"key": "url",
"label": "URL",
"valueType": "url"
},
{
"key": "totalBytes",
"label": "Transfer Size",
"valueType": "bytes"
},
{
"key": "wastedBytes",
"label": "Est Savings",
"valueType": "bytes"
}
],
"sortedBy": [
"wastedBytes"
],
"debugData": {
"type": "debugdata",
"metricSavings": {
"FCP": 0,
"LCP": 0
}
},
"overallSavingsMs": 0,
"overallSavingsBytes": 7563
}Est savings of 30 KiB
Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. Learn how to reduce unused CSS.
{
"type": "opportunity",
"items": [
{
"url": ".cVAQDa { font-size: var(--title-8-size); letter-spacing: var(--title-8-letter-spacing); … } …",
"totalBytes": 36099,
"wastedBytes": 30884,
"wastedPercent": 85.55464447571664
}
],
"headings": [
{
"key": "url",
"label": "URL",
"valueType": "url"
},
{
"key": "totalBytes",
"label": "Transfer Size",
"valueType": "bytes"
},
{
"key": "wastedBytes",
"label": "Est Savings",
"valueType": "bytes"
}
],
"sortedBy": [
"wastedBytes"
],
"debugData": {
"type": "debugdata",
"metricSavings": {
"FCP": 0,
"LCP": 0
}
},
"overallSavingsMs": 0,
"overallSavingsBytes": 30884
}{
"finalUrl": "https://linear.app/",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) 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": 15603.540500000006
},
{
"id": "cumulative-layout-shift",
"unit": "unitless",
"value": 0
},
{
"id": "total-blocking-time",
"unit": "millisecond",
"value": 129.5
},
{
"id": "first-contentful-paint",
"unit": "millisecond",
"value": 8089.190500000002
},
{
"id": "speed-index",
"unit": "millisecond",
"value": 8089.190500000002
}
]
}01 / 值得借鉴
首屏演示直接呈现工作区、任务、评审和状态,支持“产品开发系统”的定位。
大标题、灰色说明和深色产品面板之间的亮度差异明确,强调色只在工作区局部出现。
02 / 下一步
完整桌面界面缩进手机宽度后,任务与侧栏文字很小,展示价值主要停留在轮廓。
在手机断点展示聚焦任务详情的裁切图,并提供查看完整截图的入口;不要将产品内容替换成虚构 UI。
03 / 设计语言
背景
#08090a文字
#f7f8f8强调
#e5e5e6表面
#0f1011参数来自页面元素采样,空值表示未取得;不将单个元素的参数当作全站规范。
04 / 检查依据
数据来自同次页面采集;字体、圆角和间距为具体元素采样,不代表全站唯一设计规范。空值为未取得。HTML 为源码体积,不是压缩传输量;脚本数为 DOM 标签数,不是请求数。
完整桌面界面缩进手机宽度后,任务与侧栏文字很小,展示价值主要停留在轮廓。
在手机断点展示聚焦任务详情的裁切图,并提供查看完整截图的入口;不要将产品内容替换成虚构 UI。
mobile.png: scaled desktop workspace below the hero

Purpose-built for planning and building products with AI agents.
05 / 开始动手
优化指令用于调整这个页面;设计指令用于借鉴它的视觉语言。「做同款」会附带截图与实施步骤。复制后粘贴到你的代码助手中。
请基于 https://linear.app 的 2026-09-05T02:31:31.504Z 页面快照优化当前项目。先确认当前实现与快照差异,不要把已变化的内容重新改回旧版。
设计基线
左对齐标题与说明横跨宽画布,下面是一张包含侧栏、任务详情和状态信息的产品演示;手机保留左对齐阅读线。
{
"colors": [
{
"role": "bg",
"hex": "#08090a"
},
{
"role": "ink",
"hex": "#f7f8f8"
},
{
"role": "accent",
"hex": "#e5e5e6"
},
{
"role": "surface",
"hex": "#0f1011"
}
],
"fonts": {
"body": "Inter Variable",
"display": "Inter Variable",
"stack": [
"Inter Variable",
"Berkeley Mono"
]
},
"radius": {
"button": "9999px",
"card": "9px",
"field": ""
},
"space": {
"section": "0px",
"card": "12px 16px 16px"
},
"type": {
"h1": "64px",
"body": "16px",
"weight": "510",
"lineHeight": "24px",
"letterSpacing": "-1.408px"
}
}
数据来自同次页面采集;字体、圆角和间距为具体元素采样,不代表全站唯一设计规范。空值为未取得。HTML 为源码体积,不是压缩传输量;脚本数为 DOM 标签数,不是请求数。
执行事项
1. 为手机产品演示提供可读细节
在手机断点展示聚焦任务详情的裁切图,并提供查看完整截图的入口;不要将产品内容替换成虚构 UI。
依据: mobile.png: scaled desktop workspace below the hero
验收
- 在 1440×900 和 390×844 分别核对文字、布局和主要操作“Sign up”。
- 保留已有品牌、登录和业务链路,不从静态截图推断交互故障。
- 只修复有证据的项;涉及安全响应头时先用报告模式验证现有资源及认证兼容性。
- 对比修改前后的截图,并执行相关功能测试。不要声称未经测试的功能已通过。