)]}'
{
  "commit": "cf3dad5e7760f8d498d9a108432ae0d7ae373ae0",
  "tree": "141de0bc0e7d5f9d90d1a66b2c483d1162842919",
  "parents": [
    "67033e34558077b1b6f2481c8142d336fef7bab7"
  ],
  "author": {
    "name": "philter",
    "email": "hello@rive.app",
    "time": "Wed Nov 26 22:58:11 2025 +0000"
  },
  "committer": {
    "name": "philter",
    "email": "hello@rive.app",
    "time": "Wed Nov 26 22:58:11 2025 +0000"
  },
  "message": "chore: Refactor invalidateEffect for StrokeEffects (#11173) 05630acdb1\nRefactors how invalidateEffect in StrokeEffects work. Now there are 2 code paths:\n\ninvalidateEffectsFromLocal() - this is called from the StrokeEffect itself. It calls out to ShapePaint::invalidateEffects to let it invalidate any other StrokeEffects that may need to do so. It also calls invalidateEffect on itself.\ninvalidateEffects() - this can be called from the StrokeEffect (via invalidateEffectsFromLocal) on itself OR by ShapePaint while in the process of determining if any other StrokeEffects should be invalidated via the call above. This adds paint dirt to the StrokeEffect along with any additional work needed when invalidating.\nThis prevents invalidateEffect from calling ShapePaint::invalidateEffects multiple times.\n\nThis also resolves an issue with ScriptedPathEffects in Components\n\nCo-authored-by: Philip Chung \u003cphilterdesign@gmail.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d8f4dac3abdc05977760380633b98e82c345a779",
      "old_mode": 33188,
      "old_path": ".rive_head",
      "new_id": "b327c807958a9334e8e9e118b5d66f50581d7856",
      "new_mode": 33188,
      "new_path": ".rive_head"
    },
    {
      "type": "modify",
      "old_id": "8d7a107a50c4045fd8e2943bbc7343af4003b7cc",
      "old_mode": 33188,
      "old_path": "include/rive/scripted/scripted_path_effect.hpp",
      "new_id": "d4a4b2c350472d5b7bdd70cb77d50d6ee040b405",
      "new_mode": 33188,
      "new_path": "include/rive/scripted/scripted_path_effect.hpp"
    },
    {
      "type": "modify",
      "old_id": "2a935bd778533113db2aedb42d1021adf1c9592a",
      "old_mode": 33188,
      "old_path": "include/rive/shapes/paint/dash_path.hpp",
      "new_id": "6529e0721ea9f03f8625164b2815411146d8cf6d",
      "new_mode": 33188,
      "new_path": "include/rive/shapes/paint/dash_path.hpp"
    },
    {
      "type": "modify",
      "old_id": "834c3a464f716069d2874e5b09ca6c0cc171a9ea",
      "old_mode": 33188,
      "old_path": "include/rive/shapes/paint/stroke_effect.hpp",
      "new_id": "d8e7ed91253186b42e8c61c4c38aac4b30761041",
      "new_mode": 33188,
      "new_path": "include/rive/shapes/paint/stroke_effect.hpp"
    },
    {
      "type": "modify",
      "old_id": "a8c0afa2580fce35887a9a0c0cdcdf3064f90f42",
      "old_mode": 33188,
      "old_path": "include/rive/shapes/paint/trim_path.hpp",
      "new_id": "acbc1b839a1c5e5255150fb329ddba36697a4fa4",
      "new_mode": 33188,
      "new_path": "include/rive/shapes/paint/trim_path.hpp"
    },
    {
      "type": "modify",
      "old_id": "3d1f82d451b8186fd06332e140ad800b85a2399a",
      "old_mode": 33188,
      "old_path": "src/scripted/scripted_path_effect.cpp",
      "new_id": "955568f475baee740b4829a2d11361861c3c485f",
      "new_mode": 33188,
      "new_path": "src/scripted/scripted_path_effect.cpp"
    },
    {
      "type": "modify",
      "old_id": "d3b49dd7e4aa3d23737d1a1537e9dbca485699e7",
      "old_mode": 33188,
      "old_path": "src/shapes/paint/dash_path.cpp",
      "new_id": "c09a7ad301f274d3d39b3f1dd9121555a02c3b76",
      "new_mode": 33188,
      "new_path": "src/shapes/paint/dash_path.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e58942b5179d8d73d7cc5e89893d3c61b1e25c8e",
      "new_mode": 33188,
      "new_path": "src/shapes/paint/stroke_effect.cpp"
    },
    {
      "type": "modify",
      "old_id": "e7a640790418413fc1c0727bc4925e4b83988c6d",
      "old_mode": 33188,
      "old_path": "src/shapes/paint/trim_path.cpp",
      "new_id": "227d6605adee0b0c4d1a79a7e9a79bd051820d37",
      "new_mode": 33188,
      "new_path": "src/shapes/paint/trim_path.cpp"
    }
  ]
}
