)]}'
{
  "commit": "7e450bdcb03addcfc144c4f46a393f6a9b11f7d6",
  "tree": "8bee02c2fde5c2411a0c1853aa12bea82e44b12c",
  "parents": [
    "35e4193429a1eb6340ff9081e7e260b75523f6b1"
  ],
  "author": {
    "name": "philter",
    "email": "hello@rive.app",
    "time": "Wed Sep 30 19:24:05 2026 +0000"
  },
  "committer": {
    "name": "philter",
    "email": "hello@rive.app",
    "time": "Wed Sep 30 19:24:05 2026 +0000"
  },
  "message": "feat(core runtime): Scroll wheel and trackpad support for ScrollConstraint (#14321) f42f02a06d\nAdds a second input channel for ScrollConstraint. Until now scroll views could only be driven by a pointer drag; they now also respond to mouse wheels and trackpad gestures.\n\nDirect touch is unchanged — a one-finger swipe on a phone is an ordinary pointer drag and already worked. What\u0027s new is indirect scroll input, where the OS classifies the gesture and sends scroll events instead of touches.\n\nCo-authored-by: Philip Chung \u003cphilterdesign@gmail.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7c069aad5b2200ae920575df1cdc0d9db7e66cdf",
      "old_mode": 33188,
      "old_path": ".rive_head",
      "new_id": "e2f3294a0950735701389d58100e6c31dae8f144",
      "new_mode": 33188,
      "new_path": ".rive_head"
    },
    {
      "type": "modify",
      "old_id": "a42075dd662cb8d458694914d03700bac7f0ac6c",
      "old_mode": 33188,
      "old_path": "include/rive/animation/nested_state_machine.hpp",
      "new_id": "48dca38bfc5fd0ebe41e011564fd1dcdb99fddea",
      "new_mode": 33188,
      "new_path": "include/rive/animation/nested_state_machine.hpp"
    },
    {
      "type": "modify",
      "old_id": "dc482384713e8dd52476bc53e75a5ff5e2231052",
      "old_mode": 33188,
      "old_path": "include/rive/animation/state_machine_instance.hpp",
      "new_id": "387c1e29910d67e5b04d7ce56e8e3c4cbd4f076a",
      "new_mode": 33188,
      "new_path": "include/rive/animation/state_machine_instance.hpp"
    },
    {
      "type": "modify",
      "old_id": "29a7642f6d49ab7038ed1601dbbd8c50f836f5b0",
      "old_mode": 33188,
      "old_path": "include/rive/constraints/draggable_constraint.hpp",
      "new_id": "6ce251f13ba67a2b83bf1d4d60cd2c37a8bbd070",
      "new_mode": 33188,
      "new_path": "include/rive/constraints/draggable_constraint.hpp"
    },
    {
      "type": "modify",
      "old_id": "40a952e7a108a9976fe38a289a7ac3cc00744f60",
      "old_mode": 33188,
      "old_path": "include/rive/constraints/scrolling/elastic_scroll_physics.hpp",
      "new_id": "623a97ad25e39f8b0469dd9f54653022a99380cc",
      "new_mode": 33188,
      "new_path": "include/rive/constraints/scrolling/elastic_scroll_physics.hpp"
    },
    {
      "type": "modify",
      "old_id": "7f00ddea7000130ad9093915f6874ac47380ad95",
      "old_mode": 33188,
      "old_path": "include/rive/constraints/scrolling/scroll_constraint.hpp",
      "new_id": "4f6587583200ea7fea997f0e870cf504f23a37ba",
      "new_mode": 33188,
      "new_path": "include/rive/constraints/scrolling/scroll_constraint.hpp"
    },
    {
      "type": "modify",
      "old_id": "5ec5ca82638f2b58ff0a9f9227466b8c83964963",
      "old_mode": 33188,
      "old_path": "include/rive/constraints/scrolling/scroll_constraint_proxy.hpp",
      "new_id": "41385dc6132877838314acbeca7cc827dee33ce7",
      "new_mode": 33188,
      "new_path": "include/rive/constraints/scrolling/scroll_constraint_proxy.hpp"
    },
    {
      "type": "modify",
      "old_id": "9149c90067e916ba1b6adcff9517eace7851a6d4",
      "old_mode": 33188,
      "old_path": "include/rive/constraints/scrolling/scroll_physics.hpp",
      "new_id": "167578221b713b8f4ff38623a352b2d2a8f5311b",
      "new_mode": 33188,
      "new_path": "include/rive/constraints/scrolling/scroll_physics.hpp"
    },
    {
      "type": "modify",
      "old_id": "6ea13b412e1161763990915e687192a5b2d00316",
      "old_mode": 33188,
      "old_path": "include/rive/generated/constraints/scrolling/scroll_constraint_base.hpp",
      "new_id": "406c386f8934e3da2c28705a975503ac5ef544a6",
      "new_mode": 33188,
      "new_path": "include/rive/generated/constraints/scrolling/scroll_constraint_base.hpp"
    },
    {
      "type": "modify",
      "old_id": "d49787d934a86c3c3360ca1b5b1ad76884cc35a7",
      "old_mode": 33188,
      "old_path": "include/rive/generated/core_registry.hpp",
      "new_id": "89eb73be065dd5ab97527dd8803a489a54bdcd6e",
      "new_mode": 33188,
      "new_path": "include/rive/generated/core_registry.hpp"
    },
    {
      "type": "modify",
      "old_id": "f4b595892702157c9371ae814cfff5b52e7c9d56",
      "old_mode": 33188,
      "old_path": "include/rive/listener_group.hpp",
      "new_id": "e91f300d6b3e1568832e98b9cd35502dcd52b7a4",
      "new_mode": 33188,
      "new_path": "include/rive/listener_group.hpp"
    },
    {
      "type": "modify",
      "old_id": "100da442dabfaef6a055e1ab4bbe2e82581eb6f6",
      "old_mode": 33188,
      "old_path": "include/rive/scene.hpp",
      "new_id": "0b96c40fd3565066ddef4006b1cf317ad82a02e5",
      "new_mode": 33188,
      "new_path": "include/rive/scene.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0888304f217b0ca6914e1632d778c39470882fd3",
      "new_mode": 33188,
      "new_path": "include/rive/scroll_event.hpp"
    },
    {
      "type": "modify",
      "old_id": "70e2f2785939617c9b2e0d1ae30c899da0ee5e21",
      "old_mode": 33188,
      "old_path": "src/animation/nested_state_machine.cpp",
      "new_id": "b4dd5b8bd6a7b6281f7a099e644d617bc30fdcd7",
      "new_mode": 33188,
      "new_path": "src/animation/nested_state_machine.cpp"
    },
    {
      "type": "modify",
      "old_id": "e0d6d1d6928e7b18d2d382983530df9dbeb20755",
      "old_mode": 33188,
      "old_path": "src/animation/state_machine_instance.cpp",
      "new_id": "9ede6c41fb422f4b6654f1720eab61e2654b65bb",
      "new_mode": 33188,
      "new_path": "src/animation/state_machine_instance.cpp"
    },
    {
      "type": "modify",
      "old_id": "e5602f9ccd5043ad0b632225bdc672ce1b2685f4",
      "old_mode": 33188,
      "old_path": "src/constraints/scrolling/scroll_constraint.cpp",
      "new_id": "74df9d935c1cc8698d5e1025ef07230451503440",
      "new_mode": 33188,
      "new_path": "src/constraints/scrolling/scroll_constraint.cpp"
    },
    {
      "type": "modify",
      "old_id": "9a0fadd0816b7baf7d94114dd0b65e59a0b6a15b",
      "old_mode": 33188,
      "old_path": "src/constraints/scrolling/scroll_constraint_proxy.cpp",
      "new_id": "682b12281a4bf85f2ef91a138f32de81915aa14f",
      "new_mode": 33188,
      "new_path": "src/constraints/scrolling/scroll_constraint_proxy.cpp"
    },
    {
      "type": "modify",
      "old_id": "4f43749a9b504fe3874d10456ec62b7d80c6ff03",
      "old_mode": 33188,
      "old_path": "src/scene.cpp",
      "new_id": "6f664ca37a331dadeae9aa5847cca7bf54423f17",
      "new_mode": 33188,
      "new_path": "src/scene.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6328efbec41dde320646b008f85cf061e720c393",
      "new_mode": 33188,
      "new_path": "tests/unit_tests/assets/layout/scroll_nested.riv"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "03a52dd3981c025e801ecb671e2324f895555762",
      "new_mode": 33188,
      "new_path": "tests/unit_tests/runtime/scroll_input_test.cpp"
    }
  ]
}
