)]}'
{
  "commit": "ce379a15fc8d30b4d955e24589897b183c476722",
  "tree": "b2d305b7bc978e870f83d384d5b30e5f2f5239d0",
  "parents": [
    "34d0e7b96e4c6e4cb244803c9793080cc9d96995"
  ],
  "author": {
    "name": "Bob Nystrom",
    "email": "rnystrom@google.com",
    "time": "Tue Jul 21 13:52:10 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Jul 21 13:52:10 2026 -0700"
  },
  "message": "Make DartFormatter.lineEnding immutable. (#1878)\n\nMake DartFormatter.lineEnding immutable.\n\nThis property was always intended to be semantically immutable but\nsince the early days, it was exposed as a public writable field.\n\nThis retains the setter to avoid a compile-time breaking change in the\noff chance there is some code calling the setter, but invoking it does\nnothing.\n\nThis also fixes the weird behavior where if you omit a line ending\n(which I\u0027m guessing all users do), it infers the line ending from the\nfirst format() call and then persists that to later calls. This is a\nweird subtle kind of mutability. In practice, it\u0027s harmless because\nusers rarely reuse a DartFormatter instance to format code with\ndifferent line endings. But it never felt like a good design.\n\nThis is technically a breaking change, but in a corpus of 2,000 pub\npackages, I couldn\u0027t find a single reference to an identifier named\n\"lineEnding\", so I suspect no code in the wild will actually break,\nwhich is why I only bumped the patch version.\n\nFix #1337.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9698fe82e2b2b21b4755eac68fe09c120c28476c",
      "old_mode": 33188,
      "old_path": "CHANGELOG.md",
      "new_id": "e9ac8f8a1153c6795be059648a23bd9a53e23fb7",
      "new_mode": 33188,
      "new_path": "CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "53bc30427d6fac1418673468c227540d4f60d115",
      "old_mode": 33188,
      "old_path": "benchmark/run.dart",
      "new_id": "2248fde5820258a212a471e3c6a4c141e6e18fbb",
      "new_mode": 33188,
      "new_path": "benchmark/run.dart"
    },
    {
      "type": "modify",
      "old_id": "a730fc863e6fab71f88ccb447acf53d4ee97b078",
      "old_mode": 33188,
      "old_path": "lib/dart_style.dart",
      "new_id": "8cdc632feae8968f3ab76a4b7df28f2863ef54b5",
      "new_mode": 33188,
      "new_path": "lib/dart_style.dart"
    },
    {
      "type": "modify",
      "old_id": "29220073fdd5e9784e5c75b76808a42bccfac8c7",
      "old_mode": 33188,
      "old_path": "lib/src/cli/formatter_options.dart",
      "new_id": "3cf2bf670c681a553c2a06a0c414d3151d8805b4",
      "new_mode": 33188,
      "new_path": "lib/src/cli/formatter_options.dart"
    },
    {
      "type": "modify",
      "old_id": "0ef11a599be9d920ddaf06594780c8c94842c385",
      "old_mode": 33188,
      "old_path": "lib/src/dart_formatter.dart",
      "new_id": "207f807a20272c08efc8a22c1f0514ccd8b7d62a",
      "new_mode": 33188,
      "new_path": "lib/src/dart_formatter.dart"
    },
    {
      "type": "modify",
      "old_id": "5fe2f391d82c838dfcbbde374aaeca549f1304e2",
      "old_mode": 33188,
      "old_path": "lib/src/front_end/formatting_style.dart",
      "new_id": "4cbce98ee0e82ce4b826cc0e73839bbbcd587056",
      "new_mode": 33188,
      "new_path": "lib/src/front_end/formatting_style.dart"
    },
    {
      "type": "modify",
      "old_id": "a1298a4535a084765d9897b62cd11ab560f1b456",
      "old_mode": 33188,
      "old_path": "lib/src/short/chunk_builder.dart",
      "new_id": "2c306e25db9c563ee349d6b27d642c143a620bb8",
      "new_mode": 33188,
      "new_path": "lib/src/short/chunk_builder.dart"
    },
    {
      "type": "modify",
      "old_id": "2b05c2065a025079892f86b0b67d1926d4b2ed7d",
      "old_mode": 33188,
      "old_path": "lib/src/short/line_writer.dart",
      "new_id": "6e295e6665ba9b5611bfb794f7ceaf1d1ac3acad",
      "new_mode": 33188,
      "new_path": "lib/src/short/line_writer.dart"
    },
    {
      "type": "modify",
      "old_id": "368ddffe68323ade356d87b149ff1b8c28c57606",
      "old_mode": 33188,
      "old_path": "lib/src/short/source_visitor.dart",
      "new_id": "32ef6a1946d25febc88aa4374dc089ba1c1ad2cb",
      "new_mode": 33188,
      "new_path": "lib/src/short/source_visitor.dart"
    },
    {
      "type": "modify",
      "old_id": "999d53b8a3952c2715b6e9079be96aa4786560b6",
      "old_mode": 33188,
      "old_path": "pubspec.yaml",
      "new_id": "8b8e339c84814176cc210fbf6a8190b3720fdd47",
      "new_mode": 33188,
      "new_path": "pubspec.yaml"
    },
    {
      "type": "modify",
      "old_id": "5f5462a90f13c66ae54ea2e00d141fbb8fae1e11",
      "old_mode": 33188,
      "old_path": "test/dart_formatter_test.dart",
      "new_id": "fcbdfe77026da9e4bd2b192d8201031f3ac32dc6",
      "new_mode": 33188,
      "new_path": "test/dart_formatter_test.dart"
    }
  ]
}
