)]}'
{
  "commit": "35e4193429a1eb6340ff9081e7e260b75523f6b1",
  "tree": "84b9cea77e01fb202fe4c9fca9191bab4ac6b1c4",
  "parents": [
    "02989e8f70ffebff16977de5ce281327debbb45b"
  ],
  "author": {
    "name": "bodymovin",
    "email": "hello@rive.app",
    "time": "Wed Sep 30 18:10:49 2026 +0000"
  },
  "committer": {
    "name": "bodymovin",
    "email": "hello@rive.app",
    "time": "Wed Sep 30 18:10:49 2026 +0000"
  },
  "message": "fix(editor, runtime): guard bindable enums against out-of-range numbers (#14484) 8d951c92f3\n* fix(editor): don\u0027t crash when a bound number exceeds a layout enum\u0027s range\n\nA number view model property bound to an enum-backed layout property (e.g.\ndisplay) can push any value; ContextValueNumber only clamps uints at 0.\nThe layout style getters indexed Enum.values directly and threw a\nRangeError from Artboard.advance. Read them through enumAt, which falls\nback to the first value, matching the runtime (display !\u003d none is visible).\n\n* fix(editor, runtime): guard the remaining bindable enums against out-of-range numbers\n\nEditor: nested artboard fit, instance width/height units, draggable\ndirection, text sizing and text wrap still indexed Enum.values directly, so\na bound number past the enum\u0027s range threw a RangeError. Read them through\nenumAt like the layout getters.\n\nRuntime: a bound layer mask mode reached the GPU paint params unmasked;\nvalues \u003e\u003d 8 overwrote the low bits of the clipID, so the masked layer was\nclipped against the wrong clip. LayerMask::maskMode() now falls back to\nalpha (as the editor does) and is what the renderer is handed, and\nPaintData::set masks the mode to its two bits.\n\n* fix(editor): match the runtime for out-of-range grid track enums\n\nA GridTrack with an unknown collection indexed the per-collection buckets\ndirectly and threw; the runtime drops such a track, so the editor now does\ntoo (falling back to template columns would lay out a column the runtime\ndoesn\u0027t have). maxSizeType reads through enumAt, falling back to auto like\nthe runtime\u0027s gridSizeLength.\n\nCo-authored-by: hernan \u003chernan@rive.app\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c38dead40bcf10d724aa2b8ffd599bf042f692a7",
      "old_mode": 33188,
      "old_path": ".rive_head",
      "new_id": "7c069aad5b2200ae920575df1cdc0d9db7e66cdf",
      "new_mode": 33188,
      "new_path": ".rive_head"
    },
    {
      "type": "modify",
      "old_id": "ab0c83faaae1f9bca7d5fc00f18cc5399ce32f87",
      "old_mode": 33188,
      "old_path": "include/rive/layer_mask.hpp",
      "new_id": "e1be107ab625dc8c87c33f47cccbdef29777acbe",
      "new_mode": 33188,
      "new_path": "include/rive/layer_mask.hpp"
    },
    {
      "type": "modify",
      "old_id": "25923c0bb727c79abc54661a1dcbede11e50baa4",
      "old_mode": 33188,
      "old_path": "renderer/src/gpu.cpp",
      "new_id": "4c9de9675a5df217f95bcb6ef92aac047480c3fb",
      "new_mode": 33188,
      "new_path": "renderer/src/gpu.cpp"
    },
    {
      "type": "modify",
      "old_id": "3b8efccc4c5b414d1e07b000b8ac8efb3d3f9760",
      "old_mode": 33188,
      "old_path": "src/artboard.cpp",
      "new_id": "1b0ae5a4f973d014f6c878f725dc86f911fb574b",
      "new_mode": 33188,
      "new_path": "src/artboard.cpp"
    },
    {
      "type": "modify",
      "old_id": "a8698f8af08a046b69fa9aeb9232b77db8f0e413",
      "old_mode": 33188,
      "old_path": "tests/unit_tests/renderer/gpu_namespace_test.cpp",
      "new_id": "25e705dec4edc4a4f3e82ac416af319fef79cc3e",
      "new_mode": 33188,
      "new_path": "tests/unit_tests/renderer/gpu_namespace_test.cpp"
    },
    {
      "type": "modify",
      "old_id": "7f7a09d91ef49bd2675b1deb2101058c4f498050",
      "old_mode": 33188,
      "old_path": "tests/unit_tests/runtime/layer_mask_test.cpp",
      "new_id": "cacaef224d26524a8d2cc7699ed4d01c1054c412",
      "new_mode": 33188,
      "new_path": "tests/unit_tests/runtime/layer_mask_test.cpp"
    }
  ]
}
