)]}'
{
  "commit": "30a75b4cf54cbdf7b2ce67822da9ea81d870494c",
  "tree": "60f583587a19556c8a1a26d9e737ee4446df5664",
  "parents": [
    "e777e08fbdf59e2831bb10fdcb738c2c5c2aa1d4"
  ],
  "author": {
    "name": "Raph Levien",
    "email": "raph@google.com",
    "time": "Fri Sep 20 16:23:16 2024 -0400"
  },
  "committer": {
    "name": "Raph Levien",
    "email": "raph@google.com",
    "time": "Fri Sep 20 16:23:16 2024 -0400"
  },
  "message": "Make tangents at subpath end watertight\n\nAt subpath end, the last path segment is encoded with the end point chosen so that the vector from the current point to the end point is the tangent, ie the same vector as cubic_start_tangent applied to the first segment in the subpath. In those cases, compute the tangent by subtracting those two points, rather than cubic_start_tangent applied to the line. These are mathematically identical, but may give different results because of roundoff.\n\nThere are two cases: an open subpath, in which case the case is applied to the tangent at draw_start_cap, or an open subpath, where the logic is in the tangent calculation in read_neighboring_segment.\n\nBoth GPU and CPU shaders are updated. It hasn\u0027t been carefully validated\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1de07910fc6217944b74aa53b951c2011e269dbc",
      "old_mode": 33188,
      "old_path": "vello_shaders/shader/flatten.wgsl",
      "new_id": "cd42fdeb34da26dd8955edef42530a3a6a96d0f6",
      "new_mode": 33188,
      "new_path": "vello_shaders/shader/flatten.wgsl"
    },
    {
      "type": "modify",
      "old_id": "bd501d3964051fffa64885dc339238086126845b",
      "old_mode": 33188,
      "old_path": "vello_shaders/src/cpu/flatten.rs",
      "new_id": "11bbd94e632fbff8858344c0abf2d54dcd390fb7",
      "new_mode": 33188,
      "new_path": "vello_shaders/src/cpu/flatten.rs"
    }
  ]
}
