)]}'
{
  "commit": "75bd37d2a3067b6f431d56e891064b73dc2def2c",
  "tree": "69580944c24bd99c5286ae0611cf2998a3b85035",
  "parents": [
    "8c3b53a97ae2a204842c0c86ca859947ce20b1dd"
  ],
  "author": {
    "name": "Philip Zeyliger",
    "email": "philip@bold.dev",
    "time": "Thu May 22 18:49:14 2025 +0000"
  },
  "committer": {
    "name": "Philip Zeyliger",
    "email": "philip@bold.dev",
    "time": "Thu May 22 12:40:44 2025 -0700"
  },
  "message": "loop: auto-commit changes when saving in diff view\n\nWhat I\u0027ve done is create a git commit whenever the user edits things,\nand amend if possible. The existing detection logic pushes the commits\nto the host, BUT, I had to do some plumbing to make that happen. The\nagent state machine would be out of sorts if I did this (since we\u0027re\ndoing things outside of the loop), but, I didn\u0027t tell it, so... it\u0027s ok!\n\nIf the user has the agent running when editing, everyone can get\nconfused. There\u0027s no atomicity for the git operations, etc.\nI suspect in practice this will all be as fine as everything else is.\n\nI\u0027m not running the autoformatters. That\u0027s a weird editing experience.\n\nThe alternative was to do what the diff comments does, and let the agent\ndeal with the changes by sending it a message. I chose not to do that:\nfirst of all, I want the push to happen fast, since I don\u0027t like losing\nuser data. Second, the latency on an operation is distracting sometimes,\nand sometimes what I do next is just cherrypick my changes over, and I\u0027m\nnot interested in the pedantry of the agent and the code formatters and\nso forth. If they were faster, maybe.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\nChange-ID: sec50af415124810bk\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b206c05e71df827bf2a29d38e686d79f170d23f4",
      "old_mode": 33188,
      "old_path": "git_tools/git_tools.go",
      "new_id": "fc59e0dfaa4a93de25275ef6824b94df30405ca4",
      "new_mode": 33188,
      "new_path": "git_tools/git_tools.go"
    },
    {
      "type": "modify",
      "old_id": "98925e24e10d9c3f88250d7c99e4e2510c4632d3",
      "old_mode": 33188,
      "old_path": "loop/agent.go",
      "new_id": "cb22b849d4ac1df886dd6ecb864bf9787b6a4285",
      "new_mode": 33188,
      "new_path": "loop/agent.go"
    },
    {
      "type": "modify",
      "old_id": "aaaf7c2cae474f5e69bd965ba8141ab72108281d",
      "old_mode": 33188,
      "old_path": "loop/server/loophttp.go",
      "new_id": "94cbb78ddd2037d3e1ba15573a41fb5572dea61a",
      "new_mode": 33188,
      "new_path": "loop/server/loophttp.go"
    },
    {
      "type": "modify",
      "old_id": "fc525322fa47570478f3ed4f3afc5d5377da9da8",
      "old_mode": 33188,
      "old_path": "loop/server/loophttp_test.go",
      "new_id": "e3d144b09509c8481b9d5397b3da0db36a22c3bd",
      "new_mode": 33188,
      "new_path": "loop/server/loophttp_test.go"
    }
  ]
}
