)]}'
{
  "commit": "1e847f252a66e9024694ddd0b68a2545bede7d0c",
  "tree": "0cf3add2aa149fd1409a8851697208bec35258d9",
  "parents": [
    "9c931498d505ba8d3ce0c1f033333afa7d445553"
  ],
  "author": {
    "name": "Christoph Deil",
    "email": "Deil.Christoph@gmail.com",
    "time": "Tue Sep 29 18:21:50 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Sep 29 18:21:50 2026 +0000"
  },
  "message": "[flutter_tools] Include flutter.js.map in web builds (#192257)\n\nThe prebuilt Flutter web loader ends with a reference to\n`flutter.js.map`. The matching source map is already part of the Flutter\nweb SDK, but `WebBuiltInAssets` only copies `flutter.js` and CanvasKit\ninto `build/web`. As a result, browser developer tools request a file\nthat is missing from every web build, and tools such as error reporters\ncannot resolve stack frames from the loader.\n\nThis change declares `flutter.js.map` as a built-in web output and\ncopies it alongside `flutter.js`.\n\nThe copy is intentionally independent of `--[no-]source-maps`. That\noption controls source maps produced while compiling the application,\nwhile `flutter.js` is a prebuilt SDK artifact that always references its\nown prebuilt map.\n\nFixes #145111.\n\n## Validation\n\n- `./bin/dart --enable-asserts dev/bots/analyze.dart`\n- `../../bin/dart test\ntest/general.shard/build_system/targets/web_test.dart` (626 tests)\n- `bin/flutter-dev build web`\n- incremental rebuild after removing `build/web/flutter.js.map`\n- `bin/flutter-dev build web --source-maps`\n- `bin/flutter-dev build web --wasm`\n- verified the emitted map is byte-for-byte identical to the Flutter web\nSDK artifact\n\nNo changes to `flutter/tests` are required.\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 in-code documentation (doc comments with\n`///`).\n- [x] If this PR introduces a new feature or capability, I created and\nlinked a website documentation issue or PR in [flutter/website] (or\nverified none is needed).\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.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[flutter/website]: https://github.com/flutter/website\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md\n\n---------\n\nCo-authored-by: Mouad Debbar \u003cmdebbar@google.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "64f6956c7b29dafc222532a96f8ef328220475ab",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/lib/src/build_system/targets/web.dart",
      "new_id": "6dec58589a718e8bb21a957c244f9fd4c4b412f5",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/lib/src/build_system/targets/web.dart"
    },
    {
      "type": "modify",
      "old_id": "b34c78dad65812f1a445f9defa14666945517e22",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/test/general.shard/build_system/targets/web_test.dart",
      "new_id": "6c8e531b32c4fab9dcbfc48a96e3ade85f1a3309",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/test/general.shard/build_system/targets/web_test.dart"
    }
  ]
}
