diff --git a/microsoft-edge/progressive-web-apps/how-to/handle-urls.md b/microsoft-edge/progressive-web-apps/how-to/handle-urls.md index bda1893243..7fffd50e17 100644 --- a/microsoft-edge/progressive-web-apps/how-to/handle-urls.md +++ b/microsoft-edge/progressive-web-apps/how-to/handle-urls.md @@ -6,7 +6,7 @@ ms.author: msedgedevrel ms.topic: conceptual ms.service: microsoft-edge ms.subservice: pwa -ms.date: 09/15/2022 +ms.date: 08/29/2025 --- # Handle links to a PWA @@ -44,23 +44,75 @@ No code is required for automatic link handling to work, but end users can opt-o ## Handle links from other origins by using scope extensions -Scope extensions make it possible for a PWA to capture navigation to paths, subdomains, or even sites other than its own scope. This can be useful for PWAs that span multiple domains for localization purposes. For example, a PWA may span `contoso.com`, `contoso.co.uk`, and `contoso.fr`. +Scope extensions make it possible for a Progressive Web App (PWA) to capture navigation to domains, subdomains, or paths other than its own scope. Scope extensions allow web apps that rely on multiple top-level domains, multiple subdomains, or multiple paths to be presented as a single web app. -The manifest of a PWA defines which part of the hosting domain the PWA is scoped to. For example, the `www.contoso.com` domain name may have a PWA defined under `www.contoso.com/app` with its scope set to `/app`. In this case, all the web pages available within the `www.contoso.com/app` path are part of the PWA scope. However, the web pages within the `www.contoso.com/foo` path are not part of the PWA scope. Furthermore, web pages that are available at `bar.contoso.com/app` or `www.contoso.co.uk` are also not part of the PWA scope. +Scope extension can be useful for cases such as PWAs that handle localization by using multiple domains, subdomains, or paths. -#### Origin trial +#### PWA scope when not using scope extensions -As of October 17, 2024, the scope extensions feature is an origin trial. For status, see [Web app scope extensions feature](https://chromestatus.com/feature/5746537956114432) at Chrome Platform Status. +The manifest of a PWA defines which part of the hosting domain, such as a specific path, the PWA is scoped to. For example, the `www.contoso.com` domain name may have a PWA defined under the path `www.contoso.com/app`, with its scope set to `/app`. -When the feature can be used in Microsoft Edge and is no longer in origin trial, the feature will be documented in the present article. See [Scope Extensions for Web Apps](https://github.com/WICG/manifest-incubations/blob/gh-pages/scope_extensions-explainer.md), an Explainer in the **manifest-incubations** repo. +In that case, all webpages within the `www.contoso.com/app` path are part of the PWA scope. However, if you don't use scope extensions, the following webpages are not part of that PWA scope: -See also: -* [Use origin trials in Microsoft Edge](../../origin-trials/index.md) +* Webpages at a different domain, such as `www.contoso.co.uk`. +* Webpages at a different subdomain, such as `bar.contoso.com`. +* Webpages at a different path, such as `www.contoso.com/foo`. - -## See also + +#### Extending scope to other domains, subdomains, or paths + +By using scope extensions, a PWA can span other domains, subdomains, or paths. For example: + +A PWA can span the following top-level domains: +* `contoso.com` +* `contoso.co.uk` +* `contoso.fr` + +A PWA can span the following subdomains: +* `www.contoso.com` +* `bar.contoso.com` -* [PWAs as URL Handlers](https://web.dev/pwa-url-handler/) +A PWA can span the following paths: +* `www.contoso.com/app` +* `www.contoso.com/foo` + + + +#### The `scope_extensions` web app manifest member + +The `scope_extensions` web app manifest member enables a web app to extend its scope to other origins. + +For example, this web app manifest file resides at the domain `sample-app.com`, and extends the scope to a different domain, `example.com`: + +```json +{ + "name": "Example app", + "display": "standalone", + "start_url": "/index.html", + "scope_extensions": [ + { + "type": "origin", + "origin": "https://example.com" + } + ] +} +``` + +The origins that are listed in the `scope_extensions` member must confirm that they are associated with the web app by hosting a configuration file named `.well-known/web-app-origin-association`. The configuration file must list the web app's origin. + +For example, this `.well-known/web-app-origin-association` configuration file resides at the domain `example.com`, and lists the web app's origin as the domain `sample-app.com`: + +```json +{ + "https://sample-app.com/": { + "scope": "/" + } +} +``` + +See also: +* [scope_extensions](https://developer.mozilla.org/docs/Web/Progressive_web_apps/Manifest/Reference/scope_extensions) at MDN. +* [Scope Extensions for Web App Manifest](https://github.com/WICG/manifest-incubations/blob/gh-pages/scope_extensions-explainer.md) diff --git a/microsoft-edge/toc.yml b/microsoft-edge/toc.yml index 4f97d8eb0f..9be15c025f 100644 --- a/microsoft-edge/toc.yml +++ b/microsoft-edge/toc.yml @@ -30,6 +30,10 @@ href: ./web-platform/release-notes/index.md displayName: what's new, announcements + - name: Microsoft Edge 141 + href: ./web-platform/release-notes/141.md + displayName: Microsoft Edge 141 web platform release notes (Oct. 2025) # page title + - name: Microsoft Edge 140 href: ./web-platform/release-notes/140.md displayName: Microsoft Edge 140 web platform release notes (Sep. 2025) # page title diff --git a/microsoft-edge/web-platform/release-notes/138.md b/microsoft-edge/web-platform/release-notes/138.md index 7ae7843c27..4b919de99b 100644 --- a/microsoft-edge/web-platform/release-notes/138.md +++ b/microsoft-edge/web-platform/release-notes/138.md @@ -35,7 +35,6 @@ To stay up-to-date and get the latest web platform features, download a preview * [Predictable reported storage quota](#predictable-reported-storage-quota) * [`pushsubscriptionchange` event upon resubscription](#pushsubscriptionchange-event-upon-resubscription) * [Speculation rules: `target_hint` field](#speculation-rules-target_hint-field) - * [Strict Same-origin policy for Storage Access API](#strict-same-origin-policy-for-storage-access-api) * [Viewport Segments Enumeration API](#viewport-segments-enumeration-api) * [Web app scope extensions](#web-app-scope-extensions) * [Removed features](#removed-features) @@ -266,17 +265,6 @@ See also: * [Speculation Rules API](https://developer.mozilla.org/docs/Web/API/Speculation_Rules_API) at MDN. - -###### Strict Same-origin policy for Storage Access API - -The Storage Access API now follows the Same-origin policy. - -By default, using `document.requestStorageAccess()` in a frame only attaches cookies to the requests that are made to the iframe's origin. The `CookiesAllowedForUrls` policy and storage access headers can still be used to unblock cross-site cookies. - -See also: -* [Storage Access API](https://developer.mozilla.org/docs/Web/API/Storage_Access_API) at MDN. - - ###### Viewport Segments Enumeration API diff --git a/microsoft-edge/web-platform/release-notes/139.md b/microsoft-edge/web-platform/release-notes/139.md index 7b0aa5c13b..85fccd4929 100644 --- a/microsoft-edge/web-platform/release-notes/139.md +++ b/microsoft-edge/web-platform/release-notes/139.md @@ -23,7 +23,6 @@ To stay up-to-date and get the latest web platform features, download a preview * [CSS `font-width` property](#css-font-width-property) * [Continue running transitions when switching to initial transition value](#continue-running-transitions-when-switching-to-initial-transition-value) * [CSS `corner-shape` property](#css-corner-shape-property) - * [Support `width` and `height` presentational attributes on nested `` elements](#support-width-and-height-presentational-attributes-on-nested-svg-elements) * [Web APIs](#web-apis) * [`request-close` invoker command](#request-close-invoker-command) * [Allow more characters in JavaScript DOM APIs](#allow-more-characters-in-javascript-dom-apis) @@ -58,19 +57,13 @@ To stay up-to-date and get the latest web platform features, download a preview ## Edge DevTools -See [What's New in Microsoft Edge DevTools](../../devtools/whats-new/whats-new.md). - ## WebView2 -See [Release Notes for the WebView2 SDK](../../webview2/release-notes/index.md). - +See [1.0.3405.78](../../webview2/release-notes/index.md#10340578) in _Release Notes for the WebView2 SDK_ (Aug 2025). @@ -134,37 +127,6 @@ See also: * [Corner Shaping: the corner-shape property](https://drafts.csswg.org/css-borders-4/#corner-shaping) in _CSS Borders and Box Decorations Module Level 4_. - -###### Support `width` and `height` presentational attributes on nested `` elements - -You can now use the `width` and `height` presentational attributes on nested `` elements, through both SVG markup and CSS. This approach provides greater flexibility, allowing you to style SVG elements more efficiently within complex designs. - -With this feature, the following two HTML code snippets now produce the same output: - -```html - - - - - -``` - -```html - - - - - -``` - -In the second line: -* The first example uses a `style` attribute that contains width and height values. -* The second example uses separate `width` and `height` attributes. - -See also: -* [``](https://developer.mozilla.org/docs/Web/SVG/Reference/Element/svg) at MDN. - - #### Web APIs diff --git a/microsoft-edge/web-platform/release-notes/140.md b/microsoft-edge/web-platform/release-notes/140.md index 16819b1e26..2378149ab8 100644 --- a/microsoft-edge/web-platform/release-notes/140.md +++ b/microsoft-edge/web-platform/release-notes/140.md @@ -31,14 +31,12 @@ To stay up-to-date and get the latest web platform features, download a preview * [CSS `width` and `height` support for SVG `` element](#css-width-and-height-support-for-svg-use-element) * [Support `download` attribute in SVG `` element](#support-download-attribute-in-svg-a-element) * [Web APIs](#web-apis) - * [`ariaNotify()` API](#arianotify-api) * [`__Http-` and `__HostHttp-` cookie name prefixes](#__http--and-__hosthttp--cookie-name-prefixes) * [`overscroll-behavior` propagation from `` to the viewport](#overscroll-behavior-propagation-from-html-to-the-viewport) * [`min` option for `ReadableStreamBYOBReader.read(view)`](#min-option-for-readablestreambyobreaderreadview) * [`container` option for `scrollIntoView()`](#container-option-for-scrollintoview) * [Service worker static routing API timings](#service-worker-static-routing-api-timings) * [SharedWorker script inherit controllers for Blob URLs](#sharedworker-script-inherit-controllers-for-blob-urls) - * [`restrictOwnAudio` media track constraint](#restrictownaudio-media-track-constraint) * [Popover ToggleEvent source attribute](#popover-toggleevent-source-attribute) * [Convert Uint8Array between base64 and hex formats](#convert-uint8array-between-base64-and-hex-formats) * [`highlightsFromPoint` API](#highlightsfrompoint-api) @@ -48,7 +46,7 @@ To stay up-to-date and get the latest web platform features, download a preview * [Microsoft Edge-only origin trials](#microsoft-edge-only-origin-trials) * [Web app scope extensions](#web-app-scope-extensions) * [MS High Contrast Deprecation](#ms-high-contrast-deprecation) - * [AriaNotify API](#arianotify-api-1) + * [AriaNotify API](#arianotify-api) * [Acquisition Info API](#acquisition-info-api) @@ -66,7 +64,7 @@ See [What's New in DevTools (Microsoft Edge 140)](../../devtools/whats-new/2025/ See [Release Notes for the WebView2 SDK](../../webview2/release-notes/index.md). @@ -276,15 +274,6 @@ See also: #### Web APIs - -###### `ariaNotify()` API - -The `ariaNotify()` API enables your app to directly tell a screen reader what to say when there's a non-user-initiated change in the content of a webpage. In the simplest scenario, you call `ariaNotify("foo")` on the document or on an element. - -See also: -* [Creating a more accessible web with Aria Notify](https://blogs.windows.com/msedgedev/2025/05/05/creating-a-more-accessible-web-with-aria-notify/). - - ###### `__Http-` and `__HostHttp-` cookie name prefixes @@ -364,19 +353,6 @@ See also: * [Blob](https://developer.mozilla.org/docs/Web/API/Blob) at MDN. - -###### `restrictOwnAudio` media track constraint - - -The new `restrictOwnAudio` media track constraint can help create cleaner screen recordings, such as when the capturing webpage itself is playing audio and you don't want that audio to be included in the capture, to avoid undesirable echo. - -By default, when using `getDisplayMedia()` and when the system audio is captured, all audio that's played by the system is captured. If the `restrictOwnAudio` constraint is set, the captured system audio is filtered to exclude audio originating from the document that called `getDisplayMedia()`. - -See also: -* [MediaDevices: getDisplayMedia() method](https://developer.mozilla.org/docs/Web/API/MediaDevices/getDisplayMedia) at MDN. -* [MediaTrackConstraints](https://developer.mozilla.org/docs/Web/API/MediaTrackConstraints) at MDN. - - ###### Popover ToggleEvent `source` attribute diff --git a/microsoft-edge/web-platform/release-notes/141.md b/microsoft-edge/web-platform/release-notes/141.md new file mode 100644 index 0000000000..dade0a1d84 --- /dev/null +++ b/microsoft-edge/web-platform/release-notes/141.md @@ -0,0 +1,428 @@ +--- +title: Microsoft Edge 141 web platform release notes (Oct. 2025) +description: Microsoft Edge 141 web platform release notes (Oct. 2025). +author: MSEdgeTeam +ms.author: msedgedevrel +ms.topic: conceptual +ms.service: microsoft-edge +ms.date: 09/04/2025 +--- +# Microsoft Edge 141 web platform release notes (Oct. 2025) + + +The following are the new web platform features and updates in Microsoft Edge 141, which releases on October 2, 2025. + +To stay up-to-date and get the latest web platform features, download a preview channel of Microsoft Edge (Beta, Dev, or Canary); go to [Become a Microsoft Edge Insider](https://www.microsoft.com/edge/download/insider). + +**Detailed contents:** + +* [Edge DevTools](#edge-devtools) +* [WebView2](#webview2) +* [Web platform features](#web-platform-features) + * [CSS features](#css-features) + * [CSS `::search-text` pseudo-element](#css-search-text-pseudo-element) + * [`document.activeViewTransition` property](#documentactiveviewtransition-property) + * [Support `width` and `height` presentational attributes on nested `` elements](#support-width-and-height-presentational-attributes-on-nested-svg-elements) + * [Web APIs](#web-apis) + * [`ariaNotify()` API](#arianotify-api) + * [`dataTransfer` property for `insertFromPaste`, `insertFromDrop`, and `insertReplacementText` input events](#datatransfer-property-for-insertfrompaste-insertfromdrop-and-insertreplacementtext-input-events) + * [IndexedDB `getAllRecords()` method and `direction` option for `getAll()` and `getAllKeys()`](#indexeddb-getallrecords-method-and-direction-option-for-getall-and-getallkeys) + * [Navigation API `precommitHandler`](#navigation-api-precommithandler) + * [`windowAudio` option for `getDisplayMedia()`](#windowaudio-option-for-getdisplaymedia) + * [Extended `echoCancellation` option for `getUserMedia()`](#extended-echocancellation-option-for-getusermedia) + * [`restrictOwnAudio` media track constraint](#restrictownaudio-media-track-constraint) + * [Support for alternative fields in FedCM account selection](#support-for-alternative-fields-in-fedcm-account-selection) + * [Eagerness improvements in speculation rules](#eagerness-improvements-in-speculation-rules) + * [WebRTC Encoded Transform](#webrtc-encoded-transform) + * [Strict Same-origin policy for Storage Access API](#strict-same-origin-policy-for-storage-access-api) + * [Signature-based subresource integrity](#signature-based-subresource-integrity) +* [Origin trials](#origin-trials) + * [Microsoft Edge-only origin trials](#microsoft-edge-only-origin-trials) + * [Web app scope extensions](#web-app-scope-extensions) + * [AriaNotify API](#arianotify-api-1) + * [Ad Selection API](#ad-selection-api) + * [Acquisition Info API](#acquisition-info-api) + + + +## Edge DevTools + +See [What's New in Microsoft Edge DevTools](../../devtools/whats-new/whats-new.md). + + + + +## WebView2 + +See [Release Notes for the WebView2 SDK](../../webview2/release-notes/index.md). + + + + +## Web platform features + + + +#### CSS features + + + +###### CSS `::search-text` pseudo-element + +The CSS `::search-text` pseudo-element lets you style the results of the browser's find-in-page search. + +This allows you to change the foreground and background colors of search results, which can be useful if the browser default colors have insufficient contrast with the page colors. + +See also: +* [::search-text](https://drafts.csswg.org/css-pseudo-4/#selectordef-search-text) in _CSS Pseudo-Elements Module Level 4_. + + + +###### `document.activeViewTransition` property + +The `document.activeViewTransition` property provides access to the currently running view transition, whether this transition is on a single web page, or between two web pages. + +The View Transition API allows you to create visual transitions between different states of a single page, or between multiple pages. + +For transitions within single pages, the `document.startViewTransition()` method returns a transition object. The `document.activeViewTransition` property now provides access to this transition object, which means you no longer need to store the `document.startViewTransition()` return value. + +For transitions between multiple pages, the `document.activeViewTransition` property now gives you access to the currently running transition object, for the duration of the transition. This is in addition to the `pageswap` and `pagereveal` events. + +See also: +* [View Transition API](https://developer.mozilla.org/docs/Web/API/View_Transition_API) at MDN. +* [Document: startViewTransition() method](https://developer.mozilla.org/docs/Web/API/Document/startViewTransition) at MDN. +* [Window: pageswap event](https://developer.mozilla.org/docs/Web/API/Window/pageswap_event) at MDN. +* [Window: pagereveal event](https://developer.mozilla.org/docs/Web/API/Window/pagereveal_event) at MDN. + + + +###### Support `width` and `height` presentational attributes on nested `` elements + +You can now use the `width` and `height` presentational attributes on nested `` elements, through both SVG markup and CSS. This approach provides greater flexibility, allowing you to style SVG elements more efficiently within complex designs. + +With this feature, the following two HTML code snippets now produce the same output: + +```html + + + + + +``` + +In the above example, the second line uses a `style` attribute that contains `width` and `height` values. + +```html + + + + + +``` + +In the above example, the second line uses separate `width` and `height` attributes. + +See also: +* [``](https://developer.mozilla.org/docs/Web/SVG/Reference/Element/svg) at MDN. + + + + + + +#### Web APIs + + + +###### `ariaNotify()` API + +The `ariaNotify()` API enables your app to directly tell a screen reader what to say when there's a non-user-initiated change in the content of a webpage. In the simplest scenario, you call `ariaNotify("foo")` on the document or on an element. + +See also: +* [Creating a more accessible web with Aria Notify](https://blogs.windows.com/msedgedev/2025/05/05/creating-a-more-accessible-web-with-aria-notify/). + + + +###### `dataTransfer` property for `insertFromPaste`, `insertFromDrop`, and `insertReplacementText` input events + +The input event objects of type `insertFromPaste`, `insertFromDrop`, and `insertReplacementText` now have a `dataTransfer` property, for better interoperability with other browsers. + +The `dataTransfer` property provides access to the clipboard or drag-drop data when the user edits text within a `contenteditable` element. The same data is also available on the `dataTransfer` property of `beforeinput` events. + +This feature only applies to `contenteditable` elements. + +See also: +* [DataTransfer](https://developer.mozilla.org/docs/Web/API/DataTransfer) at MDN. +* [InputEvent: inputType property](https://developer.mozilla.org/docs/Web/API/InputEvent/inputType) at MDN. +* [HTML contenteditable global attribute](https://developer.mozilla.org/docs/Web/HTML/Reference/Global_attributes/contenteditable) at MDN. +* [Element: beforeinput event](https://developer.mozilla.org/docs/Web/API/Element/beforeinput_event) at MDN. + + + +###### IndexedDB `getAllRecords()` method and `direction` option for `getAll()` and `getAllKeys()` + +IndexedDB `IDBObjectStore` and `IDBIndex` objects now support the `getAllRecords()` method, which returns index keys, primary keys, and values for each record, in addition to supporting read operations in both directions. + +The `getAllRecords()` method can make certain IndexedDB read operations significantly faster when compared to existing alternatives, such as using IndexedDB cursors. + +This feature also introduces the `direction` option to the existing `getAll()` and `getAllKeys()` methods, for consistency. + +See also: +* [Even faster IndexedDB reads with getAllRecords](https://patrickbrosset.com/articles/2024-11-19-even-faster-indexeddb-reads-with-getallrecords/) +* [IndexedDB API](https://developer.mozilla.org/docs/Web/API/IndexedDB_API) at MDN. + + + +###### Navigation API `precommitHandler` + +The `navigateEvent.intercept()` method now supports a `precommitHandler` option that's similar to `handler` option. + +The `precommitHandler` option is used to defer the commit of a navigation event, and therefore the URL update, until after the handler's promise has resolved. The `precommitHandler` option also allows the handler to change the navigation URL, information, status, and history push and replace behavior. + +Without a `precommitHandler`, the navigation API immediately commits navigations, which is sometimes an issue for JavaScript routing libraries that use asynchronous same-document navigations. + +See also: +* [Navigation API](https://developer.mozilla.org/docs/Web/API/Navigation_API) at MDN. +* [NavigateEvent: intercept() method](https://developer.mozilla.org/docs/Web/API/NavigateEvent/intercept) at MDN. + + + +###### `windowAudio` option for `getDisplayMedia()` + +The `getDisplayMedia()` method now supports the `windowAudio` option. + +The `windowAudio` option allows you to the give the user the ability to share audio when a window is selected for screen sharing. `windowAudio` can be set to `exclude`, `system`, or `window`. + +See also: +* [MediaDevices: getDisplayMedia() method](https://developer.mozilla.org/docs/Web/API/MediaDevices/getDisplayMedia) at MDN. + + + +###### Extended `echoCancellation` option for `getUserMedia()` + +The `echoCancellation` option for `getUserMedia()` is now extended from a `true` and `false` to also support `all` and `remote-only`. + +This allows you to: +* Modify the echo cancellation behavior that's applied to audio tracks received from microphones. +* Control how much of the user system playout is removed from the microphone signal. + +In some scenarios, the only acceptable echo cancellation option is removing all user system playou​t from the microphone, such as to ensure that no privacy-sensitive playout, such as from screen readers or system notifications, is captured. + +In other scenarios, you might prefer to remove the echo from `RTCPeerConnections`, to enable 2-way real-time communication (RTC), while still capturing the rest of the local playout. + +See also: +* [MediaDevices: getUserMedia() method](https://developer.mozilla.org/docs/Web/API/MediaDevices/getUserMedia) at MDN. +* [MediaTrackConstraints](https://developer.mozilla.org/docs/Web/API/MediaTrackConstraints) at MDN. +* [MediaTrackConstraints: echoCancellation property](https://developer.mozilla.org/docs/Web/API/MediaTrackConstraints/echoCancellation) at MDN. + + + +###### `restrictOwnAudio` media track constraint + + +The new `restrictOwnAudio` media track constraint can help create cleaner screen recordings, such as when the capturing webpage itself is playing audio and you don't want that audio to be included in the capture, to avoid undesirable echo. + +By default, when using `getDisplayMedia()` and when the system audio is captured, all audio that's played by the system is captured. If the `restrictOwnAudio` constraint is set, the captured system audio is filtered to exclude audio originating from the document that called `getDisplayMedia()`. + +See also: +* [MediaDevices: getDisplayMedia() method](https://developer.mozilla.org/docs/Web/API/MediaDevices/getDisplayMedia) at MDN. +* [MediaTrackConstraints](https://developer.mozilla.org/docs/Web/API/MediaTrackConstraints) at MDN. + + + +###### Support for alternative fields in FedCM account selection + +Phone numbers and usernames are now supported, in addition to or instead of a user's full name and email address, as identifiers for disambiguating accounts in the FedCM account selector. + +These new fields are also now available for websites to affect the disclosure text. + +This change makes it easier for identity providers that don't use email addresses and full names for identifying users to adopt FedCM. + +See also: +* [Federated Credential Management (FedCM) API](https://developer.mozilla.org/docs/Web/API/FedCM_API) at MDN. + + + +###### Eagerness improvements in speculation rules + +When the user hovers over a link for a short time, the `eager` value of a speculation rule's `eagerness` option now triggers prefetches and prerenders. + +Previously, the `eager` value would start prefetching and prerendering as soon as possible, similar to the `immediate` value. The new behavior is more useful, because the `eager` value is now more eager than the `moderate` value, and less eager than the `immediate` value. + +For details about this and other upcoming improvements, see [Speculation rules eagerness improvements](https://docs.google.com/document/d/1YPbtUPfZIDElzBZNx8IQMzRFvy8oauLG_i1XIr6jgTs/edit). + +See also: +* [Speculation Rules API](https://developer.mozilla.org/docs/Web/API/Speculation_Rules_API) at MDN. +* [eagerness](https://developer.mozilla.org/docs/Web/HTML/Reference/Elements/script/type/speculationrules#eagerness) in _\