)]}'
{
  "log": [
    {
      "commit": "43d749517cc903a4f95e367725f74a7a401c4bff",
      "tree": "a4b6e6f50b3ae83b98d251558be363dd1a6fab0b",
      "parents": [
        "0be731cc32bced86dc8b97ef4fd1dac9d531875f"
      ],
      "author": {
        "name": "Shaoyu Zhang",
        "email": "zsy056@users.noreply.github.com",
        "time": "Wed Mar 25 21:01:51 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Apr 01 01:26:25 2026 +0200"
      },
      "message": "Remove dependency on docker/login-action\n"
    },
    {
      "commit": "caa4e7866df11091609ee184a5825365ab747a8c",
      "tree": "2f605964c0c3acc8e8ce87b0680dcc92b6471045",
      "parents": [
        "86b1519a5da05248ee42c702e02e48321030e024"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sun Mar 22 22:49:43 2026 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sun Mar 22 22:49:43 2026 +0100"
      },
      "message": "disabled broken workflow \u003d\u003e see THRIFT-5936\n"
    },
    {
      "commit": "26e23942c7b7ec60252d08d011057dc8fabda2f4",
      "tree": "823a7e62cf9a9e66edead4cf05d699d5699f942f",
      "parents": [
        "f8622a7b35f1df860df35b06d0fe4d2805ac309c"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sun Mar 22 13:13:28 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sun Mar 22 14:15:36 2026 +0100"
      },
      "message": "fix: remove invalid step-level permissions syntax\n"
    },
    {
      "commit": "f8622a7b35f1df860df35b06d0fe4d2805ac309c",
      "tree": "8ec305654f07806dcbc98de44a3ef56fa2f417a7",
      "parents": [
        "821140cfba71b5d159e888a3c006e739dc5b31f3"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sun Mar 22 12:35:23 2026 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sun Mar 22 14:11:23 2026 +0100"
      },
      "message": "msvc build improvements\n- add concurrency group to cancel redundant runs\n- pin GitHub action versions to full SHA\n- add error handling and timeouts to Docker operations\n- Classify pull failures: 404\u003drebuild, auth/registry errors\u003dfail loud\n- Add timeouts: pull(10m), build(60m), push(20m), test(120m)\n- restrict packages:write permission to non-PR runs\n- Remove packages:write from workflow-level permissions\n- Add step-level permissions to GHCR login step\n- Add condition to skip login for pull requests (including forks)\n- Fork PRs now have minimal permissions (contents:read only)\n\nGenerated-by: OpenCode big-pickle\n"
    },
    {
      "commit": "99e0f6fc37b5e59f07ddbb3ef1739804d49703a9",
      "tree": "7fb392ff7d8a079eec0a66ff699d564ea09c8a87",
      "parents": [
        "e51271f5388e082864f78fc358d3d35d44abe67c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Mar 01 06:02:57 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Mar 05 21:49:59 2026 +0100"
      },
      "message": "Bump actions/upload-artifact from 5 to 7\n\nBumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 7.\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/v5...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/upload-artifact\n  dependency-version: \u00277\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "3adaf0d592456250b2627ba8614438fc12f02cb6",
      "tree": "056bb0f3199970d16d43d89c5d6ede5caf984243",
      "parents": [
        "b48ba36cd27493233934f92f029efac92740c2dd"
      ],
      "author": {
        "name": "Shaoyu Zhang",
        "email": "zsy056@users.noreply.github.com",
        "time": "Fri Feb 20 13:28:16 2026 -0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Feb 25 22:47:17 2026 +0100"
      },
      "message": "Refresh msvc docker build\n"
    },
    {
      "commit": "1e09a046e080765567b7125b01fd966c2596ee3f",
      "tree": "0caeb9c86a5416470a35a5a84ffc3d756d5bb38c",
      "parents": [
        "67bfb29af0837eefd32447c186d22aa45b2f1869"
      ],
      "author": {
        "name": "Copilot",
        "email": "198982749+Copilot@users.noreply.github.com",
        "time": "Thu Jan 29 10:36:28 2026 -0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sun Feb 08 22:09:37 2026 +0100"
      },
      "message": "Add moveable_types\u003dforward_setter option for perfect forwarding setters\n\nAdds `forward_setter` value to `moveable_types` option, generating perfect forwarding setters for complex types while preserving traditional setters for primitives. Also fixes missing `operator\u003c` implementation that caused link errors when structs are used as map keys.\n\n**Forward Setter Generation** (`compiler/cpp/src/thrift/generate/t_cpp_generator.cc`):\n- Parse `moveable_types\u003dforward_setter` option\n- Complex types (strings, containers, structs) → template setters with `std::forward\u003cT_\u003e`\n- Primitive types → traditional const-ref setters\n- Template implementations in `.tcc` file (auto-included in header)\n- Legacy `moveable_types` behavior unchanged\n\n**Compiler Unit Tests** (`compiler/cpp/tests/cpp/`):\n- New `test_forward_setter.thrift` fixture\n- Dedicated `t_cpp_generator_forward_setter_tests.cc` (91 assertions, 9 test cases)\n- Verify `.tcc` generation and template implementations\n\n**Integration Tests** (`test/cpp/src/`):\n- `ForwardSetterTest.cpp` - validates lvalue/rvalue/temporary/literal setters with move semantics\n- `PrivateOptionalTest.cpp` - SFINAE + static_assert verify optional fields are private\n- `EnumClassTest.cpp` - type_traits + static_assert verify true enum class semantics\n\n**CMakeLists.txt** (`test/cpp/`):\n- Separate gen-cpp-{forward,private,enumclass} directories\n\n**Makefile.am** (`test/cpp/`):\n- Library targets for each option variant\n- Proper `BUILT_SOURCES` dependencies\n- Include path ordering: option-specific directory before standard `gen-cpp`\n\n```cpp\n// Generated with --gen cpp:moveable_types\u003dforward_setter\n\nstruct TestStruct {\n  int32_t primitive_field;\n  std::string complex_field;\n\n  void __set_primitive_field(const int32_t val);  // Traditional\n\n  template \u003ctypename T_\u003e\n  void __set_complex_field(T_\u0026\u0026 val);  // Perfect forwarding\n};\n\n// In .tcc file:\ntemplate \u003ctypename T_\u003e\nvoid TestStruct::__set_complex_field(T_\u0026\u0026 val) {\n  this-\u003ecomplex_field \u003d ::std::forward\u003cT_\u003e(val);\n  __isset.complex_field \u003d true;\n}\n```\n\n- [ ] Did you create an [Apache Jira](https://issues.apache.org/jira/projects/THRIFT/issues/) ticket?  ([Request account here](https://selfserve.apache.org/jira-account.html), not required for trivial changes)\n- [ ] If a ticket exists: Does your pull request title follow the pattern \"THRIFT-NNNN: describe my issue\"?\n- [x] Did you squash your changes to a single commit?  (not required, but preferred)\n- [x] Did you do your best to avoid breaking changes?  If one was needed, did you label the Jira ticket with \"Breaking-Change\"?\n\n---------\n\nCo-authored-by: copilot-swe-agent[bot] \u003c198982749+Copilot@users.noreply.github.com\u003e\nCo-authored-by: zsy056 \u003c1074382+zsy056@users.noreply.github.com\u003e\n"
    },
    {
      "commit": "e0d99c91a8dd096f798ed1270495f5b65e933c5a",
      "tree": "23c82948e2b2b07df6316f1a6acbbd05f5fb29bb",
      "parents": [
        "b8f24076cd33fdd32df93ee76b1386a00fbd0be8"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Jan 01 06:01:55 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Jan 07 22:24:29 2026 +0100"
      },
      "message": "Bump actions/checkout from 4 to 6\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v4...v6)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n  dependency-version: \u00276\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "b8f24076cd33fdd32df93ee76b1386a00fbd0be8",
      "tree": "9c48c46a7699545ed11b4838ef46a14978918260",
      "parents": [
        "2097ed7898b039b53f1fc32cb94728c9de72de13"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Jan 01 06:01:45 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Jan 07 22:24:06 2026 +0100"
      },
      "message": "Bump actions/upload-artifact from 4 to 6\n\nBumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 6.\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/v4...v6)\n\n---\nupdated-dependencies:\n- dependency-name: actions/upload-artifact\n  dependency-version: \u00276\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "230d0a96a2757b978545ebc4b2969a987476b846",
      "tree": "e794dd489316111eb5c031523d8e69c378f1019f",
      "parents": [
        "56f9772a2663c4113de006122a1d096afe107ebd"
      ],
      "author": {
        "name": "Shaoyu Zhang",
        "email": "zsy056@users.noreply.github.com",
        "time": "Wed Nov 12 00:08:50 2025 -0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Dec 10 23:46:25 2025 +0100"
      },
      "message": "Refresh windows docker setup\n"
    }
  ]
}
