)]}'
{
  "log": [
    {
      "commit": "10d5258d2de99fe8596f563d25e0723a0c666d69",
      "tree": "a720b3a69b090041844cb724008fd1e55764440a",
      "parents": [
        "578e1dd97b85a86ce618c504049a84d2c0c06937"
      ],
      "author": {
        "name": "Younies Mahmoud",
        "email": "younies.mahmoud@gmail.com",
        "time": "Tue Aug 04 08:03:49 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 08:03:49 2026"
      },
      "message": "refactor(provider_source/currency): Address review feedback on pattern helpers visibility and naming (#8301)\n\n## Follow-up to #8295 addressing review feedback from @robertbastian:\n\n- Made `PatternSet` and `iter_numsys_pattern_ids` private to\n`currency/mod.rs`.\n- Renamed `UniquePatternsTracker` to `PatternSet` (and `tracker` to\n`patterns`).\n\n## Changelog\nN/A"
    },
    {
      "commit": "578e1dd97b85a86ce618c504049a84d2c0c06937",
      "tree": "9391e0db168b9614fc461408adb105dea46700a7",
      "parents": [
        "0adadc9090b0f4cd9ef0e140e79cd03c7c3b105c"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Tue Aug 04 07:49:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 07:49:56 2026"
      },
      "message": "Add `data_locale!` macro (#8305)\n\nWe have many call sites that construct a `DataLocale` with `locale!` or\n`langid!`, both of these are not necessarily correct.\n\n#7381\n\n#5989\n\n## Changelog\n\n`icu_locale_core`\n* Make `DataLocale::try_from_[str|utf8]` const\n* Add `data_locale!` macro\n\n`icu_locale_fallback`\n* `LocaleFallbackerWithConfig::config`"
    },
    {
      "commit": "0adadc9090b0f4cd9ef0e140e79cd03c7c3b105c",
      "tree": "d07e4419a26284cf735ecf58ec7fdda7a593a30b",
      "parents": [
        "6a589ec2820d5f93234971c6ec780d1f09153100"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Mon Aug 03 20:06:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 20:06:12 2026"
      },
      "message": "Update some dependencies to reduce syn v2 usage (#8310)\n\nMore syn upgrade stuff.\n\nRemaining crates (which need upstream work) are askama, strnum,\nbytecheck, ptr_meta, rkyv.\n\n## Changelog: N/A"
    },
    {
      "commit": "6a589ec2820d5f93234971c6ec780d1f09153100",
      "tree": "9135b67342ef81641e5a9fd406f5acfd3d8811c1",
      "parents": [
        "118657176dbd1e7968ad8017eb909460ec2bf7a0"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Mon Aug 03 18:05:39 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 18:05:39 2026"
      },
      "message": "Fix typo from #8299  (#8311)\n\nAccidentally removed neo tests.\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "118657176dbd1e7968ad8017eb909460ec2bf7a0",
      "tree": "5a38e5af7e6e2c3ab7ff347dfdfe3da9e39d20c4",
      "parents": [
        "7a9d7e1668e449d42976a2e4f076c0460db32e21"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Aug 03 17:52:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 17:52:55 2026"
      },
      "message": "Bump brace-expansion from 5.0.8 to 5.0.9 in /tools/web-demo (#8312)"
    },
    {
      "commit": "7a9d7e1668e449d42976a2e4f076c0460db32e21",
      "tree": "40b910c25011874fed797ec457e283068961521e",
      "parents": [
        "92407131a977b1be849a2b485d25982f42f69598"
      ],
      "author": {
        "name": "Moritz",
        "email": "27859082+mosuem@users.noreply.github.com",
        "time": "Mon Aug 03 17:29:14 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 17:29:14 2026"
      },
      "message": "feat: add SLSA build provenance and SBOM attestations for FFI release binaries (#8306)\n\n### Summary\n- Configures `attestations: write` permissions in\n`.github/workflows/artifacts-build.yml`.\n- Generates SPDX SBOM from `Cargo.lock` using `anchore/sbom-action@v0`\nin the `release-ffi-libs` release job.\n- Generates SLSA v1.0 build provenance\n(`actions/attest-build-provenance@v2`) and SBOM attestations\n(`actions/attest@v4`) for all released FFI binaries (`ffi-*-libs/*`).\n- Updates `ffi/dart/tool/regenerate_hashes.dart` to verify GitHub\nartifact attestations before recording SHA-256 hashes in `hashes.dart`.\n- Adds optional runtime artifact attestation verification in `FetchMode`\n(`ffi/dart/hook/build.dart`) when `verifyAttestation: true` is\nconfigured in user defines.\n\n## Changelog\n\nN/A\n\nCo-authored-by: Robert Bastian \u003c4706271+robertbastian@users.noreply.github.com\u003e"
    },
    {
      "commit": "92407131a977b1be849a2b485d25982f42f69598",
      "tree": "d3c1cb49a346aa80ef9748da23f49484b918750f",
      "parents": [
        "9366f060d84ae26bcc548f1f142116ece9804d76"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Mon Aug 03 16:34:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 16:34:37 2026"
      },
      "message": "Update diplomat to 0.16.0 (#8304)\n\n## Changelog: N/A"
    },
    {
      "commit": "9366f060d84ae26bcc548f1f142116ece9804d76",
      "tree": "98b6a601388a8607c97477b0175e10ff6f825727",
      "parents": [
        "554c91c1c5e3283462eef44ef6d7306ae8430b9c"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Mon Aug 03 15:34:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 15:34:35 2026"
      },
      "message": "Fix merge conflict (#8307)\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "554c91c1c5e3283462eef44ef6d7306ae8430b9c",
      "tree": "589b2ef05061c6e3af3b660dff2e88e1de148c90",
      "parents": [
        "8c43873f45a6457cb8f7d0911fcca909eb71ca68"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Mon Aug 03 12:49:46 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 12:49:46 2026"
      },
      "message": "Split icu_locale_fallback out of icu_locale (#3931) (#8245)"
    },
    {
      "commit": "8c43873f45a6457cb8f7d0911fcca909eb71ca68",
      "tree": "e62eb9d88c414862bfa939a35673a37282d5b8b1",
      "parents": [
        "fbfaeb390627ee9bfbe20ee188fa486e202e8168"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Sat Aug 01 00:59:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 01 00:59:48 2026"
      },
      "message": "Changelog tool improvements (#8302)\n\nSome quality of life improvements to the changelog tool.\n\nThe usage of AI tools is annotated in the individual commits.\n\nReviewable commit by commit\n\n## Changelog\n\nN/A (tool only)\n\n---------\n\nCo-authored-by: Gemini \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "fbfaeb390627ee9bfbe20ee188fa486e202e8168",
      "tree": "fa0650a616209205cbd49f83ada33c4815f1cbfa",
      "parents": [
        "ec6cb908a9bdc5ac365714a554bf3f70547c523e"
      ],
      "author": {
        "name": "Younies Mahmoud",
        "email": "younies.mahmoud@gmail.com",
        "time": "Fri Jul 31 16:28:33 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 16:28:33 2026"
      },
      "message": "refactor(provider_source/currency): Deduplicate currency pattern datagen helpers (#8295)"
    },
    {
      "commit": "ec6cb908a9bdc5ac365714a554bf3f70547c523e",
      "tree": "1f8454c053756a816a067d698d4db364d10c5ba6",
      "parents": [
        "6927cae2f0433658306db7135f7445079cb0f13e"
      ],
      "author": {
        "name": "Younies Mahmoud",
        "email": "younies.mahmoud@gmail.com",
        "time": "Fri Jul 31 15:10:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 15:10:32 2026"
      },
      "message": "refactor(currency): make PASS_THROUGH private on CurrencyPatternsNoCurrency (#8297)"
    },
    {
      "commit": "6927cae2f0433658306db7135f7445079cb0f13e",
      "tree": "569a3257ad1af28dcddeedee35f9ce8b95eb4c04",
      "parents": [
        "d9c64e6d55c0e0c4c541e80444857a9ef0babd86"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Fri Jul 31 14:12:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 14:12:51 2026"
      },
      "message": "Remove many neo constructors (#8299)\n\nFor the unstable release we should reduce the number of constructors.\nMany constructors are convenience constructors only, we don\u0027t need the\nfull buffer, auto, lstm, dictionary matrix.\n\n## Changelog\n\n`icu_segmenter`\n* Add\n`WordSegmenter[Borrowed]::load_auto[_unstable|_with_buffer_provider]` to\nload the complex segmentation data that is loaded by\n`WordSegmenter::new_auto`"
    },
    {
      "commit": "d9c64e6d55c0e0c4c541e80444857a9ef0babd86",
      "tree": "249be5d9b75c1281dadacf62420ad47a0559373b",
      "parents": [
        "bf53001364cef77dba06213099119fd30a1d22c2"
      ],
      "author": {
        "name": "Kushida",
        "email": "kushidashiro@gmail.com",
        "time": "Fri Jul 31 13:24:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 13:24:55 2026"
      },
      "message": "Fix IXDTF trailing input validation after annotations (#8294)\n\nAnnotated `YearMonth` and `MonthDay` parsers checked for trailing input\nwhen no annotations were present, but returned without closing the\ncursor after parsing an annotation set. This allowed inputs such as\n`2020-11[u-ca\u003diso8601]junk` to be accepted.\n\nClose the cursor after annotated parses and add regressions covering\ncalendar and time-zone annotations.\n\n## Validation\n\n- `cargo test --all-features` (44 unit tests and 23 doctests)\n- `cargo clippy --all-targets --all-features`\n- `rustfmt --check` on the changed Rust files\n\n## Changelog\n\nixdtf:\n- Reject trailing input after annotations in `YearMonth` and `MonthDay`\nparsing"
    },
    {
      "commit": "bf53001364cef77dba06213099119fd30a1d22c2",
      "tree": "35a88e65a540e1af62734d281605342a3dc8726e",
      "parents": [
        "fbab3f0de8d219ec679124a227b723fe44acd4e2"
      ],
      "author": {
        "name": "Younies Mahmoud",
        "email": "younies.mahmoud@gmail.com",
        "time": "Fri Jul 31 12:53:49 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 12:53:49 2026"
      },
      "message": "feat(currency): Add try_new_no_currency constructor and CurrencyPatternsNoCurrencyV1 (#8275)"
    },
    {
      "commit": "fbab3f0de8d219ec679124a227b723fe44acd4e2",
      "tree": "8bc2e016ba168f1904003c576ebcb12c2051e7b8",
      "parents": [
        "03773365a046dcb07bd9b24a733e305a02af7375"
      ],
      "author": {
        "name": "AudaciousAxiom",
        "email": "179637270+AudaciousAxiom@users.noreply.github.com",
        "time": "Thu Jul 30 22:05:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 22:05:19 2026"
      },
      "message": "refactor(workspace): bump `syn` to v3 (#8292)\n\n\u003c!--\nThank you for your pull request to ICU4X!\n\nReminder: try to use [Conventional\nComments](https://conventionalcomments.org/) to make comments clearer.\n\nPlease see\nhttps://github.com/unicode-org/icu4x/blob/main/CONTRIBUTING.md for\ngeneral\ninformation on contributing to ICU4X.\n--\u003e\n## Description\n\nAs hinted to in #8268, this updates `syn` to v3 in the whole workspace,\nthat is, for the following packages:\n\n- `databake-derive`\n- `yoke-derive`\n- `zerofrom-derive`\n- `zerovec-derive`\n\nOnly `yoke-derive` and `zerofrom-derive` required (tiny) refactors. The\naim is to reduce dependency duplication in the dependents, following the\n[recent release of `syn`\nv3](https://github.com/dtolnay/syn/releases/tag/3.0.0).\n\nI\u0027ve gone through the changelog and did the necessary refactors; I\ndidn\u0027t find any other relevant breaking changes (but there are quite a\nfew of them so I could have missed some). I\u0027ve run `cargo test\n--all-features` for the relevant packages but didn\u0027t do any other kind\nof testing.\n\n`syn` v3 and `synstructure` v0.14 have an MSRV of 1.71, so that should\nbe compatible with every package in the workspace.\n\n## Changelog (N/A)\n\n\u003c!-- Please fill in according to documents/process/changelog.md --\u003e\nI\u0027ve read the process document, but I\u0027m unsure whether dependency bumps\nshould go into the changelog (APIs should be unaffected).\n\n---------\n\nCo-authored-by: Manish Goregaokar \u003cmanishsmail@gmail.com\u003e"
    },
    {
      "commit": "03773365a046dcb07bd9b24a733e305a02af7375",
      "tree": "068a7e43cc49b824910c02f5969ae6ff3dc36986",
      "parents": [
        "675b1728584df47eb3bf641b5ae5600a1a63e035"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Thu Jul 30 17:11:39 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 17:11:39 2026"
      },
      "message": "agent-driven: Fix integer overflow in UnsignedDecimal exponent parsing (#8289)\n\nDiscovered by the Rust Foundation Security initiative.\n\nIt\u0027s possible to make this code panic by having it parse a too-large\nexponent.\n\n## Changelog\n\nicu_decimal:\n - Fix integer overflow in UnsignedDecimal exponent parsing"
    },
    {
      "commit": "675b1728584df47eb3bf641b5ae5600a1a63e035",
      "tree": "a833f490fb5d71438f7b88ac823f3fb7800c00e7",
      "parents": [
        "65ad2f152f835f1cc9fb4629e485841fed3d71ce"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Thu Jul 30 12:37:28 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 12:37:28 2026"
      },
      "message": "Tweak metazone variant fallback (#8288)\n\nThis is required for CLDR 49. The new situation is that we have two\nmetazones where we only have `standard` and `daylight` short names\n(\"GMT\"/\"BST\"), but no `generic` name. The current algorithm specifies\nthat we use the `standard` name for `generic`, but that seems to be\ndesigned for standard-only zones; it doesn\u0027t make sense for DST-zones.\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "65ad2f152f835f1cc9fb4629e485841fed3d71ce",
      "tree": "3ac15f9dc00b53b7d5a3dbed8f64fdb441df9d25",
      "parents": [
        "7e8cf73cf81609660d1cc83324a8068e325b6bfa"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Thu Jul 30 10:55:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 10:55:42 2026"
      },
      "message": "Use saturating_add in PluralOperands::from_significand_and_exponent (#8285)\n\nFixes an issue found during the Rust Foundation\u0027s agentic audit\nperformed by @eh2406\n\n## Changelog\n\nicu_plurals:\n\n- Fix potential overflow in\n`PluralOperands::from_significand_and_exponent`"
    },
    {
      "commit": "7e8cf73cf81609660d1cc83324a8068e325b6bfa",
      "tree": "6b0566451bc36df25c71dbc6bf0925e7e0f53990",
      "parents": [
        "c6b6df2ed8b265b07e447dbacb61f83e8af7ff45"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Thu Jul 30 06:40:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 06:40:30 2026"
      },
      "message": "Validate checksums for segmenter tailorings (#8282)\n\n## Changelog\n\n`zerovec`\n* `impl Hash for ZeroVec, ZeroSlice`\n\n`icu_collections`\n* `impl Hash for CodePointInversionList`"
    },
    {
      "commit": "c6b6df2ed8b265b07e447dbacb61f83e8af7ff45",
      "tree": "8e2c7017969658a2119a0b9ead88182b177246c5",
      "parents": [
        "0e99f57671c52d9c833feecec4c93000e311f144"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Wed Jul 29 21:39:44 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 29 21:39:44 2026"
      },
      "message": "Add unstable date range (interval) formatter (#8149)\n\nPart of https://github.com/unicode-org/icu4x/issues/5448\n\nDepends on \u003cs\u003ehttps://github.com/unicode-org/icu4x/pull/8147,\nhttps://github.com/unicode-org/icu4x/pull/8148, #8172,\nhttps://github.com/unicode-org/icu4x/pull/8173\u003c/s\u003e\n\nCan be reviewed commit by commit\n\n\nThis adds FixedCalendarDateRangeFormatter and DateRangeFormatter,\nmatching the existing date formatter types. There is no subslicing into\ndate/time/zoned types, I don\u0027t think we need it here.\n\n\n`format_impl_shared` is the main juicy bit: it handles the dispatch to\nthe different types of formatted date ranges. The rest is mostly just\ngluing everything together, though there is some nontrivial skeleton\nmatch logic in `DateRangePatternSelectionData::select`. It might be\npossible to copy that code out.\n\nThis does not add FFI. \n\nHopefully this can make the 2.3 release. Unfortunately I will have\nlimited capacity to handle feedback for the next 3 weeks, so it might\nnot, it might be useful to try and land this and file many small\nfollowups if the approach looks good.\n\n## Changelog\n\nicu_datetime: Add unstable range formatter\n- New types: `DateRangeFormatter`, `FixedCalendarDateRangeFormatter`,\n`FormattedDateRange`"
    },
    {
      "commit": "0e99f57671c52d9c833feecec4c93000e311f144",
      "tree": "a4b57bdde268852f3c170689b25befa03476e395",
      "parents": [
        "73f316ae38806fd1d06335b3da37c86f938ff775"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Wed Jul 29 19:23:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 29 19:23:40 2026"
      },
      "message": "Load segmenters from PRI (#8283)"
    },
    {
      "commit": "73f316ae38806fd1d06335b3da37c86f938ff775",
      "tree": "80d43a840f4e0cc3cf671d5d646ca37a08ec45db",
      "parents": [
        "8d30d55becc2bd4624af2220d38a46dac9ac53fa"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Wed Jul 29 14:12:36 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 29 14:12:36 2026"
      },
      "message": "Clean up non-metacrate usages in docs (#8280)\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "8d30d55becc2bd4624af2220d38a46dac9ac53fa",
      "tree": "5a7b7ceb2214ec85af33ea510ad02b77695019bd",
      "parents": [
        "9bdba6e42ccbd7a111629e1b72b282d6264b922b"
      ],
      "author": {
        "name": "Nora Papale",
        "email": "nicopap@users.noreply.github.com",
        "time": "Wed Jul 29 06:28:54 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 29 06:28:54 2026"
      },
      "message": "Return concrete types from LiteMap iter methods (#8072)\n\nReturn concrete types from LiteMap iter methods\n\nimpl Trait is limited to a single trait. But we\u0027d like to expose\niterators that implement more than DoubleEndedIterator (eg: ExactSize,\nFused). This is why we return a concrete type now.\n\nThis closes #8054.\n\n## Considerations\n\n* No Copy derive, because that\u0027s against API guidelines for Iterators\n* Manual impl of `size_hint`, to be able to use ExactSizeIterator\n  without panicking.\n* Manual impl of `nth` and `fold`, as other iterator methods tend to be\n  implemented in term of those, and forwarding them to the inner\n  iterator **might** avoid performance penalty of the default impl.\n\n## CLA status\n\n* Signed\n\n## Changelog\n\nlitemap: Make return types of `LiteMap` iter methods (`iter`,\n`iter_mut`, `values`, `keys`) concrete:\n* New types: `ValuesIter`, `KeysIter`, implements relevant traits,\nreturned by `values` and `keys` respectively.\n* Changed: The return types of the aforementioned methods go from an\n`impl DoubleEndedIterator` to concrete types such as `S::KeyValueIter`,\n`S::KeyValueIterMut` or the aforementioned new types."
    },
    {
      "commit": "9bdba6e42ccbd7a111629e1b72b282d6264b922b",
      "tree": "8af441330580ee32f4568afa731f89f357a50a9a",
      "parents": [
        "f23da011e90aa72b23dac3a127e578e16bdb4894"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Tue Jul 28 16:15:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 16:15:51 2026"
      },
      "message": "Fix grapheme iterator desync when dictionary segmenter rewinds (#7888) (#8195)\n\nSometimes `DictionaryBreakIterator::next()` does a speculative iterator\nadvance, and then \"rewinds\" when it fails. The current code rewinds the\ncontained iterator but not the contained grapheme iterator. Seems\nincorrect to me.\n\n\nThis was incidentally discovered by an LLM while I was trying to analyze\nthis code for #7888.\n\n\n\n\u003cdetails\u003e\u003csummary\u003eLLM analysis\u003c/summary\u003e\nWhen exploring dictionary matches in `DictionaryBreakIterator::next()`,\nhitting an Intermediate match advances the `grapheme_iter` to check if\nthe match aligns with a grapheme boundary. If subsequent trie traversal\nfails with NoMatch, self.iter is rewound to the previous match point,\nbut previously `self.grapheme_iter` and `last_grapheme_offset` were not\nrewound.\n\nThis caused grapheme_iter to be out of sync with iter on subsequent\nnext() calls, potentially rejecting valid grapheme boundaries after a\nbacktrack. We implement Clone manually for RuleBreakIterator and\nGraphemeClusterBreakIterator (avoiding unnecessary Y: Clone bounds) and\nsave/restore the grapheme iterator state alongside iter on backtrack.\n\nInvestigation of #7888 confirms there is no `O(n*m)` quadratic behavior\nbetween dictionary trie traversal and grapheme boundary checks:\ngrapheme_iter moves monotonically across iterations and trie backtrack\ndistance is bounded by maximum dictionary word length.\n\n\u003c/details\u003e\n\n## Changelog\n\nicu_segmenter:\n - Fix rewinding behavior in dictionary segmenter"
    },
    {
      "commit": "f23da011e90aa72b23dac3a127e578e16bdb4894",
      "tree": "b2d92cb41991d999638a7514cfc6bd0298a62025",
      "parents": [
        "6abad9d55f7be43c144e2b1050d92401d06a1011"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Tue Jul 28 15:24:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 15:24:02 2026"
      },
      "message": "Graduate DataPayloadOr (#8163)\n\n## Changelog\n\nicu_provider: Add type DataPayloadOr (note: it is already in the 1.5.x changelog)"
    },
    {
      "commit": "6abad9d55f7be43c144e2b1050d92401d06a1011",
      "tree": "187607e73db62cde769c1e4342df21ba7b17e7bf",
      "parents": [
        "bb249c22138985e2e3afb1ffb6a12c9ba72c914b"
      ],
      "author": {
        "name": "AudaciousAxiom",
        "email": "179637270+AudaciousAxiom@users.noreply.github.com",
        "time": "Tue Jul 28 15:03:59 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 15:03:59 2026"
      },
      "message": "fix(utils): enable some missing Cargo features (#8268)\n\n\u003c!--\nThank you for your pull request to ICU4X!\n\nReminder: try to use [Conventional\nComments](https://conventionalcomments.org/) to make comments clearer.\n\nPlease see\nhttps://github.com/unicode-org/icu4x/blob/main/CONTRIBUTING.md for\ngeneral\ninformation on contributing to ICU4X.\n--\u003e\nThis enables the `visit` Cargo feature on `syn` in `yoke-derive` and\n`zerofrom-derive` and `alloc` on `zerovec` in `zerofrom`, which were\nmissing, likely because their need was hidden due to feature unification\nin the workspace.\n\nI\u0027ve found this by bumping `syn` to v3 (for which I plan to open a PR\nsoon, but needs an [update of\n`synstructure`](https://github.com/mystor/synstructure/pull/75) first)\nin `yoke-derive` and `zerofrom-derive` individually.\n\n## Changelog (N/A)\n\n\u003c!-- Please fill in according to documents/process/changelog.md --\u003e"
    },
    {
      "commit": "bb249c22138985e2e3afb1ffb6a12c9ba72c914b",
      "tree": "33ec9a5204e7b2929ba5078794286917fe58e5f0",
      "parents": [
        "c9e7fdefe0b6036ac7275a7529ab1f5c7be93871"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Tue Jul 28 13:49:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 13:49:30 2026"
      },
      "message": "Remove segmenter monkey tests for neo (#8274)\n\nThe state machine is exhaustively tested at the UCD level, and checking\nin a few monkey tests does not catch any issues that the spec test\nwouldn\u0027t catch. They only complicate Unicode updates because they are\ngenerated from ICU.\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "c9e7fdefe0b6036ac7275a7529ab1f5c7be93871",
      "tree": "31a09e87d9b93b96286d3c31ba1ec12a85ac06ff",
      "parents": [
        "357b9a91fd311d2ce37c8c2d950d3d39d8f1ac86"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jul 28 09:24:49 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 09:24:49 2026"
      },
      "message": "Bump postcss from 8.5.12 to 8.5.23 in /tools/web-demo (#8273)\n\nBumps [postcss](https://github.com/postcss/postcss) from 8.5.12 to\n8.5.23.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/postcss/postcss/releases\"\u003epostcss\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.5.23\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDo not load source map without \u003ccode\u003eopts.from\u003c/code\u003e for security\nreasons.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.22\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed custom property losing semicolon before a comment (by \u003ca\nhref\u003d\"https://github.com/sarathfrancis90\"\u003e\u003ccode\u003e@​sarathfrancis90\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.21\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed childless at-rule losing semicolon before comment (by \u003ca\nhref\u003d\"https://github.com/sarathfrancis90\"\u003e\u003ccode\u003e@​sarathfrancis90\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed docs (by \u003ca\nhref\u003d\"https://github.com/isker\"\u003e\u003ccode\u003e@​isker\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.20\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed missing space if \u003ccode\u003eAtRule#params\u003c/code\u003e is set after (by\n\u003ca\nhref\u003d\"https://github.com/sarathfrancis90\"\u003e\u003ccode\u003e@​sarathfrancis90\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed mixing AST error on warnings (by \u003ca\nhref\u003d\"https://github.com/MahinAnowar\"\u003e\u003ccode\u003e@​MahinAnowar\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed cleaning \u003ccode\u003ebefore\u003c/code\u003e for new nodes inserted to\n\u003ccode\u003eRoot\u003c/code\u003e (by \u003ca\nhref\u003d\"https://github.com/MahinAnowar\"\u003e\u003ccode\u003e@​MahinAnowar\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestricted loading previous source maps file to the\n\u003ccode\u003eopts.from\u003c/code\u003e folder for security reasons (use \u003ccode\u003eunsafeMap:\ntrue\u003c/code\u003e to disable the check).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.17\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eMaximum call stack size exceeded\u003c/code\u003e error.\u003c/li\u003e\n\u003cli\u003eFixed Prototype hijacking for \u003ccode\u003epostcss.fromJSON()\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eInput#origin()\u003c/code\u003e for unmapped end position (by \u003ca\nhref\u003d\"https://github.com/chatman-media\"\u003e\u003ccode\u003e@​chatman-media\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.16\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eInput#origin()\u003c/code\u003e position (by \u003ca\nhref\u003d\"https://github.com/mizdra\"\u003e\u003ccode\u003e@​mizdra\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eraws\u003c/code\u003e after rehydrating a JSON AST (by \u003ca\nhref\u003d\"https://github.com/sarathfrancis90\"\u003e\u003ccode\u003e@​sarathfrancis90\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed putting parent-less node in \u003ccode\u003enodes\u003c/code\u003e of new node (by\n\u003ca\nhref\u003d\"https://github.com/MahinAnowar\"\u003e\u003ccode\u003e@​MahinAnowar\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed computing \u003ccode\u003eoffset\u003c/code\u003e in \u003ccode\u003epositionBy()\u003c/code\u003e (by\n\u003ca\nhref\u003d\"https://github.com/greymoth-jp\"\u003e\u003ccode\u003e@​greymoth-jp\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003erangeBy()\u003c/code\u003e on \u003ccode\u003eindex: 0\u003c/code\u003e (by \u003ca\nhref\u003d\"https://github.com/sarathfrancis90\"\u003e\u003ccode\u003e@​sarathfrancis90\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.15\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed declaration parsing performance (by \u003ca\nhref\u003d\"https://github.com/homanp\"\u003e\u003ccode\u003e@​homanp\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.14\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed custom syntax regression (by \u003ca\nhref\u003d\"https://github.com/43081j\"\u003e\u003ccode\u003e@​43081j\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003epostcss-scss\u003c/code\u003e commend regression.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/postcss/postcss/blob/main/CHANGELOG.md\"\u003epostcss\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.5.23\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDo not load source map without \u003ccode\u003eopts.from\u003c/code\u003e for security\nreasons.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.22\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed custom property losing semicolon before a comment (by \u003ca\nhref\u003d\"https://github.com/sarathfrancis90\"\u003e\u003ccode\u003e@​sarathfrancis90\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.21\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed childless at-rule losing semicolon before comment (by \u003ca\nhref\u003d\"https://github.com/sarathfrancis90\"\u003e\u003ccode\u003e@​sarathfrancis90\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed docs (by \u003ca\nhref\u003d\"https://github.com/isker\"\u003e\u003ccode\u003e@​isker\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.20\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed missing space if \u003ccode\u003eAtRule#params\u003c/code\u003e is set after (by\n\u003ca\nhref\u003d\"https://github.com/sarathfrancis90\"\u003e\u003ccode\u003e@​sarathfrancis90\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed mixing AST error on warnings (by \u003ca\nhref\u003d\"https://github.com/MahinAnowar\"\u003e\u003ccode\u003e@​MahinAnowar\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed cleaning \u003ccode\u003ebefore\u003c/code\u003e for new nodes inserted to\n\u003ccode\u003eRoot\u003c/code\u003e (by \u003ca\nhref\u003d\"https://github.com/MahinAnowar\"\u003e\u003ccode\u003e@​MahinAnowar\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestricted loading previous source maps file to the\n\u003ccode\u003eopts.from\u003c/code\u003e folder for security reasons (use \u003ccode\u003eunsafeMap:\ntrue\u003c/code\u003e to disable the check).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.17\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eMaximum call stack size exceeded\u003c/code\u003e error.\u003c/li\u003e\n\u003cli\u003eFixed Prototype hijacking for \u003ccode\u003epostcss.fromJSON()\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eInput#origin()\u003c/code\u003e for unmapped end position (by \u003ca\nhref\u003d\"https://github.com/chatman-media\"\u003e\u003ccode\u003e@​chatman-media\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.16\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eInput#origin()\u003c/code\u003e position (by \u003ca\nhref\u003d\"https://github.com/mizdra\"\u003e\u003ccode\u003e@​mizdra\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eraws\u003c/code\u003e after rehydrating a JSON AST (by \u003ca\nhref\u003d\"https://github.com/sarathfrancis90\"\u003e\u003ccode\u003e@​sarathfrancis90\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed putting parent-less node in \u003ccode\u003enodes\u003c/code\u003e of new node (by\n\u003ca\nhref\u003d\"https://github.com/MahinAnowar\"\u003e\u003ccode\u003e@​MahinAnowar\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed computing \u003ccode\u003eoffset\u003c/code\u003e in \u003ccode\u003epositionBy()\u003c/code\u003e (by\n\u003ca\nhref\u003d\"https://github.com/greymoth-jp\"\u003e\u003ccode\u003e@​greymoth-jp\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003erangeBy()\u003c/code\u003e on \u003ccode\u003eindex: 0\u003c/code\u003e (by \u003ca\nhref\u003d\"https://github.com/sarathfrancis90\"\u003e\u003ccode\u003e@​sarathfrancis90\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.15\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed declaration parsing performance (by \u003ca\nhref\u003d\"https://github.com/homanp\"\u003e\u003ccode\u003e@​homanp\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.14\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed custom syntax regression (by \u003ca\nhref\u003d\"https://github.com/43081j\"\u003e\u003ccode\u003e@​43081j\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.13\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/postcss/postcss/commit/eb9e1fe793740bb3280bdf5bf98147f857f011bd\"\u003e\u003ccode\u003eeb9e1fe\u003c/code\u003e\u003c/a\u003e\nRelease 8.5.23 version\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/postcss/postcss/commit/9d19c78ac91108b3f7d7130e55c6fa806c0efb84\"\u003e\u003ccode\u003e9d19c78\u003c/code\u003e\u003c/a\u003e\nUpdate dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/postcss/postcss/commit/7beca139e70f9075c6b19700fcb00dd8033e5da8\"\u003e\u003ccode\u003e7beca13\u003c/code\u003e\u003c/a\u003e\nDoes no load source map file without opts.from\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/postcss/postcss/commit/decea51421682341401575b3740709fda0e12930\"\u003e\u003ccode\u003edecea51\u003c/code\u003e\u003c/a\u003e\nTypo\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/postcss/postcss/commit/c18e30d126395d42a0726aa00e03a8f1088985ae\"\u003e\u003ccode\u003ec18e30d\u003c/code\u003e\u003c/a\u003e\nUpdate EM banner\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/postcss/postcss/commit/98a39ad73d163a90be924d5126c771262110f1fc\"\u003e\u003ccode\u003e98a39ad\u003c/code\u003e\u003c/a\u003e\nUpdate EM banner\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/postcss/postcss/commit/a3e48c492ddec0e4879d513b8b995fee887af352\"\u003e\u003ccode\u003ea3e48c4\u003c/code\u003e\u003c/a\u003e\nRelease 8.5.22 version\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/postcss/postcss/commit/f49d6911795f53b2cfe023bb686bf1144ec30618\"\u003e\u003ccode\u003ef49d691\u003c/code\u003e\u003c/a\u003e\nFix custom property losing its semicolon before a comment (\u003ca\nhref\u003d\"https://redirect.github.com/postcss/postcss/issues/2117\"\u003e#2117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/postcss/postcss/commit/28e0daf8f2fe5ba9e19ea3f8c27c8fe176f9419e\"\u003e\u003ccode\u003e28e0daf\u003c/code\u003e\u003c/a\u003e\nRelease 8.5.21 version\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/postcss/postcss/commit/3d2b4e43e38274f233b5609d09687cadad8215d9\"\u003e\u003ccode\u003e3d2b4e4\u003c/code\u003e\u003c/a\u003e\nUpdate dependencies\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/postcss/postcss/compare/8.5.12...8.5.23\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by \u003ca\nhref\u003d\"https://www.npmjs.com/~GitHub%20Actions\"\u003eGitHub Actions\u003c/a\u003e, a new\nreleaser for postcss since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dpostcss\u0026package-manager\u003dnpm_and_yarn\u0026previous-version\u003d8.5.12\u0026new-version\u003d8.5.23)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts\npage](https://github.com/unicode-org/icu4x/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "357b9a91fd311d2ce37c8c2d950d3d39d8f1ac86",
      "tree": "e830b81b1cdce08f2e7d73beeb2daf0fcdd51dc1",
      "parents": [
        "82e87c0259391a1608297449f09a6b56fbf65119"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jul 28 09:24:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 09:24:35 2026"
      },
      "message": "Bump brace-expansion and js-beautify in /tools/web-demo (#8272)\n\nBumps [brace-expansion](https://github.com/juliangruber/brace-expansion)\nto 5.0.8 and updates ancestor dependency\n[js-beautify](https://github.com/beautifier/js-beautify). These\ndependencies need to be updated together.\n\nUpdates `brace-expansion` from 2.1.2 to 5.0.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/releases\"\u003ebrace-expansion\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.0.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efmt  5a5cc17\u003c/li\u003e\n\u003cli\u003eFix potential ReDoS Vulnerability or Inefficient Regular Expression\n(\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/65\"\u003e#65\u003c/a\u003e)\n0b6a978\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/compare/v4.0.0...v4.0.1\"\u003ehttps://github.com/juliangruber/brace-expansion/compare/v4.0.0...v4.0.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: use string replaces instead of splits (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/64\"\u003e#64\u003c/a\u003e)\n278132b\u003c/li\u003e\n\u003cli\u003efmt  dd72a59\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003etea.yaml\u003c/code\u003e  70e4c1b\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/compare/v3.0.0...v4.0.0\"\u003ehttps://github.com/juliangruber/brace-expansion/compare/v3.0.0...v4.0.0\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eAs a precaution to not risk breaking anything with 278132b, this is a\nnew semver major release\u003c/p\u003e\n\u003ch2\u003ev3.0.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003epkg: publish on tag 3.x  3059c07\u003c/li\u003e\n\u003cli\u003efmt  8229e6f\u003c/li\u003e\n\u003cli\u003eFix potential ReDoS Vulnerability or Inefficient Regular Expression\n(\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/65\"\u003e#65\u003c/a\u003e)\n15f9b3c\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/compare/v3.0.0...v3.0.1\"\u003ehttps://github.com/juliangruber/brace-expansion/compare/v3.0.0...v3.0.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSwitch to ES Modules and balanced-match 3.0.0 (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/62\"\u003e#62\u003c/a\u003e)\nc0360e8\u003c/li\u003e\n\u003cli\u003eadded jsdoc (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/55\"\u003e#55\u003c/a\u003e)\n68c0e37\u003c/li\u003e\n\u003cli\u003enode 16 is EOL  9e781e9\u003c/li\u003e\n\u003cli\u003eadd standard  3494c4d\u003c/li\u003e\n\u003cli\u003euse const and let (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/57\"\u003e#57\u003c/a\u003e)\ndd5a4cb\u003c/li\u003e\n\u003cli\u003edocs  6dad209\u003c/li\u003e\n\u003cli\u003eremove \u003ccode\u003etest\u003c/code\u003e  e3dd8ae\u003c/li\u003e\n\u003cli\u003eci: update node versions  d23ede9\u003c/li\u003e\n\u003cli\u003edocs: add \u003ca\nhref\u003d\"https://github.com/lanodan\"\u003e\u003ccode\u003e@​lanodan\u003c/code\u003e\u003c/a\u003e to\ncontributors 1eb3fa4\u003c/li\u003e\n\u003cli\u003edocs  1e7c9cd\u003c/li\u003e\n\u003cli\u003eswitch from tape to test module (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/60\"\u003e#60\u003c/a\u003e)\n2520537\u003c/li\u003e\n\u003cli\u003eBump minimist from 1.2.5 to 1.2.6 (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/59\"\u003e#59\u003c/a\u003e)\n61a94f1\u003c/li\u003e\n\u003cli\u003eBump path-parse from 1.0.6 to 1.0.7 (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/51\"\u003e#51\u003c/a\u003e)\ndc741cf\u003c/li\u003e\n\u003cli\u003edocs: add back ci badge  8ee5626\u003c/li\u003e\n\u003cli\u003eAdd github actions, remove travis. Closes \u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/52\"\u003e#52\u003c/a\u003e\n(\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/53\"\u003e#53\u003c/a\u003e)\n5c8756a\u003c/li\u003e\n\u003cli\u003eCI: Drop unused sudo: false Travis directive (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/50\"\u003e#50\u003c/a\u003e)\n05978a7\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/compare/v2.0.1...v3.0.0\"\u003ehttps://github.com/juliangruber/brace-expansion/compare/v2.0.1...v3.0.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/96a63c0011c0288846ad41773c73e3fbd0906b59\"\u003e\u003ccode\u003e96a63c0\u003c/code\u003e\u003c/a\u003e\n5.0.8\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/a1bd33999ea75262c4749fff3bbb0d1372bd07b5\"\u003e\u003ccode\u003ea1bd339\u003c/code\u003e\u003c/a\u003e\nMerge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/592a36fd18455c37f81e0848a642d84c63147fa7\"\u003e\u003ccode\u003e592a36f\u003c/code\u003e\u003c/a\u003e\nBump tar from 7.5.16 to 7.5.20 (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/127\"\u003e#127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/bd146909cd6c7bedde61a5d6428ba252860a0159\"\u003e\u003ccode\u003ebd14690\u003c/code\u003e\u003c/a\u003e\nBump brace-expansion from 2.0.2 to 2.1.2 (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/126\"\u003e#126\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/e729ba647887042f16b531fdb3d8ac3d7762ccad\"\u003e\u003ccode\u003ee729ba6\u003c/code\u003e\u003c/a\u003e\nBump ws from 8.19.0 to 8.21.1 (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/124\"\u003e#124\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/5bf809e2c6dbde64dd9ff7acec7335ea7d5f6d9e\"\u003e\u003ccode\u003e5bf809e\u003c/code\u003e\u003c/a\u003e\nRemove Node.js 18 support (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/110\"\u003e#110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/8cb5716bae73e98b63f18aae8e48b6f12522e759\"\u003e\u003ccode\u003e8cb5716\u003c/code\u003e\u003c/a\u003e\nBump markdown-it from 14.1.0 to 14.2.0 (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/113\"\u003e#113\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/43122df5955511b8ec82718fa28903b6dbad0d26\"\u003e\u003ccode\u003e43122df\u003c/code\u003e\u003c/a\u003e\nBump sigstore from 4.1.0 to 4.1.1 (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/119\"\u003e#119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/69bd65a46e9361c992bb43b898c9df0d9720cc5c\"\u003e\u003ccode\u003e69bd65a\u003c/code\u003e\u003c/a\u003e\nBump \u003ccode\u003e@​sigstore/verify\u003c/code\u003e from 3.1.0 to 3.1.1 (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/118\"\u003e#118\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/b3bfbf06746fe92645ffd17d1f44e95f480cfe59\"\u003e\u003ccode\u003eb3bfbf0\u003c/code\u003e\u003c/a\u003e\nBump \u003ccode\u003e@​sigstore/core\u003c/code\u003e from 3.1.0 to 3.2.1 (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/117\"\u003e#117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/compare/v2.1.2...v5.0.8\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eInstall script changes\u003c/summary\u003e\n\u003cp\u003eThis version adds \u003ccode\u003eprepare\u003c/code\u003e script that runs during\ninstallation. Review the package contents before updating.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `js-beautify` from 1.15.4 to 2.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/beautifier/js-beautify/releases\"\u003ejs-beautify\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.3 🌈\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePulling staging/main into main by \u003ca\nhref\u003d\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2359\"\u003ebeautifier/js-beautify#2359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePulling staging/release into release by \u003ca\nhref\u003d\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2360\"\u003ebeautifier/js-beautify#2360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix minor crash for certain oddly formed *.js files by \u003ca\nhref\u003d\"https://github.com/PierceLBrooks\"\u003e\u003ccode\u003e@​PierceLBrooks\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2128\"\u003ebeautifier/js-beautify#2128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump webpack from 5.97.1 to 5.99.9 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2377\"\u003ebeautifier/js-beautify#2377\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump glob from 10.4.5 to 10.5.0 by \u003ca\nhref\u003d\"https://github.com/jakub-pietrzak\"\u003e\u003ccode\u003e@​jakub-pietrzak\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2387\"\u003ebeautifier/js-beautify#2387\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump picomatch from 2.3.1 to 2.3.2 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2416\"\u003ebeautifier/js-beautify#2416\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump webpack from 5.99.9 to 5.105.0 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2410\"\u003ebeautifier/js-beautify#2410\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/cache from 4 to 5 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2409\"\u003ebeautifier/js-beautify#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 6 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2407\"\u003ebeautifier/js-beautify#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump on-headers and serve by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2391\"\u003ebeautifier/js-beautify#2391\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump js-yaml from 4.1.0 to 4.1.1 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2392\"\u003ebeautifier/js-beautify#2392\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lodash from 4.17.21 to 4.17.23 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2393\"\u003ebeautifier/js-beautify#2393\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump requirejs from 2.3.7 to 2.3.8 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2396\"\u003ebeautifier/js-beautify#2396\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump strip-ansi from 7.1.0 to 7.1.2 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2399\"\u003ebeautifier/js-beautify#2399\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump ansi-regex from 6.1.0 to 6.2.2 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2403\"\u003ebeautifier/js-beautify#2403\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-node from 4 to 6 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2405\"\u003ebeautifier/js-beautify#2405\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-python from 5 to 6 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2406\"\u003ebeautifier/js-beautify#2406\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump github/codeql-action from 3 to 4 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2408\"\u003ebeautifier/js-beautify#2408\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump webpack from 5.99.9 to 5.104.1 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2400\"\u003ebeautifier/js-beautify#2400\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump webpack-cli from 6.0.1 to 7.0.2 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2426\"\u003ebeautifier/js-beautify#2426\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump strip-ansi from 7.1.2 to 7.2.0 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2425\"\u003ebeautifier/js-beautify#2425\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump serve from 14.2.5 to 14.2.6 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2422\"\u003ebeautifier/js-beautify#2422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump brace-expansion by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2417\"\u003ebeautifier/js-beautify#2417\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump mocha from 11.1.0 to 11.7.5 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2395\"\u003ebeautifier/js-beautify#2395\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: make dark mode label dynamic by \u003ca\nhref\u003d\"https://github.com/erenmentes\"\u003e\u003ccode\u003e@​erenmentes\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2421\"\u003ebeautifier/js-beautify#2421\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump webpack from 5.105.4 to 5.106.1 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2423\"\u003ebeautifier/js-beautify#2423\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump glob from 10.5.0 to 13.0.6 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2427\"\u003ebeautifier/js-beautify#2427\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRecognize \u003c!-- raw HTML omitted --\u003e and beautify its JSON body by \u003ca\nhref\u003d\"https://github.com/bigohofone\"\u003e\u003ccode\u003e@​bigohofone\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2468\"\u003ebeautifier/js-beautify#2468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd wrap_attributes option to website UI by \u003ca\nhref\u003d\"https://github.com/diara12\"\u003e\u003ccode\u003e@​diara12\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2456\"\u003ebeautifier/js-beautify#2456\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/issues/2430\"\u003e#2430\u003c/a\u003e:\nAuto-focus text input after clicking clear button by \u003ca\nhref\u003d\"https://github.com/GarvSaxena\"\u003e\u003ccode\u003e@​GarvSaxena\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2431\"\u003ebeautifier/js-beautify#2431\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemoved all usage of six and dropped support for Python 2. by \u003ca\nhref\u003d\"https://github.com/Anutrix\"\u003e\u003ccode\u003e@​Anutrix\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2374\"\u003ebeautifier/js-beautify#2374\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eperf(core): resolve O(N^2) memory reallocation bottleneck in\nline-break tokenization by \u003ca\nhref\u003d\"https://github.com/Mounesh-13\"\u003e\u003ccode\u003e@​Mounesh-13\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2434\"\u003ebeautifier/js-beautify#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: clarify version numbering policy for releases by \u003ca\nhref\u003d\"https://github.com/kaushal-Prakash\"\u003e\u003ccode\u003e@​kaushal-Prakash\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2467\"\u003ebeautifier/js-beautify#2467\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump fast-uri from 3.1.0 to 3.1.2 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2458\"\u003ebeautifier/js-beautify#2458\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePulling staging/main into main by \u003ca\nhref\u003d\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2476\"\u003ebeautifier/js-beautify#2476\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePulling staging/release into release by \u003ca\nhref\u003d\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2477\"\u003ebeautifier/js-beautify#2477\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePulling staging/main into main by \u003ca\nhref\u003d\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2478\"\u003ebeautifier/js-beautify#2478\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePulling staging/release into release by \u003ca\nhref\u003d\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2479\"\u003ebeautifier/js-beautify#2479\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump editorconfig from 1.0.7 to 3.0.2 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2424\"\u003ebeautifier/js-beautify#2424\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump nopt from 7.2.1 to 10.0.1 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2472\"\u003ebeautifier/js-beautify#2472\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo: preceeded -\u0026gt; preceded by \u003ca\nhref\u003d\"https://github.com/edg2s\"\u003e\u003ccode\u003e@​edg2s\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2463\"\u003ebeautifier/js-beautify#2463\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 6 to 7 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2482\"\u003ebeautifier/js-beautify#2482\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/PierceLBrooks\"\u003e\u003ccode\u003e@​PierceLBrooks\u003c/code\u003e\u003c/a\u003e\nmade their first contribution in \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2128\"\u003ebeautifier/js-beautify#2128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jakub-pietrzak\"\u003e\u003ccode\u003e@​jakub-pietrzak\u003c/code\u003e\u003c/a\u003e\nmade their first contribution in \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2387\"\u003ebeautifier/js-beautify#2387\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/erenmentes\"\u003e\u003ccode\u003e@​erenmentes\u003c/code\u003e\u003c/a\u003e made\ntheir first contribution in \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2421\"\u003ebeautifier/js-beautify#2421\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/bigohofone\"\u003e\u003ccode\u003e@​bigohofone\u003c/code\u003e\u003c/a\u003e made\ntheir first contribution in \u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2468\"\u003ebeautifier/js-beautify#2468\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/beautifier/js-beautify/blob/main/CHANGELOG.md\"\u003ejs-beautify\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.3\u003c/h2\u003e\n\u003ch2\u003ev2.0.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved all usage of six and dropped support for Python 2. (\u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2374\"\u003e#2374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMove minimum version to Nodejs v22.x (\u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2363\"\u003e#2363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump nopt from 7.2.1 to 8.1.0 (\u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2361\"\u003e#2361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix minor crash for certain oddly formed *.js files (\u003ca\nhref\u003d\"https://redirect.github.com/beautifier/js-beautify/pull/2128\"\u003e#2128\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/beautifier/js-beautify/commit/20ff725dbe9fe28fbf779c3ef38efdd827cea995\"\u003e\u003ccode\u003e20ff725\u003c/code\u003e\u003c/a\u003e\nMerge remote-tracking branch \u0027origin/staging/main\u0027 into\nstaging/release\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/beautifier/js-beautify/commit/0f4a2678f650b486c3e057afb521b15ecb3a89ae\"\u003e\u003ccode\u003e0f4a267\u003c/code\u003e\u003c/a\u003e\nBump version numbers for 2.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/beautifier/js-beautify/commit/49e88a1419260aa7cb75b858f60e49d6bd537002\"\u003e\u003ccode\u003e49e88a1\u003c/code\u003e\u003c/a\u003e\nUpdate Changelog\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/beautifier/js-beautify/commit/c19eddd1731ba220b7fcb0a8aebbf6bc1eadabc1\"\u003e\u003ccode\u003ec19eddd\u003c/code\u003e\u003c/a\u003e\nMerge remote-tracking branch \u0027origin/main\u0027 into staging/main\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/beautifier/js-beautify/commit/6808b3d373ba8d4aaae8734cbee8de7f0dab984a\"\u003e\u003ccode\u003e6808b3d\u003c/code\u003e\u003c/a\u003e\nUpdate milestone-publish.yml with production environment\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/beautifier/js-beautify/commit/b82ec44334ed9ac16d1b835c4c1f43d67500b305\"\u003e\u003ccode\u003eb82ec44\u003c/code\u003e\u003c/a\u003e\nRelease: 2.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/beautifier/js-beautify/commit/733c76b8cb59e2f8002264dc8107b7f0d418095d\"\u003e\u003ccode\u003e733c76b\u003c/code\u003e\u003c/a\u003e\nMerge remote-tracking branch \u0027origin/staging/main\u0027 into\nstaging/release\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/beautifier/js-beautify/commit/50121b726cb65fe932f72ec23f42cbd321b6e670\"\u003e\u003ccode\u003e50121b7\u003c/code\u003e\u003c/a\u003e\nBump version numbers for 2.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/beautifier/js-beautify/commit/4007b0cbe7453c310999731b813dee44898710e4\"\u003e\u003ccode\u003e4007b0c\u003c/code\u003e\u003c/a\u003e\nUpdate Changelog\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/beautifier/js-beautify/commit/a847aa32f4e9b66b93fecb6566d64ef11eec0113\"\u003e\u003ccode\u003ea847aa3\u003c/code\u003e\u003c/a\u003e\nUpdate milestone-publish.yml with npm OIDC\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/beautifier/js-beautify/compare/v1.15.4...v2.0.3\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by \u003ca\nhref\u003d\"https://www.npmjs.com/~GitHub%20Actions\"\u003eGitHub Actions\u003c/a\u003e, a new\nreleaser for js-beautify since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts\npage](https://github.com/unicode-org/icu4x/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "82e87c0259391a1608297449f09a6b56fbf65119",
      "tree": "83ef5cba750943c1f82722ac44afc044d89be664",
      "parents": [
        "193b771c2cb138c134a076f834df1b4891c5f035"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Tue Jul 28 09:24:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 09:24:15 2026"
      },
      "message": "Expose `LocaleFallbacker` from its module, update `rust_link`s (#8267)\n\n## Changelog\n\nN/A\n\n---------\n\nCo-authored-by: Shane F. Carr \u003cshane@unicode.org\u003e"
    },
    {
      "commit": "193b771c2cb138c134a076f834df1b4891c5f035",
      "tree": "b86b54993c966634cfadaeb873bc9ad6c8cd519e",
      "parents": [
        "544a5b940d63474db9408c5a430d99463b867efa"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Mon Jul 27 17:38:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 17:38:53 2026"
      },
      "message": "Use units list from CLDR, and warn if CLDR contains unknown units (#8266)\n\nCurrently datagen crashes when CLDR contains a unit that\u0027s not in\n`UNIT_IDS_TRIE`. This complicates integration, it should instead report\nand error and continue.\n\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "544a5b940d63474db9408c5a430d99463b867efa",
      "tree": "86c78f31e2a826e51521ca8407a6e7f78003224f",
      "parents": [
        "4be5644e0a68b278884384d2c0622965980c51bc"
      ],
      "author": {
        "name": "Younies Mahmoud",
        "email": "younies.mahmoud@gmail.com",
        "time": "Fri Jul 24 14:34:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 14:34:32 2026"
      },
      "message": "feat(currency): Add accounting support for symbol and code formatting (#8187)"
    },
    {
      "commit": "4be5644e0a68b278884384d2c0622965980c51bc",
      "tree": "9d1e972418177f8ffef77bf500b2ac8db551ea73",
      "parents": [
        "e5c55a788fe04e60908e76258e1ea4de76eca4fa"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Thu Jul 23 23:49:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 23:49:48 2026"
      },
      "message": "Remove unused `offset_zero` field (#8250)\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "e5c55a788fe04e60908e76258e1ea4de76eca4fa",
      "tree": "366af55e2fe5f96104c0a90197d9edf029163d4c",
      "parents": [
        "a6f4e715047613114f62e8fe1d698f5c0cdf1936"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Thu Jul 23 15:57:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 15:57:19 2026"
      },
      "message": "Fix deprecation notice (#8262)\n\nFixes #8096 \n\n## Changelog\n\nN/A"
    },
    {
      "commit": "a6f4e715047613114f62e8fe1d698f5c0cdf1936",
      "tree": "758b2c7a622e71a2ebabf04a06a0fc11a05052d2",
      "parents": [
        "251c2af92dc98f41e073de0a154c7ec3428af0eb"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Thu Jul 23 15:33:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 15:33:09 2026"
      },
      "message": "Update segmenters (#8261)\n\nLatest from\nhttps://github.com/eggrobin/unicodetools/commits/RoBertBastIan.\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "251c2af92dc98f41e073de0a154c7ec3428af0eb",
      "tree": "8195f5eab8683bcb45cbce35add70e2b3dfa84e8",
      "parents": [
        "01a5191bf64f086722d3071b7c498ffc1a0bc350"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Thu Jul 23 13:36:44 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 13:36:44 2026"
      },
      "message": "Replace last vestiges of ICU4C properties (#8186)\n\nGenerates the deprecated normalization-inert properties from the\nnormalizer implementation instead of ICU4C toml files.\n\n⚠️ vibe-assisted coding\n\n## Changelog\n\nN/A\n\n---------\n\nCo-authored-by: Robin Leroy \u003cegg.robin.leroy@gmail.com\u003e"
    },
    {
      "commit": "01a5191bf64f086722d3071b7c498ffc1a0bc350",
      "tree": "40b55e4d32b3fd98aea8437f11871bac03d54284",
      "parents": [
        "4cde74dcaf21f373f8e99b164a037cf98da38b84"
      ],
      "author": {
        "name": "Younies Mahmoud",
        "email": "younies.mahmoud@gmail.com",
        "time": "Thu Jul 23 11:37:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 11:37:30 2026"
      },
      "message": "feat(currency): Resolve and apply locale-specific currency precision (#8169)"
    },
    {
      "commit": "4cde74dcaf21f373f8e99b164a037cf98da38b84",
      "tree": "bf44c9641c75dea8935b866a62eaecc575045100",
      "parents": [
        "0306c4ed4e718c85eb1ec47b4b7e5672aeaedf24"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Thu Jul 23 04:48:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 04:48:45 2026"
      },
      "message": "Update MinuteOptional format behavior in h23 patterns (#8237)\n\nFixes #7462\n\n## Changelog\n\nicu_datetime: Preserve zero minutes in MinuteOptional format for 24-hour hour cycles"
    },
    {
      "commit": "0306c4ed4e718c85eb1ec47b4b7e5672aeaedf24",
      "tree": "9fa747e1eee19d69f8e73ef384ed0c9e1aaa3fa6",
      "parents": [
        "934c59bf6212bdcdd640952992050baa45c06b82"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jul 22 10:57:22 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 10:57:22 2026"
      },
      "message": "Bump fast-uri from 3.1.2 to 3.1.4 in /tools/web-demo (#8257)\n\nBumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.2 to\n3.1.4.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/releases\"\u003efast-uri\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.4\u003c/h2\u003e\n\u003ch2\u003e⚠️ Security Release\u003c/h2\u003e\n\u003cp\u003eFix for \u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/security/advisories/GHSA-v2hh-gcrm-f6hx\"\u003ehttps://github.com/fastify/fast-uri/security/advisories/GHSA-v2hh-gcrm-f6hx\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/compare/v3.1.3...v3.1.4\"\u003ehttps://github.com/fastify/fast-uri/compare/v3.1.3...v3.1.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.1.3\u003c/h2\u003e\n\u003ch2\u003e⚠️ Security Release\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes: \u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/security/advisories/GHSA-4c8g-83qw-93j6\"\u003ehttps://github.com/fastify/fast-uri/security/advisories/GHSA-4c8g-83qw-93j6\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/compare/v3.1.2...v3.1.3\"\u003ehttps://github.com/fastify/fast-uri/compare/v3.1.2...v3.1.3\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/commit/6aeece669e4166b2446a89f17c07a3b15dfb7ed4\"\u003e\u003ccode\u003e6aeece6\u003c/code\u003e\u003c/a\u003e\nBumped v3.1.4\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/commit/2d50fbabc80e4d0884fe0f6a98fe118ce6faa353\"\u003e\u003ccode\u003e2d50fba\u003c/code\u003e\u003c/a\u003e\nfix: reject literal backslash in URI authority\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/commit/0549fe35b0d482233f3be2816439f3ec803603fa\"\u003e\u003ccode\u003e0549fe3\u003c/code\u003e\u003c/a\u003e\nBumped v3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/commit/2a6d357a18a68e6d812824379fd3388a1ae50d05\"\u003e\u003ccode\u003e2a6d357\u003c/code\u003e\u003c/a\u003e\nMerge commit from fork\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/compare/v3.1.2...v3.1.4\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dfast-uri\u0026package-manager\u003dnpm_and_yarn\u0026previous-version\u003d3.1.2\u0026new-version\u003d3.1.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts\npage](https://github.com/unicode-org/icu4x/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "934c59bf6212bdcdd640952992050baa45c06b82",
      "tree": "b3acfa3019d63064983c1d18ca963fd3413da9f2",
      "parents": [
        "1a2ce148fb7716344aa533be87a05f1003a7ae81"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jul 22 10:57:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 10:57:09 2026"
      },
      "message": "Bump immutable from 5.1.5 to 5.1.9 in /tools/web-demo (#8256)\n\nBumps [immutable](https://github.com/immutable-js/immutable-js) from\n5.1.5 to 5.1.9.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/immutable-js/immutable-js/releases\"\u003eimmutable\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.1.9\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(List): preserve undefined values when grown past 32 elements by\n\u003ca href\u003d\"https://github.com/spokodev\"\u003e\u003ccode\u003e@​spokodev\u003c/code\u003e\u003c/a\u003e / \u003ca\nhref\u003d\"https://github.com/jdeniau\"\u003e\u003ccode\u003e@​jdeniau\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/immutable-js/immutable-js/pull/2235\"\u003eimmutable-js/immutable-js#2235\u003c/a\u003e\n(originated from \u003ca\nhref\u003d\"https://redirect.github.com/immutable-js/immutable-js/pull/2230\"\u003eimmutable-js/immutable-js#2230\u003c/a\u003e\n)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/immutable-js/immutable-js/compare/v5.1.8...v5.1.9\"\u003ehttps://github.com/immutable-js/immutable-js/compare/v5.1.8...v5.1.9\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.1.8\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(List): guard oversized bounds in setListBounds. Fixes CVE \u003ca\nhref\u003d\"https://github.com/immutable-js/immutable-js/security/advisories/GHSA-v56q-mh7h-f735\"\u003ehttps://github.com/immutable-js/immutable-js/security/advisories/GHSA-v56q-mh7h-f735\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eperf(Map): index large hash-collision buckets for faster lookups.\nFixes CVE \u003ca\nhref\u003d\"https://github.com/immutable-js/immutable-js/security/advisories/GHSA-xvcm-6775-5m9r\"\u003ehttps://github.com/immutable-js/immutable-js/security/advisories/GHSA-xvcm-6775-5m9r\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/immutable-js/immutable-js/compare/v5.1.7...v5.1.8\"\u003ehttps://github.com/immutable-js/immutable-js/compare/v5.1.7...v5.1.8\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.1.7\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(Repeat): lastIndexOf returned size instead of size - 1 by \u003ca\nhref\u003d\"https://github.com/chatman-media\"\u003e\u003ccode\u003e@​chatman-media\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/immutable-js/immutable-js/pull/2227\"\u003eimmutable-js/immutable-js#2227\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003einternal\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBackport tests from 6.x branch by \u003ca\nhref\u003d\"https://github.com/jdeniau\"\u003e\u003ccode\u003e@​jdeniau\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/immutable-js/immutable-js/pull/2199\"\u003eimmutable-js/immutable-js#2199\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(IndexedCollection): \u003ccode\u003ehas(index)\u003c/code\u003e on a lazy\n\u003ccode\u003eSeq\u003c/code\u003e of unknown size now checks index existence instead of\nsearching for a value equal to the index by \u003ca\nhref\u003d\"https://github.com/jdeniau\"\u003e\u003ccode\u003e@​jdeniau\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/immutable-js/immutable-js/pull/2203\"\u003eimmutable-js/immutable-js#2203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBetter type for reduce if not ininitial value is given by \u003ca\nhref\u003d\"https://github.com/jdeniau\"\u003e\u003ccode\u003e@​jdeniau\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/immutable-js/immutable-js/pull/2205\"\u003eimmutable-js/immutable-js#2205\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBackport test from \u003ca\nhref\u003d\"https://redirect.github.com/immutable-js/immutable-js/issues/2193\"\u003e#2193\u003c/a\u003e\nby \u003ca href\u003d\"https://github.com/jdeniau\"\u003e\u003ccode\u003e@​jdeniau\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/immutable-js/immutable-js/pull/2207\"\u003eimmutable-js/immutable-js#2207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebackport tests from 6.x by \u003ca\nhref\u003d\"https://github.com/jdeniau\"\u003e\u003ccode\u003e@​jdeniau\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/immutable-js/immutable-js/pull/2213\"\u003eimmutable-js/immutable-js#2213\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFirefox link to non-French page by \u003ca\nhref\u003d\"https://github.com/jdeniau\"\u003e\u003ccode\u003e@​jdeniau\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/immutable-js/immutable-js/pull/2219\"\u003eimmutable-js/immutable-js#2219\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump esbuild and \u003ccode\u003e@​size-limit/preset-small-lib\u003c/code\u003e by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/immutable-js/immutable-js/pull/2217\"\u003eimmutable-js/immutable-js#2217\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebackport tests from \u003ca\nhref\u003d\"https://redirect.github.com/immutable-js/immutable-js/issues/2210\"\u003e#2210\u003c/a\u003e\nby \u003ca href\u003d\"https://github.com/jdeniau\"\u003e\u003ccode\u003e@​jdeniau\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/immutable-js/immutable-js/pull/2214\"\u003eimmutable-js/immutable-js#2214\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump shell-quote from 1.8.2 to 1.8.4 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/immutable-js/immutable-js/pull/2211\"\u003eimmutable-js/immutable-js#2211\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003e@​tootallnate/once\u003c/code\u003e from 2.0.0 to 2.0.1 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/immutable-js/immutable-js/pull/2190\"\u003eimmutable-js/immutable-js#2190\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump minimatch from 9.0.5 to 9.0.9 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/immutable-js/immutable-js/pull/2189\"\u003eimmutable-js/immutable-js#2189\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003e@​codemirror/theme-one-dark\u003c/code\u003e from 6.1.2 to 6.1.3 by\n\u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/immutable-js/immutable-js/pull/2168\"\u003eimmutable-js/immutable-js#2168\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump form-data from 4.0.5 to 4.0.6 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/immutable-js/immutable-js/pull/2220\"\u003eimmutable-js/immutable-js#2220\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump typescript-eslint from 8.33.0 to 8.61.1 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/immutable-js/immutable-js/pull/2222\"\u003eimmutable-js/immutable-js#2222\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003e@​rollup/plugin-commonjs\u003c/code\u003e from 28.0.2 to 29.0.3 by\n\u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/immutable-js/immutable-js/pull/2224\"\u003eimmutable-js/immutable-js#2224\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/chatman-media\"\u003e\u003ccode\u003e@​chatman-media\u003c/code\u003e\u003c/a\u003e\nmade their first contribution in \u003ca\nhref\u003d\"https://redirect.github.com/immutable-js/immutable-js/pull/2227\"\u003eimmutable-js/immutable-js#2227\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/immutable-js/immutable-js/compare/v5.1.6...v5.1.7\"\u003ehttps://github.com/immutable-js/immutable-js/compare/v5.1.6...v5.1.7\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.1.6\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(reverseFactory): read reversedSequence.size in __iterator\ninstead of this by \u003ca\nhref\u003d\"https://github.com/jdeniau\"\u003e\u003ccode\u003e@​jdeniau\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/immutable-js/immutable-js/pull/2196\"\u003eimmutable-js/immutable-js#2196\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/immutable-js/immutable-js/blob/main/CHANGELOG.md\"\u003eimmutable\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.1.9\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(List): a \u003ccode\u003eList\u003c/code\u003e grown past 32 elements while all its\nvalues are \u003ccode\u003eundefined\u003c/code\u003e no longer reads those values back as\n\u003ccode\u003enull\u003c/code\u003e (affected \u003ccode\u003eget\u003c/code\u003e, iteration,\n\u003ccode\u003etoArray\u003c/code\u003e, \u003ccode\u003eequals\u003c/code\u003e and\n\u003ccode\u003ehashCode\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e5.1.8\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(List): guard oversized bounds in setListBounds. Fixes CVE \u003ca\nhref\u003d\"https://github.com/immutable-js/immutable-js/security/advisories/GHSA-v56q-mh7h-f735\"\u003ehttps://github.com/immutable-js/immutable-js/security/advisories/GHSA-v56q-mh7h-f735\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eperf(Map): index large hash-collision buckets for faster lookups.\nFixes CVE \u003ca\nhref\u003d\"https://github.com/immutable-js/immutable-js/security/advisories/GHSA-xvcm-6775-5m9r\"\u003ehttps://github.com/immutable-js/immutable-js/security/advisories/GHSA-xvcm-6775-5m9r\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.3.9\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(List): guard oversized bounds in setListBounds. Fixes CVE \u003ca\nhref\u003d\"https://github.com/immutable-js/immutable-js/security/advisories/GHSA-v56q-mh7h-f735\"\u003ehttps://github.com/immutable-js/immutable-js/security/advisories/GHSA-v56q-mh7h-f735\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eperf(Map): index large hash-collision buckets for faster lookups.\nFixes CVE \u003ca\nhref\u003d\"https://github.com/immutable-js/immutable-js/security/advisories/GHSA-xvcm-6775-5m9r\"\u003ehttps://github.com/immutable-js/immutable-js/security/advisories/GHSA-xvcm-6775-5m9r\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e5.1.7\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(Repeat): lastIndexOf returned size instead of size - 1 by \u003ca\nhref\u003d\"https://github.com/chatman-media\"\u003e\u003ccode\u003e@​chatman-media\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/immutable-js/immutable-js/pull/2227\"\u003eimmutable-js/immutable-js#2227\u003c/a\u003e.\nFixes CVE \u003ca\nhref\u003d\"https://github.com/immutable-js/immutable-js/security/advisories/GHSA-wf6x-7x77-mvgw\"\u003eCVE-2026-29063\n\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(IndexedCollection): \u003ccode\u003ehas(index)\u003c/code\u003e on a lazy\n\u003ccode\u003eSeq\u003c/code\u003e of unknown size now checks index existence instead of\nsearching for a value equal to the index \u003ca\nhref\u003d\"https://redirect.github.com/immutable-js/immutable-js/pull/2203\"\u003e#2203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[TypeScript]: \u003ccode\u003ereduce\u003c/code\u003e/\u003ccode\u003ereduceRight\u003c/code\u003e without\nan initial value now infer the result type from the collection\u0027s values\nwhen the reducer returns a value (e.g. \u003ccode\u003elist.reduce((a, b) \u003d\u0026gt; a\n+ b)\u003c/code\u003e infers \u003ccode\u003enumber\u003c/code\u003e), matching\n\u003ccode\u003eArray#reduce\u003c/code\u003e. Previously an explicit type argument was\nrequired. \u003ca\nhref\u003d\"https://redirect.github.com/immutable-js/immutable-js/pull/2205\"\u003e#2205\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e5.1.6\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(reverseFactory): read \u003ccode\u003ereversedSequence.size\u003c/code\u003e in\n\u003ccode\u003e__iterator\u003c/code\u003e instead of this \u003ca\nhref\u003d\"https://redirect.github.com/immutable-js/immutable-js/pull/2196\"\u003e#2196\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/immutable-js/immutable-js/commit/329f7a680efa262c310b938a343295880eefe4fc\"\u003e\u003ccode\u003e329f7a6\u003c/code\u003e\u003c/a\u003e\n5.1.9\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/immutable-js/immutable-js/commit/21fabd92bc6cd6771918fc966004034fc10a06e0\"\u003e\u003ccode\u003e21fabd9\u003c/code\u003e\u003c/a\u003e\nchangelog\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/immutable-js/immutable-js/commit/009164facb3c69870c6ad4c6472b1baeb02fcdf7\"\u003e\u003ccode\u003e009164f\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/immutable-js/immutable-js/issues/2235\"\u003e#2235\u003c/a\u003e\nfrom immutable-js/fix/avoid-null-when-setsize33\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/immutable-js/immutable-js/commit/5b65bfbd583472eaa9686137a61db2a29d63cd36\"\u003e\u003ccode\u003e5b65bfb\u003c/code\u003e\u003c/a\u003e\nfix(List): preserve undefined values when grown past 32 elements\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/immutable-js/immutable-js/commit/50bf39e94105f83f1132cce02b9ee6c45cc7d9ca\"\u003e\u003ccode\u003e50bf39e\u003c/code\u003e\u003c/a\u003e\nUpdate CHANGELOG.md for versions 5.1.8 and 4.3.9\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/immutable-js/immutable-js/commit/6496539bd1e9dfa75ce11b053e7d70d79e9ac6f7\"\u003e\u003ccode\u003e6496539\u003c/code\u003e\u003c/a\u003e\n5.1.8\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/immutable-js/immutable-js/commit/808a83a071c9e22b8199ac256dc7e6e764198aac\"\u003e\u003ccode\u003e808a83a\u003c/code\u003e\u003c/a\u003e\nMerge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/immutable-js/immutable-js/commit/e51d49fc612ded5ec4dfb94ff294d22074269b0f\"\u003e\u003ccode\u003ee51d49f\u003c/code\u003e\u003c/a\u003e\nperf(Map): index large hash-collision buckets for faster lookups\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/immutable-js/immutable-js/commit/25c58b094f112dc32e9b0bca79c84f448d0d2a38\"\u003e\u003ccode\u003e25c58b0\u003c/code\u003e\u003c/a\u003e\nfix typescript in tests\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/immutable-js/immutable-js/commit/a1a1ee412dcaa380ab325196283d06594ffe4b84\"\u003e\u003ccode\u003ea1a1ee4\u003c/code\u003e\u003c/a\u003e\nMerge commit from fork\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/immutable-js/immutable-js/compare/v5.1.5...v5.1.9\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dimmutable\u0026package-manager\u003dnpm_and_yarn\u0026previous-version\u003d5.1.5\u0026new-version\u003d5.1.9)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts\npage](https://github.com/unicode-org/icu4x/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "1a2ce148fb7716344aa533be87a05f1003a7ae81",
      "tree": "66489db08b6a2ff9162da3418ecf02aa3d863d3f",
      "parents": [
        "252f56a707412936a03a8dce522ce42e2a7273e4"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jul 22 10:56:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 10:56:57 2026"
      },
      "message": "Bump brace-expansion from 2.0.3 to 2.1.2 in /tools/web-demo (#8255)\n\nBumps [brace-expansion](https://github.com/juliangruber/brace-expansion)\nfrom 2.0.3 to 2.1.2.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/releases\"\u003ebrace-expansion\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.1.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBackport v5.0.6 change to v2 (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/109\"\u003e#109\u003c/a\u003e)\nc3a817c\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/compare/v2.1.0...v2.1.1\"\u003ehttps://github.com/juliangruber/brace-expansion/compare/v2.1.0...v2.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/9e67a3b151e418679ac4800f31f874ec6d220b4a\"\u003e\u003ccode\u003e9e67a3b\u003c/code\u003e\u003c/a\u003e\n2.1.2\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/835d6be91201122d9adffb0c0c8c094189ace265\"\u003e\u003ccode\u003e835d6be\u003c/code\u003e\u003c/a\u003e\nfix: v2 backport for CVE-2026-13149 (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/123\"\u003e#123\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/64b71d31d7c43b956ce64fccc1dda5a3729be728\"\u003e\u003ccode\u003e64b71d3\u003c/code\u003e\u003c/a\u003e\n2.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/c3a817c8e5421d19a37c9babcf3f216b6bf2e6b4\"\u003e\u003ccode\u003ec3a817c\u003c/code\u003e\u003c/a\u003e\nBackport v5.0.6 change to v2 (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/109\"\u003e#109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/1ee4a9069c69a51bd502aab289c0c6629c8920ca\"\u003e\u003ccode\u003e1ee4a90\u003c/code\u003e\u003c/a\u003e\n2.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/b0302ac153ecfaad66752aac79bf30d2895db8f1\"\u003e\u003ccode\u003eb0302ac\u003c/code\u003e\u003c/a\u003e\nAdd opt-in { max } mitigation to v2 legacy line (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/100\"\u003e#100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/compare/v2.0.3...v2.1.2\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dbrace-expansion\u0026package-manager\u003dnpm_and_yarn\u0026previous-version\u003d2.0.3\u0026new-version\u003d2.1.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts\npage](https://github.com/unicode-org/icu4x/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "252f56a707412936a03a8dce522ce42e2a7273e4",
      "tree": "99eb74b98616c19f6ecd198a6c245819d6339077",
      "parents": [
        "94cf319bfb00692855ceefdf67f095acdb3a43f8"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Wed Jul 22 08:43:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 08:43:51 2026"
      },
      "message": "Remove arrayvec and arraystring dependencies (#8252)\n\nThere\u0027s no point using them over `Vec` and `String` in those two tests\nand pulling in dependencies for that.\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "94cf319bfb00692855ceefdf67f095acdb3a43f8",
      "tree": "5ee97c2a3e6e515557e5eeb13fc2baceb15b0071",
      "parents": [
        "4a94f78bcb03fd02726d611238356d8cf0cf5b2d"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Wed Jul 22 08:40:49 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 08:40:49 2026"
      },
      "message": "Automatically download more test data (#8251)\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "4a94f78bcb03fd02726d611238356d8cf0cf5b2d",
      "tree": "76b1ad0ac59a5027518742aab0ae890711ee4efc",
      "parents": [
        "36d53099a436c9c5ca77b9b9d046a63f2823f572"
      ],
      "author": {
        "name": "Younies Mahmoud",
        "email": "younies.mahmoud@gmail.com",
        "time": "Tue Jul 21 15:16:54 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 15:16:54 2026"
      },
      "message": "refactor(currency): Take CurrencyCode by value and rename Iso variant to IsoSymbol (#8246)\n\nAddress review feedback left on #8229 from @robertbastian:\n- Change all `try_new_*` constructor signatures in `CurrencyFormatter`\nto take `CurrencyCode` by value instead of by reference (`CurrencyCode`\nis a small `Copy` struct).\n- Rename `CurrencyFormatterData::Iso` enum variant to `IsoSymbol` for\nclarity and symmetry with `IsoName`.\n- Add unit test coverage (`test_compact_code`) for both short and long\ncompact ISO currency code formatting."
    },
    {
      "commit": "36d53099a436c9c5ca77b9b9d046a63f2823f572",
      "tree": "e19d2962aba179b9263e9522f44c010565299a13",
      "parents": [
        "221f89dec28e4213b7342847e3d70075e6c61f48"
      ],
      "author": {
        "name": "Younies Mahmoud",
        "email": "younies.mahmoud@gmail.com",
        "time": "Tue Jul 21 14:48:38 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 14:48:38 2026"
      },
      "message": "feat(currency): Introduce try_new_code constructors and IsoName fallback (#8229)"
    },
    {
      "commit": "221f89dec28e4213b7342847e3d70075e6c61f48",
      "tree": "e7465464d502a1634a627a5264852dd64dc56fbf",
      "parents": [
        "f1e2ff1d6584460de91dfbcdd0aaec4c43d4d8aa"
      ],
      "author": {
        "name": "Younies Mahmoud",
        "email": "younies.mahmoud@gmail.com",
        "time": "Tue Jul 21 10:03:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 10:03:20 2026"
      },
      "message": "feat(currency): Clarify currency and compact constructor naming with 9-function matrix (#8211)"
    },
    {
      "commit": "f1e2ff1d6584460de91dfbcdd0aaec4c43d4d8aa",
      "tree": "ea5ebd8634f6cd4b8ab7c5539ed847a5cc7895fb",
      "parents": [
        "4641d79d3a4f78f16971455eb3e4d236097ff60a"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Tue Jul 21 00:22:11 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 00:22:11 2026"
      },
      "message": "Add ZeroTrie convenience getter fn, and helper trait WriteableExt in icu_provider_source (#8242)\n\n## Changelog\n\nzerotrie: new functions `ZeroAsciiIgnoreCaseTrie::get_with_write_fn`,\n`ZeroTrieZimpleAscii::get_with_write_fn`"
    },
    {
      "commit": "4641d79d3a4f78f16971455eb3e4d236097ff60a",
      "tree": "aab7046406aa06439dd7bdbd4475c044512ed86f",
      "parents": [
        "7c21240cc0633fbbfc8c88431f3a8eb8e8c601ec"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Fri Jul 17 11:49:00 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 11:49:00 2026"
      },
      "message": "Clean up experimental data (#8236)\n\nBased on https://github.com/unicode-org/icu4x/pull/8235\n\nRemove stale data, use `MaybeAsVarULE` to reduce baked size, flatten\nstructs to improve JSON size.\n\n## Changelog\n\n`icu_experimental`\n* Remove `UnitsFormatter`, use `CategorizedUnitsFormatter`"
    },
    {
      "commit": "7c21240cc0633fbbfc8c88431f3a8eb8e8c601ec",
      "tree": "0003ab7370a43d6a041eef3cc563353291e22952",
      "parents": [
        "e14d38612a18c67a6b40f242f68ef7df37c7a80b"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Fri Jul 17 11:47:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 11:47:45 2026"
      },
      "message": "Add Writeable Replace adapter (#8238)\n\nThis is a zero-allocation string replacement adapter for Writeables.\n\n## Changelog\n\nwriteable: new struct `writeable::adapters::Replace`\n\n---------\n\nCo-authored-by: Gemini \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "e14d38612a18c67a6b40f242f68ef7df37c7a80b",
      "tree": "4f5029ad81b06ea28a91cf268020714b9baf1397",
      "parents": [
        "7b373b18398f82106cdd77ebf8910fa5fb8bd9fb"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Fri Jul 17 11:02:46 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 11:02:46 2026"
      },
      "message": "Remove pattern selection from currency symbols data (#8235)"
    },
    {
      "commit": "7b373b18398f82106cdd77ebf8910fa5fb8bd9fb",
      "tree": "32a9c42f67bde1261c8b5592d4fed39eb8fc135c",
      "parents": [
        "f022cdf11d3e4af8d5ae6a5c6050f2965c841386"
      ],
      "author": {
        "name": "Younies Mahmoud",
        "email": "younies.mahmoud@gmail.com",
        "time": "Thu Jul 16 13:29:00 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 13:29:00 2026"
      },
      "message": "refactor(currency): Split currency symbols from essential patterns (#8228)\n\nSeparate symbol mappings (placeholders, pattern configurations, and\ndefault pattern selection) into a dedicated CurrencySymbolsV1 marker and\nstruct (`symbols.rs`), leaving CurrencyEssentialsV1 purely for core\nlayout rules (`patterns` and `indices`).\n\n## Changelog\n\n- Create `CurrencySymbolsV1` with `pattern_config_map`, `placeholders`,\nand `default_pattern_config` in\n`components/experimental/src/dimension/provider/currency/symbols.rs`.\n- Extract `CurrencySymbolsV1` in\n`provider/source/src/currency/symbols.rs` from CLDR (`symbol` and\n`symbol-narrow`).\n- Update `CurrencyEssentialsV1` in `essentials.rs` to only retain\n`patterns` and `indices`.\n- Update `CurrencyFormatterData::Essential` and formatters in\n`formatter.rs` \u0026 `compact_formatter.rs` to require and use both\n`CurrencyEssentialsV1` and `CurrencySymbolsV1`.\n- Update provider registry (`provider/registry/src/lib.rs`) and\nregenerate test and baked data for `CurrencySymbolsV1` and\n`CurrencyEssentialsV1`.\n\nTAG\u003dagy\nCONV\u003dd044eeab-1ec7-4391-9cf0-a6d3d9e6edf0\n\n---------\n\nCo-authored-by: Robert Bastian \u003c4706271+robertbastian@users.noreply.github.com\u003e"
    },
    {
      "commit": "f022cdf11d3e4af8d5ae6a5c6050f2965c841386",
      "tree": "c7b9477866f20dfd0982b1bdef8178e4fe1289a1",
      "parents": [
        "1768194beb937663e42c149660a935ad5c884151"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Wed Jul 15 18:14:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 18:14:16 2026"
      },
      "message": "Add UnvalidatedTinyAsciiStr::default() (#8225)\n\n## Changelog\n\ntinystr: add `UnvalidatedTinyAsciiStr::DEFAULT`\n\n---------\n\nCo-authored-by: Robert Bastian \u003c4706271+robertbastian@users.noreply.github.com\u003e"
    },
    {
      "commit": "1768194beb937663e42c149660a935ad5c884151",
      "tree": "fe097b5cb547ec13acc19af257172b7e20e0b0fc",
      "parents": [
        "ae1795e4c0c546cbd06390e25f0d8cea0e84394d"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Wed Jul 15 17:09:38 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 17:09:38 2026"
      },
      "message": "Install `cargo-rdme` from GitHub (#8232)\n\nBecause it doesn\u0027t build.\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "ae1795e4c0c546cbd06390e25f0d8cea0e84394d",
      "tree": "701e543b348ab0092fc6efbf45dd4bf5b53ba669",
      "parents": [
        "98270524781fdcd9465d2c58a4883c92a7d5233f"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Tue Jul 14 20:58:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 20:58:42 2026"
      },
      "message": "Model segmenter tailoring data like CLDR will (#8217)\n\n#7962 \n\nBest reviewed commit-by-commit.\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "98270524781fdcd9465d2c58a4883c92a7d5233f",
      "tree": "751e43a98b8153b6727d99dd53b81ff718573f94",
      "parents": [
        "5eb104889b151c0a4cf8fddb1c7aeaaed0162314"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Mon Jul 13 19:51:11 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 13 19:51:11 2026"
      },
      "message": "Implement missing length constructors in single displaynames (#8219)\n\n## Changelog\n\nicu_experimental::displaynames:\n- New methods:\n`LanguageIdentifierDisplayNameOwned::try_new_short[_unstable|_with_buffer_provider]`,\n`LanguageIdentifierDisplayNameOwned::try_new_long[_unstable|_with_buffer_provider]`\n`LanguageIdentifierDisplayNameOwned::try_new_short_menu[_unstable|_with_buffer_provider]`\n\n---------\n\nCo-authored-by: Gemini \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "5eb104889b151c0a4cf8fddb1c7aeaaed0162314",
      "tree": "f4c98d466f8bb2a303d0833b87243000c90ea5cf",
      "parents": [
        "f47f41200d2ffe5df9bf984729c661677bd2524f"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Mon Jul 13 07:30:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 13 07:30:40 2026"
      },
      "message": "Add Dart example of hours with column alignment (#8218)\n\nCC @mosuem \n\n## Changelog\n\nN/A"
    },
    {
      "commit": "f47f41200d2ffe5df9bf984729c661677bd2524f",
      "tree": "7faefc76b879634b4c7db4d70edb522878dd61f6",
      "parents": [
        "6955c654ecdaf6892509cfa593634867a7bf6885"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Fri Jul 10 22:34:14 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 22:34:14 2026"
      },
      "message": "Implement language display menu names (#8216)\n\n## Changelog\n\nicu_experimental::displaynames:\n\n- New constructors\n`LanguageIdentifierDisplayNameOwned::try_new_menu[_unstable|_with_buffer_provider]`"
    },
    {
      "commit": "6955c654ecdaf6892509cfa593634867a7bf6885",
      "tree": "fc843b67678c5166eea917077db40c3303c5b73b",
      "parents": [
        "6c96f3361c0688aa1d54bfb95cde73ce528d1875"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Fri Jul 10 10:41:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 10:41:09 2026"
      },
      "message": "Adopt RSCD naming (#8210)\n\n## Changelog\n\n- `icu_provider_source`\n- New items: `SourceDataProvider::with_unicode_rscd_for_tag()`,\n`SourceDataProvider::with_unicode_rscd()`,\n`SourceDataProvider::TESTED_UNICODE_TAG`,\n`SourceDataProvider::is_missing_rscd_error()`,\n- Deprecated `SourceDataProvider::with_ucd_for_tag()`,\n`SourceDataProvider::with_unihan_for_tag()`,\n`SourceDataProvider::with_ucd()`, `SourceDataProvider::with_unihan()`,\n`SourceDataProvider::TESTED_UCD_TAG`, ,\n`SourceDataProvider::is_missing_ucd_error()`\n\n---------\n\nCo-authored-by: Robin Leroy \u003cegg.robin.leroy@gmail.com\u003e"
    },
    {
      "commit": "6c96f3361c0688aa1d54bfb95cde73ce528d1875",
      "tree": "c373ea0b6f81eb54cb976e5e2dedcb2e0c7f858a",
      "parents": [
        "f4ea4eb5e88f0b7af1ea3c52fa3de5b4daf2da57"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Fri Jul 10 10:18:46 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 10:18:46 2026"
      },
      "message": "Don\u0027t use Ord with enumerated properties (#8212)\n\nSee\nhttps://github.com/unicode-org/icu4x/issues/6067#issuecomment-4925539102\n\nDategen should use public API, and I don\u0027t think `Ord` should be public\nAPI.\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "f4ea4eb5e88f0b7af1ea3c52fa3de5b4daf2da57",
      "tree": "6bb93811225c1164954eb62626e7f844cec37502",
      "parents": [
        "5ba7ce7c89b3a251dc74958308865d057802b31c"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Fri Jul 10 10:18:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 10:18:13 2026"
      },
      "message": "Remove preferences serde impls (#8215)\n\nFixes #8171 \n\n## Changelog\n\nN/A\n\n---------\n\nCo-authored-by: Shane F. Carr \u003cshane@unicode.org\u003e\nCo-authored-by: Gemini \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "5ba7ce7c89b3a251dc74958308865d057802b31c",
      "tree": "3c392152851bb72468ae3224791cb5760b99d140",
      "parents": [
        "124150947abc48f0ac92da3b9b4847689fb4dd66"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Fri Jul 10 10:15:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 10:15:55 2026"
      },
      "message": "Refactor language display names with QualifiersOwned (#8207)\n\nSplit from #8205\n\nI pulled out the first commit to make it easier to review. However, if\nyou also approve #8205, I will just merge that all at once.\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "124150947abc48f0ac92da3b9b4847689fb4dd66",
      "tree": "694a55cb8c057a6cea21d7cab515d097b0f0c270",
      "parents": [
        "338eb0f6f5448176dcfaad34c33facf776a214dd"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Thu Jul 09 12:07:44 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 09 12:07:44 2026"
      },
      "message": "Some segmenter cleanups (#8209)\n\nSome of the changes from #8041 \n\n## Changelog\n\nN/A"
    },
    {
      "commit": "338eb0f6f5448176dcfaad34c33facf776a214dd",
      "tree": "4095802569b6073fa85696572fad9fdc1ff78fa0",
      "parents": [
        "0e91ea69758efbee79605cf80ce811af86f7adae"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Thu Jul 09 09:46:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 09 09:46:03 2026"
      },
      "message": "fix(currency): evaluate plural rules against formatted amount (#8198)\n\nCurrently the currency formatter uses the input `Decimal` to determine\nthe plural category. This is wrong, it needs to use the formatted\n`FormattedUnsignedDecimal`/`FormattedUnsignedCompactDecimal`. This is\nbecause these types might have a different plural category than the\n`Decimal` they\u0027re representing. For example in `fr`, `999_999` has\ncategory `other` (\"dollars US\"), but \"1.0 million\" has category `many`\n(\"de dollars US\").\n\n## Changelog\n\n`icu_plurals`:\n* add `PluralElements::get`"
    },
    {
      "commit": "0e91ea69758efbee79605cf80ce811af86f7adae",
      "tree": "3bc92d5eb7682caef436b47af21ceb73ef94e04e",
      "parents": [
        "9282b94d05c571da04e132fa5b34b4a2504f9ec4"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Thu Jul 09 09:39:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 09 09:39:19 2026"
      },
      "message": "2026c (#8200)\n\n## Changelog\n\nGeneral:\n* Updated data to TZDB 2026c"
    },
    {
      "commit": "9282b94d05c571da04e132fa5b34b4a2504f9ec4",
      "tree": "c9a341f2fdb4bb77bf38ec134f9e4b22363ba664",
      "parents": [
        "75a7cac13ca896c0d6b24408294ef35fe6b3601a"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Wed Jul 08 20:05:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 08 20:05:57 2026"
      },
      "message": "Add borrowing and length hints for LanguageIdentifierDisplayName (#8193)\n\nFixes #8181\n\nDepends on #8192\n\n## Changelog\n\nicu_pattern: manually implement `writeable_length_hint`"
    },
    {
      "commit": "75a7cac13ca896c0d6b24408294ef35fe6b3601a",
      "tree": "c599da91cc5e7c2fdf2f23d017743e0320815aad",
      "parents": [
        "f13f7de7a0f9c5ceb295082e40121da6b39f2120"
      ],
      "author": {
        "name": "Moritz",
        "email": "mosum@google.com",
        "time": "Wed Jul 08 18:18:18 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 08 18:18:18 2026"
      },
      "message": "Add `libm` for android (#8199)\n\nWe should probably have some CI testing for Android. Not sure how to set\nit up though, or if it\u0027s even possible.\n\n## Changelog\n\nAdd `libm` as a library input in the Dart linking script for Android."
    },
    {
      "commit": "f13f7de7a0f9c5ceb295082e40121da6b39f2120",
      "tree": "29d87b5e2e87e8d495576f9b97d5102a3f924666",
      "parents": [
        "f692cb24000f18b5f4f7bfefab6a559dff7af455"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Wed Jul 08 17:12:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 08 17:12:51 2026"
      },
      "message": "Add try_writeable_borrow and some impls for it (#8192)\n\nFixes #7004\n\nI have a call site for this now. This is the correct signature.\n\n## Changelog\n\nwriteable: add `TryWriteable::try_writeable_borrow`"
    },
    {
      "commit": "f692cb24000f18b5f4f7bfefab6a559dff7af455",
      "tree": "e65ef255d01918160861c237a4a5a091d82bcac4",
      "parents": [
        "ef148546b44a7719a9cd3923bfbdcb453f9c0f5d"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Wed Jul 08 17:12:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 08 17:12:37 2026"
      },
      "message": "displaynames: Store variant fallback name on the stack (#8191)\n\nFixes #8190\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "ef148546b44a7719a9cd3923bfbdcb453f9c0f5d",
      "tree": "771c4304a26b688cc962dbbc68de21d76a2fb7b7",
      "parents": [
        "7f5f30f975f89d7d0bc482b6c3ef5314476634f3"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Wed Jul 08 13:54:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 08 13:54:30 2026"
      },
      "message": "feat(currency): Merge all currency formatters into unified CurrencyFormatter\u003cV\u003e using AbstractFormatter (#8189)\n\n## Summary\n\nThis PR merges all remaining currency formatters into a single unified\n`CurrencyFormatter\u003cV\u003e` type by leveraging `AbstractFormatter`, proposing\nan alternative architecture to #8182.\nInstead of maintaining separate representation structs or duplicating\nformatting data (such as `decimal_formatter`, `compact_data`, and\n`plural_rules`), `CurrencyFormatter\u003cV\u003e` directly wraps an underlying\nvalue formatter (`DecimalFormatter` for standard currency formatting or\n`CompactDecimalFormatter` for compact currency formatting). This unifies\nthe currency formatting architecture, simplifies pattern interpolation,\nand significantly reduces boilerplate across the module.\n\n## Changelog\n- **Architecture Unification**: Refactored `CurrencyFormatter\u003cV\u003e` to\nconstrain `V: AbstractFormatter`, allowing it to wrap either\n`DecimalFormatter` or `CompactDecimalFormatter` directly in a single\n`value_formatter: V` field.\n- **Constructor Streamlining**:\n- Standard constructors (`try_new_short`, `try_new_narrow`,\n`try_new_long`) initialize `CurrencyFormatter` with `DecimalFormatter`.\n- Compact constructors (`try_new_compact_short`,\n`try_new_compact_narrow`, `try_new_compact_long`) initialize\n`CurrencyFormatter` with `CompactDecimalFormatter`.\n- **`icu_decimal` Delegation**: Exposed `pub(crate)` helper methods\n(`format_unsigned`, `format_sign`) and exported\n`FormattedUnsignedCompactDecimal` / `AbstractFormatter` from\n`icu_decimal` so currency formatters can delegate numeric formatting\ndirectly to the underlying value formatter.\n- **Boilerplate \u0026 Code Reduction**: Removed redundant data fields and\nsimplified formatting logic across `compact_formatter.rs` and\n`formatter.rs`, resulting in a net code reduction of over 200 lines\n(+665 additions, -876 deletions).\n\n---------\n\nCo-authored-by: Younies Mahmoud \u003cyounies.mahmoud@gmail.com\u003e"
    },
    {
      "commit": "7f5f30f975f89d7d0bc482b6c3ef5314476634f3",
      "tree": "ee3403942d5488c5808ffb551bb5a683ec0df7df",
      "parents": [
        "a796abb62177afef2acb7922509049b9febfbe32"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Wed Jul 08 07:21:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 08 07:21:45 2026"
      },
      "message": "Scaffolding traits for range formatting (#8173)\n\nPart of #5448\n\nSplit out of #8149\n\nThis hooks up the scaffolding and pattern selection data loading\nframework for range formatting.\n\nYou can see #8149 to understand how this is used: I\u0027m trying to keep\nthis work in smaller PRs as much as possible and at this point more of\nit is \"land APIs that will be useful later\" which is harder to\nholistically review but overall the code here is still pretty\nstraightforward so it should be fine.\n\n## Changelog\n\nicu_datetime: Add scaffolding for range formatting\n  - New associated type: `TypedDateDataMarkers::RangeSkel`"
    },
    {
      "commit": "a796abb62177afef2acb7922509049b9febfbe32",
      "tree": "3f726a547129c7fd40dd315d9b1adae5edc30b42",
      "parents": [
        "c7314122840e111ee846c131033e105fa2deff5f"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Tue Jul 07 22:06:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 07 22:06:50 2026"
      },
      "message": "Implement BCP-47 fallback for LanguageIdentifierDisplayName (#8132)\n\nCo-authored-by: Gemini \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e\nCo-authored-by: Robert Bastian \u003c4706271+robertbastian@users.noreply.github.com\u003e"
    },
    {
      "commit": "c7314122840e111ee846c131033e105fa2deff5f",
      "tree": "5691cf00ff4d87bfe54b5f68606389f786cee78d",
      "parents": [
        "799fde4ed4e97014e0f820aa4d0e5004fc095607"
      ],
      "author": {
        "name": "Younies Mahmoud",
        "email": "younies.mahmoud@gmail.com",
        "time": "Tue Jul 07 19:29:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 07 19:29:19 2026"
      },
      "message": "feat/currency: Migrate LongCurrencyFormatter and add try_new_long (#8150)\n\nThis PR migrates the `LongCurrencyFormatter` functionality into the main\n`CurrencyFormatter`, building on top of the refactoring in #8145.\n\n## Changelog\n- Migrated `LongCurrencyFormatter` to `CurrencyFormatter`.\n- Added `try_new_long` and `try_new_long_unstable` constructors.\n- Added tests for long currency formatting, including numbering system\noverrides.\n- Removed redundant `long_formatter.rs` and `long_format.rs` files."
    },
    {
      "commit": "799fde4ed4e97014e0f820aa4d0e5004fc095607",
      "tree": "32c70e26dc2b68c488335952c07233a28e32ac03",
      "parents": [
        "37a1d8a4868ba385380074d2a61b9edb65530f50"
      ],
      "author": {
        "name": "Moritz",
        "email": "mosum@google.com",
        "time": "Tue Jul 07 13:32:39 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 07 13:32:39 2026"
      },
      "message": "Skip building if code assets are disabled (#8183)\n\nAs Flutter will re-run the build hooks multiple times, once with data,\nonce with code assets, etc.\n\nWe only need to act on code assets.\n\n## Changelog\n\nFFI: \n  * Dart: in the build hook, skip building if code assets are disabled."
    },
    {
      "commit": "37a1d8a4868ba385380074d2a61b9edb65530f50",
      "tree": "5547bb05514f23dd688f354ddc46c76dc8df5b71",
      "parents": [
        "3f92e680195879b002cdff237f0152969ecc7ca7"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Tue Jul 07 06:25:39 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 07 06:25:39 2026"
      },
      "message": "Use self.as_str() instead of \u0026self.0 in impl Writeable for subtags (#8166)\n\nAddress feedback from PR #8139:\n- Delegate `Writeable` to `as_str()` instead of `\u0026self.0` (which is\n`TinyAsciiStr`) for locale subtags in `helpers.rs`.\n\nThe macro syntax changes suggested in #8139 are being discussed in\n#8165.\n\n## Changelog\n\nN/A\n\nCo-authored-by: Gemini \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "3f92e680195879b002cdff237f0152969ecc7ca7",
      "tree": "90a8e109252ec18ef7706ce1d43dcc5cbe5a56ed",
      "parents": [
        "7008df655ebfcafd8a2bd1b4b5292b1ebe2c0348"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Mon Jul 06 15:10:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 06 15:10:16 2026"
      },
      "message": "Make neo an alternative constructor on existing segmenter types (#8174)\n\nThis will be needed for releasing neo. We need to be able to keep\nhandling the `V1` data structs, which means we\u0027ll have to keep carrying\nthe code for them. I\u0027m handling this by making each `FooSegmenter`,\n`FooSegmenterBorrowed`, `FooBreakIterator` have an internal enum over\nthe data struct. Currently the neo variants are `#[cfg(feature \u003d\n\"unstable\")]`, when we stabilise neo, we will make the legacy variant be\n`#[cfg(feature \u003d \"serde\")]`, as it will only be reachable in the serde\ncodepath (we\u0027ll have to change the buffer provider constructors to check\nboth data structs).\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "7008df655ebfcafd8a2bd1b4b5292b1ebe2c0348",
      "tree": "b811a699814e231cc722625a9259e40ee5331a67",
      "parents": [
        "0730ac98f2718e41f11e6c586f7a0331d166a922"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Mon Jul 06 15:06:36 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 06 15:06:36 2026"
      },
      "message": "Restrict Greek case logic to certain Unicode blocks (#8179)\n\nThis replaces the hardcoded exclusion ranges `\u0027\\u{1D00}\u0027..\u003d\u0027\\u{1DBF}\u0027 |\n\u0027\\u{AB65}\u0027` by more future-proof inclusions by block. This is needed for\nUnicode 18.\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "0730ac98f2718e41f11e6c586f7a0331d166a922",
      "tree": "672b2713e65b598cfc0c35a2299089bfeac039f4",
      "parents": [
        "3452708d1d4719e217192ebc96775e4e59f1a633"
      ],
      "author": {
        "name": "Younies Mahmoud",
        "email": "younies.mahmoud@gmail.com",
        "time": "Mon Jul 06 15:01:11 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 06 15:01:11 2026"
      },
      "message": "feat(currency): Migrate CurrencyFormatter to adopt the new design with generic ValueRepresentation (Decimal) and add short/narrow constructors (#8145)"
    },
    {
      "commit": "3452708d1d4719e217192ebc96775e4e59f1a633",
      "tree": "eea89a939d38096af15584ae4ff20d2c6a41b395",
      "parents": [
        "d0e721bf145e38953df94d2d22098d6e9f30c423"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Mon Jul 06 10:36:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 06 10:36:51 2026"
      },
      "message": "Writeables for range formatting (#8172)\n\nPart of #5448\n\nSplit out of #8149\n\n\nThis PR just has the writeables: without figuring out data loading,\n_once_ you have the data loaded you can produce these types for\nformatting.\n\nI could add tests for these, but I think they\u0027d be more fiddly than it\u0027s\nworth. #8149 has tests showing that this works end-to-end.\n\nYou can see #8149 to understand how this is used: I\u0027m trying to keep\nthis work in smaller PRs as much as possible and at this point more of\nit is \"land APIs that will be useful later\" which is harder to\nholistically review but overall the code here is still pretty\nstraightforward so it should be fine.\n\n## Changelog: N/A\n\n\u003c!-- Please fill in according to documents/process/changelog.md --\u003e"
    },
    {
      "commit": "d0e721bf145e38953df94d2d22098d6e9f30c423",
      "tree": "25ea68b62b3d675f216ae19cb31c3c53271629c6",
      "parents": [
        "b9e49c88b4c13d21c5bc33ffc952f927555a1edf"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Fri Jul 03 13:13:28 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 03 13:13:28 2026"
      },
      "message": "Move casemapping datagen to UCD data (#8170)\n\n#4602 \n\n## Changelog\n\nN/A"
    },
    {
      "commit": "b9e49c88b4c13d21c5bc33ffc952f927555a1edf",
      "tree": "1d10a7f7692f1013f5dffbe28f7215d242f1e417",
      "parents": [
        "a5635a1a4ce870c0fc67aaa4f696599768ba06b5"
      ],
      "author": {
        "name": "Chaganti Reddy",
        "email": "97330178+Chaganti-Reddy@users.noreply.github.com",
        "time": "Fri Jul 03 09:54:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 03 09:54:55 2026"
      },
      "message": "docs(writeable): clarify to_string doc wording (#8167)\n\nUpdates the doc comment generated for Writeable to_string fns per the\nwording suggested by @robertbastian in #8140.\n\nCloses #8164"
    },
    {
      "commit": "a5635a1a4ce870c0fc67aaa4f696599768ba06b5",
      "tree": "9fa60dc1e4b02bb14b0406421613176b9404cb33",
      "parents": [
        "65ad44403a08f29813751725d3f014d007d29c07"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Thu Jul 02 16:35:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 02 16:35:32 2026"
      },
      "message": "Infer region in calendar resolution (#8102)\n\nFixes #8096\n\n## Changelog\n\n`icu_locale_core`:\n* `preferences` types now implement `serde` and `databake`\n(feature-gated)\n\n`icu_calendar`:\n* Add `AnyCalendarKind::try_new` and deprecate `AnyCalendarKind::new`.\nThe new version uses locale data to infer calendars from locales.\n* Deprecate `CalendarPreferences::resolve_calendar`. This method did not\nperform likely-subtags expansion.\n\n`icu_datetime`:\n* Use the correct calendar even if the region is only implied by the\nlanguage (i.e. `fa`)"
    },
    {
      "commit": "65ad44403a08f29813751725d3f014d007d29c07",
      "tree": "de814df60bdde5a7aa2db12098baa58597d3cc36",
      "parents": [
        "aef08cb11c46958c8e5ba8f6c0b2aeec2b3b2334"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Wed Jul 01 23:07:11 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 23:07:11 2026"
      },
      "message": "Add writeable delegate macros and support where clauses (#8139)\n\nAdds `writeable::impl_writeable_delegate!` and\n`writeable::impl_try_writeable_delegate!`, using them throughout the\ncodebase.\n\n## Changelog\n\n- writeable:\n- New `impl_writeable_delegate!` macro to delegate `Writeable`\nimplementations\n- New `impl_try_writeable_delegate!` macro to delegate `TryWriteable`\nimplementations\n    - Support for `where` clause in `impl_display_with_writeable!`"
    },
    {
      "commit": "aef08cb11c46958c8e5ba8f6c0b2aeec2b3b2334",
      "tree": "a70a16511fcfe8c913e7012cd05cc2ff7912d594",
      "parents": [
        "ba900d30d0fbec1c824ecc4877c358d5ffc2688e"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Wed Jul 01 08:36:44 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 08:36:44 2026"
      },
      "message": "Implement difference resolution on DateTimeInput (#8147)\n\nPart of #5448\n\nThis implements the routine that can compare two dates and figure out\nwhat the greatest different field is, including handling flexible day\nperiod differences.\n\nI figured this is a smaller piece that we can land early reducing the\nsize of the final set of changes. I don\u0027t _love_ landing unused code,\nbut \"unused and tested\" is fine and a good way to build things up piece\nby piece.\n\nThis also creates the `range` module where all the rest of this is going\nto live.\n\n## Changelog: N/A"
    },
    {
      "commit": "ba900d30d0fbec1c824ecc4877c358d5ffc2688e",
      "tree": "e323eda4a1d59a4170a7a1cdc76998c888b7a305",
      "parents": [
        "d011dcca59e640f32da5a14c90b1e045bf4b37ff"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Wed Jul 01 08:09:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 08:09:52 2026"
      },
      "message": "Move PatternsByGreatestDifference::get_*_pattern resolvers to PatternsByGreatestDifferenceULE (#8148)\n\nThis is annoying.\n\nNormally, our VarULE types are the \"internal\" types and we implement\ncomplex logic on our regular types, because it\u0027s easy, and you can\nalways go from a VarULE type to a regular one but the other way around\nisn\u0027t always possible.\n\nSo having methods on `PatternsByGreatestDifference` is great: they can\nrefer to the \"nice\" decoded fields, and if we have a\n`PatternsByGreatestDifferenceULE` (which we will) we can always\n`ZeroFrom` it to the other type.\n\nUnfortunately, there\u0027s one downside: because\n`PatternsByGreatestDifference` _could_ be allocated, we cannot return\nlong lived `\u0027data` references to its patterns. This is why\n[`PatternsByGreatestDifference::get_*_pattern`](https://unicode-org.github.io/icu4x/rustdoc/icu/datetime/provider/range_patterns/struct.PatternsByGreatestDifference.html#method.get_date_pattern)\nreturns things with lifetime `\u0027a` not `\u0027data`.\n\nSo we can\u0027t actually write code that e.g. returns an appropriately\nresolved `FormattedDateTimeRange` that contains `\u0027data` patterns.\n\n`PatternsByGreatestDifference*` lives inside a VarZeroVec in\n[`GenericPackedPatterns`](https://unicode-org.github.io/icu4x/rustdoc/icu/datetime/provider/packed_pattern/struct.GenericPackedPatterns.html)\nanyway, which means ICU4X code will _always_ have this type as\n`PatternsByGreatestDifferenceULE` (even a runtime mutated VarZeroVec\ncontains encoded data). So there\u0027s no API downside of moving these\nmethods over to `PatternsByGreatestDifferenceULE` where they will be\nactually callable.\n\nThe main downsides are:\n\n- The code is slightly worse since it needs to decode some AsULEs. Not a\nbig deal\n- The tests are slightly worse because they need to convert to\n`PatternsByGreatestDifferenceULE`. _shrug_.\n\n\n## Changelog: N/A\n\n\u003c!-- Please fill in according to documents/process/changelog.md --\u003e"
    },
    {
      "commit": "d011dcca59e640f32da5a14c90b1e045bf4b37ff",
      "tree": "fe2021e064a8627175b1f1f3eb8cbea441cd5d95",
      "parents": [
        "f4b2756bb5ec5c1a918863247fa3550716de610a"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Tue Jun 30 14:16:05 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 14:16:05 2026"
      },
      "message": "Update LineBreakStates.txt, fix bug in neo (#8162)\n\nSee https://github.com/unicode-org/icu/pull/4055\n\n#7962 \n\n## Changelog\n\nN/A"
    },
    {
      "commit": "f4b2756bb5ec5c1a918863247fa3550716de610a",
      "tree": "0540092c525b2245b41d1535acb1f34b87f9c2c7",
      "parents": [
        "20105543d08bcd024df1ba86688e9ee933fb1767"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Mon Jun 29 15:03:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 15:03:37 2026"
      },
      "message": "Use neo grapheme segmenter for neo complex segmentation (#8152)\n\nSo far, the neo segmenters have used the existing complex segmentation\ncode, which uses a (non-neo) `GraphemeClusterBreakSegmenter` internally.\nThis PR makes the whole complex code path generic in a GCBS, so that neo\ncan use neo.\n\n#7962 \n\n## Changelog\n\nN/A"
    },
    {
      "commit": "20105543d08bcd024df1ba86688e9ee933fb1767",
      "tree": "8068cf1c81df50ac2ed93905e590364493b7dfe9",
      "parents": [
        "4f4c9f1fa068b6e4e0331b385104a7b2872489c5"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Fri Jun 26 12:58:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 26 12:58:03 2026"
      },
      "message": "Rename complex languages to complex scripts (#8137)\n\nIn the context of segmentation, there are no complex languages, only\ncomplex scripts. The segmenter looks at the Unicode `Script` property to\ndetermine which dictionary model to load.\n\nLanguages *also* appear in the context of segmentation, for tailorings\nlike Greek or Japanese/Chinese, so we should use accurate names.\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "4f4c9f1fa068b6e4e0331b385104a7b2872489c5",
      "tree": "0288a1b1737ad5a7b36f37c15594bb2a83611ca1",
      "parents": [
        "b9fb558848c5f4fc0eb99469281445fffe814a6c"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Fri Jun 26 05:01:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 26 05:01:16 2026"
      },
      "message": "Datagen: Use structured keys with alt and menu variants for display names (#8090)\n\nCo-authored-by: Gemini \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "b9fb558848c5f4fc0eb99469281445fffe814a6c",
      "tree": "fb2389df35d52174cb77bb938c8a77c90ec036a1",
      "parents": [
        "7f41308de755620a5d4f16bf3c086ddf1390793f"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Fri Jun 26 04:18:43 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 26 04:18:43 2026"
      },
      "message": "Add LossyWrap::to_string impl (#8140)\n\nAdds a fn that should have been there but was missing.\n\n## Changelog\n\nwriteable:\n\n- New concrete fn LossyWrap::to_string"
    },
    {
      "commit": "7f41308de755620a5d4f16bf3c086ddf1390793f",
      "tree": "51197d939c4a7b7ede726d3b61cd9ee152143c83",
      "parents": [
        "1569b93140c14c1261dd47f3e0e7bdc889280ddf"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Thu Jun 25 12:53:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 12:53:23 2026"
      },
      "message": "Use pseudo symbols for complex language detection (#8129)\n\nThis continues #8076. Instead of having constants for complex symbols,\nwe use the pseudo-symbol mechanism that was introduced for tailorings,\nand associate each pseudo symbol with a `Language`. This scales better\nthan constants, because the state machines don\u0027t have a fixed number of\ncomplex classes, and it\u0027s also nice to not have a third type of state.\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "1569b93140c14c1261dd47f3e0e7bdc889280ddf",
      "tree": "340218ded73de60fb7f15f6d76e59a8e2a708f0f",
      "parents": [
        "c3bc5e91c5f7f53a21310ffa922281248013bb57"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Thu Jun 25 06:01:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 06:01:57 2026"
      },
      "message": "Introduce dedicated LanguageIdentifierDisplayNameOptions struct (#8135)\n\n## Changelog\n\nicu_experimental: Introduce dedicated\n`LanguageIdentifierDisplayNameOptions` struct\n* New types: `LanguageIdentifierDisplayNameOptions` (with optional\n`language_display: Option\u003cLanguageDisplay\u003e`)\n* New methods: `LanguageIdentifierDisplayNameOwned::try_new()`,\n`LanguageIdentifierDisplayNameOwned::try_new_with_buffer_provider()`,\nand `LanguageIdentifierDisplayNameOwned::try_new_unstable()` now take\n`LanguageIdentifierDisplayNameOptions` instead of `DisplayNamesOptions`.\n\nCo-authored-by: Gemini \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "c3bc5e91c5f7f53a21310ffa922281248013bb57",
      "tree": "7bb09095f02f3f65e54b6b9025deef802f61fcb7",
      "parents": [
        "67a0b91c6f1e23210c9813bfe5ebb86e77f35460"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Thu Jun 25 01:24:01 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 01:24:01 2026"
      },
      "message": "Add icu_collator 2.1 and 2.2 patch releases to CHANGELOG (#8131)"
    },
    {
      "commit": "67a0b91c6f1e23210c9813bfe5ebb86e77f35460",
      "tree": "be40feee432d1b1585313509bde611979d41136c",
      "parents": [
        "3b1748738957aa5e3ab4d6aa312eccb018fa4ab6"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Wed Jun 24 17:00:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 24 17:00:04 2026"
      },
      "message": "Support TryWriteable inputs in Single and Double placeholder patterns (#8123)\n\n## Changelog\n\nicu_pattern: new input structs DoublePlaceholderValueProviderTry,\nSinglePlaceholderValueProviderTry"
    },
    {
      "commit": "3b1748738957aa5e3ab4d6aa312eccb018fa4ab6",
      "tree": "2b8f08159c0d49a570229e1d36be5db499834957",
      "parents": [
        "7c58107934504dcc0ff9182c81eb428580597d71"
      ],
      "author": {
        "name": "Moritz",
        "email": "mosum@google.com",
        "time": "Wed Jun 24 15:07:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 24 15:07:45 2026"
      },
      "message": "Upgrade dependencies for Dart ICU4X package (#8119)\n\nTo not fall too far behind the current implementation.\n\n## Changelog\nUpdate `diplomat` hash and Dart dependencies.\n\n---------\n\nCo-authored-by: Robert Bastian \u003c4706271+robertbastian@users.noreply.github.com\u003e"
    },
    {
      "commit": "7c58107934504dcc0ff9182c81eb428580597d71",
      "tree": "9501055a15355098012cb3076585b47de9b408a3",
      "parents": [
        "fc2c62636b1dc63d260832afa07b1a3084348e55"
      ],
      "author": {
        "name": "Younies Mahmoud",
        "email": "younies.mahmoud@gmail.com",
        "time": "Wed Jun 24 14:56:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 24 14:56:48 2026"
      },
      "message": "experimental/currency: Support numbering system attribution and programmatic option overrides in CurrencyEssentialsV1 (#8053)"
    },
    {
      "commit": "fc2c62636b1dc63d260832afa07b1a3084348e55",
      "tree": "658d28d4578aaf322de213ee16975613627c42eb",
      "parents": [
        "1693446d06db5e40e4f9d403e9e12a72070a8037"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Wed Jun 24 11:15:26 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 24 11:15:26 2026"
      },
      "message": "Loose matching for property names in unicodeset (#8127)\n\nMight not be the best way to do this, but I need this for segmenter and\nit\u0027s still unstable code anyway.\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "1693446d06db5e40e4f9d403e9e12a72070a8037",
      "tree": "64ad4d745b5bc67d270c7a6b52f3e57f35e93bf8",
      "parents": [
        "3d1cfab03a7949c804eaec40679fbf71e1afaa4c"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Wed Jun 24 09:24:07 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 24 09:24:07 2026"
      },
      "message": "Download Unicode test files in `download-repo-sources` (#8124)\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "3d1cfab03a7949c804eaec40679fbf71e1afaa4c",
      "tree": "5ba5b70854ea4b6dc07a3b9e9cc6eb8e2ccde4cb",
      "parents": [
        "dcf695adf73e1ee96c622bfca0320fff880eb08f"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Tue Jun 23 19:23:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 23 19:23:09 2026"
      },
      "message": "Validate japanese era data struct earlier (#8126)"
    },
    {
      "commit": "dcf695adf73e1ee96c622bfca0320fff880eb08f",
      "tree": "dd2e5654a82303f59bbf9c8de0aa8b5e70d3fb79",
      "parents": [
        "e9d8ebe555cc3048cd11a375bb277160d18daab9"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Tue Jun 23 16:21:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 23 16:21:57 2026"
      },
      "message": "Remove unused PatternBackend::Error associated type (#8122)\n\n## Changelog\n\nicu_pattern: Remove public associated Error type from sealed trait\nPatternBackend"
    }
  ],
  "next": "e9d8ebe555cc3048cd11a375bb277160d18daab9"
}
