)]}'
{
  "commit": "072b85c0c08dbe373d5f695edb674c9923953bdd",
  "tree": "72be2836024e5817c28bee0099659f8857c03ae8",
  "parents": [
    "02fbac5a6873e9a25cb07f0491a92b1f04629804"
  ],
  "author": {
    "name": "Mouad Debbar",
    "email": "mdebbar@google.com",
    "time": "Mon Jun 15 21:15:09 2026 -0400"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Jun 16 01:15:09 2026 +0000"
  },
  "message": "[web] RenderParagraph needs paint after a DPR change (#186968)\n\nCurrently, there are situation where a `ui.Paragraph` is not repainted,\nfor example when it\u0027s inside a `RepaintBoundary`. When\n`devicePixelRatio` changes due to zooming in or out, and the paragraph\nisn\u0027t repainted, it results in `WebParagraph`s becoming blurry/choppy\nbecause they are painted as images.\n\nThe image needs to be regenerated for the new `devicePixelRatio` in\norder to become clear.\n\nThis PR adds the `devicePixelRatio` property to `RenderParagraph` and,\non the web, a change in this property causes the paragraph to be\nrepainted.\n\nThe cost of this PR on performance should be minimal because:\n1. It\u0027s limited to web.\n2. It only costs an extra paint when the dpr changes, which is not a\ncommon case (on the web, it happens when zooming in/out or when the\nwindow is moved to a different display).\n\nPart of https://github.com/flutter/flutter/issues/172561",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b45f3d92795eca40674dc01329a4beca01444917",
      "old_mode": 33188,
      "old_path": "packages/flutter/lib/src/rendering/paragraph.dart",
      "new_id": "5bcc4570209cd946173841a0a56599e93c53b47c",
      "new_mode": 33188,
      "new_path": "packages/flutter/lib/src/rendering/paragraph.dart"
    },
    {
      "type": "modify",
      "old_id": "a706eb8e302681a60da753cb6b12be4d1721efe4",
      "old_mode": 33188,
      "old_path": "packages/flutter/lib/src/widgets/basic.dart",
      "new_id": "8848b3b4b5f458354fb85715023a064045763b9f",
      "new_mode": 33188,
      "new_path": "packages/flutter/lib/src/widgets/basic.dart"
    },
    {
      "type": "modify",
      "old_id": "66dfff6be8e63bdf816b520d5db3caaee74e738d",
      "old_mode": 33188,
      "old_path": "packages/flutter/test/rendering/paragraph_test.dart",
      "new_id": "2f2bf9e3cd91e9cdbffbe70fd2b1b687a8b60440",
      "new_mode": 33188,
      "new_path": "packages/flutter/test/rendering/paragraph_test.dart"
    },
    {
      "type": "modify",
      "old_id": "d61c87057826770bf7e3f0b56e94d59da9414252",
      "old_mode": 33188,
      "old_path": "packages/flutter/test/widgets/rich_text_test.dart",
      "new_id": "a1cdd4e821c7519cb5fd94682c17540bfd8f4ca8",
      "new_mode": 33188,
      "new_path": "packages/flutter/test/widgets/rich_text_test.dart"
    },
    {
      "type": "modify",
      "old_id": "21e477f525736879e674cee6e7284bc68c78dba5",
      "old_mode": 33188,
      "old_path": "packages/flutter/test/widgets/sliver_fill_viewport_test.dart",
      "new_id": "a731932a0535d1b6a8d7b083d7fa7871ef132e77",
      "new_mode": 33188,
      "new_path": "packages/flutter/test/widgets/sliver_fill_viewport_test.dart"
    },
    {
      "type": "modify",
      "old_id": "3f5fc105293b15913a2902c7c21d846487640aaf",
      "old_mode": 33188,
      "old_path": "packages/flutter/test/widgets/table_test.dart",
      "new_id": "da740903c6504b4463cb80f3794be5709a1f81eb",
      "new_mode": 33188,
      "new_path": "packages/flutter/test/widgets/table_test.dart"
    }
  ]
}
