)]}'
{
  "log": [
    {
      "commit": "5e26a5497d1e7cc15be8f9fece9f4f5e1b9438ea",
      "tree": "6274611564def922073fa433712c05c4692a08ca",
      "parents": [
        "7f75082bd4f231cb48528f0d760327daff052c2e"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 01:07:21 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): initialize UI smoke product mode\n\n- load runtime config during API-backed browser authentication\n- validate PD and non-PD graphspace landing contracts separately\n- cover config injection and failure handling with Node tests\n"
    },
    {
      "commit": "7f75082bd4f231cb48528f0d760327daff052c2e",
      "tree": "26537168669887319a1a414b021ecd4cd66a1ea5",
      "parents": [
        "098f4048b3f1814e48ed7e91f3f4a0e91efb1b9d"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Mon Jul 20 00:32:38 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): align UI smoke contracts\n\n- expose stable language and GraphSpace title test anchors\\n- update browser smoke selectors for the current toggle UI\\n- cover both anchors with focused frontend tests\n"
    },
    {
      "commit": "098f4048b3f1814e48ed7e91f3f4a0e91efb1b9d",
      "tree": "02cdfabda5c97440af9c2eea266cfb5a240588b4",
      "parents": [
        "2f6554fdc4e2393cddd1268053791dfbe0274808"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 19 23:59:24 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): restore Apache license headers\n\n- replace three abbreviated test headers with the standard Apache-2.0 text\\n- align the files with license-eye header validation\\n- keep runtime code and test behavior unchanged\n"
    },
    {
      "commit": "2f6554fdc4e2393cddd1268053791dfbe0274808",
      "tree": "c12faf59a87436c88ffb3657a559c04b89b84e53",
      "parents": [
        "429599d0af3c2aee690f243014351ce5f30219f5"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 19 23:46:11 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): refine graphspace creation form\n\n- prevent long labels from overlapping form controls\n- prefill graphspace resource limits with defaults\n- keep nickname validation aligned with server rules\n- cover layout and submitted default values\n"
    },
    {
      "commit": "429599d0af3c2aee690f243014351ce5f30219f5",
      "tree": "f82e7f3f36858c1d1580e7b886aacceb96786eef",
      "parents": [
        "40b00c3fcbbfd65d0fca826ddc47695c72f9f826"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 19 23:43:43 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "chore(docs): remove UI screenshots\n\n"
    },
    {
      "commit": "40b00c3fcbbfd65d0fca826ddc47695c72f9f826",
      "tree": "e231e373685bcde163044fad787a420cf025befd",
      "parents": [
        "002cf9908c5a05a6dc953f3b3fa4d584b38cfd75"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 19 17:57:06 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): refine workspace journeys\n\n- restore Schema template and in-graph application flows\n- clarify query, algorithm, and demo-data interactions\n- adapt standalone operations navigation and node metrics\n- align topbar, language, and sidebar responsive behavior\n\n"
    },
    {
      "commit": "002cf9908c5a05a6dc953f3b3fa4d584b38cfd75",
      "tree": "08865bd36f46d5b76191f5907bb48d6d3e31761d",
      "parents": [
        "581d221968940c6e932c17901ba48b4d2b4f3ee9"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 19 04:17:06 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): harden query behavior and tests\n\n"
    },
    {
      "commit": "581d221968940c6e932c17901ba48b4d2b4f3ee9",
      "tree": "326eb68264f88d3326105083f65d0b4462ff0130",
      "parents": [
        "89a3ab8c1409c32e84178fb4902dbae18fd099f8"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Wed Jul 15 13:28:30 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): improve UI guidance\n\n- clarify query shortcuts, empty states, and compact results\n- correct Schema navigation and documentation paths\n- explain operations metrics and external Dashboard scope\n- add contextual sidebar expansion and onboarding links\n\n"
    },
    {
      "commit": "89a3ab8c1409c32e84178fb4902dbae18fd099f8",
      "tree": "81ca2a901646dd028ac87260058016ddb1a3c486",
      "parents": [
        "f61a6928db4fa91f3dac2b89772760ad84ca0468"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Wed Jul 15 09:25:51 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): close public error disclosure gaps\n\n"
    },
    {
      "commit": "f61a6928db4fa91f3dac2b89772760ad84ca0468",
      "tree": "d312c5d236adaf2402c1f870072a6c8d99b55a33",
      "parents": [
        "b63d13de0918c1ea2c183c04dcc03b7874f5d13f"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Wed Jul 15 08:40:52 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): sanitize route failure fallback\n\n"
    },
    {
      "commit": "b63d13de0918c1ea2c183c04dcc03b7874f5d13f",
      "tree": "bd7450586253cc76c957743d8535b772a6af5eb3",
      "parents": [
        "e9079d0474b9f1b64560a7e587f5193952ae8c4d"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Wed Jul 15 08:22:41 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): recover graph analysis context\n\n"
    },
    {
      "commit": "e9079d0474b9f1b64560a7e587f5193952ae8c4d",
      "tree": "0367137ced4d3c673d146788cc7ee04473142e46",
      "parents": [
        "b95a4c5c013dec2832ddc87b480bc30bf09695b1"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Wed Jul 15 07:33:03 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): scope PD graphspace authorizations\n\n"
    },
    {
      "commit": "b95a4c5c013dec2832ddc87b480bc30bf09695b1",
      "tree": "9dfb3e0385f049f3475515ea92c6fd2e399dff31",
      "parents": [
        "03e6090c0178bea443675cd42e14307151886d0d"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Wed Jul 15 05:01:19 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): sanitize query failure diagnostics\n\n"
    },
    {
      "commit": "03e6090c0178bea443675cd42e14307151886d0d",
      "tree": "de59d838fd4813c3f1d5d398c8e6e24fe26c05d4",
      "parents": [
        "c618f22d12a9e836be199309ebbd2644df43716c"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Wed Jul 15 04:04:33 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): localize standalone monitoring state\n\n"
    },
    {
      "commit": "c618f22d12a9e836be199309ebbd2644df43716c",
      "tree": "4c23c443179d5c0a6f197d927aef4efecff820be",
      "parents": [
        "62c939b45b4e7057301805c4bfae3aeeff7de816"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Wed Jul 15 03:36:39 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): support standalone graph profiles\n\n"
    },
    {
      "commit": "62c939b45b4e7057301805c4bfae3aeeff7de816",
      "tree": "6f5493c0b1e90a8f35dbfbbe8ea9e9baeb0b7c14",
      "parents": [
        "83364a44036c69c3c46f28b57b20c02dcd350cd5"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Wed Jul 15 02:58:34 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): scope graphspace authorization\n\n"
    },
    {
      "commit": "83364a44036c69c3c46f28b57b20c02dcd350cd5",
      "tree": "eed9196982c0724cb823a59225154b455f047eb5",
      "parents": [
        "5be6305bf5a469cb2935db4133320648245e3c91"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Wed Jul 15 02:09:57 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): keep loader credentials out of metadata\n\n"
    },
    {
      "commit": "5be6305bf5a469cb2935db4133320648245e3c91",
      "tree": "ce9535840993f934db9393368139d9a96a3667fe",
      "parents": [
        "511afd994aed0cf0bccf9f11297ad4314c3bd8ef"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Wed Jul 15 01:48:05 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): require explicit account passwords\n\n"
    },
    {
      "commit": "511afd994aed0cf0bccf9f11297ad4314c3bd8ef",
      "tree": "b384e93dedd3b2fffde8391493fcc99348baca5c",
      "parents": [
        "d2a811d542e520d09e3d6e9dc56900d176737630"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Wed Jul 15 01:37:30 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): address remaining review threads\n\n"
    },
    {
      "commit": "d2a811d542e520d09e3d6e9dc56900d176737630",
      "tree": "b5c983f945cb73757c25c8944563a327729ac09c",
      "parents": [
        "ddf23637d499b1b1784494dee04864754da89aff"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 14 21:06:34 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): polish operations interactions\n\n- clarify node identity, type labels, and topology roles\n- compact monitoring actions and metric availability cards\n- simplify language switching and perform a clean logout\n- extend operations and logout regression coverage\n\n"
    },
    {
      "commit": "ddf23637d499b1b1784494dee04864754da89aff",
      "tree": "c561600b12402ba1e9b8abfa7df25a239025a566",
      "parents": [
        "4ae68943b17be149b8622418bce213c385099e17"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 14 20:07:07 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): report bounded graph counts\n\n- use daily metrics before bounded live reads\n- reject malformed Gremlin count responses\n- avoid unbounded list-page count queries\n- cover live fallback and failure semantics\n\n"
    },
    {
      "commit": "4ae68943b17be149b8622418bce213c385099e17",
      "tree": "fe21324d3d00cc4fc8a134552618f9e21559309b",
      "parents": [
        "100f2a7b1138d288617650ad6a2ddc775e246156"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 14 19:04:17 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): use canonical user ids\n\n- remove unsafe path-id fallbacks from account updates and deletes\n- preserve the canonical identity returned by the user service\n- cover delete lookups that resolve to a different canonical id\n\n"
    },
    {
      "commit": "100f2a7b1138d288617650ad6a2ddc775e246156",
      "tree": "70930cb27f5c13dbbd884975aec8c0a9baf8f040",
      "parents": [
        "f8e77bfa23a594bf4d277cb4fa6fa907c885c23c"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 14 16:58:05 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): enforce exact operations trust\n\n- require operator-managed Store origins with exact scheme, host, and port\n- pin validated DNS answers while preserving HTTPS hostname verification\n- redact structured credentials and endpoints from exception diagnostics\n- document production overrides and cover the security boundaries\n\n"
    },
    {
      "commit": "f8e77bfa23a594bf4d277cb4fa6fa907c885c23c",
      "tree": "c14f67773f1f418b134f66f84ce7697879808385",
      "parents": [
        "eb13ea0ddac2c2f3ebb5fb21f163f055722d7378"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 14 16:03:08 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): address backend review findings\n\n- register GraphSpace admin assignment as a POST mutation\n- defer the large sample graph payload until it is requested\n- accept heterogeneous numeric count values safely\n- simplify job-name validation and cover the changed contracts\n\n"
    },
    {
      "commit": "eb13ea0ddac2c2f3ebb5fb21f163f055722d7378",
      "tree": "c4340bd78450885487f935d5db66c15a92d41950",
      "parents": [
        "3443dc31322226f43eb2fa3f9c3f191830c3a8b8"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 14 15:56:18 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): localize default schema title\n\n- localize the built-in GraphSpace name in Schema templates\n- cover the stored Chinese nickname regression\n- refresh English Navigation, Overview, and Schema evidence\n\n"
    },
    {
      "commit": "3443dc31322226f43eb2fa3f9c3f191830c3a8b8",
      "tree": "db802d9d7cfec8246c0195bc22bde4fc79edfa40",
      "parents": [
        "55f306f4fb8adbd2f97f6359c5ca6cd6951db364"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 14 15:15:57 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "feat(hubble): add advanced monitoring entry\n\n- reuse the existing safe Dashboard URL contract\n- keep native monitoring available when Dashboard is disabled\n- expose localized and keyboard-accessible disabled reasons\n- cover configured, unavailable, forbidden, and popup states\n\n"
    },
    {
      "commit": "55f306f4fb8adbd2f97f6359c5ca6cd6951db364",
      "tree": "ff00c8141e73deff3119d6564323a8e187706ca8",
      "parents": [
        "a02aee3a5ab979ae274843f3aba7ed4d9c3f1801"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Mon Jul 13 22:18:06 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): refine query execution controls\n\n- reserve Ctrl+Enter for query execution\n- make Command+Enter insert an editor newline\n- replace the action dropdown with an accessible mode switch\n- keep query controls aligned at narrow widths\n- refresh English PD UI evidence\n\n"
    },
    {
      "commit": "a02aee3a5ab979ae274843f3aba7ed4d9c3f1801",
      "tree": "a977e0ea1e1b5f7872f3e6d75e9edd2223193cc8",
      "parents": [
        "c7a9a2d267a13d558b29f67681089df595f46a00"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Mon Jul 13 21:52:18 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): address review feedback\n\n- name schema creation retry constants\n- preserve existing retry behavior and coverage\n- add before and current UI evidence for PR summary\n- include navigation and graph-list screenshots\n\n"
    },
    {
      "commit": "c7a9a2d267a13d558b29f67681089df595f46a00",
      "tree": "7fa77162882b1eec3b25ed397283faf4909b6087",
      "parents": [
        "aab5b62c36839928fa541c700efa60cd6f18c6d7"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Mon Jul 13 21:15:39 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): improve workbench usability\n\n- align GraphSpace, graph and account permission semantics\n- improve Gremlin, schema, import and algorithm workflows\n- add resilient error states, defaults and field guidance\n- cover backend authorization and ingestion transaction safety\n- add regression tests and original UX requirements\n\n"
    },
    {
      "commit": "aab5b62c36839928fa541c700efa60cd6f18c6d7",
      "tree": "6e8ef9086a1c18a554117c50e0bf94275b40f5be",
      "parents": [
        "f6fee0177cbf4a4e106d42a27e7db1ef2e4a8c43"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Mon Jul 13 12:26:47 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): secure PD space responses\n\n- remove data-plane secrets from GraphSpace views\n- bind permission checks to each target GraphSpace path\n- preserve actual snapshot dates across aggregate metrics\n- cover secret filtering, permissions, and mixed dates\n\n"
    },
    {
      "commit": "f6fee0177cbf4a4e106d42a27e7db1ef2e4a8c43",
      "tree": "ff08ad4d92f49957e7cbd01b567209f499ba3d7a",
      "parents": [
        "420c85bb08e15c164612861274c3e04c5c003b89"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Mon Jul 13 12:07:45 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): verify radio language state\n\n- detect the selected English radio by its checked input\n- avoid relying on the former Select option label\n- preserve the existing smoke report contract\n\n"
    },
    {
      "commit": "420c85bb08e15c164612861274c3e04c5c003b89",
      "tree": "5a9d689b09c642dd9e245dc417c8eea9011fe81b",
      "parents": [
        "450edd279c9619ace765557ddb0a73c7379d81d6"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Mon Jul 13 11:50:22 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): restore CI quality gates\n\n- update the runtime language smoke for the Radio switcher\n- restore complete ASF headers on newly added source files\n- guard task and graph-detail responses against null values\n- add a reusable local license-eye check command\n\n"
    },
    {
      "commit": "450edd279c9619ace765557ddb0a73c7379d81d6",
      "tree": "cd085bf9aeb8bc95b6aaff4f0da83d6af2acf0b0",
      "parents": [
        "9ca30aff93c07e4e0c407cb835bbfe5e12b5a315"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Mon Jul 13 01:42:39 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "chore: merge master into Hubble UI branch\n\n- integrate frontend favorite-name validation hardening\n- preserve query shortcuts, pending guards, and dashboard capability states\n- include Docker build and dependency-license updates from master\n\n"
    },
    {
      "commit": "9ca30aff93c07e4e0c407cb835bbfe5e12b5a315",
      "tree": "383b3d658cf8ced3eaef1a8bc70a79b07514db81",
      "parents": [
        "bda950a8aefb29558f9e68b9292b36a95b74657f"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 22:51:48 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): align demo and dashboard contracts\n\n- create Red Chamber vertices with the name primary key\n- verify the actual schema builder avoids custom string IDs\n- distinguish unavailable Dashboard services from Coming Soon\n\n"
    },
    {
      "commit": "bda950a8aefb29558f9e68b9292b36a95b74657f",
      "tree": "a3be7c3833c1f52ed436a6014b85a03a7f4cc835",
      "parents": [
        "65b43aa5aa686b7de5ebd1aebd7d522ce39832e4"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 22:34:20 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "test(hubble): align integrated workflow fixtures\n\n- locate graph import journey by stable key\n- provide valid graph context in topbar request tests\n- preserve navigation and auth behavior assertions\n\n"
    },
    {
      "commit": "65b43aa5aa686b7de5ebd1aebd7d522ce39832e4",
      "tree": "ed138a93a9858b783d7964f01d07d124048b8a2c",
      "parents": [
        "501d8e9f30d7db41ea03f6c910e215ccd5c05b79"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 22:27:03 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): synchronize graph context\n\n- fetch the complete PD GraphSpace collection explicitly\n- reconcile missing GraphSpace and graph deep links\n- discard stale graph responses after context switches\n- cover PD, non-PD, retry, and race scenarios\n\n"
    },
    {
      "commit": "501d8e9f30d7db41ea03f6c910e215ccd5c05b79",
      "tree": "0a29c09b5b75259a6c1017477ccd5a0c4011f652",
      "parents": [
        "7a911995d24c94c49bfb6ae9e3649cb46e8f4abd"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 22:22:31 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "feat(hubble): surface safe demo workflows\n\n- expose quick demos from the data import page\n- gray out unavailable operations before navigation\n- localize built-in graphspace and admin labels\n- preserve user-defined nicknames and import boundaries\n\n"
    },
    {
      "commit": "7a911995d24c94c49bfb6ae9e3649cb46e8f4abd",
      "tree": "017cc827764d8f31dfb09e6ae1f044083f11661d",
      "parents": [
        "fc5b288396610cf7c24164d3becc7b6d775bf660"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 21:54:41 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): default oversized results to table\n\n- control the active query result view\n- select Table for results beyond 300 nodes or edges\n- reset normal results to the graph canvas\n- cover result transitions with a regression test\n\n"
    },
    {
      "commit": "fc5b288396610cf7c24164d3becc7b6d775bf660",
      "tree": "a300215ca637c04c200c27b2e2fc718b0a96f2e0",
      "parents": [
        "2fae603c3e8c319f3c79ce46f93803bdf6862e08"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 21:38:20 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble-be): guard sample schema creation and edge parsing\n\n"
    },
    {
      "commit": "2fae603c3e8c319f3c79ce46f93803bdf6862e08",
      "tree": "1f4e0fa4c6937f453229f3c07f743c62ca8f01a1",
      "parents": [
        "4114fd69c3245a32e0c2f19a53fe14e7375eecba"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 20:44:50 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "feat(hubble): add Red Chamber demo\n\n- build a retry-safe 41-vertex literature graph\n- expose the demo from the graph action menu\n- link official MovieLens Small resources\n- restore complete ASF headers for CI checks\n- keep local Codex task state out of the PR\n\n"
    },
    {
      "commit": "4114fd69c3245a32e0c2f19a53fe14e7375eecba",
      "tree": "fa64b2583d2df147bb3697c71596db03c7d24103",
      "parents": [
        "314acf732207fb32ed8a57010478dbc97d4b474c"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 20:08:01 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "Apply suggestions from code review\n\nCo-authored-by: github-actions[bot] \u003c41898282+github-actions[bot]@users.noreply.github.com\u003e\n"
    },
    {
      "commit": "314acf732207fb32ed8a57010478dbc97d4b474c",
      "tree": "db5df236480fc474f71707a56e423407bc03a97c",
      "parents": [
        "5939b477c2d3b3dbfeab2b49297011835502a275"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 18:30:00 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): preserve recovery details\n\n- retain query hash across expired-session redirects\\n- surface actionable Loader task creation errors\\n- cover both recovery contracts with focused tests\n\n"
    },
    {
      "commit": "5939b477c2d3b3dbfeab2b49297011835502a275",
      "tree": "295552503c8bdc64e052f726055dcb1a88deb2f7",
      "parents": [
        "bfd733550813ed80d96b94a5aa32deabe8cb55b7"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 18:24:51 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): preserve integration contracts\n\n- restore workbench route title helpers and styles\\n- keep internal test routes development-only\\n- remove duplicated task action definition\n\n"
    },
    {
      "commit": "bfd733550813ed80d96b94a5aa32deabe8cb55b7",
      "tree": "49e1c708802feb52c7153bec92183bafb005aa38",
      "parents": [
        "d8a45445aa3569d46a437a94e1b95f2acebe4c76"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 15:32:47 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): preserve workbench language choice\n\n- default fresh sessions to English\n- share language fallback across UI and requests\n- keep explicit login language selections persistent\n- focus graph canvas for fullscreen shortcuts\n\n"
    },
    {
      "commit": "d8a45445aa3569d46a437a94e1b95f2acebe4c76",
      "tree": "aa479a2a99a9c8dd805d90d697771bf36a1de954",
      "parents": [
        "0a69172e4935aa955fdec047c0b0a7fa1f4f1bf2"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 15:26:48 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): refine desktop workbench shell\n\n- improve login balance and brand rendering\n- clarify navigation information architecture\n- expose unavailable operations as coming soon\n- render profile empty values consistently\n\n"
    },
    {
      "commit": "0a69172e4935aa955fdec047c0b0a7fa1f4f1bf2",
      "tree": "13e0cc1733afaec20fc6494416d5f63cbd86a938",
      "parents": [
        "9f8887e0e30474f15c3b783d5588bafc3e3bb274"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:32:32 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "refactor(hubble): unify low-frequency surfaces\n\n- compact the My profile and password forms with Workbench tokens\n- give 404 recovery a bounded surface and direct workspace return\n- preserve async task context with a graph-scoped return entry\n- cover surface, routing, i18n, and form-alignment contracts\n\n"
    },
    {
      "commit": "9f8887e0e30474f15c3b783d5588bafc3e3bb274",
      "tree": "712fbe3f36a1b334b3db45a0a2293104342e0394",
      "parents": [
        "9762bc5da95cabf631689a0a1ba009be23a29db7"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 13:49:56 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): guard account editor requests\n\n- serialize create, edit, and auth submissions\n- clear stale account detail and form state\n- ignore late identity responses after switching users\n- cover pending, race, and failure recovery\n\n"
    },
    {
      "commit": "9762bc5da95cabf631689a0a1ba009be23a29db7",
      "tree": "3809c398efa9d241a4df3de5c1b43d135d704a9e",
      "parents": [
        "e0a9b7abe3f1c024c60dc30add9aca5a4bda1998"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 13:45:10 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): recover password submission\n\n- release submit loading after validation or request failures\n- preserve password fields for non-200 responses and retries\n- cover validation, rejection, business error, and success paths\n\n"
    },
    {
      "commit": "e0a9b7abe3f1c024c60dc30add9aca5a4bda1998",
      "tree": "6bc249e4a6448df21091369636be7a27de871705",
      "parents": [
        "17cfc3e423c6929df573ebe2cc17b87403169e2c"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 13:41:39 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): expose keyboard focus ring\n\n- apply the shared ring to discrete workbench controls\n- move skip-link activation into the main workspace\n- scope navigation topbar workspace and login styles\n- add DOM and stylesheet regression contracts\n\n"
    },
    {
      "commit": "17cfc3e423c6929df573ebe2cc17b87403169e2c",
      "tree": "28389005eaaee168b1de8cf7e1802235f858bc6d",
      "parents": [
        "f8bc630750ef5e6e8997a641c1cbdab21bce089c"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 13:29:00 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): add graph toolbar labels\n\n- label ten icon-only graph controls with localized text\n- keep accessible names aligned with existing tooltips\n- add regression coverage for query and algorithm tools\n\n"
    },
    {
      "commit": "f8bc630750ef5e6e8997a641c1cbdab21bce089c",
      "tree": "bd89adc5cd8bdb06ef6c55d9ccba9e8a104e0307",
      "parents": [
        "9866f599540d0554872bac8a8a423d0bba4b3faa"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 13:18:36 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(hubble): preserve hash on auth redirect\n\n- include URL hash in request-time login redirects\n- cover HTTP and business 401 redirect contracts\n- verify login restores query and hash context\n- assert unauthorized requests are not replayed\n\n"
    },
    {
      "commit": "9866f599540d0554872bac8a8a423d0bba4b3faa",
      "tree": "4203ee55008432d83294557091ea79144d260b8e",
      "parents": [
        "e4ca87527be824a91c1bda68ffd50708a7773937"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 13:05:20 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "feat(hubble): unify workspace visual system\n\n- redesign login as a balanced accessible desktop shell\n- align workspace navigation, surfaces, controls and spacing\n- simplify compact graph card labels without changing full graph views\n- share the topbar height token and preserve document scrolling\n\n"
    },
    {
      "commit": "e4ca87527be824a91c1bda68ffd50708a7773937",
      "tree": "35e6d87566a0a62bbe15943cf064354b574d9798",
      "parents": [
        "17392e6b403849d7de2e6f6931c4a438bb8d7238"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 08:19:55 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "feat(hubble): improve dense graph navigation\n\n- add cached semantic zoom thresholds for dense graph labels\n- fit force layouts after final layout completion\n- preserve hovered labels across viewport changes\n- cover density and zoom boundary contracts\n\n"
    },
    {
      "commit": "17392e6b403849d7de2e6f6931c4a438bb8d7238",
      "tree": "a8b530c8c24c7e0098cc526ae9019e4dce715806",
      "parents": [
        "594fe3afa093dda4f47a248122cea456774fcd4e"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 07:32:33 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "feat(hubble): recover query task surfaces\n\n- separate history and favorite loading and retry state\n- isolate late responses across graph context changes\n- pause async polling after failures and while pending\n- add task-result retry and explicit empty states\n\n"
    },
    {
      "commit": "594fe3afa093dda4f47a248122cea456774fcd4e",
      "tree": "a1831974a02afea732a1a51b94178405d7f24a47",
      "parents": [
        "014feac44a1bff22efc4ababdcae2fba829e9d3b"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 06:38:38 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "feat(hubble): connect data preparation journey\n\n- link mode-aware Schema, data source, and import steps\n- distinguish failed requests from honest empty states\n- isolate stale responses and pause failed polling\n- verify real datasource mutation and dual-mode routes\n\n"
    },
    {
      "commit": "014feac44a1bff22efc4ababdcae2fba829e9d3b",
      "tree": "2c2f6c37c47ee798a6b564d9d66793cfe1540c23",
      "parents": [
        "aa09ae1486b0d874f3326319075494eedf637a56"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 05:35:29 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "feat(hubble): persist graph workspace context\n\n- add route-first GraphSpace and graph selection\\n- preserve recent context without cross-space leakage\\n- expose source-specific loading errors and retries\\n- cover dual-mode, concurrency, and accessibility contracts\n\n"
    },
    {
      "commit": "aa09ae1486b0d874f3326319075494eedf637a56",
      "tree": "46a41118dffbadb094f337824b727ae8cdb9c54e",
      "parents": [
        "f9c719248b52539a78d43d98ef610b7566ff9c44"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:44:15 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Tue Jul 21 14:40:03 2026 +0800"
      },
      "message": "fix(license): update known dependencies for kotlin-stdlib-common\n\n"
    },
    {
      "commit": "f9c719248b52539a78d43d98ef610b7566ff9c44",
      "tree": "1cda8c4bc78252893d2265500838342779ed4dd7",
      "parents": [
        "1b164c396a750f4a73825c131d1a8631a2cad3ae"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 22:42:27 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 12 22:42:27 2026 +0800"
      },
      "message": "fix(hubble): harden frontend validation and update license dependencies (#741)\n\n* fix(hubble): harden frontend validation\n\n* fix(license): update known dependencies for kotlin-stdlib-common\n\n* fix(hubble): address review comments on frontend validation\n\n* fix(hubble): address review feedback\n\n- align favorite-name validation across all editors\n- show localized validation guidance for invalid names\n- allow navigation rows to grow for disabled reasons\n- add Kotlin dependency to the packaged license\n- cover all favorite creation and rename flows"
    },
    {
      "commit": "1b164c396a750f4a73825c131d1a8631a2cad3ae",
      "tree": "f2a364f46ac0376659beb57c08fd658081b20787",
      "parents": [
        "7bbd5736e1caa19eec899b1ace9f2fe4cda8d448"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 21:42:13 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 12 21:42:13 2026 +0800"
      },
      "message": "perf(docker): avoid emulated Java builds (#740)\n\n* fix(hubble): avoid emulated image build\n\n- pin the Maven and Node build stage to BUILDPLATFORM\n- cache the package installation layer before source changes\n- exclude unrelated modules and generated artifacts from context\n- preserve reactor POMs and Hubble release license files\n\n* fix(loader): avoid duplicate emulated build\n\n- build the Java distribution once on BUILDPLATFORM\n- collapse duplicate Maven packaging into one reactor build\n- cache target-platform package installation independently\n- document multi-platform build and native library boundaries"
    },
    {
      "commit": "7bbd5736e1caa19eec899b1ace9f2fe4cda8d448",
      "tree": "7492359dc662e144d91f3982734d92b8225877e5",
      "parents": [
        "3be1afd5e534d0dfc2af9396a9d7eb2174d974e2"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 13:47:54 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "fix(hubble): resolve eslint, missing license headers, i18n keys, and path traversal security warnings\n"
    },
    {
      "commit": "3be1afd5e534d0dfc2af9396a9d7eb2174d974e2",
      "tree": "e10640563e898381686c2babe97e720c0721b208",
      "parents": [
        "5c37837fac5a1e64d4df9a3797a4fc7f6d4db8ac"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 12:57:48 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "fix(hubble): resolve accessibility and mock errors in UI tests\n"
    },
    {
      "commit": "5c37837fac5a1e64d4df9a3797a4fc7f6d4db8ac",
      "tree": "b2b53b0184cf70ad24faa612cce3a07062b6f2c0",
      "parents": [
        "1c9a984d495c3ad10eb5cdcc2a35ad0538651e4a"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 07:14:18 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "feat(hubble): add safe Text2GQL preview\n\n- add a peer natural-language query tab\n- block all placeholder execution and network paths\n- recover rejected query and async task requests\n- cover zero-call and failure contracts with tests\n"
    },
    {
      "commit": "1c9a984d495c3ad10eb5cdcc2a35ad0538651e4a",
      "tree": "1dc9a88330b66b579a184b1a8463ea7200b2ca11",
      "parents": [
        "7eb2b1837540ec9362b1a997c3a38f8c611caa0f"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 11:32:36 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "fix(hubble): recover system workspace states\n\n- preserve loading, failure and retry contracts across system pages\n- prevent stale profile, task and metadata responses from leaking\n- replace click-only controls with keyboard-accessible actions\n- localize login, recovery and unknown-route semantics\n- add focused accessibility and race regression coverage\n"
    },
    {
      "commit": "7eb2b1837540ec9362b1a997c3a38f8c611caa0f",
      "tree": "2db1104d2001f1dc79886993c10252bf80bd1d24",
      "parents": [
        "eb64fa49aa577f348abedb7d5690ec697c27b318"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 12:03:39 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "fix(hubble): recover schema capabilities\n\n- expose graph schema export with identity-safe recovery\n- distinguish Meta loading, empty and failure states\n- recover vertex and edge detail requests without stale writes\n- clarify optional template application during graph creation\n- make graph creation and card actions keyboard accessible\n"
    },
    {
      "commit": "eb64fa49aa577f348abedb7d5690ec697c27b318",
      "tree": "5866bd572ed451acd575a6f6ff87238b861ea5eb",
      "parents": [
        "1a47f4a56bc3205b8e59b7cfdebd408d88387830"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 10:02:38 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "fix(hubble): clarify query recovery state\n\n- persist a controlled reason for synchronous Cypher failures\n- keep async submission and execution failure semantics distinct\n- close favorite popovers when switching query languages\n- cover sync, async, and tab-transition regression paths\n"
    },
    {
      "commit": "1a47f4a56bc3205b8e59b7cfdebd408d88387830",
      "tree": "e7c2dc42c450845584feb70eb821007829560aa4",
      "parents": [
        "1dc8997e27665ccc12f96fcfc193172a9290b483"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 09:04:15 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "fix(hubble): harden result view switching\n\n- project BigInt and JSONbig values safely for JSON display\n- render table cells without lossy quoting or precision changes\n- prevent hidden graph fitting and duplicate layout registration\n"
    },
    {
      "commit": "1dc8997e27665ccc12f96fcfc193172a9290b483",
      "tree": "f00be175db0e82b485a9d78ecbb0a657b2293c3a",
      "parents": [
        "60c524792e57d6a0d4a409fac5b6e8e6f51eda21"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 12:37:17 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "fix(hubble): restore schema export compatibility\n\n- rebuild Groovy from structured Schema responses\n- preserve nested userdata and quoted separators\n- keep legacy Server output unchanged\n- verify real PD export and replay\n- add compatibility regression coverage\n"
    },
    {
      "commit": "60c524792e57d6a0d4a409fac5b6e8e6f51eda21",
      "tree": "9d808cf7af86f3b572252409127c931ab48d3866",
      "parents": [
        "71d095e2115c37b3e637ba0701bfb160f5f66bbf"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 10:54:00 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "fix(hubble): align graph mutation contracts\n\n- scope clear copy and symbols to graph data\n- gate incompatible clone actions with accessible reasons\n- preserve destructive confirmation and refresh behavior\n- lock API and action contracts with regression tests\n"
    },
    {
      "commit": "71d095e2115c37b3e637ba0701bfb160f5f66bbf",
      "tree": "becbfecf72c58a4e637eaf2454e8215462488a3c",
      "parents": [
        "cefa634565182d32d04edd5281122c3f9c68cef8"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 10:19:45 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "fix(hubble): recover import task options\n\n- keep option loading failures visible with scoped retries\n- clear stale graph and source-field form values\n- ignore late responses after context changes\n- localize recovery states and cover dual-mode contracts\n"
    },
    {
      "commit": "cefa634565182d32d04edd5281122c3f9c68cef8",
      "tree": "a1a1aecda13bf5b00a7c3d4a9fcd8abd456ce23d",
      "parents": [
        "f756f07f3bde41f2123c0b438ba4a251f0d52a8d"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 09:21:09 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "fix(hubble): open export menu on click\n\n- make the export button open its dropdown on click\n- preserve Ant Design keyboard-enabled menu item actions\n- verify the explicit trigger contract with targeted tests\n"
    },
    {
      "commit": "f756f07f3bde41f2123c0b438ba4a251f0d52a8d",
      "tree": "c7e48b271fcdc1275b843f5cb16c2aac896b993a",
      "parents": [
        "b2c60224c7732ed9a30c5e0c3404d08278bf0279"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 09:11:18 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "fix(hubble): preserve exported graph ids\n\n- serialize large graph ids as exact decimal strings\n- remove the JSON blob BOM and verify parse round trips\n- expose export actions through keyboard-operable menu items\n"
    },
    {
      "commit": "b2c60224c7732ed9a30c5e0c3404d08278bf0279",
      "tree": "7eec7856d48ffe715b9e2af5e802bd49de50a26d",
      "parents": [
        "ef2f8fd6e6c2c7f3133dd39a6b7890fc5c2f879a"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 08:39:10 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "fix(hubble): restore algorithm interactions\n\n- forward only rc-collapse control props across wrappers\n- normalize rejected algorithm requests for form recovery\n- preserve success, business-error, and auth contracts\n- cover all algorithm panels and shared API boundaries\n"
    },
    {
      "commit": "ef2f8fd6e6c2c7f3133dd39a6b7890fc5c2f879a",
      "tree": "3c3f9cf9783e085e9fee5f03595c44e94c75f334",
      "parents": [
        "71fd70ca0892c801839564e3118a583a23647d3f"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 04:38:56 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "fix: add standard ASF license headers and fix checkstyle issues\n\nFiles were using a short-form license header that fails the license-eye\ncheck. Replace with the full standard Apache 2.0 header consistent\nwith the rest of the project.\n\nAlso fix all remaining Checkstyle violations in toolchain modules\nincluding line length, indentation, operator wrapping, and support for\nSuppressWarnings filter.\n\nFiles fixed (License):\n- hubble-be/.../exception/LoginThrottledException.java\n- hubble-be/.../service/auth/LoginAttemptGuard.java\n- hubble-be/.../unit/LoaderScopeControllerTest.java\n- hubble-be/.../unit/LoginAttemptGuardTest.java\n- hubble-be/.../unit/PriorityFixTest.java\n- hubble-fe/src/api/throttleWarning.js\n- hubble-fe/src/components/RouteErrorBoundary/index.js\n\nFiles fixed (Checkstyle):\n- tools/checkstyle.xml\n- hugegraph-client/.../driver/HugeClientBuilder.java\n- hugegraph-loader/.../loader/HugeGraphLoader.java\n- hugegraph-loader/.../loader/task/TaskManager.java\n- hugegraph-loader/.../loader/executor/LoadOptions.java\n"
    },
    {
      "commit": "71fd70ca0892c801839564e3118a583a23647d3f",
      "tree": "8a883e22810907096fb83450358c77b8755ee553",
      "parents": [
        "b7a3b31e64ae24ff2b308fdf3bb8df0872f06a07"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 04:33:43 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "chore(hubble): trim legacy build debt\n\n- remove unused secondary request wrapper\n- use default Node and Yarn download sources\n- align Kotlin runtime dependency versions\n- reduce expected parser log noise and mark date migration\n"
    },
    {
      "commit": "b7a3b31e64ae24ff2b308fdf3bb8df0872f06a07",
      "tree": "2d01030887da0f27f285997959f3831de67ab6cc",
      "parents": [
        "6284b84e3fd5d12c8ec8cfc6a5422a66901c7f8f"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 04:33:38 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "fix(hubble): scope loader resources\n\n- bind loader entities to graphspace, graph, and job scopes\n- protect upload, batch, mutation, and deletion paths\n- add scoped access regression coverage\n"
    },
    {
      "commit": "6284b84e3fd5d12c8ec8cfc6a5422a66901c7f8f",
      "tree": "6a117f7d21ebc2e058fb103d694676741eafe51f",
      "parents": [
        "7b3a45d5ac08bcc68b7e29677a69bd8ee46b4fc4"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 04:18:41 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "fix(hubble): throttle failed logins\n\n- add configurable exponential backoff after repeated failures\n- return HTTP 429 with Retry-After and backend warnings\n- serialize concurrent attempts per principal and client address\n- show a deduplicated frontend warning and cover regressions\n"
    },
    {
      "commit": "7b3a45d5ac08bcc68b7e29677a69bd8ee46b4fc4",
      "tree": "049724cd791fb2c70cb256698957be8fe789056e",
      "parents": [
        "360707218ee2981b5f8d9eac28a51118cacc42fc"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 04:00:55 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "fix(hubble): harden request security\n\n- disable Kubernetes token endpoints\\n- validate pagination and close request clients\\n- secure CORS and sanitize exception logging\\n- clean up graph listeners and loading state\\n- add backend security regression coverage\n"
    },
    {
      "commit": "360707218ee2981b5f8d9eac28a51118cacc42fc",
      "tree": "1b40bfea1f51b3a390a84784577a2f2371eaa490",
      "parents": [
        "8691a68989f4f9ddd642a95ee5e9b87c5d5b062a"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 03:00:37 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "chore(hubble): correct README references and update gitignore\n"
    },
    {
      "commit": "8691a68989f4f9ddd642a95ee5e9b87c5d5b062a",
      "tree": "acde634ffa940ff2ac83fe64a6ee9d6532810cc6",
      "parents": [
        "ef4b0f5ed01bd929119e2f4f6088d443ca7dae3d"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 02:46:17 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "docs: consolidate remaining hubble work\n\n- capture the unfinished UI and UX refactor\n- keep completed legacy and hardening tasks excluded\n- preserve detailed execution steps in local task records\n"
    },
    {
      "commit": "ef4b0f5ed01bd929119e2f4f6088d443ca7dae3d",
      "tree": "8ac2263ad7b956d54f18b5e6ee6a2bd0d4d581a1",
      "parents": [
        "9dc6580451a85bbffa1a0c583ba3995c4284d7de"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 02:42:43 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "chore: consolidate codex task tracking\n\n- keep one concise global follow-up list\n- stop tracking goal-specific process and evidence files\n- ignore local task artifacts by default\n- preserve completed audit evidence locally\n"
    },
    {
      "commit": "9dc6580451a85bbffa1a0c583ba3995c4284d7de",
      "tree": "08f9f16f8dcb46efe64edc14ea82e74ff712f1b5",
      "parents": [
        "b437138529173f58cdd4c359576fbb18b15f0949"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 02:22:59 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "fix(hubble): extend active session timeout\n\n- set the servlet idle timeout to 48 hours\n- rely on standard access-based inactivity refresh\n- add a contract test for the packaged Hubble config\n"
    },
    {
      "commit": "b437138529173f58cdd4c359576fbb18b15f0949",
      "tree": "d531b8cb507d5abe6213c0993c6f7f0bb543a8e1",
      "parents": [
        "4864be3fbf12de24353db39de17b48187f5ce969"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 01:27:23 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "style(hubble): purge legacy frontend hubble-fe-old and update dependency configurations\n"
    },
    {
      "commit": "4864be3fbf12de24353db39de17b48187f5ce969",
      "tree": "cf62fa8db1ca8618b8a9ac889ede9668dcbf5027",
      "parents": [
        "1222e9b49218f1849cfff6191bb5df5f222fd1a0"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 00:21:00 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "docs(hubble): close review evidence\n\n- record independent review and re-review outcomes\n- capture the third-party inventory CI fix\n- add candidate-only reflection lessons\n- leave only final real CI evidence pending\n"
    },
    {
      "commit": "1222e9b49218f1849cfff6191bb5df5f222fd1a0",
      "tree": "70a63ec5d184c0236c6c02822819180e75f60956",
      "parents": [
        "7a677337592ef78b0784796dfaddd7f807fd0c3a"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 00:11:47 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "docs(hubble): record final local gates\n\n- capture fresh FE, BE, linked, and package results\n- clarify CI quota as delayed external evidence\n- refresh current HEAD and worktree boundaries\n- correct the Maven toolchain lesson\n"
    },
    {
      "commit": "7a677337592ef78b0784796dfaddd7f807fd0c3a",
      "tree": "8a11394ae9a1c7a36ed6a061dbd2e5effc39ee53",
      "parents": [
        "f3587c2be6a979a8ccf29a267f71c7f632247830"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sat Jul 11 23:50:51 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "fix(hubble): restore strict frontend builds\n\n- pin React and ReactDOM to the stable 18.2 runtime\\n- remove the unused conflicting npm lockfile\\n- run Maven frontend packaging with CI enabled\\n- verify lint, 148 Jest tests, browser UI, and dist audit\n"
    },
    {
      "commit": "f3587c2be6a979a8ccf29a267f71c7f632247830",
      "tree": "a361cafe4b53cbb89a3a1df9f07b9e2ae40b9db8",
      "parents": [
        "ecc1c3760cdcf6be6b6a5eb9dec97cc7ebb75aca"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sat Jul 11 23:28:29 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "docs(hubble): refine quality decisions\n\n- record CI\u003dtrue package and distribution audit evidence\\n- capture the effective checkstyle gate mutation proof\\n- split the React pin from external source-map warnings\\n- preserve high-risk dependency boundaries\n"
    },
    {
      "commit": "ecc1c3760cdcf6be6b6a5eb9dec97cc7ebb75aca",
      "tree": "20e1ffc1b64ce06a108ed2b8a139d9144f05eb86",
      "parents": [
        "81a466bf55a19951c218e4856431ef7815f9dc2a"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sat Jul 11 23:19:15 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "fix(ci): cache exact server package\n\n- key the HugeGraph server cache by resolved commit SHA\\n- reuse only the tarball built for that immutable SHA\\n- preserve checkout verification and source build on misses\\n- validate shell syntax, YAML parsing, and cache-hit behavior\n"
    },
    {
      "commit": "81a466bf55a19951c218e4856431ef7815f9dc2a",
      "tree": "88643ef5cc35d32b5f9f2e43e8d6c25e49a167b7",
      "parents": [
        "e037d660f336a6e3582c265764ef3b61b526074e"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sat Jul 11 23:18:40 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "chore(hubble): cover schema view contracts\n\n- verify schema view success mapping for property types\\n- verify missing property keys fail with the existing contract\\n- confirm test sensitivity with a temporary focused mutation\\n- pass the full 121-test backend unit suite\n"
    },
    {
      "commit": "e037d660f336a6e3582c265764ef3b61b526074e",
      "tree": "488c482690aae590a41dda02c3f501df0c847e99",
      "parents": [
        "646218ea9d02ebd4a3bc418b4acde9c053769e00"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sat Jul 11 22:03:27 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "chore(hubble): align core versions and style\n\n1. replace hardcoded hg-pd-client and hugegraph-core versions with a unified `hugegraph.core.version` (1.7.0) property.\n2. update root `lombok.version` from 1.18.8 to 1.18.32 for newer toolchain compatibility.\n3. migrate `-Xmaxerrs` compiler configuration to `compilerArgs` in `hubble-be/pom.xml`.\n4. clean up wildcard imports, spacing, and line wrapping across hubble-be controllers, services, entities, and utilities for consistent code style.\n"
    },
    {
      "commit": "646218ea9d02ebd4a3bc418b4acde9c053769e00",
      "tree": "dfa9adbf5542ef29b0cfec0853d3b6d50c7831e1",
      "parents": [
        "c842fe957757973d03b16158b1897899344ae239"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sat Jul 11 21:28:49 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "docs(hubble): record final validation\n\n- record implementation head workflow results\n- capture independent review and re-review evidence\n- mark the release-readiness checklist complete\n"
    },
    {
      "commit": "c842fe957757973d03b16158b1897899344ae239",
      "tree": "a6827797af3f25845d958112a455c80f2efb389f",
      "parents": [
        "53774ca7f74a5e122bccb1e1f4e6c3628cdaf359"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sat Jul 11 16:21:38 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "chore(hubble): complete license headers\n\n- add canonical ASF headers to Java and JavaScript tests\n- cover Hubble browser acceptance helper files\n- record the failed PR license-header check\n- preserve all existing runtime and test behavior\n"
    },
    {
      "commit": "53774ca7f74a5e122bccb1e1f4e6c3628cdaf359",
      "tree": "3d7886f55ecb004c740021bbcf7d8534e4c1eb2f",
      "parents": [
        "a14446295c2d87ecfbcc92ea58d0165515e42f20"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sat Jul 11 12:19:00 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "docs(hubble): defer frontend CI cleanup\n\n- keep backend CI on the primary release path\\n- move frontend CI legacy cleanup to final priority\\n- preserve real Chrome acceptance as the product gate\n"
    },
    {
      "commit": "a14446295c2d87ecfbcc92ea58d0165515e42f20",
      "tree": "962371f322f61327d25924496a4f3c6f9ed76375",
      "parents": [
        "0fe5ff654abc7eaff4519a73872732525d3652d9"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sat Jul 11 01:40:08 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "docs(hubble): refresh active TODO state\n\n- remove recently completed TODO entries\n- keep ten unfinished tasks grouped by priority\n- record the current CI failure boundary\n- normalize tracked evidence for EditorConfig\n"
    },
    {
      "commit": "0fe5ff654abc7eaff4519a73872732525d3652d9",
      "tree": "b46303899c89e0fe077b3372879805d2bf10a84b",
      "parents": [
        "c2a8d7fe20a3cac7ae0b650afa64f3fb7180d32f"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sat Jul 11 00:23:34 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "fix(ci): install playwright chromium\n\n- cache Playwright browsers by frontend lockfile\n- install Chromium with required system dependencies\n- keep browser provisioning separate from frontend checks\n"
    },
    {
      "commit": "c2a8d7fe20a3cac7ae0b650afa64f3fb7180d32f",
      "tree": "2d3a84f272ad8399155b5bd0822bb5780b79c552",
      "parents": [
        "554c20ff32fb08c848944497af47057c1a5126c2"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Fri Jul 10 23:49:00 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "feat(hubble): require strong graph clear confirmation\n\n- show graph and deletion scope\n- require exact graph-name confirmation\n- retain errors without closing the dialog\n- document temporary data-only clear semantics\n"
    },
    {
      "commit": "554c20ff32fb08c848944497af47057c1a5126c2",
      "tree": "9a0d042449c2ad53e72669e93c660d9479088fd4",
      "parents": [
        "74cbe3c09b948421e8151dcbc8335bd8dfd2dc28"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Fri Jul 10 23:33:25 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "refactor(hubble): use canonical graph api calls\n\n- send graph updates with PUT JSON\n- read the canonical default graph resource\n- remove default GraphSpace facade calls\n- hide unsupported default GraphSpace mutation\n"
    },
    {
      "commit": "74cbe3c09b948421e8151dcbc8335bd8dfd2dc28",
      "tree": "9c0cdc078d6547bca4f8d25cf9ac7a1cc18c38d5",
      "parents": [
        "c2c837431dc86e091d31da5bd25f2298f0248bd0"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Fri Jul 10 23:20:42 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "docs(hubble): add api cleanup plan\n\n- split backend and frontend contract slices\\n- define red-green verification commands\\n- preserve client compatibility boundary\\n- add integrated acceptance audit\n"
    },
    {
      "commit": "c2c837431dc86e091d31da5bd25f2298f0248bd0",
      "tree": "cf2593882aed2ea02625f4a1471d21f0522613cb",
      "parents": [
        "f5858abb1c99614a118fdbc04bbcd874de1177ef"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Wed Jul 08 18:20:23 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "fix(hubble): use gremlin client for shortest path\n\n- Route shortestPath through the gremlin-capable client\n\n- Add a controller unit test for the client selection\n\n- Preserve token-client behavior for unrelated OLTP APIs\n\n- Validate with focused tests, unit suite, package and PD smoke\n"
    },
    {
      "commit": "f5858abb1c99614a118fdbc04bbcd874de1177ef",
      "tree": "96611ae83318a8533be9589d3fdab7e777a7b20d",
      "parents": [
        "eb5d5dad07bb6df74e204993237ae16329069f26"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Wed Jul 08 12:36:10 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "fix(hubble): guard protected routes\n\n- add a protected route wrapper for layout business routes\n- preserve redirect targets for login return flow\n- catch Topbar auth status request failures\n- add route guard and Topbar request regression tests\n"
    },
    {
      "commit": "eb5d5dad07bb6df74e204993237ae16329069f26",
      "tree": "050be325e74ac02cab03a80c4b5a03c390fe2b1c",
      "parents": [
        "cebaa5b413b8e62a1178cc520c492f92a5d0eec4"
      ],
      "author": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Wed Jul 08 01:46:43 2026 +0800"
      },
      "committer": {
        "name": "imbajin",
        "email": "jin@apache.org",
        "time": "Sun Jul 12 14:24:25 2026 +0800"
      },
      "message": "fix: remove empty catch blocks\n\n- replace HubbleConfig resource lookup empty catch with explicit null check\n- restore interrupt state and fail TaskApiTest sleeps on interruption\n- add EmptyCatchTest and include it in Hubble UnitTestSuite\n- verify with JDK 11 EmptyCatchTest, UnitTestSuite, client test-compile\n"
    }
  ],
  "next": "cebaa5b413b8e62a1178cc520c492f92a5d0eec4"
}
