)]}'
{
  "log": [
    {
      "commit": "47c5fc007b0e0418dec99061e9bf0787fdab191b",
      "tree": "aca2388baaf51f1cc205fbc432062d8ece309e5e",
      "parents": [
        "100005cf038e670d2e82e08102ddd487042c7ba6"
      ],
      "author": {
        "name": "BosPrimigenious",
        "email": "bosprimigenious@foxmail.com",
        "time": "Sun Nov 08 14:35:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 08 14:35:18 2026 +0800"
      },
      "message": "fix(go-client): log unknown-length request bodies (#894)\n\nCo-authored-by: imbajin \u003cjin@apache.org\u003e\nSigned-off-by: bosprimigenious \u003cbosprimigenious@foxmail.com\u003e"
    },
    {
      "commit": "100005cf038e670d2e82e08102ddd487042c7ba6",
      "tree": "b6fc07ad3fa3c34151f0cef3229db4c2470d0827",
      "parents": [
        "d6cc957e665107b69a709830047541e0a4d530c0"
      ],
      "author": {
        "name": "Himanshu Verma",
        "email": "himnshuverma10152006@gmail.com",
        "time": "Sun Nov 08 10:28:22 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 08 12:58:22 2026 +0800"
      },
      "message": "fix(spark): pick the vertex writer for any data-type case (#898)"
    },
    {
      "commit": "d6cc957e665107b69a709830047541e0a4d530c0",
      "tree": "2ce0e6b0d2f26e66fc58e2cded4855217c02b7b9",
      "parents": [
        "ce8a25bd4072466c2a3fde827f4a6f4cb4a591d8"
      ],
      "author": {
        "name": "Himanshu Verma",
        "email": "himnshuverma10152006@gmail.com",
        "time": "Sun Nov 08 10:28:08 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 08 12:58:08 2026 +0800"
      },
      "message": "fix(tools): keep backup and option errors from being hidden (#897)"
    },
    {
      "commit": "ce8a25bd4072466c2a3fde827f4a6f4cb4a591d8",
      "tree": "3a19df1834e8f97dde155a73631497c1444a1eeb",
      "parents": [
        "5378c5734bbf33471fe616c5c6e7b9fcf28beba7"
      ],
      "author": {
        "name": "Himanshu Verma",
        "email": "himnshuverma10152006@gmail.com",
        "time": "Sun Nov 08 10:26:47 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 08 12:56:47 2026 +0800"
      },
      "message": "fix(hubble): compare edge labels that have no parent label (#899)"
    },
    {
      "commit": "5378c5734bbf33471fe616c5c6e7b9fcf28beba7",
      "tree": "23faf8835e3c9b2be419ef74560a89174a581084",
      "parents": [
        "61cbffdf17f6f39202d868ee04b0d9ca50f79640"
      ],
      "author": {
        "name": "Himanshu Verma",
        "email": "himnshuverma10152006@gmail.com",
        "time": "Sun Nov 08 10:02:36 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 08 12:32:36 2026 +0800"
      },
      "message": "fix(loader): keep time_zone on retry and read graph progress back (#896)"
    },
    {
      "commit": "61cbffdf17f6f39202d868ee04b0d9ca50f79640",
      "tree": "ffea913d14e18e430e207eee89f963c4f08b0885",
      "parents": [
        "0be65bffbd7ff1ba3d9564e3561c7220469fddc5"
      ],
      "author": {
        "name": "Himanshu Verma",
        "email": "himnshuverma10152006@gmail.com",
        "time": "Sun Nov 08 10:01:49 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 08 12:31:49 2026 +0800"
      },
      "message": "fix(client): stop toString and error-path crashes, add unit tests (#895)"
    },
    {
      "commit": "0be65bffbd7ff1ba3d9564e3561c7220469fddc5",
      "tree": "021786e818002f8482e7383e6d7dc960d2b21ef7",
      "parents": [
        "ad01469d6a0bfa64febf4096fe0320c9fd2541f8"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Wed Nov 04 05:10:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 04 05:10:30 2026 +0800"
      },
      "message": "refactor: enhance Vermeer concurrent OLAP preview (#892)"
    },
    {
      "commit": "ad01469d6a0bfa64febf4096fe0320c9fd2541f8",
      "tree": "b9800f57a699686019f705edbf165b3b8fb4120f",
      "parents": [
        "e51845268b64d2daf1a361f6741fc81a1cc63f54"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Nov 03 16:52:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 03 16:52:26 2026 +0800"
      },
      "message": "fix(hubble): collect PD cluster statistics (#887)"
    },
    {
      "commit": "e51845268b64d2daf1a361f6741fc81a1cc63f54",
      "tree": "c4563838424490037e5c0f3cb69adc30e3058a2a",
      "parents": [
        "5fe838b6a6bb416ce984bcd25cf3c02e5b558ff0"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Nov 03 16:46:24 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 03 16:46:24 2026 +0800"
      },
      "message": "fix(hubble): collect trusted PD member metrics (#888)"
    },
    {
      "commit": "5fe838b6a6bb416ce984bcd25cf3c02e5b558ff0",
      "tree": "6a24ab1975b5bf5b7447baf75bf90f1b40562354",
      "parents": [
        "61278e1fd7fb063c8f855fc4091aeba18f8cee20"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Nov 03 16:45:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 03 16:45:23 2026 +0800"
      },
      "message": "feat(hubble): expose remaining Vermeer algorithms (#890)"
    },
    {
      "commit": "61278e1fd7fb063c8f855fc4091aeba18f8cee20",
      "tree": "75157e5d14b83a03b3585c256ec54b84072609e2",
      "parents": [
        "415a3b27e7f8a2f72c2650db5856add3161dd0b3"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Nov 03 16:44:06 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 03 16:44:06 2026 +0800"
      },
      "message": "fix(hubble): clarify asynchronous task identity (#889)"
    },
    {
      "commit": "415a3b27e7f8a2f72c2650db5856add3161dd0b3",
      "tree": "bae40af7db9a783154ca483135d649abe8e50743",
      "parents": [
        "07f4e62d6f8ddbc30cead3ac860795fc814c7a54"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Nov 03 16:43:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 03 16:43:34 2026 +0800"
      },
      "message": "feat(hubble): preview OLAP result samples (#891)"
    },
    {
      "commit": "07f4e62d6f8ddbc30cead3ac860795fc814c7a54",
      "tree": "7f14e7508fb786b2e80f1f12b506a70f4a5fd198",
      "parents": [
        "7e1683f5d0b01990d9842873bdbcb3ae9c25402d"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Nov 03 16:40:53 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 03 16:40:53 2026 +0800"
      },
      "message": "fix(hubble): improve settings and import guidance (#886)"
    },
    {
      "commit": "7e1683f5d0b01990d9842873bdbcb3ae9c25402d",
      "tree": "e553b60e61d050e3a7b78b41e12d3da25fd126b5",
      "parents": [
        "0ece0d576fd2b47897ce42368c4960fa37edf661"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Nov 01 01:51:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 01 01:51:02 2026 +0800"
      },
      "message": "fix(hubble): clone graph Schema through explicit Server endpoint (#870)"
    },
    {
      "commit": "0ece0d576fd2b47897ce42368c4960fa37edf661",
      "tree": "548fb60cdfe3fa364c13ac6145f82b0703ffa8dd",
      "parents": [
        "3aab9c9509450eca3986b6f075b9db4c0e24ded3"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Nov 01 01:50:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 01 01:50:02 2026 +0800"
      },
      "message": "fix(hubble): avoid deleting existing graph data on import failure (#880)"
    },
    {
      "commit": "3aab9c9509450eca3986b6f075b9db4c0e24ded3",
      "tree": "263d424e23fcb6f901e8ac8afc7fa61f73db0213",
      "parents": [
        "72d0b226ec3773d03b4818548deee6b7ebc5295f"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Nov 01 01:48:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 01 01:48:03 2026 +0800"
      },
      "message": "fix(hubble): improve graph and schema cards (#874)"
    },
    {
      "commit": "72d0b226ec3773d03b4818548deee6b7ebc5295f",
      "tree": "0b9471630df832b5777338a83626a8c5fb866c7a",
      "parents": [
        "57df03d740d65cd6072fda58c390734c602971b2"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Nov 01 01:47:35 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 01 01:47:35 2026 +0800"
      },
      "message": "fix(hubble): clarify account settings and help links (#872)"
    },
    {
      "commit": "57df03d740d65cd6072fda58c390734c602971b2",
      "tree": "03199538e5038d5b556074804bee99bb5129f685",
      "parents": [
        "6c2ec4dcca1a7c73f068c0abba99fe9f46316e0e"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Nov 01 01:47:22 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 01 01:47:22 2026 +0800"
      },
      "message": "fix(hubble): retain PD endpoint diagnostics with data faults (#876)"
    },
    {
      "commit": "6c2ec4dcca1a7c73f068c0abba99fe9f46316e0e",
      "tree": "410386a39a4c4bdd75f51622997cf5f526247f31",
      "parents": [
        "e347af73c77ef63fd22d1846060a457595573c12"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Nov 01 01:47:10 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 01 01:47:10 2026 +0800"
      },
      "message": "fix(hubble): route and confirm canvas JSON imports (#882)"
    },
    {
      "commit": "e347af73c77ef63fd22d1846060a457595573c12",
      "tree": "49439a94d06b32722a5805374886f3bfce3c8608",
      "parents": [
        "4c60f4ecb6e3bdb778e6439fd468e6478db625b4"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Nov 01 01:44:40 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 01 01:44:40 2026 +0800"
      },
      "message": "feat(hubble): support Vermeer personalized PageRank (#871)"
    },
    {
      "commit": "4c60f4ecb6e3bdb778e6439fd468e6478db625b4",
      "tree": "517058fc951ab93093eda91f778ea23fab4ee14c",
      "parents": [
        "f0f652fbb951bd1e9c7b1c1def3f1bd2e22ebf83"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Nov 01 01:38:22 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 01 01:38:22 2026 +0800"
      },
      "message": "fix(hubble): declare component runtime dependency (#885)"
    },
    {
      "commit": "f0f652fbb951bd1e9c7b1c1def3f1bd2e22ebf83",
      "tree": "65c09ef5066fa5232f0e108acd8480758c625fc6",
      "parents": [
        "77b31c14536b58746ee8e59b96e68c851897a6eb"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Nov 01 01:37:55 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 01 01:37:55 2026 +0800"
      },
      "message": "feat(hubble): provide a schema-aware Text2GQL example (#873)"
    },
    {
      "commit": "77b31c14536b58746ee8e59b96e68c851897a6eb",
      "tree": "46f289c692240473a98188eca43fc3ee52f8c88b",
      "parents": [
        "42bd39e534ffe77d40c9fc5269fa624b55c3315c"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Nov 01 01:37:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 01 01:37:26 2026 +0800"
      },
      "message": "fix(hubble): clarify import progress and demo guidance (#877)"
    },
    {
      "commit": "42bd39e534ffe77d40c9fc5269fa624b55c3315c",
      "tree": "439523e9db032ce2d8b18858c33a5e7e462a2380",
      "parents": [
        "6654b21f8642a2fb8f3820b325fd3100cb199069"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Nov 01 01:37:10 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 01 01:37:10 2026 +0800"
      },
      "message": "fix(hubble): correct algorithm catalog and K-out results (#878)"
    },
    {
      "commit": "6654b21f8642a2fb8f3820b325fd3100cb199069",
      "tree": "69440cd9229792e05eef31fb02c96aec77ffc913",
      "parents": [
        "7d97d01aa7791b39629c635d02a0128131d6ae37"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Nov 01 01:37:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 01 01:37:00 2026 +0800"
      },
      "message": "fix(hubble): separate Vermeer in cluster overview (#879)"
    },
    {
      "commit": "7d97d01aa7791b39629c635d02a0128131d6ae37",
      "tree": "439d05f84fc9d0ecb5f7bfea15e0492cf0b88841",
      "parents": [
        "964fa10071efc152d6cd8115ae4b0101407e9d21"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Nov 01 01:36:41 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 01 01:36:41 2026 +0800"
      },
      "message": "fix(hubble): prevent query history overflow and restore copy (#875)"
    },
    {
      "commit": "964fa10071efc152d6cd8115ae4b0101407e9d21",
      "tree": "5a46449bc32e3558ec3e87ae21fd9862aae5f557",
      "parents": [
        "7155472a4e2f8eb54f9a3bc346da739443b59e15"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Nov 01 01:35:47 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 01 01:35:47 2026 +0800"
      },
      "message": "fix(hubble): make node search submission visible (#881)"
    },
    {
      "commit": "7155472a4e2f8eb54f9a3bc346da739443b59e15",
      "tree": "3c22782e9cdfa7483c89be73e21d1945a90b6d87",
      "parents": [
        "8c1bd3098737ce9d84f47e58c2e6a68d409c7850"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Nov 01 01:35:04 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 01 01:35:04 2026 +0800"
      },
      "message": "fix(hubble): preserve zero-limit guide snapshot statistics (#883)"
    },
    {
      "commit": "8c1bd3098737ce9d84f47e58c2e6a68d409c7850",
      "tree": "4c27c3fd0b3ac8fb5d85397d469db6f5217587e2",
      "parents": [
        "2f8d01b267fcec61543617fcc94853f9d0fb5b5c"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Nov 01 01:26:07 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 01 01:26:07 2026 +0800"
      },
      "message": "fix(hubble): clarify operations process metrics (#884)"
    },
    {
      "commit": "2f8d01b267fcec61543617fcc94853f9d0fb5b5c",
      "tree": "edd4e11bed4d486a10684d9c854d2173a909047a",
      "parents": [
        "85b6627635528f6c3fc764c8e08ba36dad3831bb"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Fri Oct 30 04:36:50 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 30 04:36:50 2026 +0800"
      },
      "message": "refactor(hubble): separate OLTP and OLAP algorithm workflows (#861)\n\nseparate OLTP exploration from OLAP compute and keep graph-scoped Vermeer loading and guidance in the OLAP workflow."
    },
    {
      "commit": "85b6627635528f6c3fc764c8e08ba36dad3831bb",
      "tree": "784e35cf42748801b9380795bd40ab038444bd2f",
      "parents": [
        "57b5e4ebc0364e8a4aa3903a2107a11d13c32501"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Fri Oct 30 03:51:15 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 30 03:51:15 2026 +0800"
      },
      "message": "refactor(hubble): correct profile roles and config log timeout (#860)"
    },
    {
      "commit": "57b5e4ebc0364e8a4aa3903a2107a11d13c32501",
      "tree": "2263729f6dd948d5efaffddb94c811f2842f898e",
      "parents": [
        "669c8818c7afc86a513ef697d3f29b335c0f15a1"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Fri Oct 30 03:41:06 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 30 03:41:06 2026 +0800"
      },
      "message": "feat(hubble): show Vermeer cluster health (#868)\n\nOperations exposed only the Server/PD/Store topology → an independent Vermeer summary opens a dedicated Master/Worker view while retaining graph-cluster navigation and status.\n\nA bounded, authenticated backend collector adds compute readiness, node details and process CPU/RSS coverage. Service credentials remain backend-only; unavailable or stale telemetry must remain distinguishable from zero usage and current readiness."
    },
    {
      "commit": "669c8818c7afc86a513ef697d3f29b335c0f15a1",
      "tree": "ebc9027bda9e2e2361beeec4a04b168a701e5077",
      "parents": [
        "69b52d2ac11edca6912d454125dc742be9ecec94"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Fri Oct 30 00:42:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 30 00:42:31 2026 +0800"
      },
      "message": "fix(hubble): handle schema defaults and timeouts (#859)\n\nApply defaults while preserving explicit styles and false; map wrapped transport timeouts to a timeout error with a concise localized message and asynchronous-job guidance. Add focused controller/service regressions and an HTTP API guide."
    },
    {
      "commit": "69b52d2ac11edca6912d454125dc742be9ecec94",
      "tree": "b06eea8adfd96f79329a042c66bcff089cc4c25c",
      "parents": [
        "862c8b6ebd464676d944de78ab1eddbc7f3fd704"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Fri Oct 30 00:39:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 30 00:39:30 2026 +0800"
      },
      "message": "fix(hubble): collect graph snapshots and explain unavailable results (#862)"
    },
    {
      "commit": "862c8b6ebd464676d944de78ab1eddbc7f3fd704",
      "tree": "c795a4ad95b0a4e80256dc0ca86b19959fe69069",
      "parents": [
        "95dd61704ecd49beab19c36e358f83bd7a205aec"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Thu Oct 29 22:19:52 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 29 22:19:52 2026 +0800"
      },
      "message": "test(hubble): gate core UI flows with reusable verification (#867)"
    },
    {
      "commit": "95dd61704ecd49beab19c36e358f83bd7a205aec",
      "tree": "ef56b3fc3ec6d27fae33e2cd83baba35bb3e2603",
      "parents": [
        "4d250fa114704ac4131c8c6bf15a0dd67f129645"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Thu Oct 29 22:19:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 29 22:19:18 2026 +0800"
      },
      "message": "fix(hubble): restore original Schema examples and previews (#864)"
    },
    {
      "commit": "4d250fa114704ac4131c8c6bf15a0dd67f129645",
      "tree": "fe2481f437af9ca7da53f50dbaee2e643db0f88f",
      "parents": [
        "431987bd45113220fdd08e7272075ffc1ccd5b8a"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Thu Oct 29 22:10:50 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 29 22:10:50 2026 +0800"
      },
      "message": "fix(hubble): use compact Raft metrics and clarify monitoring recovery (#866)"
    },
    {
      "commit": "431987bd45113220fdd08e7272075ffc1ccd5b8a",
      "tree": "78d9653a7be7bca2d1fc6a7b7dd4bd722d1174cc",
      "parents": [
        "7758934ff40d388abcd48bb51a1a6ac37d82e179"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Thu Oct 29 22:09:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 29 22:09:26 2026 +0800"
      },
      "message": "fix(hubble): show canvas failures once above graph overlays (#865)\n\nKeep renderer errors in the canvas boundary, preserve separate business errors, and make the inline alert visible and scrollable."
    },
    {
      "commit": "7758934ff40d388abcd48bb51a1a6ac37d82e179",
      "tree": "f5a2788ad5cd086b7896bfc52026e9e26a40c005",
      "parents": [
        "e8476e765a5ec0649e5edd7b2f710d554a179f40"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Thu Oct 29 22:04:50 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 29 22:04:50 2026 +0800"
      },
      "message": "fix(hubble): align GraphSpace resources and default storage to 256 GB (#863)\n\nUse a 256 GB omitted-storage default across frontend/backend and improve responsive resource controls while preserving explicitly configured existing quotas."
    },
    {
      "commit": "e8476e765a5ec0649e5edd7b2f710d554a179f40",
      "tree": "7a8490e3d3093232336b39a5a8b0daad3471b023",
      "parents": [
        "8b80b0c09ebab13d679c19d3e808be929969e092"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Oct 27 23:50:28 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 23:50:28 2026 +0800"
      },
      "message": "fix(loader): prevent concurrent file read failures (#858)"
    },
    {
      "commit": "8b80b0c09ebab13d679c19d3e808be929969e092",
      "tree": "7f97dbda6cbde44fb9acfe71337caa0ea3d5ee98",
      "parents": [
        "823c890a490381e1f2f3302bda7e73c0b0e6a496"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Oct 27 11:22:55 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 11:22:55 2026 +0800"
      },
      "message": "fix(hubble): preserve schema-typed vertex update IDs (#857)"
    },
    {
      "commit": "823c890a490381e1f2f3302bda7e73c0b0e6a496",
      "tree": "f9f482e466e4bb6ed0a97426bd0962a0f7e848c4",
      "parents": [
        "453eed31cf1fc077e92ae240e30d29ced14910d0"
      ],
      "author": {
        "name": "Arshil",
        "email": "arshilkxwork@gmail.com",
        "time": "Tue Oct 27 07:22:20 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 09:52:20 2026 +0800"
      },
      "message": "test(client): run SameNeighborsBatchApiTest in the API suite (#851)"
    },
    {
      "commit": "453eed31cf1fc077e92ae240e30d29ced14910d0",
      "tree": "701c22089b8a575fef6717f609ee050ff867710d",
      "parents": [
        "b34007e24e6ad7f09f75a0e7b756dd92fc75a441"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Oct 27 09:51:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 09:51:30 2026 +0800"
      },
      "message": "fix(hubble): explain unverified connections before sign-in (#853)"
    },
    {
      "commit": "b34007e24e6ad7f09f75a0e7b756dd92fc75a441",
      "tree": "5018402f9023f250552a045630e58a6c59a3be85",
      "parents": [
        "6a4834bb4d39dbeaf7ef4decdb75d13d1d9db05c"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Mon Oct 26 00:41:39 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 00:41:39 2026 +0800"
      },
      "message": "fix(hubble): guard delayed minimap work after disposal (#854)"
    },
    {
      "commit": "6a4834bb4d39dbeaf7ef4decdb75d13d1d9db05c",
      "tree": "073f499529d8f163b8184c722b8fb9c7f70101bc",
      "parents": [
        "a0ea918b64347d13b9bf6fb01112a48a305a6922"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Mon Oct 26 00:40:56 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 00:40:56 2026 +0800"
      },
      "message": "fix(hubble): give unstyled vertex labels stable default colors (#855)"
    },
    {
      "commit": "a0ea918b64347d13b9bf6fb01112a48a305a6922",
      "tree": "ab769805e4dfc84e35e07799ea8ddd0ae991fa7b",
      "parents": [
        "4ae343c7696c4495e1e14a6b9f08d73925611b54"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Mon Oct 26 00:39:55 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 00:39:55 2026 +0800"
      },
      "message": "fix(hubble): clarify Vermeer failures and unavailable results (#856)"
    },
    {
      "commit": "4ae343c7696c4495e1e14a6b9f08d73925611b54",
      "tree": "8d2026c694a1e282ab8e5942f7d5611d5e82f578",
      "parents": [
        "8eb5de9009d494842f6b8ee58b83e1f1248c8aff"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Mon Oct 26 00:38:53 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 00:38:53 2026 +0800"
      },
      "message": "fix(hubble): clear completed and stale schema selections (#852)"
    },
    {
      "commit": "8eb5de9009d494842f6b8ee58b83e1f1248c8aff",
      "tree": "442d97033998748afd0973c1b1aa6a4e1d483290",
      "parents": [
        "7c634911b81246357c29f178bd2068953a54673a"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Oct 25 17:07:22 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 17:07:22 2026 +0800"
      },
      "message": "fix(hubble): stabilize pending states and browser checks (#841)"
    },
    {
      "commit": "7c634911b81246357c29f178bd2068953a54673a",
      "tree": "790e2cfbc2079972b9ce28b44d7576f60f9a947c",
      "parents": [
        "254f0b2a6c6837c1b063080777446f790f720c9e"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Oct 25 16:43:21 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 16:43:21 2026 +0800"
      },
      "message": "fix(hubble): keep failed schema deletions retryable (#847)"
    },
    {
      "commit": "254f0b2a6c6837c1b063080777446f790f720c9e",
      "tree": "f42382a63cc3bc01ab31557e0ccce7e69b6acd13",
      "parents": [
        "b264ccea63dcdb1924a0d0199a1f791574b5d495"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Oct 25 15:17:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 15:17:31 2026 +0800"
      },
      "message": "fix(hubble): recover GraphSpace edits and navigation reliably (#844)"
    },
    {
      "commit": "b264ccea63dcdb1924a0d0199a1f791574b5d495",
      "tree": "66d59b346684fd5d0e52a469e164376ae325b212",
      "parents": [
        "cfaddcad9d653e2176efa7723fcec821ac2fc63a"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Oct 25 15:15:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 15:15:23 2026 +0800"
      },
      "message": "feat(hubble): prefer Vermeer for OLAP and make Computer opt-in (#848)"
    },
    {
      "commit": "cfaddcad9d653e2176efa7723fcec821ac2fc63a",
      "tree": "46dda40878791d7982b6c82fba3b4b2413a53de1",
      "parents": [
        "3a2f6ed4c17af66baf65d0a8a303527e099c481b"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Oct 25 15:14:22 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 15:14:22 2026 +0800"
      },
      "message": "refactor(hubble): make operations collection failures actionable (#849)"
    },
    {
      "commit": "3a2f6ed4c17af66baf65d0a8a303527e099c481b",
      "tree": "fdb5fc63b80f0715ed4094a00e0e4970f890104d",
      "parents": [
        "059c744a044cf3ef24066d10fa90f969e5d59cba"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Oct 25 14:40:01 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 14:40:01 2026 +0800"
      },
      "message": "fix(hubble): keep submitted tasks visible and clarify query (#843)"
    },
    {
      "commit": "059c744a044cf3ef24066d10fa90f969e5d59cba",
      "tree": "1433569acd2c1beacda57a465471f7b65145901d",
      "parents": [
        "082448b2a206924e696bab649dc1b04484b0637a"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Oct 25 14:37:15 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 14:37:15 2026 +0800"
      },
      "message": "fix(tools): fail migration on backup data-page errors (#850)"
    },
    {
      "commit": "082448b2a206924e696bab649dc1b04484b0637a",
      "tree": "6c3fc4b97ab75b7c5db4f129a3a97ce9d19840b7",
      "parents": [
        "8dad598a81331d57cedec97461a2f9d9570e3cbc"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Oct 25 14:32:51 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 14:32:51 2026 +0800"
      },
      "message": "fix(hubble): distinguish service readiness from registration (#845)"
    },
    {
      "commit": "8dad598a81331d57cedec97461a2f9d9570e3cbc",
      "tree": "f989e38ce412f18830864ca0a9ccc7d7efce58f5",
      "parents": [
        "dc42126f481f254aee238cf63e57bbb659da36e7"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sat Oct 24 01:37:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 01:37:00 2026 +0800"
      },
      "message": "fix(hubble): keep the graph minimap within its resized canvas (#840)"
    },
    {
      "commit": "dc42126f481f254aee238cf63e57bbb659da36e7",
      "tree": "f989e38ce412f18830864ca0a9ccc7d7efce58f5",
      "parents": [
        "17985a2b708145e7326cacb058c2c7eb54300dfe"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sat Oct 24 01:34:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 01:34:03 2026 +0800"
      },
      "message": "perf(hubble): discover PD members without scanning partitions (#842)"
    },
    {
      "commit": "17985a2b708145e7326cacb058c2c7eb54300dfe",
      "tree": "26649a0dcceff237eab36e4a6bcb699ef6d530d6",
      "parents": [
        "eef5afd29762f394667494b726afdce1b938214d"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sat Oct 24 01:15:55 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 01:15:55 2026 +0800"
      },
      "message": "fix(hubble): explain Vermeer load service token permission (#846)"
    },
    {
      "commit": "eef5afd29762f394667494b726afdce1b938214d",
      "tree": "a08a94776add39a2bd956b6a64c10bb2c85601c8",
      "parents": [
        "ff7270f94721bb469e63433fd54c2359ea7f8882"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Fri Oct 23 15:26:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 15:26:02 2026 +0800"
      },
      "message": "perf(hubble): bound interactive query and property previews (#833)\n\nKeep large interactive Gremlin results and properties from overwhelming the query page, while preserving existing aggregation and asynchronous execution semantics."
    },
    {
      "commit": "ff7270f94721bb469e63433fd54c2359ea7f8882",
      "tree": "f146a2038764100b2f0b4505dfcca909cc7f1468",
      "parents": [
        "45a5c0c761df4008495fc78560da625d02732309"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Fri Oct 23 15:25:25 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 15:25:25 2026 +0800"
      },
      "message": "feat(hubble): integrate native Vermeer OLAP and task lifecycle (#836)\n\nHubble could not complete the native Go Vermeer workflow because its load, task and result contracts differed from the Server proxy. An opt-in vermeer.url adapter now supports load/reload, nine compute forms, task status/filtering/cancel, graph cleanup and cursor-paged results. Native tasks use negative Hubble IDs; Server task IDs retain their meaning. An empty URL preserves the existing Dashboard/Server path. Native loading requires PD/Store mode; standalone mode stays disabled. Readiness uses a credential-scoped authenticated boolean endpoint rather than the global registered-worker list. Invalid native configuration retains Server tasks with a warning.\n\nAccepted loads retain their task ID per graph, including across graph switches, so queued work stays Loading until it finishes. Temporarily unavailable permitted integrations recover automatically as services start, then refresh graph metadata. Outages retain Server tasks with a retryable warning. Results preserve values across page boundaries and stop at an exactly full final page. Unsupported native history deletion is hidden.\n\nAuthenticated direct access, including source-deletion cleanup, requires a super administrator because raw Store scans bypass Server label permissions. Anonymous access follows the Server mode. A protected deployment file supplies the separate Vermeer service token; user credentials and caller-supplied targets/output credentials are not persisted. Source deletion checks privately for a Vermeer copy; an existing copy requires authorized cleanup, and failures stop source deletion. Without a copy, Server\u0027s original deletion permissions apply. Standalone mode skips native cleanup entirely, and invalid drop confirmations are rejected before cleanup or deletion side effects."
    },
    {
      "commit": "45a5c0c761df4008495fc78560da625d02732309",
      "tree": "f2c65c9664f3aa1cf7b20624dfab51b5095a08ea",
      "parents": [
        "8f9f7118f4ddf584b6a9e0b19b8d02f0cb1caeda"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Fri Oct 23 12:19:05 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 12:19:05 2026 +0800"
      },
      "message": "refactor(hubble): simplify Java 17 maintenance (#839)\n\nHubble already targets Java 17, but legacy date handling, duplicated file previews and mutable empty query results still cause avoidable failures. Long imports can also occupy every core worker and delay progress updates and cleanup. This cleanup fixes those paths while retaining the existing Server compatibility boundaries and metadata format."
    },
    {
      "commit": "8f9f7118f4ddf584b6a9e0b19b8d02f0cb1caeda",
      "tree": "4f37bcde038faabb770827d285fe0a18a975b469",
      "parents": [
        "6a7ab59184e837707c2a7b4bed205bb6b423a4f2"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Fri Oct 23 03:32:53 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 03:32:53 2026 +0800"
      },
      "message": "fix(hubble): align health interpretation with PD and Server APIs (#838)\n\nPD can report Cluster_OK while partitions have PState_Fault, and Server /metrics/backend can return HTTP 200 with per-graph exceptions. Hubble previously treated both as healthy collection. This change shows PD cluster/data health separately from process status and marks backend metric failures with safe counts and actionable bilingual explanations. Cached metric values retain current failure counts; failed PD refreshes retain the last observed raw states with a stale marker."
    },
    {
      "commit": "6a7ab59184e837707c2a7b4bed205bb6b423a4f2",
      "tree": "b54c303c412114f16abdd9cf926cc51deddb6adf",
      "parents": [
        "1d8375787f70cd723e957b8aac1dacaa47364fdd"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Fri Oct 23 03:21:49 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 03:21:49 2026 +0800"
      },
      "message": "refactor(hubble): expose cluster collection diagnostics (#837)\n\nCluster alerts could lead to an empty or filtered node list without explaining the failure, and a Store source could show a green UP badge alongside partial or failed collection. This change links alerts to source diagnostics independent of table pagination or filters, including when discovery produces no nodes, showing the failed request path, HTTP status, bounded response size/limit, freshness, last success and affected metric groups."
    },
    {
      "commit": "1d8375787f70cd723e957b8aac1dacaa47364fdd",
      "tree": "0b877e978a7946051e756a0c8d33dd5829646292",
      "parents": [
        "fad24247504b8f2d521c2ac313c43802b941c499"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Fri Oct 23 02:57:56 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 02:57:56 2026 +0800"
      },
      "message": "perf(hubble): render metadata before bounded graph statistics (#832)\n\nRender graphspace/graph metadata without waiting for counts or schema scans. Page loads must not trigger full V/E statistics, and missing snapshots must not look like empty graphs."
    },
    {
      "commit": "fad24247504b8f2d521c2ac313c43802b941c499",
      "tree": "8d5e08bfa7a4bbf8d17b311c4d141c1ef90ccbef",
      "parents": [
        "d655b0372dfe189ebeff51ea885b3386a1bc4a2c"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Fri Oct 23 02:15:47 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 02:15:47 2026 +0800"
      },
      "message": "fix(hubble): report graph-space usage and limits (#834)\n\nGraph-space usage below one GB appears as zero, and Hubble labels any quota above 99999 as unlimited. Creation defaults also differ between the form, backend, and Server."
    },
    {
      "commit": "d655b0372dfe189ebeff51ea885b3386a1bc4a2c",
      "tree": "b0188d4e351350ceddccf3ee249bce99ff3a99d2",
      "parents": [
        "5939415f7015777c2e5e1f6b160bf2195cdaa551"
      ],
      "author": {
        "name": "Arshil",
        "email": "arshilkxwork@gmail.com",
        "time": "Wed Oct 21 18:35:54 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 21:05:54 2026 +0800"
      },
      "message": "fix(build): sign and attach release artifacts once (#828)\n\nThe check only asserted that Tools\u0027 source execution includes\ntest-jar-no-fork, so a second execution producing test sources would\npass. Count the source-plugin executions with a test-jar goal: one for\nTools, none elsewhere, each with a single test-jar goal.\n\n---------\n\nCo-authored-by: imbajin \u003cjin@apache.org\u003e"
    },
    {
      "commit": "5939415f7015777c2e5e1f6b160bf2195cdaa551",
      "tree": "05ddd556b2d95f0dcf92b82666895f4e429da484",
      "parents": [
        "431b45b3434880c94fc95512aedefc0dbd503853"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Oct 20 23:37:14 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 23:37:14 2026 +0800"
      },
      "message": "feat(hubble): migrate to G6 5 and modernize builds (#826)\n\nReplace Graphin/G6 4 and the CRA build path with a shared G6 5.1.1 module and maintained frontend tooling."
    },
    {
      "commit": "431b45b3434880c94fc95512aedefc0dbd503853",
      "tree": "05edf1e5b6354d91b059b1e7bcaecc9c9a9d28b8",
      "parents": [
        "411aca3389dd610d9a4f3b3595f06a53ee67e2ff"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Mon Oct 19 17:17:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 17:17:26 2026 +0800"
      },
      "message": "fix(hubble): prevent blank pages over HTTP (#827)\n\n- pin Three.js and unify the direct and transitive dependency\n- check real insecure HTTP startup in the browser acceptance gate\n- preserve skipped HTTP coverage in acceptance reports"
    },
    {
      "commit": "411aca3389dd610d9a4f3b3595f06a53ee67e2ff",
      "tree": "5f73559baa564943e56c76756d93d8528d6ba5f8",
      "parents": [
        "3d6580fc08e13f1dc9c4db4b8f41c35235a0cc4d"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Oct 18 22:20:43 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 22:20:43 2026 +0800"
      },
      "message": "fix(hubble): finish interrupted pool cleanup (#825)\n\n- isolate metadata pool shutdown from caller interrupts\n- await shared cleanup for concurrent and repeated close\n- retain physical connection checks and add regressions"
    },
    {
      "commit": "3d6580fc08e13f1dc9c4db4b8f41c35235a0cc4d",
      "tree": "9fdd11a4106dbb28e59e44b9dd14727119dc8426",
      "parents": [
        "09f9aa1cc0b6d59f5ab67326c008b30cc7815fc8"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Oct 18 21:16:33 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 21:16:33 2026 +0800"
      },
      "message": "feat(hubble): support text2gql queries (#824)\n\nThe disabled Text2GQL preview becomes a working natural-language query workspace. Ask a question about the selected graph, inspect or edit the generated Gremlin/Cypher, then run it immediately or submit a background task."
    },
    {
      "commit": "09f9aa1cc0b6d59f5ab67326c008b30cc7815fc8",
      "tree": "a274475e5bc998d09b75bce970513eaa30cfcfe9",
      "parents": [
        "19aa273ff349f1795bec101238b36622a9ec7de1"
      ],
      "author": {
        "name": "KAI",
        "email": "himnshuverma10152006@gmail.com",
        "time": "Sat Oct 17 15:26:46 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 17:56:46 2026 +0800"
      },
      "message": "test: improve coverage across toolchain modules before 1.8.0 (#805)\n\nMore test coverage across the toolchain modules before the 1.8.0 release, as requested for the Java 17 migration. This PR only adds or registers tests. It changes no production code, dependencies, CI workflows or documentation.\n\nEach module is a separate commit, so the PR can be reviewed one commit at a time."
    },
    {
      "commit": "19aa273ff349f1795bec101238b36622a9ec7de1",
      "tree": "fc47698351c4c04a21c2ebe862307a7c369eb0a6",
      "parents": [
        "29575968a3ef0df5df66d20198db8330de0081a4"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sat Oct 17 13:04:05 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 13:04:05 2026 +0800"
      },
      "message": "chore(ci): verify Hubble query smoke results (#823)"
    },
    {
      "commit": "29575968a3ef0df5df66d20198db8330de0081a4",
      "tree": "97a810b9d61870dfc879fc0b04eec8e942d7b20d",
      "parents": [
        "50b1e193628966a6fb02621b7a12ee03e548f512"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sat Oct 17 00:34:06 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 00:34:06 2026 +0800"
      },
      "message": "refactor(hubble): close the async executor (#818)\n\nHubble\u0027s manually initialized async pool could outlive context close. Managing it with Spring\u0027s default policy can instead interrupt active imports or discard queued imports before Hubble pauses them."
    },
    {
      "commit": "50b1e193628966a6fb02621b7a12ee03e548f512",
      "tree": "cb69f64b8d87fd37647e4de3bcbecd322fa65148",
      "parents": [
        "f993f2db30c3683b9de57fc0a34233510f7b6d52"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sat Oct 17 00:23:14 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 00:23:14 2026 +0800"
      },
      "message": "refactor(loader): guard concurrent graph loading (#815)\n\nWhen two Loader processes import one graph on the same live Server, the first to finish can reset LOADING while the other still imports. Use the paired Server ownership API so an ordinary import releases only its own handle after its workers stop."
    },
    {
      "commit": "f993f2db30c3683b9de57fc0a34233510f7b6d52",
      "tree": "b8b4a45fbe9fc0e22e3f18863e1abe497d566afe",
      "parents": [
        "b1e3757d91993e2fdae9fcab2bcb8e6a19bb08ac"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Fri Oct 16 22:46:17 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 22:46:17 2026 +0800"
      },
      "message": "feat(hubble): close loaders on task exit (#814)\n\nHubble could leave a Loader open after task exit or failed preparation/dispatch. Closing it also exposed an unsafe checkpoint: parsed rows could be skipped by Resume even when they had never been inserted."
    },
    {
      "commit": "b1e3757d91993e2fdae9fcab2bcb8e6a19bb08ac",
      "tree": "a0c8495a065304405c88ebeb5a7fd69c7c29976e",
      "parents": [
        "f58181af873cb3fb37028e4bfdbd78e0bd9b0719"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Fri Oct 16 01:16:22 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 01:16:22 2026 +0800"
      },
      "message": "fix(ci): include CDC launcher helper (#822)\n\nThe CDC recovery fixture copied only the launcher, so its shared parameter helper was missing and validation stopped before Flink submission. Copy both existing scripts into the fixture bin directory. This follows ASF #819 and changes only the test fixture and CI selection: helper-only edits now run both existing Spark and Flink CDC checks."
    },
    {
      "commit": "f58181af873cb3fb37028e4bfdbd78e0bd9b0719",
      "tree": "3baaab8ce2ae60309deb5c36f36fd280fe74b7b4",
      "parents": [
        "2f1b96a47b69f87948d00d2842e65908d3a93462"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Thu Oct 15 03:39:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 03:39:11 2026 +0800"
      },
      "message": "fix(ci): review Go dependency manifest changes (#820)\n\n- select go.mod and go.sum as dependency inputs\n- route manifest PRs through existing dependency review\n- retain Go runtime scope and configured scan languages\n- document the selected dependency audit"
    },
    {
      "commit": "2f1b96a47b69f87948d00d2842e65908d3a93462",
      "tree": "b211f68e222b4e20dfe66b7f17ab3b058c752dda",
      "parents": [
        "2291342bacbbc8efb10f03296d9e2e122093eaa8"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Thu Oct 15 03:14:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 03:14:26 2026 +0800"
      },
      "message": "fix(loader): reject missing values before Flink (#819)\n\n- reuse the existing option parser before CDC submission\n- preserve engine and Loader argument boundaries\n- cover trailing missing values and document rejection"
    },
    {
      "commit": "2291342bacbbc8efb10f03296d9e2e122093eaa8",
      "tree": "adddc22a6c4a1de163974a1907dede3ef2b0e321",
      "parents": [
        "bcd5ce21533db745087d2bc7e8cd1f9969a21756"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Wed Oct 14 16:45:59 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 16:45:59 2026 +0800"
      },
      "message": "refactor(ci): scope toolchain validation (#816)\n\nDocumentation-only PRs currently allocate several runners, routine edits also start both Server baselines and broad specialty workflows, and master merges repeat the same validation. A report-only job can keep finished tests waiting in the shared queue."
    },
    {
      "commit": "bcd5ce21533db745087d2bc7e8cd1f9969a21756",
      "tree": "6a1d4d2e89b18b8624b7267ec673d32385319042",
      "parents": [
        "8e6ed84777387a586f13d713568b11a654d8d1fa"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Wed Oct 14 13:26:44 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 13:26:44 2026 +0800"
      },
      "message": "fix(client): initialize batch update strategies (#817)\n\nInitialize strategy maps on the first singular setter call.\nPreserve accumulated and overwritten strategy entries.\nKeep plural replacement and defensive-copy semantics.\nCover vertex and edge builder regressions."
    },
    {
      "commit": "8e6ed84777387a586f13d713568b11a654d8d1fa",
      "tree": "b8652ea42b026695f7fcb8fd236267b47a5b5750",
      "parents": [
        "f4d56b4a041032adcf3448a8a7e6c4504e33607c"
      ],
      "author": {
        "name": "diaohancai",
        "email": "36229835+diaohancai@users.noreply.github.com",
        "time": "Tue Oct 13 12:30:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 12:30:45 2026 +0800"
      },
      "message": "chore: added method to parse json list (#577)\n\nCo-authored-by: imbajin \u003cjin@apache.org\u003e"
    },
    {
      "commit": "f4d56b4a041032adcf3448a8a7e6c4504e33607c",
      "tree": "e2c74408edadf47ac39905c78d676e818072f5fb",
      "parents": [
        "41e8d7115b24d31ce0a229b6f413f04306450486"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Oct 13 12:26:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 12:26:31 2026 +0800"
      },
      "message": "fix: keep source release helpers outside GitHub (#813)"
    },
    {
      "commit": "41e8d7115b24d31ce0a229b6f413f04306450486",
      "tree": "318a20b1e04a6fa6cad701fca67d1fdb891e184a",
      "parents": [
        "bab011066b93f05a2ae06f0192b217fa87a13eac"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Oct 13 10:08:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 10:08:45 2026 +0800"
      },
      "message": "fix(loader): guard cleanup after failed startup (#812)\n\n- log the graph when a mode write loses its response\n- preserve the original checked transport exception\n- retain cleanup ownership and avoid blind mode resets\n- verify the diagnostic and explain manual recovery"
    },
    {
      "commit": "bab011066b93f05a2ae06f0192b217fa87a13eac",
      "tree": "0681509a32eb8335b3c246e83f32ff7dfdad5097",
      "parents": [
        "30014b7d789e53500834529cfd0b3c2935268431"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Oct 13 01:01:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 01:01:34 2026 +0800"
      },
      "message": "fix(loader): align mapped endpoint fixtures (#811)\n\n- map custom vertex IDs with edge endpoints\n- verify exact loaded IDs and typed properties\n- check endpoint joins in file and HDFS fixtures"
    },
    {
      "commit": "30014b7d789e53500834529cfd0b3c2935268431",
      "tree": "42bda63df1de4964fb34aff84ec026a5af23d187",
      "parents": [
        "e23a93be061a0e523e4374753f6e2dd0a7dd5088"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Mon Oct 12 19:07:40 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 12 19:07:40 2026 +0800"
      },
      "message": "fix(loader): honor caller heap limits (#810)\n\n- place the default heap before caller JVM options\n- preserve caller-selected and repeated heap settings\n- cover default and caller precedence in launcher tests"
    },
    {
      "commit": "e23a93be061a0e523e4374753f6e2dd0a7dd5088",
      "tree": "034d67aa7645b6ec46697a1e7c39c32df36a3e3b",
      "parents": [
        "2692b6bf9dbf41111a6e5bc04241f1d5236a245e"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Mon Oct 12 16:59:41 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 12 16:59:41 2026 +0800"
      },
      "message": "fix(loader): warn for legacy file options (#809)\n\n- record deprecated aliases during option validation\n- retain positive checks and post-validation warnings\n- cover direct and file inputs with help and errors\n- document argument-file warning behavior"
    },
    {
      "commit": "2692b6bf9dbf41111a6e5bc04241f1d5236a245e",
      "tree": "32c801d97e17ba6f97caff347fbe5490fd8f51b6",
      "parents": [
        "f49b7991bff63082809def9d1d49e30a1b59ef78"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Mon Oct 12 10:16:52 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 12 10:16:52 2026 +0800"
      },
      "message": "fix(loader): accept response file arguments (#808)\n\n- rely on required options and validators after expansion\n- cover response files, defaults, and invalid parser input\n- document private argument files and writable mappings"
    },
    {
      "commit": "f49b7991bff63082809def9d1d49e30a1b59ef78",
      "tree": "2b03a9f0f96d03ed86da03a1f867711ce0fafd51",
      "parents": [
        "ddad1877ed2c1bc9c9648cee17aa4a1dee88ff69"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Mon Oct 12 10:07:05 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 12 10:07:05 2026 +0800"
      },
      "message": "fix(client-go): allow propertyless edge labels (#807)\n\n- accept nil and empty edge label properties\n- cover request encoding and required fields\n- explain typed API HTTP status checks"
    },
    {
      "commit": "ddad1877ed2c1bc9c9648cee17aa4a1dee88ff69",
      "tree": "c08b766744193b5c172ccbc37e35c8e802607594",
      "parents": [
        "039153cdbfe26798fdc4fb2628ef016948917f23"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Mon Oct 12 10:06:52 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 12 10:06:52 2026 +0800"
      },
      "message": "fix(test): refresh HTTPS service fixtures (#806)\n\nGenerate matched temporary key and trust stores. Use localhost and IP identities with fresh validity."
    },
    {
      "commit": "039153cdbfe26798fdc4fb2628ef016948917f23",
      "tree": "44a9d55645a120e279e8a45a627bc81a5246f418",
      "parents": [
        "25b520646644b704f2e850c67c7be8edcdb5ed73"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sat Oct 10 17:55:09 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 10 17:55:09 2026 +0800"
      },
      "message": "fix(loader): preserve native date conversions (#802)\n\nRestore native JDBC DATETIME and Parquet logical date/timestamp conversion. MySQL returns LocalDateTime for DATETIME, while Parquet DATE/TIMESTAMP values were treated as ordinary integers; supported DATE mappings failed or produced incorrect dates."
    },
    {
      "commit": "25b520646644b704f2e850c67c7be8edcdb5ed73",
      "tree": "6281564d4fa2730e87a9420680708255f6996185",
      "parents": [
        "b1baa82f619978e4717f96a6acca2b32a1e473a9"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sat Oct 10 17:54:43 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 10 17:54:43 2026 +0800"
      },
      "message": "refactor(loader): propagate loading failures (#801)\n\nLoader can report success after parse, insert, or checkpoint failures. With batch fallback disabled, rejected batches can also disappear from both the failure files and the already advanced progress. This change makes unsuccessful loads fail visibly and retains the information needed for replay."
    },
    {
      "commit": "b1baa82f619978e4717f96a6acca2b32a1e473a9",
      "tree": "441f0e11c405fb0253f3db12ff5972be5313ffd6",
      "parents": [
        "a3ae0ab5528b77a260698a5f0e2789dfb4ea549e"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sat Oct 10 16:49:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 10 16:49:42 2026 +0800"
      },
      "message": "refactor(loader): include source runtime dependencies (#804)\n\nThe ordinary Loader distribution cannot start existing GRAPH or Parquet sources: its selected protobuf runtime lacks the PD discovery classes, and Parquet classes are inherited only through Spark\u0027s provided dependencies. The ordinary package now carries the dependencies these existing readers require."
    },
    {
      "commit": "a3ae0ab5528b77a260698a5f0e2789dfb4ea549e",
      "tree": "089d472d56c3b3ab8a5336a9ec36c14312b106a4",
      "parents": [
        "a6684675cfb18199da3364435353659e66a4b612"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sat Oct 10 16:48:32 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 10 16:48:32 2026 +0800"
      },
      "message": "fix(go): route schema requests by graph space (#799)\n\n- use configured graph space in existing schema APIs\n- preserve legacy routes for empty graph spaces\n- retain request and HTTP error semantics\n- cover route escaping and request bodies with race"
    },
    {
      "commit": "a6684675cfb18199da3364435353659e66a4b612",
      "tree": "2dc5184238fdbbcbd360d3a9ea87066074d37684",
      "parents": [
        "0ea7db34ab0d5122775a38e765a0298d71ba8e87"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sat Oct 10 16:47:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 10 16:47:34 2026 +0800"
      },
      "message": "fix(loader): preserve launcher arguments (#800)"
    },
    {
      "commit": "0ea7db34ab0d5122775a38e765a0298d71ba8e87",
      "tree": "4f1e36679d142e54c26125f631c0c3fe7e295c08",
      "parents": [
        "e66992215557958d6a41bdfb353b2138a0ca5570"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sat Oct 10 16:44:28 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 10 16:44:28 2026 +0800"
      },
      "message": "fix(tools): propagate restore worker failures (#803)\n\n- drain asynchronous tasks before reporting failures\n- preserve suppressed errors and interrupt state\n- retain backup input when restore fails\n- cover corrupt input and valid empty backups"
    },
    {
      "commit": "e66992215557958d6a41bdfb353b2138a0ca5570",
      "tree": "de5e1979eac2591850f6bacdd91d079a55abb66b",
      "parents": [
        "c2e6ad3717fadce36799a7cf220aed746ab87357"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sat Oct 10 03:48:40 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 10 03:48:40 2026 +0800"
      },
      "message": "fix(loader): support offline file parsing contexts (#797)"
    },
    {
      "commit": "c2e6ad3717fadce36799a7cf220aed746ab87357",
      "tree": "bf6149fe7b5cb32ed6f031ea308524ab0f49921d",
      "parents": [
        "38fcddc6edf197472581e28b968eff14be129042"
      ],
      "author": {
        "name": "Dev Hingu",
        "email": "dev.hingu.work@gmail.com",
        "time": "Fri Oct 09 22:10:30 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 10 00:40:30 2026 +0800"
      },
      "message": "fix(client): Correct HugeClientBuilder default timeout reset (#796)"
    },
    {
      "commit": "38fcddc6edf197472581e28b968eff14be129042",
      "tree": "e63d801b19c4489948f188241518af25d4e8d998",
      "parents": [
        "2c943c68e2d3acd699a85c3f1fbe67137f0449e4"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Fri Oct 09 21:54:29 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 21:54:29 2026 +0800"
      },
      "message": "refactor: support 1.8.0 release SDK packaging (#794)\n\nToolchain now builds with Java 17 and the 1.8.0 SDK while testing current Server 1.8.0 and released Server 1.7.0 separately. Historical Server compatibility no longer changes the SDK used to compile Toolchain."
    },
    {
      "commit": "2c943c68e2d3acd699a85c3f1fbe67137f0449e4",
      "tree": "5714caaf60bef5a46e437368491945d39e73ccb1",
      "parents": [
        "5174a23cdf61b35a62c205b68ef2ba14eac73a09"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Fri Oct 09 10:18:19 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Fri Oct 09 14:50:10 2026 +0800"
      },
      "message": "fix(loader): align launcher regression contracts\n\n- check missing shared options through the Spark launcher\n- remove the replaced legacy CDC parser assertion\n- verify native Flink exit status propagation\n"
    },
    {
      "commit": "5174a23cdf61b35a62c205b68ef2ba14eac73a09",
      "tree": "7c8a74b47d797f1383540ae0e3beb184684fca56",
      "parents": [
        "9d040e48196caa7f03a6b4f0c990a47c6807167e"
      ],
      "author": {
        "name": "imbajin",
        "email": "17706099+imbajin@users.noreply.github.com",
        "time": "Fri Oct 09 04:24:25 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Fri Oct 09 14:50:10 2026 +0800"
      },
      "message": "fix(loader): preserve INT96 timestamps without noon offset\n"
    }
  ],
  "next": "9d040e48196caa7f03a6b4f0c990a47c6807167e"
}
