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.
Files changed (73) hide show
  1. package/.agents/skills/verification/SKILL.md +1 -1
  2. package/front_end/core/i18n/collect-ui-strings.js +3 -3
  3. package/front_end/core/root/Runtime.ts +5 -0
  4. package/front_end/core/sdk/SourceMapCache.ts +13 -11
  5. package/front_end/core/sdk/SourceMapManager.ts +7 -3
  6. package/front_end/entrypoints/greendev_floaty/FloatyEntrypoint.ts +84 -22
  7. package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +7 -33
  8. package/front_end/models/ai_assistance/agents/AiAgent.ts +11 -4
  9. package/front_end/models/ai_assistance/agents/GreenDevAgent.ts +68 -5
  10. package/front_end/models/ai_assistance/agents/GreenDevAgentAntigravityCliSocketClient.ts +53 -0
  11. package/front_end/models/ai_assistance/agents/GreenDevAgentGeminiCliSocketClient.ts +117 -0
  12. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +20 -2
  13. package/front_end/models/ai_assistance/ai_assistance.ts +4 -0
  14. package/front_end/models/greendev/Prototypes.ts +17 -5
  15. package/front_end/panels/ai_assistance/components/ChatMessage.ts +32 -1
  16. package/front_end/panels/network/NetworkLogView.ts +4 -1
  17. package/front_end/panels/settings/SettingsScreen.ts +3 -2
  18. package/front_end/panels/sources/PersistenceActions.ts +21 -7
  19. package/front_end/panels/timeline/TimelineDetailsView.ts +36 -0
  20. package/front_end/panels/whats_new/ReleaseNoteText.ts +9 -9
  21. package/front_end/panels/whats_new/resources/WNDT.md +9 -9
  22. package/front_end/third_party/chromium/README.chromium +1 -1
  23. package/front_end/third_party/puppeteer/README.chromium +2 -2
  24. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +8 -5
  25. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +35 -33
  26. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/TargetManager.d.ts.map +1 -1
  27. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/TargetManager.js +0 -1
  28. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/TargetManager.js.map +1 -1
  29. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.d.ts.map +1 -1
  30. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.js +0 -3
  31. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.js.map +1 -1
  32. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.d.ts +8 -8
  33. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.d.ts.map +1 -1
  34. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.js +8 -8
  35. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.js.map +1 -1
  36. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts +1 -1
  37. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts.map +1 -1
  38. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js +1 -1
  39. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js.map +1 -1
  40. package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/CustomQuerySelector.d.ts +2 -2
  41. package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/CustomQuerySelector.d.ts.map +1 -1
  42. package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/CustomQuerySelector.js +2 -1
  43. package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/CustomQuerySelector.js.map +1 -1
  44. package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/injected.d.ts +2 -7
  45. package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/injected.d.ts.map +1 -1
  46. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/PuppeteerNode.d.ts +1 -1
  47. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/PuppeteerNode.js +1 -1
  48. package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.d.ts +3 -3
  49. package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js +3 -3
  50. package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js.map +1 -1
  51. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/Mutex.d.ts +10 -7
  52. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/Mutex.d.ts.map +1 -1
  53. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/Mutex.js +16 -12
  54. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/Mutex.js.map +1 -1
  55. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.d.ts +1 -1
  56. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.js +1 -1
  57. package/front_end/third_party/puppeteer/package/lib/types.d.ts +8 -5
  58. package/front_end/third_party/puppeteer/package/package.json +5 -7
  59. package/front_end/third_party/puppeteer/package/src/cdp/TargetManager.ts +0 -1
  60. package/front_end/third_party/puppeteer/package/src/cdp/WebMCP.ts +0 -3
  61. package/front_end/third_party/puppeteer/package/src/common/Debug.ts +11 -11
  62. package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
  63. package/front_end/third_party/puppeteer/package/src/injected/CustomQuerySelector.ts +3 -2
  64. package/front_end/third_party/puppeteer/package/src/node/PuppeteerNode.ts +1 -1
  65. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  66. package/front_end/third_party/puppeteer/package/src/util/Mutex.ts +17 -12
  67. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  68. package/front_end/ui/components/markdown_view/MarkdownLinksMap.ts +7 -0
  69. package/front_end/ui/legacy/Dialog.ts +1 -0
  70. package/front_end/ui/legacy/UIUtils.ts +4 -0
  71. package/front_end/ui/legacy/components/source_frame/FontView.ts +11 -3
  72. package/front_end/ui/visual_logging/KnownContextValues.ts +3 -0
  73. 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 {result: {details}};
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 {result: {success: true}};
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
- beyondStyling: Common.Settings.Setting<boolean>;
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 beyondStyling = settings.createSetting(
46
- 'greendev-beyond-styling-enabled',
46
+ const beyondStylingGemini = settings.createSetting(
47
+ 'greendev-beyond-styling-gemini-enabled',
47
48
  false,
48
- Common.Settings.SettingStorageType.LOCAL,
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 {aiAnnotations, beyondStyling, breakpointDebuggerAgent, emulationCapabilities};
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', 'beyondStyling', 'breakpointDebuggerAgent', 'emulationCapabilities'])}
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
- beyondStyling: 'Beyond Styling',
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
- const fileURL = binding ? binding.fileSystem.contentURL() : contentProvider.contentURL();
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 (Common.ParsedURL.schemeIs(fileURL, 'file:')) {
121
- const path = Common.ParsedURL.ParsedURL.urlToRawPathString(fileURL, Host.Platform.isWin());
122
- contextMenu.revealSection().appendItem(
123
- i18nString(UIStrings.openInContainingFolder),
124
- () => Host.InspectorFrontendHost.InspectorFrontendHostInstance.showItemInFolder(path),
125
- {jslogContext: 'open-in-containing-folder'});
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: 148,
44
- header: 'What\'s new in DevTools 148',
43
+ version: 149,
44
+ header: 'Whats new in DevTools 149',
45
45
  markdownLinks: [
46
46
  {
47
- key: 'extension-debugging',
48
- link: 'https://developer.chrome.com/blog/new-in-devtools-148/#extension-debugging',
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: 'sort-network-requests',
52
- link: 'https://developer.chrome.com/blog/new-in-devtools-148/#sort-network-requests',
51
+ key: 'ai-assistance',
52
+ link: 'https://developer.chrome.com/blog/new-in-devtools-149/#ai-assistance',
53
53
  },
54
54
  {
55
- key: 'accessibility-tree',
56
- link: 'https://developer.chrome.com/blog/new-in-devtools-148/#accessibility-tree',
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-148/',
60
+ link: 'https://developer.chrome.com/blog/new-in-devtools-149/',
61
61
  };
@@ -1,14 +1,14 @@
1
- ### [Agentic extensions debugging](extension-debugging)
1
+ ### [DevTools for agents](devtools-for-agents)
2
2
 
3
- You can now debug extensions through a coding agent using new tools in DevTools for agents,
4
- available through the MCP server.
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
- ### [Sort network requests](sort-network-requests)
6
+ ### [AI assistance](ai-assistance)
7
7
 
8
- The Network panel introduces a new Request # column, allowing you to sort requests by their
9
- absolute chronological order of occurrence, independent of priority or duration.
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
- ### [Accessibility tree](accessibility-tree)
11
+ ### [CSS code completion](css-code-completion)
12
12
 
13
- To streamline the Elements panel, the Accessibility tree toggle has moved from the DOM tree
14
- to the Accessibility tab within the panel.
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: 268971579b74f0369f828111e6c8f5bafbacd5ee
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
4
+ Version: 25.1.0
5
5
  License: Apache-2.0
6
6
  License File: LICENSE
7
- Revision: 019b49bd85e543338f7ae7e0dd0698652530ff5d
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?: CookieSameSite;
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?: CookieSameSite;
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
- export declare type CookieSameSite = 'Strict' | 'Lax' | 'None' | 'Default';
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 `require('puppeteer')` (or the equivalent ES `import`).
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