chrome-devtools-frontend 1.0.1635648 → 1.0.1636056
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/verification/SKILL.md +1 -1
- package/front_end/core/i18n/collect-ui-strings.js +3 -3
- package/front_end/core/root/Runtime.ts +5 -0
- package/front_end/core/sdk/SourceMapCache.ts +13 -11
- package/front_end/core/sdk/SourceMapManager.ts +7 -3
- package/front_end/entrypoints/greendev_floaty/FloatyEntrypoint.ts +84 -22
- package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +7 -33
- package/front_end/models/ai_assistance/agents/AiAgent.ts +11 -4
- package/front_end/models/ai_assistance/agents/GreenDevAgent.ts +68 -5
- package/front_end/models/ai_assistance/agents/GreenDevAgentAntigravityCliSocketClient.ts +53 -0
- package/front_end/models/ai_assistance/agents/GreenDevAgentGeminiCliSocketClient.ts +117 -0
- package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +20 -2
- package/front_end/models/ai_assistance/ai_assistance.ts +4 -0
- package/front_end/models/greendev/Prototypes.ts +17 -5
- package/front_end/panels/ai_assistance/components/ChatMessage.ts +32 -1
- package/front_end/panels/network/NetworkLogView.ts +4 -1
- package/front_end/panels/settings/SettingsScreen.ts +3 -2
- package/front_end/panels/sources/PersistenceActions.ts +21 -7
- package/front_end/panels/timeline/TimelineDetailsView.ts +36 -0
- package/front_end/panels/whats_new/ReleaseNoteText.ts +9 -9
- package/front_end/panels/whats_new/resources/WNDT.md +9 -9
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/third_party/puppeteer/README.chromium +2 -2
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +8 -5
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +35 -33
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/TargetManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/TargetManager.js +0 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/TargetManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.js +0 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.d.ts +8 -8
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.js +8 -8
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/CustomQuerySelector.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/CustomQuerySelector.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/CustomQuerySelector.js +2 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/CustomQuerySelector.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/injected.d.ts +2 -7
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/injected.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/PuppeteerNode.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/PuppeteerNode.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/Mutex.d.ts +10 -7
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/Mutex.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/Mutex.js +16 -12
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/Mutex.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/types.d.ts +8 -5
- package/front_end/third_party/puppeteer/package/package.json +5 -7
- package/front_end/third_party/puppeteer/package/src/cdp/TargetManager.ts +0 -1
- package/front_end/third_party/puppeteer/package/src/cdp/WebMCP.ts +0 -3
- package/front_end/third_party/puppeteer/package/src/common/Debug.ts +11 -11
- package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/injected/CustomQuerySelector.ts +3 -2
- package/front_end/third_party/puppeteer/package/src/node/PuppeteerNode.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/util/Mutex.ts +17 -12
- package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
- package/front_end/ui/components/markdown_view/MarkdownLinksMap.ts +7 -0
- package/front_end/ui/legacy/Dialog.ts +1 -0
- package/front_end/ui/legacy/UIUtils.ts +4 -0
- package/front_end/ui/legacy/components/source_frame/FontView.ts +11 -3
- package/front_end/ui/visual_logging/KnownContextValues.ts +3 -0
- package/package.json +1 -12
|
@@ -1093,7 +1093,16 @@ export class PerformanceAgent extends AiAgent<AgentFocus> {
|
|
|
1093
1093
|
|
|
1094
1094
|
const key = `getEventByKey('${params.eventKey}')`;
|
|
1095
1095
|
this.#cacheFunctionResult(focus, key, details);
|
|
1096
|
-
return {
|
|
1096
|
+
return {
|
|
1097
|
+
result: {details},
|
|
1098
|
+
widgets: [{
|
|
1099
|
+
name: 'TIMELINE_EVENT_SUMMARY',
|
|
1100
|
+
data: {
|
|
1101
|
+
event,
|
|
1102
|
+
parsedTrace,
|
|
1103
|
+
},
|
|
1104
|
+
}],
|
|
1105
|
+
};
|
|
1097
1106
|
},
|
|
1098
1107
|
});
|
|
1099
1108
|
|
|
@@ -1493,7 +1502,16 @@ export class PerformanceAgent extends AiAgent<AgentFocus> {
|
|
|
1493
1502
|
|
|
1494
1503
|
const revealable = new SDK.TraceObject.RevealableEvent(event);
|
|
1495
1504
|
await Common.Revealer.reveal(revealable);
|
|
1496
|
-
return {
|
|
1505
|
+
return {
|
|
1506
|
+
result: {success: true},
|
|
1507
|
+
widgets: [{
|
|
1508
|
+
name: 'TIMELINE_EVENT_SUMMARY',
|
|
1509
|
+
data: {
|
|
1510
|
+
event,
|
|
1511
|
+
parsedTrace,
|
|
1512
|
+
},
|
|
1513
|
+
}],
|
|
1514
|
+
};
|
|
1497
1515
|
},
|
|
1498
1516
|
});
|
|
1499
1517
|
}
|
|
@@ -10,6 +10,8 @@ import * as ContextSelectionAgent from './agents/ContextSelectionAgent.js';
|
|
|
10
10
|
import * as ConversationSummaryAgent from './agents/ConversationSummaryAgent.js';
|
|
11
11
|
import * as FileAgent from './agents/FileAgent.js';
|
|
12
12
|
import * as GreenDevAgent from './agents/GreenDevAgent.js';
|
|
13
|
+
import * as GreenDevAgentAntigravityCliSocketClient from './agents/GreenDevAgentAntigravityCliSocketClient.js';
|
|
14
|
+
import * as GreenDevAgentGeminiCliSocketClient from './agents/GreenDevAgentGeminiCliSocketClient.js';
|
|
13
15
|
import * as NetworkAgent from './agents/NetworkAgent.js';
|
|
14
16
|
import * as PatchAgent from './agents/PatchAgent.js';
|
|
15
17
|
import * as PerformanceAgent from './agents/PerformanceAgent.js';
|
|
@@ -57,6 +59,8 @@ export {
|
|
|
57
59
|
FileAgent,
|
|
58
60
|
FileFormatter,
|
|
59
61
|
GreenDevAgent,
|
|
62
|
+
GreenDevAgentAntigravityCliSocketClient,
|
|
63
|
+
GreenDevAgentGeminiCliSocketClient,
|
|
60
64
|
Injected,
|
|
61
65
|
LighthouseFormatter,
|
|
62
66
|
NetworkAgent,
|
|
@@ -9,7 +9,8 @@ let instance: Prototypes|null = null;
|
|
|
9
9
|
|
|
10
10
|
export interface GreenDevSettings {
|
|
11
11
|
aiAnnotations: Common.Settings.Setting<boolean>;
|
|
12
|
-
|
|
12
|
+
beyondStylingGemini: Common.Settings.Setting<boolean>;
|
|
13
|
+
beyondStylingAntigravity: Common.Settings.Setting<boolean>;
|
|
13
14
|
breakpointDebuggerAgent: Common.Settings.Setting<boolean>;
|
|
14
15
|
emulationCapabilities: Common.Settings.Setting<boolean>;
|
|
15
16
|
}
|
|
@@ -42,10 +43,15 @@ export class Prototypes {
|
|
|
42
43
|
false,
|
|
43
44
|
Common.Settings.SettingStorageType.LOCAL,
|
|
44
45
|
);
|
|
45
|
-
const
|
|
46
|
-
'greendev-beyond-styling-enabled',
|
|
46
|
+
const beyondStylingGemini = settings.createSetting(
|
|
47
|
+
'greendev-beyond-styling-gemini-enabled',
|
|
47
48
|
false,
|
|
48
|
-
Common.Settings.SettingStorageType.
|
|
49
|
+
Common.Settings.SettingStorageType.GLOBAL,
|
|
50
|
+
);
|
|
51
|
+
const beyondStylingAntigravity = settings.createSetting(
|
|
52
|
+
'greendev-beyond-styling-antigravity-enabled',
|
|
53
|
+
false,
|
|
54
|
+
Common.Settings.SettingStorageType.GLOBAL,
|
|
49
55
|
);
|
|
50
56
|
const breakpointDebuggerAgent = settings.createSetting(
|
|
51
57
|
'greendev-breakpoint-debugger-agent-enabled',
|
|
@@ -58,6 +64,12 @@ export class Prototypes {
|
|
|
58
64
|
Common.Settings.SettingStorageType.LOCAL,
|
|
59
65
|
);
|
|
60
66
|
|
|
61
|
-
return {
|
|
67
|
+
return {
|
|
68
|
+
aiAnnotations,
|
|
69
|
+
beyondStylingGemini,
|
|
70
|
+
beyondStylingAntigravity,
|
|
71
|
+
breakpointDebuggerAgent,
|
|
72
|
+
emulationCapabilities
|
|
73
|
+
};
|
|
62
74
|
}
|
|
63
75
|
}
|
|
@@ -15,7 +15,7 @@ import type * as Protocol from '../../../generated/protocol.js';
|
|
|
15
15
|
import type {
|
|
16
16
|
AiWidget, BottomUpTreeAiWidget, ComputedStyleAiWidget, CoreVitalsAiWidget, DomTreeAiWidget, LighthouseReportAiWidget,
|
|
17
17
|
PerfInsightAiWidget, PerformanceTraceAiWidget, SourceFileAiWidget, StylePropertiesAiWidget,
|
|
18
|
-
TimelineRangeSummaryAiWidget} from '../../../models/ai_assistance/agents/AiAgent.js';
|
|
18
|
+
TimelineEventSummaryAiWidget, TimelineRangeSummaryAiWidget} from '../../../models/ai_assistance/agents/AiAgent.js';
|
|
19
19
|
import * as AiAssistanceModel from '../../../models/ai_assistance/ai_assistance.js';
|
|
20
20
|
import * as ComputedStyle from '../../../models/computed_style/computed_style.js';
|
|
21
21
|
import * as Trace from '../../../models/trace/trace.js';
|
|
@@ -248,6 +248,14 @@ const UIStringsNotTranslate = {
|
|
|
248
248
|
* @description Accessible label for the reveal button in the Lighthouse report widget.
|
|
249
249
|
*/
|
|
250
250
|
revealLighthouse: 'Reveal Lighthouse report',
|
|
251
|
+
/**
|
|
252
|
+
* @description Title for the Timeline event summary widget.
|
|
253
|
+
*/
|
|
254
|
+
timelineEventSummary: 'Event summary',
|
|
255
|
+
/**
|
|
256
|
+
* @description Accessible label for the reveal button in the Timeline event summary widget.
|
|
257
|
+
*/
|
|
258
|
+
revealTimelineEventSummary: 'Reveal event',
|
|
251
259
|
/**
|
|
252
260
|
* @description Title for the LCP breakdown widget.
|
|
253
261
|
*/
|
|
@@ -1454,6 +1462,8 @@ export function getWidgetSignature(widget: AiWidget): string {
|
|
|
1454
1462
|
return `${widget.name}:${widget.data.uiSourceCode.url()}`;
|
|
1455
1463
|
case 'LIGHTHOUSE_REPORT':
|
|
1456
1464
|
return `${widget.name}:${widget.data.report.fetchTime}`;
|
|
1465
|
+
case 'TIMELINE_EVENT_SUMMARY':
|
|
1466
|
+
return `${widget.name}:${widget.data.event.ts}:${widget.data.event.name}`;
|
|
1457
1467
|
default:
|
|
1458
1468
|
Platform.assertNever(widget, 'Unknown AiWidget name');
|
|
1459
1469
|
}
|
|
@@ -1543,6 +1553,9 @@ async function renderWidgets(
|
|
|
1543
1553
|
case 'LIGHTHOUSE_REPORT':
|
|
1544
1554
|
response = await makeLighthouseReportWidget(widgetData);
|
|
1545
1555
|
break;
|
|
1556
|
+
case 'TIMELINE_EVENT_SUMMARY':
|
|
1557
|
+
response = await makeTimelineEventSummaryWidget(widgetData);
|
|
1558
|
+
break;
|
|
1546
1559
|
default:
|
|
1547
1560
|
Platform.assertNever(widgetData, 'Unknown AiWidget name');
|
|
1548
1561
|
}
|
|
@@ -2100,3 +2113,21 @@ async function makeLighthouseReportWidget(widgetData: LighthouseReportAiWidget):
|
|
|
2100
2113
|
jslogContext: snapshotReport ? 'lighthouse-snapshot-report-widget' : 'lighthouse-report-widget',
|
|
2101
2114
|
};
|
|
2102
2115
|
}
|
|
2116
|
+
|
|
2117
|
+
async function makeTimelineEventSummaryWidget(widgetData: TimelineEventSummaryAiWidget):
|
|
2118
|
+
Promise<WidgetMakerResponse|null> {
|
|
2119
|
+
const renderedWidget = html`<devtools-widget class="timeline-event-summary-widget" ${widget(() => {
|
|
2120
|
+
return Timeline.TimelineDetailsView.TimelineDetailsPane.makeEventWidget(
|
|
2121
|
+
widgetData.data.event,
|
|
2122
|
+
widgetData.data.parsedTrace,
|
|
2123
|
+
);
|
|
2124
|
+
})}></devtools-widget>`;
|
|
2125
|
+
|
|
2126
|
+
return {
|
|
2127
|
+
renderedWidget,
|
|
2128
|
+
revealable: new SDK.TraceObject.RevealableEvent(widgetData.data.event),
|
|
2129
|
+
accessibleRevealLabel: lockedString(UIStringsNotTranslate.revealTimelineEventSummary),
|
|
2130
|
+
title: lockedString(UIStringsNotTranslate.timelineEventSummary),
|
|
2131
|
+
jslogContext: 'timeline-event-summary-widget',
|
|
2132
|
+
};
|
|
2133
|
+
}
|
|
@@ -2534,7 +2534,10 @@ export class NetworkLogView extends Common.ObjectWrapper.eventMixin<EventTypes,
|
|
|
2534
2534
|
// value tells curl to not set the header at all. To post an empty
|
|
2535
2535
|
// header, you have to terminate it with a semicolon.
|
|
2536
2536
|
command.push('-H ' + escapeString(name + ';'));
|
|
2537
|
-
} else if (name.toLowerCase() === 'cookie') {
|
|
2537
|
+
} else if (name.toLowerCase() === 'cookie' && value.includes('=')) {
|
|
2538
|
+
// If value contains no '=', curl treats it as a filename to read
|
|
2539
|
+
// cookies from, which would be a security risk. Fall back to -H in
|
|
2540
|
+
// that case.
|
|
2538
2541
|
command.push('-b ' + escapeString(value));
|
|
2539
2542
|
} else {
|
|
2540
2543
|
command.push('-H ' + escapeString(name + ': ' + value));
|
|
@@ -636,7 +636,7 @@ const GREENDEV_VIEW: View = (input, _output, target) => {
|
|
|
636
636
|
<span>${i18nString(UIStrings.greenDevUnstable)}</span>
|
|
637
637
|
</div>
|
|
638
638
|
<div class="settings-experiments-block">
|
|
639
|
-
${renderPrototypeCheckboxes(input.settings, ['aiAnnotations', '
|
|
639
|
+
${renderPrototypeCheckboxes(input.settings, ['aiAnnotations', 'beyondStylingGemini', 'beyondStylingAntigravity', 'breakpointDebuggerAgent', 'emulationCapabilities'])}
|
|
640
640
|
</div>
|
|
641
641
|
</devtools-card>
|
|
642
642
|
</div>
|
|
@@ -646,7 +646,8 @@ const GREENDEV_VIEW: View = (input, _output, target) => {
|
|
|
646
646
|
|
|
647
647
|
const GREENDEV_PROTOTYPE_NAMES: Record<keyof GreenDev.GreenDevSettings, string> = {
|
|
648
648
|
aiAnnotations: 'AI auto-annotations',
|
|
649
|
-
|
|
649
|
+
beyondStylingGemini: 'Beyond Styling (Gemini CLI)',
|
|
650
|
+
beyondStylingAntigravity: 'Beyond Styling (Antigravity CLI)',
|
|
650
651
|
breakpointDebuggerAgent: 'Breakpoint Debugger Agent',
|
|
651
652
|
emulationCapabilities: 'Emulation Capabilities',
|
|
652
653
|
};
|
|
@@ -115,14 +115,28 @@ export class ContextMenuProvider implements
|
|
|
115
115
|
const networkPersistenceManager = Persistence.NetworkPersistenceManager.NetworkPersistenceManager.instance();
|
|
116
116
|
|
|
117
117
|
const binding = uiSourceCode && Persistence.Persistence.PersistenceImpl.instance().binding(uiSourceCode);
|
|
118
|
-
|
|
118
|
+
// If contentProvider is already a FileSystem UISourceCode, there's a small chance that uiSourceCodeForURL
|
|
119
|
+
// might return a Network UISourceCode instead (e.g. if they share the same URL but aren't currently bound
|
|
120
|
+
// and the Network project represents the URL first in the lookup list).
|
|
121
|
+
// In this case, the binding will be null. To ensure "Open in containing folder" is still appended when
|
|
122
|
+
// right-clicking the FileSystem file in the Workspace tree, we fall back to contentProvider.
|
|
123
|
+
const fileSystemUISourceCode = binding ?
|
|
124
|
+
binding.fileSystem :
|
|
125
|
+
(contentProvider instanceof Workspace.UISourceCode.UISourceCode &&
|
|
126
|
+
contentProvider.project().type() === Workspace.Workspace.projectTypes.FileSystem ?
|
|
127
|
+
contentProvider :
|
|
128
|
+
uiSourceCode);
|
|
119
129
|
|
|
120
|
-
if (
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
130
|
+
if (fileSystemUISourceCode &&
|
|
131
|
+
fileSystemUISourceCode.project().type() === Workspace.Workspace.projectTypes.FileSystem) {
|
|
132
|
+
const fileURL = fileSystemUISourceCode.contentURL();
|
|
133
|
+
if (Common.ParsedURL.schemeIs(fileURL, 'file:')) {
|
|
134
|
+
const path = Common.ParsedURL.ParsedURL.urlToRawPathString(fileURL, Host.Platform.isWin());
|
|
135
|
+
contextMenu.revealSection().appendItem(
|
|
136
|
+
i18nString(UIStrings.openInContainingFolder),
|
|
137
|
+
() => Host.InspectorFrontendHost.InspectorFrontendHostInstance.showItemInFolder(path),
|
|
138
|
+
{jslogContext: 'open-in-containing-folder'});
|
|
139
|
+
}
|
|
126
140
|
}
|
|
127
141
|
|
|
128
142
|
if (contentProvider instanceof Workspace.UISourceCode.UISourceCode &&
|
|
@@ -93,6 +93,38 @@ export class TimelineDetailsPane extends
|
|
|
93
93
|
#onTraceBoundsChangeBound = this.#onTraceBoundsChange.bind(this);
|
|
94
94
|
#entityMapper: Trace.EntityMapper.EntityMapper|null = null;
|
|
95
95
|
|
|
96
|
+
static makeEventWidget(
|
|
97
|
+
event: Trace.Types.Events.Event,
|
|
98
|
+
parsedTrace: Trace.TraceModel.ParsedTrace,
|
|
99
|
+
): TimelineDetailsPane {
|
|
100
|
+
// Provide a mock delegate to satisfy the constructor requirements.
|
|
101
|
+
// These delegate interactions are not relevant for an AI assistant widget.
|
|
102
|
+
const mockDelegate = {
|
|
103
|
+
select: () => {},
|
|
104
|
+
zoomEvent: () => {},
|
|
105
|
+
element: document.createElement('div'),
|
|
106
|
+
set3PCheckboxDisabled: () => {},
|
|
107
|
+
selectEntryAtTime: () => {},
|
|
108
|
+
highlightEvent: () => {},
|
|
109
|
+
};
|
|
110
|
+
const pane = new TimelineDetailsPane(mockDelegate);
|
|
111
|
+
pane.hideHeader();
|
|
112
|
+
const entityMapper = new Trace.EntityMapper.EntityMapper(parsedTrace);
|
|
113
|
+
void pane
|
|
114
|
+
.setModel({
|
|
115
|
+
parsedTrace,
|
|
116
|
+
selectedEvents: [event],
|
|
117
|
+
eventToRelatedInsightsMap: null,
|
|
118
|
+
entityMapper,
|
|
119
|
+
})
|
|
120
|
+
.then(() => {
|
|
121
|
+
void pane.setSelection({
|
|
122
|
+
event,
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
return pane;
|
|
126
|
+
}
|
|
127
|
+
|
|
96
128
|
constructor(delegate: TimelineModeViewDelegate) {
|
|
97
129
|
super();
|
|
98
130
|
this.registerRequiredCSS(detailsViewStyles);
|
|
@@ -343,6 +375,10 @@ export class TimelineDetailsPane extends
|
|
|
343
375
|
return this.tabbedPane.headerElement();
|
|
344
376
|
}
|
|
345
377
|
|
|
378
|
+
hideHeader(): void {
|
|
379
|
+
this.tabbedPane.headerElement().classList.add('hidden');
|
|
380
|
+
}
|
|
381
|
+
|
|
346
382
|
setPreferredTab(tabId: string): void {
|
|
347
383
|
this.preferredTabId = tabId;
|
|
348
384
|
}
|
|
@@ -40,22 +40,22 @@ export function getReleaseNote(): ReleaseNote {
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
let releaseNote: ReleaseNote = {
|
|
43
|
-
version:
|
|
44
|
-
header: 'What
|
|
43
|
+
version: 149,
|
|
44
|
+
header: 'What’s new in DevTools 149',
|
|
45
45
|
markdownLinks: [
|
|
46
46
|
{
|
|
47
|
-
key: '
|
|
48
|
-
link: 'https://developer.chrome.com/blog/new-in-devtools-
|
|
47
|
+
key: 'devtools-for-agents',
|
|
48
|
+
link: 'https://developer.chrome.com/blog/new-in-devtools-149/#devtools-for-agents',
|
|
49
49
|
},
|
|
50
50
|
{
|
|
51
|
-
key: '
|
|
52
|
-
link: 'https://developer.chrome.com/blog/new-in-devtools-
|
|
51
|
+
key: 'ai-assistance',
|
|
52
|
+
link: 'https://developer.chrome.com/blog/new-in-devtools-149/#ai-assistance',
|
|
53
53
|
},
|
|
54
54
|
{
|
|
55
|
-
key: '
|
|
56
|
-
link: 'https://developer.chrome.com/blog/new-in-devtools-
|
|
55
|
+
key: 'css-code-completion',
|
|
56
|
+
link: 'https://developer.chrome.com/blog/new-in-devtools-149/#css-code-completion',
|
|
57
57
|
}
|
|
58
58
|
],
|
|
59
59
|
videoLinks: [],
|
|
60
|
-
link: 'https://developer.chrome.com/blog/new-in-devtools-
|
|
60
|
+
link: 'https://developer.chrome.com/blog/new-in-devtools-149/',
|
|
61
61
|
};
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
### [
|
|
1
|
+
### [DevTools for agents](devtools-for-agents)
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
DevTools for agents is now stable at version 1.0, bringing support for third-party developer tools
|
|
4
|
+
provided by the inspected page, WebMCP debugging, and an improved CLI experience.
|
|
5
5
|
|
|
6
|
-
### [
|
|
6
|
+
### [AI assistance](ai-assistance)
|
|
7
7
|
|
|
8
|
-
The
|
|
9
|
-
|
|
8
|
+
The AI assistance panel now integrates with Lighthouse data and offers interactive, widget-based agent walkthroughs.
|
|
9
|
+
Supported by an upgrade to Gemini 3 and other optimizations, responses are now more concise and actionable.
|
|
10
10
|
|
|
11
|
-
### [
|
|
11
|
+
### [CSS code completion](css-code-completion)
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
The Styles tab in the Elements panel now features enhanced, Gemini-powered code completion.
|
|
14
|
+
Experience smarter, real-time CSS suggestions that adapt dynamically as you type.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Name: Dependencies sourced from the upstream `chromium` repository
|
|
2
2
|
URL: Internal
|
|
3
3
|
Version: N/A
|
|
4
|
-
Revision:
|
|
4
|
+
Revision: 59215b2081aea1f087ea0f9e9d428c2eb9b41876
|
|
5
5
|
Update Mechanism: Manual (https://crbug.com/428069060)
|
|
6
6
|
License: BSD-3-Clause
|
|
7
7
|
License File: LICENSE
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Name: Puppeteer Core
|
|
2
2
|
Short Name: Puppeteer Core
|
|
3
3
|
URL: https://github.com/puppeteer/puppeteer/tree/main/packages/puppeteer-core
|
|
4
|
-
Version: 25.0
|
|
4
|
+
Version: 25.1.0
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
License File: LICENSE
|
|
7
|
-
Revision:
|
|
7
|
+
Revision: ede66693bc0a6d9a8029f66288d13e26966173ce
|
|
8
8
|
Security Critical: no
|
|
9
9
|
Shipped: yes
|
|
10
10
|
Update Mechanism: Autoroll
|
|
@@ -1580,7 +1580,7 @@ export declare interface CookieData {
|
|
|
1580
1580
|
/**
|
|
1581
1581
|
* Cookie SameSite type.
|
|
1582
1582
|
*/
|
|
1583
|
-
sameSite?:
|
|
1583
|
+
sameSite?: CookieSameSite_2;
|
|
1584
1584
|
/**
|
|
1585
1585
|
* Cookie expiration date, session cookie if not set
|
|
1586
1586
|
*/
|
|
@@ -1641,7 +1641,7 @@ export declare interface CookieParam {
|
|
|
1641
1641
|
/**
|
|
1642
1642
|
* Cookie SameSite type.
|
|
1643
1643
|
*/
|
|
1644
|
-
sameSite?:
|
|
1644
|
+
sameSite?: CookieSameSite_2;
|
|
1645
1645
|
/**
|
|
1646
1646
|
* Cookie expiration date, session cookie if not set
|
|
1647
1647
|
*/
|
|
@@ -1704,7 +1704,8 @@ export declare type CookiePriority = 'Low' | 'Medium' | 'High';
|
|
|
1704
1704
|
*
|
|
1705
1705
|
* @public
|
|
1706
1706
|
*/
|
|
1707
|
-
|
|
1707
|
+
declare type CookieSameSite_2 = 'Strict' | 'Lax' | 'None' | 'Default';
|
|
1708
|
+
export type {CookieSameSite_2 as CookieSameSite};
|
|
1708
1709
|
|
|
1709
1710
|
/**
|
|
1710
1711
|
* Represents the source scheme of the origin that originally set the cookie. A value of
|
|
@@ -1889,6 +1890,7 @@ declare interface CustomQuerySelector {
|
|
|
1889
1890
|
|
|
1890
1891
|
/**
|
|
1891
1892
|
* This class mimics the injected {@link CustomQuerySelectorRegistry}.
|
|
1893
|
+
*
|
|
1892
1894
|
*/
|
|
1893
1895
|
declare class CustomQuerySelectorRegistry {
|
|
1894
1896
|
|
|
@@ -1900,6 +1902,7 @@ declare class CustomQuerySelectorRegistry {
|
|
|
1900
1902
|
|
|
1901
1903
|
declare namespace CustomQuerySelectors {
|
|
1902
1904
|
export type {CustomQuerySelector};
|
|
1905
|
+
export {CustomQuerySelectorRegistry};
|
|
1903
1906
|
}
|
|
1904
1907
|
|
|
1905
1908
|
/**
|
|
@@ -8249,7 +8252,7 @@ declare namespace Puppeteer_2 {
|
|
|
8249
8252
|
ConnectOptions,
|
|
8250
8253
|
ConsoleMessageLocation,
|
|
8251
8254
|
ConsoleMessageType,
|
|
8252
|
-
CookieSameSite,
|
|
8255
|
+
CookieSameSite_2 as CookieSameSite,
|
|
8253
8256
|
CookiePriority,
|
|
8254
8257
|
CookieSourceScheme,
|
|
8255
8258
|
CookiePartitionKey,
|
|
@@ -8388,7 +8391,7 @@ export declare type PuppeteerLifeCycleEvent =
|
|
|
8388
8391
|
* fetching and downloading browsers.
|
|
8389
8392
|
*
|
|
8390
8393
|
* If you're using Puppeteer in a Node environment, this is the class you'll get
|
|
8391
|
-
* when you run `
|
|
8394
|
+
* when you run `import puppeteer from 'puppeteer'`.
|
|
8392
8395
|
*
|
|
8393
8396
|
* @remarks
|
|
8394
8397
|
* The most common method to use is {@link PuppeteerNode.launch | launch}, which
|