)]}'
{
  "commit": "89412d50ea2ceeb26eac45c06d8f4e9607c47f7f",
  "tree": "bce016d780367abc5590917ee177d80f17dbcd85",
  "parents": [
    "cde5f2de55440cd82281d741dba3e69b46775b38"
  ],
  "author": {
    "name": "Loïc Sharma",
    "email": "737941+loic-sharma@users.noreply.github.com",
    "time": "Sun Jul 05 17:39:33 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Jul 06 00:39:33 2026 +0000"
  },
  "message": "Add debugPaintFocusBoxes (#188288)\n\nAdds a new debug global, `debugPaintFocusBoxes`, to visualize the focus\ntree:\n\n* Green box: the primary focus node\n* Blue boxes: focus nodes that are ancestors of the primary focus node\n* Cyan boxes: focus nodes that are focusable and traversable\n* Yellow boxes: focus nodes that are focusable but not traversable\n* Red boxes: focus nodes that are not focusable\n\n## Demo\n\n```dart\nvoid main() {\n  debugPaintFocusBoxes \u003d true;\n  runApp(const CalendarDatePickerApp());\n}\n```\n\n\nhttps://github.com/user-attachments/assets/208ba4fc-d806-4ce8-93bc-4161c0f27328\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [x] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [x] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [x] All existing and new tests are passing.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3f9a117280dca5c7944a4a77422a9c2b04f6ea23",
      "old_mode": 33188,
      "old_path": "packages/flutter/lib/src/widgets/debug.dart",
      "new_id": "9e252ed494b94c9b0bf2a6e8da13eb2e15fb0468",
      "new_mode": 33188,
      "new_path": "packages/flutter/lib/src/widgets/debug.dart"
    },
    {
      "type": "modify",
      "old_id": "4aeb809419e740ee66686fa1123931cefe8ff802",
      "old_mode": 33188,
      "old_path": "packages/flutter/lib/src/widgets/focus_manager.dart",
      "new_id": "e75dda7d890ca844796d5d4b570a62907a185d11",
      "new_mode": 33188,
      "new_path": "packages/flutter/lib/src/widgets/focus_manager.dart"
    },
    {
      "type": "modify",
      "old_id": "661b6510523a5f32f0cb1d0ac4a9d82fff114bf9",
      "old_mode": 33188,
      "old_path": "packages/flutter/lib/src/widgets/focus_scope.dart",
      "new_id": "98445d0f9a06548dcd17caef2a2542a9201c9a89",
      "new_mode": 33188,
      "new_path": "packages/flutter/lib/src/widgets/focus_scope.dart"
    },
    {
      "type": "modify",
      "old_id": "d2e3862774a8dde23d0ee76c5b90afa2243a36a2",
      "old_mode": 33188,
      "old_path": "packages/flutter/test/widgets/debug_test.dart",
      "new_id": "a5c5bf29b9afff88437ea32e6c47ecacae8468bf",
      "new_mode": 33188,
      "new_path": "packages/flutter/test/widgets/debug_test.dart"
    }
  ]
}
