)]}'
{
  "commit": "be950ac85c0c90d294266ce350ff4877a136be05",
  "tree": "6197b50c4fce48e0b022fcb6fa6d562e72491446",
  "parents": [
    "55c61f4bd921bd566074ceface8efd59c5afa573"
  ],
  "author": {
    "name": "Ishaq Hassan",
    "email": "ishaquehassan@gmail.com",
    "time": "Fri May 08 20:32:37 2026 +0500"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri May 08 08:32:37 2026 -0700"
  },
  "message": "Fix SplitPane RangeError when child count changes between rebuilds (#9822)\n\n* Fix SplitPane RangeError when child count changes between rebuilds\n\nFixes #9648.\n\nSplitPane cached its fractions list in initState only. When the parent\nrebuilt the widget with a different number of children (for example,\ntoggling a panel via a collection-if), fractions.length stayed at the\nold value while widget.minSizes and widget.children shrank, causing\nminSizeForIndex to read past the end of widget.minSizes and throw\n\u0027RangeError (index): Index out of range: index should be less than 2: 2\u0027\nfrom the layout pass.\n\nThis adds didUpdateWidget to _SplitPaneState. When the child count\nchanges, fractions is reset to List.of(widget.initialFractions) so it\nstays in sync with the new children and minSizes. The existing\nconstructor assertion already guarantees children.length matches\ninitialFractions.length.\n\nBumps devtools_app_shared to 0.5.2 with a CHANGELOG entry, and adds\nregression tests that pump a 3-child SplitPane and then a 2-child\nSplitPane (and vice versa) and assert no exception is thrown.\n\n* Add release note entry for SplitPane RangeError fix (#9822)\n\n* Address review: bump devtools_app_shared CHANGELOG to 0.5.2-wip\n\n* Address review: bump devtools_app_shared pubspec to 0.5.2-wip",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d80a29abfc3bf5e5d124afe4985685396e6e2c38",
      "old_mode": 33188,
      "old_path": "packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md",
      "new_id": "1f6fafdf6fd5fb633bea8504618d361d20af5112",
      "new_mode": 33188,
      "new_path": "packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md"
    },
    {
      "type": "modify",
      "old_id": "4f6e95c410485dbe4c63f6a541cf4363c1df03c1",
      "old_mode": 33188,
      "old_path": "packages/devtools_app_shared/CHANGELOG.md",
      "new_id": "a06c2efb9345f487830ae1b25d505507642a34db",
      "new_mode": 33188,
      "new_path": "packages/devtools_app_shared/CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "59e5ef576dc0e71c0976787438b4942ba913ad80",
      "old_mode": 33188,
      "old_path": "packages/devtools_app_shared/lib/src/ui/split_pane.dart",
      "new_id": "4bda05e1d3884b47855ebf3d5b297429e7f3ee17",
      "new_mode": 33188,
      "new_path": "packages/devtools_app_shared/lib/src/ui/split_pane.dart"
    },
    {
      "type": "modify",
      "old_id": "375fd0009d38d5d52ef6ae63ce33e0628cf9184a",
      "old_mode": 33188,
      "old_path": "packages/devtools_app_shared/pubspec.yaml",
      "new_id": "cce911d0d4b796ba37d4188a7db850d8d9446b2e",
      "new_mode": 33188,
      "new_path": "packages/devtools_app_shared/pubspec.yaml"
    },
    {
      "type": "modify",
      "old_id": "326d3c477e9129cf1990ea277bd05c7a0fdcf4ab",
      "old_mode": 33188,
      "old_path": "packages/devtools_app_shared/test/ui/split_pane_test.dart",
      "new_id": "068f9ed33928f8defd7c01d7368dd26ec8d05a70",
      "new_mode": 33188,
      "new_path": "packages/devtools_app_shared/test/ui/split_pane_test.dart"
    }
  ]
}
