{
  "commits": {
    "318847@main": {
      "author": "Yijia Huang",
      "avatar": "https://www.gravatar.com/avatar/5bc95a5f0a5fdfc107bbdec6979dae89?d=identicon\u0026s=64",
      "cl": "318847@main",
      "clUrl": "https://commits.webkit.org/318847@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321347\nrdar://184382546\n\nReviewed by Yusuke Suzuki.\n\nICU emits no era name for coptic dates before Anno Martyrum or islamic-* dates\nbefore the Hijra, so both format() overloads synthesize one. format() also\ninserts a separating space before the appended era; formatToParts() did not, so\nconcatenating the parts stopped reproducing format() — 90 of 720 locale and\noption combinations, for example ja-JP coptic {era:\"short\"} formatting\n\"185/5/7 Anno Martyrum\" against joined parts \"185/5/7Anno Martyrum\".\n\nThe separator stays conditional. Where ICU leaves a trailing space in the empty\nera slot, the parts loop already emits it as a literal, so synthesizing one\nunconditionally would double it. jsSingleCharacterString rather than\njsNontrivialString, which asserts a length above one.\n\nOnly the appended-era path is affected; where ICU emits an era field its own\npattern supplies the separator.\n\nAlso correct calendarUsesISOFallbackForExtremeYear's comment: ±10000 is icu4x's\nWELL_BEHAVED_ASTRONOMICAL_RANGE, not a claim that ICU is accurate within it —\nICU's chinese winter-solstice table covers only gregorian 1900-2100.\n\nTest: JSTests/stress/intl-datetimeformat-era-override-parts.js\nCanonical link: https://commits.webkit.org/318847@main",
      "email": "yijia_huang@apple.com",
      "hash": "b2ec9a4586eec8c6fd9d9871980b6ddc525174d3",
      "subject": "[JSC][Intl] formatToParts must emit the era separator that format() inserts"
    },
    "318848@main": {
      "author": "David Kilzer",
      "avatar": "https://www.gravatar.com/avatar/e228ffc7a792e70bf2d160563c18dcc6?d=identicon\u0026s=64",
      "cl": "318848@main",
      "clUrl": "https://commits.webkit.org/318848@main",
      "description": "\u003chttps://bugs.webkit.org/show_bug.cgi?id=321315\u003e\n\u003crdar://184350335\u003e\n\nReviewed by Zak Ridouh and Yusuke Suzuki.\n\nThe legacy `\u003cobjc/objc-runtime.h\u003e` umbrella header is not present in\nthe iOS 27 SDK (it remains in the macOS SDK), so every file that\nimports it fails to compile against that SDK.\n\nImport only the specific `\u003cobjc/...\u003e` headers that each file uses\n(`\u003cobjc/runtime.h\u003e` and/or `\u003cobjc/message.h\u003e` if needed), instead of\nthe umbrella.\n\nAdd an always-on `check-webkit-style` rule that flags any new `#include`\nor `#import` of `\u003cobjc/objc-runtime.h\u003e` and directs authors to the\nindividual headers, so the pattern is not reintroduced.\n\nCovered by a new test in cpp_unittest.py.\n\n* Source/JavaScriptCore/API/JSWrapperMap.h:\n* Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm:\n* Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm:\n* Source/WebCore/platform/ios/WebCoreMotionManager.mm:\n* Source/WebKitLegacy/ios/Misc/WebGeolocationCoreLocationProvider.mm:\n* Tools/Scripts/webkitpy/style/checkers/cpp.py:\n(check_include_line):\n* Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py:\n(CppStyleTestBase.perform_language_rules_check):\n(OrderOfIncludesTest.test_check_objc_runtime_header_include): Add.\n\nCanonical link: https://commits.webkit.org/318848@main",
      "email": "ddkilzer@apple.com",
      "hash": "75bb1892f1b4d3fd773e008cbf93802f192ca6ca",
      "subject": "Stop including \u003cobjc/objc-runtime.h\u003e and forbid it via check-webkit-style"
    },
    "318849@main": {
      "author": "Wenson Hsieh",
      "avatar": "https://www.gravatar.com/avatar/c8fba82556fd4988c78bd3a0aee2a44e?d=identicon\u0026s=64",
      "cl": "318849@main",
      "clUrl": "https://commits.webkit.org/318849@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321371\nrdar://184323683\n\nReviewed by Richard Robinson.\n\nAvoid pathological context window bloat on Yelp, by skipping hidden SVG containers.\n\nTest: fast/text-extraction/debug-text-extraction-svg-sprite-sheet.html\n\n* LayoutTests/fast/text-extraction/debug-text-extraction-svg-sprite-sheet-expected.txt: Added.\n* LayoutTests/fast/text-extraction/debug-text-extraction-svg-sprite-sheet.html: Added.\n* Source/WebCore/page/text-extraction/TextExtraction.cpp:\n(WebCore::TextExtraction::extractItemData):\n\nCanonical link: https://commits.webkit.org/318849@main",
      "email": "wenson_hsieh@apple.com",
      "hash": "12b2b07ee6d1e90c5d396c3e38f34966f99a02f1",
      "subject": "Safari MCP: default text extraction on www.yelp.com contains many hidden SVG elements"
    },
    "318850@main": {
      "author": "Fady Farag",
      "avatar": "https://www.gravatar.com/avatar/0ac5127c69f90d0c57054173ae4c3108?d=identicon\u0026s=64",
      "cl": "318850@main",
      "clUrl": "https://commits.webkit.org/318850@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321373\nrdar://184425255\n\nReviewed by Darin Adler.\n\nThis is a follow-up to 318778@main. This asserts that a frame whose writeFrame()\nreturned NotReady is written by a subsequent writeFrames() retry call.\n\n* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:\n* Tools/TestWebKitAPI/Tests/WebCore/cocoa/MediaRecorderPrivateWriterTests.cpp: Added.\n(TestWebKitAPI::makeSampleBlock):\n(TestWebKitAPI::TEST(MediaRecorderPrivateWriter, WritesAllFramesInOrder)):\n(TestWebKitAPI::TEST(MediaRecorderPrivateWriter, NoFrameIsLostWhenWriterIsNotReady)):\n\nCanonical link: https://commits.webkit.org/318850@main",
      "email": "com.webkit.iidmsa@gmail.com",
      "hash": "919642bf433d001fac3d84632615cedb6243be85",
      "subject": "Introduce an API test for MediaRecorder dropping a frame whenever the writer input reports not ready"
    },
    "318851@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "318851@main",
      "clUrl": "https://commits.webkit.org/318851@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321368\nrdar://184421838\n\nReviewed by Alan Baradlay.\n\nUpstream commit: https://github.com/web-platform-tests/wpt/commit/4c2fd05ed5d0b90a9e1fcdcb35f6671bd461de0d\n\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/alpha/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/alpha/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/basic-deferred-evaluation.tentative-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/basic-deferred-evaluation.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/beta/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/cyclic-tla-defer-eval.tentative-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/cyclic-tla-defer-eval.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/gamma/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/resources/cyclic-tla-dep-a.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/resources/cyclic-tla-dep-b.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/resources/module-with-tla-dep.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/resources/side-effect-module.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/resources/tla-module.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/resources/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/scripts/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/tla-deferred-evaluation.tentative-expected.txt: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/tla-deferred-evaluation.tentative.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/resources/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/resources/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/top-level-await/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/top-level-await/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/w3c-import.log:\n\nCanonical link: https://commits.webkit.org/318851@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "5e3ca7af650ecd4aae5d90c5ee663859b405763b",
      "subject": "Sync `html/semantics/scripting-1/the-script-element/module` from WPT Upstream"
    },
    "318852@main": {
      "author": "Fujii Hironori",
      "avatar": "https://www.gravatar.com/avatar/ef99cb23f5e5d27977968ca097d9a85f?d=identicon\u0026s=64",
      "cl": "318852@main",
      "clUrl": "https://commits.webkit.org/318852@main",
      "description": "Unreviewed.\n\n* LayoutTests/platform/glib/TestExpectations:\n* LayoutTests/platform/gtk/TestExpectations:\n\nCanonical link: https://commits.webkit.org/318852@main",
      "email": "fujii@igalia.com",
      "hash": "c476e1a19df80f83e57e8d577d9baa6cde22d083",
      "subject": "[GLib] layout test gardening 2026-08-09"
    },
    "318853@main": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "318853@main",
      "clUrl": "https://commits.webkit.org/318853@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321247\n\nReviewed by Darin Adler.\n\nWebKit's legacy-pre-activation behavior (the checkbox/radio toggle that happens before\nevent dispatch) was applied to the first \u003cinput\u003e found anywhere in the event path,\nincluding an ancestor checkbox/radio. Per the DOM specification, legacy-pre-activation\nbehavior must only run on the event's activation target, which is the innermost node in\nthe event path that has activation behavior. So when an element with its own activation\nbehavior (e.g. a submit/reset \u003cbutton\u003e, an \u003ca\u003e/\u003carea\u003e link, a \u003csummary\u003e, or a\n\u003clabel\u003e\u003cbutton type=button\u003e) is nested inside a checkbox/radio, that inner element is the\nactivation target and the ancestor input must not be toggled or activated.\n\nIntroduce a virtual Node::hasActivationBehavior() (matching the spec concept and Blink's\nHasActivationBehavior), returning true for HTMLInputElement, HTMLButtonElement,\nHTMLLabelElement, and HTMLSummaryElement, and isLink() for HTMLAnchorElement (and\nHTMLAreaElement via inheritance). findInputElementInEventPath() now returns the innermost\nnode with activation behavior, and only when that node is an \u003cinput\u003e; otherwise no legacy\npre-activation behavior runs.\n\nThis fixes 14 subtests in Event-dispatch-single-activation-behavior.html, including the 12\nthat already pass in both Chrome and Firefox. The remaining failures match the ones Chrome\nand/or Firefox also fail.\n\nNo new tests, rebaselined existing WPT test.\n\n* LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-single-activation-behavior-expected.txt:\n* Source/WebCore/dom/EventDispatcher.cpp:\n(WebCore::findInputElementInEventPath):\n* Source/WebCore/dom/Node.cpp:\n(WebCore::Node::hasActivationBehavior const):\n* Source/WebCore/dom/Node.h:\n* Source/WebCore/html/HTMLAnchorElement.cpp:\n(WebCore::HTMLAnchorElement::isSystemPreviewLink):\n* Source/WebCore/html/HTMLAnchorElement.h:\n* Source/WebCore/html/HTMLButtonElement.cpp:\n(WebCore::HTMLButtonElement::hasActivationBehavior const):\n* Source/WebCore/html/HTMLButtonElement.h:\n* Source/WebCore/html/HTMLInputElement.cpp:\n(WebCore::HTMLInputElement::hasActivationBehavior const):\n* Source/WebCore/html/HTMLInputElement.h:\n* Source/WebCore/html/HTMLLabelElement.cpp:\n(WebCore::HTMLLabelElement::hasActivationBehavior const):\n* Source/WebCore/html/HTMLLabelElement.h:\n* Source/WebCore/html/HTMLSummaryElement.cpp:\n(WebCore::HTMLSummaryElement::hasActivationBehavior const):\n* Source/WebCore/html/HTMLSummaryElement.h:\n\nCanonical link: https://commits.webkit.org/318853@main",
      "email": "cdumez@apple.com",
      "hash": "6850883ce88bda38eec2a026e7b7ab8d044097ea",
      "subject": "Clicking an element nested inside a checkbox/radio wrongly activates the ancestor input"
    },
    "318854@main": {
      "author": "Sosuke Suzuki",
      "avatar": "https://www.gravatar.com/avatar/e63b87350fe19bdd9a30c7234eda45af?d=identicon\u0026s=64",
      "cl": "318854@main",
      "clUrl": "https://commits.webkit.org/318854@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321252\n\nReviewed by Yusuke Suzuki.\n\nappendInverted() adds the complement of its operand directly to the accumulated\nmatches and ranges without consulting m_setOp, so a pending \u0026\u0026 or -- turns into a union.\n\n    /[\\p{L}\u0026\u0026\\P{Lu}]/v.test(\"A\")        // true, should be false\n    /^[\\q{ab|c|1}\u0026\u0026\\P{L}]$/v.test(\"ab\") // true, should be false\n\nWhen an intersection or subtraction is pending, materialize the complement into a\ntemporary CharacterClass and funnel it through append(), which dispatches on m_setOp\nfor both matches and strings. addSortedInverted()'s adjacent-merge branch targets the\nmember range vectors, but it cannot fire for the temporary since complement pieces\nare always separated by an element of the operand.\n\nTest: JSTests/stress/regexp-v-flag-class-set-op-inverted-property.js\n\n* JSTests/stress/regexp-v-flag-class-set-op-inverted-property.js: Added.\n(shouldBe):\n* Source/JavaScriptCore/yarr/YarrPattern.cpp:\n(JSC::Yarr::CharacterClassConstructor::appendInverted):\n\nCanonical link: https://commits.webkit.org/318854@main",
      "email": "sosuke@bun.sh",
      "hash": "7b5e7da783f58bd8ee2321ff0a399617f0d2acc8",
      "subject": "[YARR] `\\P{...}` on the right side of a v-mode `\u0026\u0026` or `--` becomes a union"
    },
    "318856@main": {
      "author": "Nikolas Zimmermann",
      "avatar": "https://www.gravatar.com/avatar/83cbd636495835720e369cd589e3ca5e?d=identicon\u0026s=64",
      "cl": "318856@main",
      "clUrl": "https://commits.webkit.org/318856@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321377\n\nReviewed by Alejandro G. Castro.\n\nRespecting the damage information in compositing regressed the MotionMark\ncomposition suite by about 20%, and two of its tests by more than 50%.\n\nA draw is restricted to the damage either by splitting it into multiple\nsource-rect-to-destination-rect pieces, which needs a transform that keeps\nrects as rects, or by drawing it under a device-space clip of the damage\nregion. Neither restricts a draw that the damage already covers. A composited\nlayer in the affected tests is much smaller than a damage grid cell, so most\nlayers are covered. Draw those the way they are drawn with damage off.\nThe extra clips add nothing and only stop the batching.\n\nSkia turned a region of more than one rect into a clip path, and the image set\nbatch entries carry no clip quad, so a draw needing a clip also flushed the\nbatch, leaving it an order of magnitude smaller than it is without damage.\nSolid color layers never reach the batch and paid the clip alone, and filters\npaid it again per layer, compositing their intermediate surface back under\nthe clip as well.\n\nFix that and recover the performance losses, while keeping damage\npropagation intact for the cases where it pays off.\n\n* Source/WebCore/platform/graphics/skia/SkiaCompositingLayerImageSetBatch.cpp:\n(WebCore::SkiaCompositingLayerImageSetBatch::addImageSet):\n(WebCore::SkiaCompositingLayerImageSetBatch::addImage):\n* Source/WebCore/platform/graphics/skia/SkiaCompositingLayerImageSetBatch.h:\n(WebCore::SkiaCompositingLayerImageSetBatch::planRestrictedDraw):\n* Source/WebCore/platform/graphics/skia/SkiaDamageRegion.h:\n(WebCore::SkiaDamageRegion::covers const):\n(WebCore::SkiaDamageRegion::restrictDraw const):\n\nCanonical link: https://commits.webkit.org/318856@main",
      "email": "nzimmermann@igalia.com",
      "hash": "2f72b3d7740d588f216e4fc2e746e963931f0d93",
      "subject": "[Skia] Skip damage restriction when the damage covers the whole draw"
    },
    "318857@main": {
      "author": "Nikolas Zimmermann",
      "avatar": "https://www.gravatar.com/avatar/83cbd636495835720e369cd589e3ca5e?d=identicon\u0026s=64",
      "cl": "318857@main",
      "clUrl": "https://commits.webkit.org/318857@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321378\n\nReviewed by Fujii Hironori.\n\nRe-enable 'UseDamagingInformationForCompositing', since the performance regressions are gone.\nAlso enable 'UnifyDamagedRegions' since it gives a small performance benefit on rpi4 + MotionMark.\n\n* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:\n\nCanonical link: https://commits.webkit.org/318857@main",
      "email": "nzimmermann@igalia.com",
      "hash": "9010d6d3bec84492b190049c3e327a803e7ddd65",
      "subject": "[Skia] Re-enable damage in composition feature"
    },
    "318858@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "318858@main",
      "clUrl": "https://commits.webkit.org/318858@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=298000\nrdar://159808285\n\nReviewed by Alan Baradlay.\n\nThis patch removes non-standard percentage value from `-webkit-line-clamp`,\nwhich is not present in new standard for `line-clamp` plus this was also\ndropped from Blink in 2018 [1] due to lack of usage and it also has quirky\nundefined behavior different from web developer expectations in percentage\ndistribution between lines.\n\n[1] https://chromium.googlesource.com/chromium/src.git/+/7dc2379d58e26905dd77c56617d0baf9972581eb\n\n* Source/WebCore/Sources.txt:\n* Source/WebCore/WebCore.xcodeproj/project.pbxproj:\n* Source/WebCore/css/CSSProperties.json:\n* Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp:\n(WebCore::RenderDeprecatedFlexibleBox::hasClampingAndNoFlexing const):\n(WebCore::RenderDeprecatedFlexibleBox::applyLineClamp):\n(WebCore::lineCountFor): Deleted.\n* Source/WebCore/style/values/non-standard/StyleWebKitLineClamp.cpp: Removed.\n* Source/WebCore/style/values/non-standard/StyleWebKitLineClamp.h:\n(WebCore::Style::WebkitLineClamp::WebkitLineClamp): Deleted.\n(WebCore::Style::WebkitLineClamp::isNone const): Deleted.\n(WebCore::Style::WebkitLineClamp::isPercentage const): Deleted.\n(WebCore::Style::WebkitLineClamp::isInteger const): Deleted.\n(WebCore::Style::WebkitLineClamp::tryPercentage const): Deleted.\n(WebCore::Style::WebkitLineClamp::tryInteger const): Deleted.\n(WebCore::Style::WebkitLineClamp::holdsAlternative const): Deleted.\n(WebCore::Style::WebkitLineClamp::switchOn const): Deleted.\n(WebCore::Style::WebkitLineClamp::valueForTextAutosizingHash const): Deleted.\n\n\u003e Tests:\n* LayoutTests/fast/css/webkit-line-clamp-calculated-value-expected.txt:\n* LayoutTests/fast/css/webkit-line-clamp-calculated-value.html:\n* LayoutTests/fast/overflow/line-clamp.html:\n* LayoutTests/platform/mac/fast/overflow/line-clamp-expected.txt:\n* LayoutTests/platform/ios/fast/overflow/line-clamp-expected.txt:\n* LayoutTests/platform/glib/fast/overflow/line-clamp-expected.txt:\n\nCanonical link: https://commits.webkit.org/318858@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "8cbbfc9b154d2063cf96f04b40ae7e437fac9241",
      "subject": "Remove non-standard `percentage` value from `-webkit-line-clamp`"
    },
    "318859@main": {
      "author": "Alicia Boya Garcia",
      "avatar": "https://www.gravatar.com/avatar/89fdc5feb8ae1de4c43d003eba230998?d=identicon\u0026s=64",
      "cl": "318859@main",
      "clUrl": "https://commits.webkit.org/318859@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=320981\n\nReviewed by Xabier Rodriguez-Calvar.\n\nOn a device where a GStreamer seek operation leads to a pipeline async\nstate change, we may enter a flow of internal calls that cause a second\nseek to zero to be executed before the first call has returned. This was\ndetected with Spotify when performing a seek to the asset end (duration)\nright after playback has started from the beginning (position zero).\nThis issue does not happen if the GStreamer seek operation does not\ncause a async pipeline state change.\n\nSee: https://github.com/WebPlatformForEmbedded/WPEWebKit/issues/1645\n\nThis patch avoids automatic playback when the video has ended\n(effectively helping to avoid currentTime accidentally going beyond the\nduration) or when a seek is still happening (avoiding currentTime to\nprogress and change the conditions of the video). ReadyState is\npropagated to the player when seek has completed, helping the\nHTMLMediaElement algorithms to take the right decisions when seek\ncompletes. Finally, code has been added to avoid the position to ever go\nbeyond the duration in order to avoid a degradation of the ReadyState to\nHaveMetadata, except when the duration is zero. This is a special case\nused by MediaPlayerPrivateGStreamer::duration() and\nMediaPlayerPrivateGStreamerMSE::duration() when the duration is\nunknown/unavailable, and we don't want to mess up with that and cause a\nstream that is just being loaded to trigger unexpected effects.\n\nCo-authored-by: Enrique Ocaña González \u003ceocanha@igalia.com\u003e\n\nTest: media/media-source/media-source-seek-to-end-doesnt-loop.html\n\n* LayoutTests/media/media-source/media-source-seek-to-end-doesnt-loop-expected.txt: Added.\n* LayoutTests/media/media-source/media-source-seek-to-end-doesnt-loop.html: Added.\n* Source/WebCore/html/HTMLMediaElement.cpp:\n(WebCore::HTMLMediaElement::mediaPlayerPlaybackStateChanged): Avoid automatic playback on seek or video end.\n* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:\n(WebCore::MediaPlayerPrivateGStreamer::playbackPosition const): Never allow the position to go beyond duration, except in the special case when duration is zero.\n* Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:\n(WebCore::MediaPlayerPrivateGStreamerMSE::doSeek): Propagate readyState to player on seek completion.\n(WebCore::MediaPlayerPrivateGStreamerMSE::propagateReadyStateToPlayer): Relaxed the assert so also admit m_isSeeking as a condition to not halt execution.\n\nCanonical link: https://commits.webkit.org/318859@main",
      "email": "aboya@igalia.com",
      "hash": "42a5b5300e3d05ac9a9274479d118958892a9508",
      "subject": "[GStreamer][MSE] Avoid spurious seek to 0 when seeking to end"
    },
    "318860@main": {
      "author": "Ahmad Saleem",
      "avatar": "https://www.gravatar.com/avatar/38445f84fe28aa19bfeb1f59f6559532?d=identicon\u0026s=64",
      "cl": "318860@main",
      "clUrl": "https://commits.webkit.org/318860@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321392\nrdar://184446435\n\nReviewed by Taher Ali.\n\nUpstream commit: https://github.com/web-platform-tests/wpt/commit/54f8f933629e7c010ae98a246729af01f8abcda5\n\n* LayoutTests/imported/w3c/web-platform-tests/css/css-link-params/inheritance.html:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-link-params/link-parameters-computed-expected.txt:\n* LayoutTests/imported/w3c/web-platform-tests/css/css-link-params/link-parameters-computed.html:\n\nCanonical link: https://commits.webkit.org/318860@main",
      "email": "ahmad.saleem792+github@gmail.com",
      "hash": "399d0492b38c5d81e4dd2374348b06e0e7aaf083",
      "subject": "Resync `css-link-params` from WPT Upstream"
    },
    "318861@main": {
      "author": "Frédéric Wang Nélar",
      "avatar": "https://www.gravatar.com/avatar/2c634be4515bda5959ed1d7138b17d48?d=identicon\u0026s=64",
      "cl": "318861@main",
      "clUrl": "https://commits.webkit.org/318861@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321276\n\nReviewed by Patrick Griffis.\n\nUpstream commit: https://github.com/web-platform-tests/wpt/commit/8011b287558c2037c8c4334795d08cd136a2cec3\n\n* LayoutTests/TestExpectations: Skip new test waiting for a dictionary.\n* LayoutTests/imported/w3c/web-platform-tests/fetch/compression-dictionary/WEB_FEATURES.yml:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/compression-dictionary/compressed-large-resources-002.tentative.https.html:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/compression-dictionary/compressed-large-resources-dictionary-hashes.tentative.https.html: Added.\n* LayoutTests/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-fetch-with-link-connect-src-nonce.tentative.https.html.headers:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-fetch-with-link-connect-src.tentative.https.html.headers:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/compression-dictionary/resources/static/Makefile:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/compression-dictionary/resources/static/dcb-header: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/fetch/compression-dictionary/resources/static/dcz-header: Removed.\n* LayoutTests/imported/w3c/web-platform-tests/fetch/compression-dictionary/resources/static/dictionary-hashes.js: Added.\n* LayoutTests/imported/w3c/web-platform-tests/fetch/compression-dictionary/resources/static/self-compressed-image-001.png.dcb:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/compression-dictionary/resources/static/self-compressed-subframe-001.html.dcb:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/compression-dictionary/resources/static/w3c-import.log:\n* LayoutTests/imported/w3c/web-platform-tests/fetch/compression-dictionary/w3c-import.log:\n* LayoutTests/tests-options.json:\n\nCanonical link: https://commits.webkit.org/318861@main",
      "email": "fwang@igalia.com",
      "hash": "abb3ac9745f1cd96300e9ed3b5565d5827654d58",
      "subject": "Update fetch/compression-dictionary from WPT"
    },
    "318862@main": {
      "author": "Jamie Murphy",
      "avatar": "https://www.gravatar.com/avatar/6b42429f4e7db820c9d55e550001567f?d=identicon\u0026s=64",
      "cl": "318862@main",
      "clUrl": "https://commits.webkit.org/318862@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=319869\n\nReviewed by Carlos Garcia Campos and Patrick Griffis.\n\nCreates a new WebKitWebExtensionContext GObject for WebKitGtk with\nsupport for getting the correct Options Page URI for the WebExtension.\nIntended to provide a basis to add more Context code while having a\nWebKitGTK API available to append to.\n\n* Source/WebKit/PlatformGTK.cmake:\n* Source/WebKit/PlatformWPE.cmake:\n* Source/WebKit/Shared/Extensions/WebExtensionRegisteredScriptsSQLiteStore.cpp:\n(WebKit::WebExtensionRegisteredScriptsSQLiteStore::migrateToCurrentSchemaVersionIfNeeded):\n* Source/WebKit/Shared/Extensions/WebExtensionRegisteredScriptsSQLiteStore.h:\n* Source/WebKit/SourcesGTK.txt:\n* Source/WebKit/SourcesWPE.txt:\n* Source/WebKit/UIProcess/API/glib/WebKitError.cpp:\n(webkit_web_extension_context_error_quark):\n* Source/WebKit/UIProcess/API/glib/WebKitError.h.in:\n* Source/WebKit/UIProcess/API/glib/WebKitPrivate.cpp:\n(toWebKitWebExtensionContextError):\n* Source/WebKit/UIProcess/API/glib/WebKitPrivate.h:\n* Source/WebKit/UIProcess/API/glib/WebKitWebExtension.cpp:\n(webkitWebExtensionToImpl):\n* Source/WebKit/UIProcess/API/glib/WebKitWebExtensionContext.cpp: Added.\n(webkitWebExtensionContextGetProperty):\n(webkitWebExtensionContextSetProperty):\n(webkit_web_extension_context_class_init):\n(webkitWebExtensionContextInitableInit):\n(gInitableInterfaceInit):\n(webkitWebExtensionContextSetWebExtension):\n(webkit_web_extension_context_new_for_extension):\n(webkit_web_extension_context_get_web_extension):\n(webkit_web_extension_context_get_base_uri):\n(webkit_web_extension_context_set_base_uri):\n(webkit_web_extension_context_get_options_page_uri):\n* Source/WebKit/UIProcess/API/glib/WebKitWebExtensionContext.h.in: Added.\n* Source/WebKit/UIProcess/API/glib/WebKitWebExtensionPrivate.h: Added.\n* Source/WebKit/UIProcess/API/glib/webkit.h.in:\n* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:\n* Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in:\n* Source/WebKit/UIProcess/Extensions/glib/WebExtensionContextGLib.cpp: Added.\n(WebKit::WebExtensionContext::WebExtensionContext):\n* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIAlarms.cpp:\n(WebKit::WebExtensionAPIAlarms::createAlarm):\n(WebKit::WebExtensionAPIAlarms::get):\n(WebKit::WebExtensionAPIAlarms::getAll):\n(WebKit::WebExtensionAPIAlarms::clear):\n(WebKit::WebExtensionAPIAlarms::clearAll):\n* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitWebExtensionContext.cpp: Added.\n(createGBytes):\n(testOptionsPageURIParsing):\n(beforeAll):\n(afterAll):\n* Tools/TestWebKitAPI/glib/CMakeLists.txt:\n\nCanonical link: https://commits.webkit.org/318862@main",
      "email": "jmurphy@igalia.com",
      "hash": "c4fb679ca61a0f8f2fd60e800c8e9eb5d59b4af0",
      "subject": "[GTK] Create WebKitWebExtensionContext Options Page API"
    },
    "318863@main": {
      "author": "Nikolas Zimmermann",
      "avatar": "https://www.gravatar.com/avatar/4cf161180c532b03a653c7e5c1a8b6cc?d=identicon\u0026s=64",
      "cl": "318863@main",
      "clUrl": "https://commits.webkit.org/318863@main",
      "description": "https://bugs.webkit.org/show_bug.cgi?id=321402\n\nUnreviewed gardening.\n\nUpdate a changed pixel test result in both legacy + LBSE\nand remove an unused pixel test result (test is a reftest).\n\n* LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/text/selection-background-color-expected.png:\n* LayoutTests/platform/mac-tahoe-wk2-pixel/svg/custom/external-paintserver-reference-expected.png: Removed.\n* LayoutTests/platform/mac-tahoe-wk2-pixel/svg/text/selection-background-color-expected.png:\n\nCanonical link: https://commits.webkit.org/318863@main",
      "email": "zimmermann@kde.org",
      "hash": "51cb494b261369ea8d0843a8828703518417437e",
      "subject": "[LBSE] Update pixel test baseline"
    }
  },
  "date": "2026-08-09",
  "days": 1,
  "generatedAt": "2026-08-09T22:05:22Z",
  "markdown": "## Highlights\n- **Web Platform** WebKit removed the non-standard `percentage` value from `-webkit-line-clamp`, tightening behavior toward the standard and reducing author footguns. [commit 318858@main](https://commits.webkit.org/318858@main)\n- **Media** GStreamer MSE no longer spuriously seeks back to 0 when seeking to the end, fixing a nasty edge case in end-of-stream playback. [commit 318859@main](https://commits.webkit.org/318859@main)\n- **Rendering** Skia re-enabled composition damage tracking, a meaningful step toward restoring incremental rendering efficiency. [commit 318857@main](https://commits.webkit.org/318857@main)\n- **Perf** Skia now skips damage restriction when the damage already covers the full draw, avoiding pointless clipping work on full-frame updates. [commit 318856@main](https://commits.webkit.org/318856@main)\n- **Web Platform** Regex set operations in YARR got a semantic fix so `\\P{...}` on the right side of v-mode `\u0026\u0026` or `--` is treated as a union, aligning behavior with expected Unicode set parsing. [commit 318854@main](https://commits.webkit.org/318854@main)\n- **UI** Clicking nested content inside a checkbox or radio no longer incorrectly activates an ancestor input, fixing a visible form interaction bug. [commit 318853@main](https://commits.webkit.org/318853@main)\n- **V8** JSC Intl `formatToParts()` now emits the same era separator as `format()`, closing a standards compliance gap in date formatting output. [commit 318847@main](https://commits.webkit.org/318847@main)\n- **DevTools** GTK gained a WebKitWebExtensionContext Options Page API, expanding the extension surface for browser-integrated configuration UI. [commit 318862@main](https://commits.webkit.org/318862@main)\n\n## What landed by area\n\n### Standards and WPT sync\n- **Web Platform** Fetch compression-dictionary tests were updated from upstream WPT, pulling current conformance coverage into tree. [commit 318861@main](https://commits.webkit.org/318861@main)\n- **Web Platform** `css-link-params` was resynced from upstream WPT, keeping CSS link parameter behavior aligned with the shared test suite. [commit 318860@main](https://commits.webkit.org/318860@main)\n- **Web Platform** Script module tests under `html/semantics/scripting-1/the-script-element/module` were synced from upstream WPT, refreshing coverage for module script behavior. [commit 318851@main](https://commits.webkit.org/318851@main)\n\n### Rendering and graphics\n- **Rendering** Pixel test baselines were updated for LBSE, reflecting expected rendering output after recent engine changes. [commit 318863@main](https://commits.webkit.org/318863@main)\n\n### Media\n- **Media** A new API test covers MediaRecorder dropping a frame when the writer input reports not ready, strengthening regression detection around recorder backpressure. [commit 318850@main](https://commits.webkit.org/318850@main)\n\n### Forms and DOM interaction\n- **UI** The checkbox and radio activation fix corrects nested-element click handling so the wrong ancestor input is not toggled. [commit 318853@main](https://commits.webkit.org/318853@main)\n\n### JavaScript and Intl\n- **V8** JSC Intl now keeps `formatToParts()` consistent with `format()` for era separator emission, which matters for apps consuming tokenized localized output. [commit 318847@main](https://commits.webkit.org/318847@main)\n- **Web Platform** YARR's v-mode character set logic was corrected for `\\P{...}` on the right side of set operators, improving regex standards behavior. [commit 318854@main](https://commits.webkit.org/318854@main)\n\n### GTK and platform APIs\n- **DevTools** GTK added a WebKitWebExtensionContext Options Page API so extensions can expose dedicated options UI through the platform API surface. [commit 318862@main](https://commits.webkit.org/318862@main)\n\n### Tooling and engineering hygiene\n- **Build** WebKit stopped including `\u003cobjc/objc-runtime.h\u003e` and enforced that via `check-webkit-style`, reducing reliance on the wrong Objective-C runtime header going forward. [commit 318848@main](https://commits.webkit.org/318848@main)\n- **Refactor** GLib layout test gardening cleaned up expected test state for the day, keeping bots and local results in sync. [commit 318852@main](https://commits.webkit.org/318852@main)\n\n### Safari MCP\n- **UI** Safari MCP improved default text extraction on www.yelp.com by avoiding noise from hidden SVG elements, which should make extracted page text cleaner and more usable. [commit 318849@main](https://commits.webkit.org/318849@main)",
  "repo": "webkit",
  "repoDisplay": "WebKit",
  "rollGroups": [
    {
      "name": "Unreviewed",
      "count": 1
    }
  ],
  "since": "2026-08-09",
  "totals": {
    "commits": 17,
    "features": 16,
    "rolls": 1
  },
  "until": "2026-08-09"
}