)]}'
{
  "commit": "220f97902cb5834e6b4d90150a91b6a0d64bdab2",
  "tree": "d895ed7f52f5919bea45c1c131a3716229e88ea5",
  "parents": [
    "a2d5fe4a3fbfa533e3439aec8c0217b73a068ccb"
  ],
  "author": {
    "name": "AstroHan",
    "email": "lei.yuhan@outlook.com",
    "time": "Sun Aug 02 14:38:18 2026 +0800"
  },
  "committer": {
    "name": "AstroHan",
    "email": "lei.yuhan@outlook.com",
    "time": "Sun Aug 02 14:38:18 2026 +0800"
  },
  "message": "fix(desktop): make storage-root-conflict e2e signal platform-independent\n\nThe regression test for the ESM startup deadlock treated \u0027CDP evaluate\nnever settles within 1s\u0027 as the proof that the repair dialog was open.\nThat holds only on macOS, where modal loops block CDP evaluation; on\nLinux (CI) the modal keeps answering evaluation, so the test failed even\nthough the app parked correctly — and a deadlocked main process would\nhave been accepted as a pass.\n\nReplace the heuristic with an explicit contract: boot.ts prints\n\u0027[storage-root] root-identity conflict; parking at repair dialog\u0027\nsynchronously before the modal (printed only after ready, only when the\ngate fired), and the test waits for that console event. The workspace\nwrite-free assertion is unchanged. Deadlock and gate-removal both never\nprint the signal, so both still fail the test on every platform.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1bbe022ed32cf7e4723d2ef22386d28f7f2be78b",
      "old_mode": 33188,
      "old_path": "apps/desktop/e2e/storage-root-conflict.spec.ts",
      "new_id": "c6c288cd7b4de22aec4041b12ca39d87d7a18756",
      "new_mode": 33188,
      "new_path": "apps/desktop/e2e/storage-root-conflict.spec.ts"
    },
    {
      "type": "modify",
      "old_id": "a4afbe1f5bbeb75505fbf448155cba01c7f20199",
      "old_mode": 33188,
      "old_path": "apps/desktop/src/main/boot.ts",
      "new_id": "33d1bcc617ee2ed5d1589d0b8c0e40f18bbdff6a",
      "new_mode": 33188,
      "new_path": "apps/desktop/src/main/boot.ts"
    }
  ]
}
