)]}'
{
  "log": [
    {
      "commit": "456167909ed79b2c580b2e1f59a0c7c40585c3ed",
      "tree": "5885b38e9113f899515b46cf999699cea72b4e45",
      "parents": [
        "a4bf471a88b603c3d57728bb81774bfef36c3982"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Aug 03 11:44:02 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Aug 03 11:44:02 2025 +0000"
      },
      "message": "Canvas: Fix webhook handler\n\nChange-Id: I4515c0e9f0c00ee7fff69d3551e22d112e132633\n"
    },
    {
      "commit": "a4bf471a88b603c3d57728bb81774bfef36c3982",
      "tree": "ffafa63ace8b7d08651fb6ca7e3cf9ec9e4f2ae3",
      "parents": [
        "6439d448800083c5726f86240621cf2b2120e650"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Aug 03 02:21:28 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Aug 03 02:37:52 2025 +0000"
      },
      "message": "Canvas: Filter out proxy and old nodes\n\nChange-Id: Ibe04f36f1dd24ea87a0d41d60006a154ec5720b0\n"
    },
    {
      "commit": "43e0aadc734358431b604c4ebf62269ef266c415",
      "tree": "f2a3219bbf171789c68f454acd07ad8b2040961a",
      "parents": [
        "e10ba16719d9b55295e9b950cfd647b536e3b735"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Aug 01 16:17:27 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat Aug 02 08:46:26 2025 +0000"
      },
      "message": "Canvas: Add VM/PROXY dev modes support\n\n- Update ServiceSchema to discriminate between VM and PROXY dev modes\n- Add DevDisabled, DevVM, DevProxy TypeScript types\n- Update ServiceData type in graph.ts for new dev structure\n- Update generateDodoConfig to handle both VM and PROXY modes\n- Update configToGraph to properly convert dev configurations\n- Maintain backward compatibility with existing dev configurations\n- Update UI and introduce two new DevVM and DevProxy components\n- Fetch user machine list from headscale API\n\nChange-Id: I8f9df4ab9bd34c049fffadb748115335e8260a54\n"
    },
    {
      "commit": "e10ba16719d9b55295e9b950cfd647b536e3b735",
      "tree": "6e45d4d55a1ba0105bd23fe153e2097b285f0687",
      "parents": [
        "2835615e4cd72a46289f2e14c9afb0ccc43e0ceb"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 31 19:52:29 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Aug 01 14:50:16 2025 +0400"
      },
      "message": "DodoApp: Implement dev proxy mode\n\nWith dev proxy user can substitute any service with their own local\nmachine. In which case dodo will run proxy server on the platform\nwhich will forward all requests to the configured address.\n\nWhen VPN is enabled, dodo will run tailscale sidecar in the proxy pod.\n\nChange-Id: I12592ae77d2e88e0582c8fe1e0f82e5fd24e02cb\n"
    },
    {
      "commit": "0e1a97d95423a4fb693ecced2007b7e0b0f4db1e",
      "tree": "bc9ab2e1b09736453541ac15fa20c871dc877ae0",
      "parents": [
        "212f8005eccaab752054eb65ef74fc01d37a31fd"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 08 10:42:23 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 08 10:44:59 2025 +0000"
      },
      "message": "Canvas: Actually use env vars\n\nChange-Id: Ia0662b36679bbf1c7cd42256bcffd591b30733c3\n"
    },
    {
      "commit": "e085d5baf2a4c404e47820b1061417f62671ad42",
      "tree": "e91dbde6df15c5df0b1f1395dd82478df56ac577",
      "parents": [
        "007c85773b71d3a38cefda2d3e23b46700384907"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 08 07:51:36 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 08 07:51:36 2025 +0000"
      },
      "message": "Canvas: App wide env vars\n\nChange-Id: Ia4101ba7c646e33591a1ddd642622e2712865b71\n"
    },
    {
      "commit": "007c85773b71d3a38cefda2d3e23b46700384907",
      "tree": "3e4a8350b750485fa0d904d70ef5d1b382481be2",
      "parents": [
        "166d9925c67149410a414b5b412b32d8322ca759"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 08 04:27:35 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 08 04:27:35 2025 +0000"
      },
      "message": "Canvas: Configure deploy keys on repo owner\n\nExpose Agent compact prop\nImplement GitHub repo pagination\n\nChange-Id: Ib444c53f2c7f83d7461e6f1a8e9d86698d320e92\n"
    },
    {
      "commit": "166d9925c67149410a414b5b412b32d8322ca759",
      "tree": "abbc7d4e8f3721931855f886fc0852c88953ff4d",
      "parents": [
        "785c98873f248641a1c4385eb2b4d60af3e30ad5"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jul 07 17:30:21 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jul 07 17:30:21 2025 +0000"
      },
      "message": "Canvas: Auto cleanup old workers\n\nChange-Id: I046ce8dcbadd14b53e465fe0ffb60fae642c6951\n"
    },
    {
      "commit": "785c98873f248641a1c4385eb2b4d60af3e30ad5",
      "tree": "08b7049ce80585075721a72c6635f57d403d7ed8",
      "parents": [
        "31f16a1d520126779e9c05a08257982ad932648d"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jul 07 16:40:25 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jul 07 16:40:28 2025 +0000"
      },
      "message": "Canvas: Check agent health\n\nChange-Id: I429eecebde1d661513dfd94e27cdaa820bd49493\n"
    },
    {
      "commit": "f9892a564b78ef812b0d0f1efedd453ea5425c3d",
      "tree": "89528cb1ba7e8f3f6affbef8bf9c794515c730b9",
      "parents": [
        "5be6f78135341869b3b395429a25ebeeea4c0710"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jul 07 19:23:28 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jul 07 19:23:28 2025 +0400"
      },
      "message": "Canvas: Add nodeId field to dodo-app.jsonschema\n\nChange-Id: I2761a6f91f98c610b5436c6e6586d1ceecafcf70\n"
    },
    {
      "commit": "b0dc2d17ad60e6e306c29daefed479a5de1cf59f",
      "tree": "7d4ca6c7607cca931f766b6ce50135e985adc11d",
      "parents": [
        "a5fde99dee7b7f10cdc986302c380b7b3658a10b"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jul 07 08:28:48 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jul 07 08:28:48 2025 +0000"
      },
      "message": "Canvas: Project -\u003e Logs cascade delete\n\nChange-Id: I268751c8a568240dc7a2976549a46d227d35f968\n"
    },
    {
      "commit": "a5fde99dee7b7f10cdc986302c380b7b3658a10b",
      "tree": "145be75f4356c32cbcafe3a971f3f0668ff687dc",
      "parents": [
        "56e9f471ee3ab18ea51317b023d3b0c96f8553ce"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jul 07 08:18:19 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jul 07 08:18:19 2025 +0000"
      },
      "message": "Canvas: Preview tab\n\nChange-Id: I8a66cd977db5864828ad7ba9025270d624143091\n"
    },
    {
      "commit": "56e9f471ee3ab18ea51317b023d3b0c96f8553ce",
      "tree": "92a714d575f2663b38df905400d03b98c289ee0b",
      "parents": [
        "52441604dd0cc8296a354ba55d8033848cfbf4ad"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jul 07 03:33:38 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jul 07 03:33:38 2025 +0000"
      },
      "message": "Canvas: Add option to deploy latest draft\n\nChange-Id: Ia74c64354e1f80ec794140ce406fb21c16feb0da\n"
    },
    {
      "commit": "52441604dd0cc8296a354ba55d8033848cfbf4ad",
      "tree": "2e2241b810473114e8e4a39ee36c58358ec7b41f",
      "parents": [
        "efc9a4a8fb4b648249c836cc14bba9dfe235f154"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Jul 06 18:22:56 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Jul 06 18:22:56 2025 +0000"
      },
      "message": "Canvas: Auto-assign position to nodes if missing\n\nChange-Id: Ica80878e0cb280c9a44f58637c11b53d78e07892\n"
    },
    {
      "commit": "efc9a4a8fb4b648249c836cc14bba9dfe235f154",
      "tree": "492d2d05696be9c228a3f568047b14d6efab08dd",
      "parents": [
        "678746bd0efe365620a5172cfd432b6986651ba3"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Jul 06 16:22:10 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Jul 06 16:22:10 2025 +0000"
      },
      "message": "Canvas: Use regular font size for node details label\n\nChange-Id: Ib9cef6d7b4293e8623321919bb9a89c9c30b7453\n"
    },
    {
      "commit": "678746bd0efe365620a5172cfd432b6986651ba3",
      "tree": "016b5b04d09341a51f1c10cbf23527127f3959f9",
      "parents": [
        "10ff134f60a350c2d2aa8742a941f48af0baa77c"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Jul 06 14:45:27 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Jul 06 15:49:51 2025 +0000"
      },
      "message": "Canvas: Update layout\n\nCombine separate Overview and Canvas tabs into one Build tab\nAdd Overview \u003c-\u003e Canvas switcher to Actions\n\nChange-Id: I40f7742be587b475ae6e88af2bcf9cae34f93168\n"
    },
    {
      "commit": "10ff134f60a350c2d2aa8742a941f48af0baa77c",
      "tree": "00e217692c5bf20d0e97ee6c3e51048b6dd75417",
      "parents": [
        "8edf6c7753525fb9680c90ef09a6fdd16bfb818b"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat Jul 05 10:22:15 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Jul 06 05:21:45 2025 +0000"
      },
      "message": "Canvas: Use GraphSchema to validate state\n\nChange-Id: I342c8959c97f3486c4a7cb2aff92fb930a2b3146\n"
    },
    {
      "commit": "8a5f12fc0a4a44ba221305eb6a58fcb3a7f40db7",
      "tree": "6b0b27dfe37d253c457dbc6fbab4c71dd4c3dab3",
      "parents": [
        "74c6f75a5fc197356660339149b7a84990f85ea8"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat Jul 05 07:02:31 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat Jul 05 08:38:05 2025 +0000"
      },
      "message": "Canvas: Implement streaming state updates\n\nChange-Id: I2bc5a51b5792839bde93f927f5ffea22b3250fe2\n"
    },
    {
      "commit": "74c6f75a5fc197356660339149b7a84990f85ea8",
      "tree": "ecc337e1e5de656cb2ed6035abfd88c20fbd6682",
      "parents": [
        "2e7d217e445377789bf8c57de57a314e1c736f4e"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat Jul 05 04:10:58 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat Jul 05 04:18:34 2025 +0000"
      },
      "message": "Canvas: Implement agent sidebar on the overview tab\n\nChange-Id: I1f2fb874cb98247c73bebf364f4669ad5170c4a0\n"
    },
    {
      "commit": "2e7d217e445377789bf8c57de57a314e1c736f4e",
      "tree": "b29ea2e9cd8c142149cca3f3c9e207ea69981513",
      "parents": [
        "9f3d4f5563099c27c2aef5257f50e669c2e15345"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jul 04 09:24:53 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jul 04 09:37:05 2025 +0000"
      },
      "message": "Canvas: Port expose form\n\nChange-Id: I421c67230075778fad3359e11a5c573cd83882c9\n"
    },
    {
      "commit": "9f3d4f5563099c27c2aef5257f50e669c2e15345",
      "tree": "49593b3a4453fe66895324606c19a4eaba80ebc3",
      "parents": [
        "1dacf1ca5feef1a9965d41ce3018429dd02aee44"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jul 04 08:42:34 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jul 04 08:42:34 2025 +0000"
      },
      "message": "Cavnas: Service node details renders associated ingress\n\nChange-Id: I5aa4e146fedacadd48af095e8df2f3fe35a8342a\n"
    },
    {
      "commit": "1dacf1ca5feef1a9965d41ce3018429dd02aee44",
      "tree": "8d46b9847f0ec0181026592b96fafab4a170be46",
      "parents": [
        "641799b4b4dff496dc5b07a10a61f84abe8f790f"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 03 16:39:04 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jul 04 08:03:07 2025 +0000"
      },
      "message": "Canvas: Let user define name/value env var\n\nChange-Id: I9beffcc6f0dcbb674ef82b37b93b5f5ef7d189bc\n"
    },
    {
      "commit": "641799b4b4dff496dc5b07a10a61f84abe8f790f",
      "tree": "adc6c5c1a382c7c495dc6f82bc9b1aacb75f7289",
      "parents": [
        "73ac16c907d32cd1606d314e15c09e12c861961f"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 03 16:11:36 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 03 16:11:40 2025 +0000"
      },
      "message": "Canvas: .env.dev\n\nChange-Id: Id167f5bad6b760d47bce635ba11547b868ea3f0d\n"
    },
    {
      "commit": "73ac16c907d32cd1606d314e15c09e12c861961f",
      "tree": "6ef6bde35335e74c00407e2db3609bc4f1387a2c",
      "parents": [
        "790c87fbfff0d78e67b79587781ff2bb420d7af3"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 03 14:38:04 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 03 16:11:40 2025 +0000"
      },
      "message": "Canvas: Auto create port named env var alias\n\nChange-Id: I1bf725fbb41d1cbda9cfbde0479399c58cef7df6\n"
    },
    {
      "commit": "ff9b552850e9afabeba14b2436e9e0b560eecf40",
      "tree": "20a8cf92fd3a8fa6dd6c9633ff3702d39b44bb15",
      "parents": [
        "577d23428911fc6abec626b1a0c0d1f3d84e8a00"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 03 13:50:30 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 03 13:50:30 2025 +0000"
      },
      "message": "Canvas: No env alias editing when disabled\n\nChange-Id: I15eff626a7b4b84dafa0f56e2a3890e04e18df3f\n"
    },
    {
      "commit": "577d23428911fc6abec626b1a0c0d1f3d84e8a00",
      "tree": "9606d1568a0e80ac72affce0dfa25ad0730e3ca7",
      "parents": [
        "37fba252cb61ffff23c8c1d31a55b1ac25944e02"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 03 12:50:18 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 03 13:08:10 2025 +0000"
      },
      "message": "Canvas: Add worker kill action to monitoring tab\n\nChange-Id: I8387dcf2320f9eccdb2e443fd4039e91ff35ed31\n"
    },
    {
      "commit": "69ff759f4e5bafc74f80cb2b72e4e417ec2edbbb",
      "tree": "9d40d639f30a9b053513b7082e4a52bf0d9c0730",
      "parents": [
        "4745b3fec208c81e4e694a11cb41d827239b8872"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 03 06:27:21 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 03 08:15:36 2025 +0000"
      },
      "message": "Canvas: Support Anthropic Claude based AI agents\n\nChange-Id: Ib74c9672da9a80a4f20d63741a471c728a435b8e\n"
    },
    {
      "commit": "34193053a2bfdd685fd3844d0a5c484669ee5a26",
      "tree": "49499670c48e8084432fbb7af2f47e7bdfce2436",
      "parents": [
        "a70535a1e77cb10c7e83c8129f7b150a3b522c1f"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 03 03:55:11 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 03 03:55:11 2025 +0000"
      },
      "message": "Canvas: Gemini API key validator\n\nChange-Id: If185b7600c3fdd153345ab6f80c1b89f6504ddeb\n"
    },
    {
      "commit": "a70535a1e77cb10c7e83c8129f7b150a3b522c1f",
      "tree": "2d74005cac054b4ae58876cb2f55bf735ed3fbd0",
      "parents": [
        "67d6d5ffdaf277c2ce4696a4c3a978280e914488"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jul 02 15:50:25 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jul 02 15:51:42 2025 +0000"
      },
      "message": "Canvas: Fix worker registration request schema\n\nMake commit information optional and nullable\n\nChange-Id: I181a7ac53f6b1618c11443b168af27e356922ace\n"
    },
    {
      "commit": "67d6d5ffdaf277c2ce4696a4c3a978280e914488",
      "tree": "3574e31c8d5ff5d079e9d83cac00a5842436e42c",
      "parents": [
        "3aba30926494639c5617e5a25822f8802d1b6876"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jul 02 15:49:54 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jul 02 15:51:42 2025 +0000"
      },
      "message": "Canvas: Use lowercased port names when generating dodo-app config\n\nChange-Id: Ic33584b94955848e0510f6a8acc755036748604e\n"
    },
    {
      "commit": "40c0c999eb85dbbb0f5c470a51bfdb647bde5f37",
      "tree": "9745e94a18e2f399167e7a1f4df3cfdf5245cc65",
      "parents": [
        "78a2288b18665a2dc2094ffdbccf635b0259049d"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jul 02 13:18:05 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jul 02 13:18:05 2025 +0000"
      },
      "message": "Canvas: Persistent log storage\n\nChange-Id: I3eac705329e6d68d8e4b9a371c6e9b9807f357ec\n"
    },
    {
      "commit": "78a2288b18665a2dc2094ffdbccf635b0259049d",
      "tree": "3c3bbf3507ab12fdb889d6013b194209854a2088",
      "parents": [
        "89c5b5e630fa43caace1657cedc97c8e07d40f3b"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 01 18:56:01 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jul 02 08:28:51 2025 +0000"
      },
      "message": "Canvas: Render logs using XTerm\n\nUse Server Sent Events to stream logs.\n\nChange-Id: I3790a22a39b71409636a81dbe2a2cc8bf4977cb4\n"
    },
    {
      "commit": "2f393c12fe97a6794a8bd6a5969320bbf184fe3f",
      "tree": "f2e7fc7fdf27af6132afcf80a7eda637805d499c",
      "parents": [
        "8f8b086c368c7c2c7fe24c3c11fb1393f6f1b83f"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 01 08:02:48 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 01 12:58:51 2025 +0000"
      },
      "message": "Canvas: Makefile\n\nChange-Id: I448a36bf60ee33fb4691d5312ac69b32ec38ec14\n"
    },
    {
      "commit": "1037ee2f7f2f64f007e0480009297cad78b5c456",
      "tree": "4393818fe02020accee026494ab77f3ab0e19e89",
      "parents": [
        "90a265bcb8fb65bb7e77ef2abb1395837b21ecbf"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jun 26 09:25:43 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jun 26 09:33:36 2025 +0000"
      },
      "message": "Canvas: Add modal resources dialog to Overview tab\n\n- Add Add button to Actions component visible only in Overview tab and edit mode\n- Create modal dialog with Resources component for adding new resources\n- Modal automatically closes when resource is added\n- Resources component accepts optional onResourceAdded callback\n- Maintain backward compatibility with existing Resources usage\n\nChange-Id: Ib01fe1417ba2bbb7c91f6e1d0551fe9c52ade8c3\n"
    },
    {
      "commit": "90a265bcb8fb65bb7e77ef2abb1395837b21ecbf",
      "tree": "14659a4913d355568fd039f4a925c3d4aea6a524",
      "parents": [
        "cc5ce58b57b3faa66cc784cb3f248420602befcb"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jun 26 09:16:58 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jun 26 09:33:28 2025 +0000"
      },
      "message": "Canvas: Add search functionality to resources component\n\n- Add search input field at the top of resources panel\n- Filter categories and items based on search value in real time\n- Hide empty categories when no matching items found\n- Use memoized filtering for performance optimization\n\nChange-Id: I3c4d46e54a1100ad14be0b73f015042f2bdef434\n"
    },
    {
      "commit": "cc5ce58b57b3faa66cc784cb3f248420602befcb",
      "tree": "a3012ae4df037604f79beeb94852d3703947d57c",
      "parents": [
        "85ddcdf7453f8f222654136116e856a64b4eae7c"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jun 25 07:45:21 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jun 26 07:02:46 2025 +0000"
      },
      "message": "Canvas: Render AI agents in tabs\n\nImplements AI Agent chat bubble, but is disabled for now.\n\nChange-Id: If915691a22f376f347b76a5d24333dbe76492ca9\n"
    },
    {
      "commit": "cefb3b500ad84268b0f999023c4d37e4fbb328c3",
      "tree": "9d1f1386080492d060c0c1b3c2d7beee566f8a2a",
      "parents": [
        "e8402359dfa65dbe72fee68ba3961a43f892aacc"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jun 24 21:55:52 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jun 24 18:00:44 2025 +0000"
      },
      "message": "Canvas: dear_llm.md\n\nChange-Id: Ib3b12395c8ce21ac3326dd638f00002627dfdb5c\n"
    },
    {
      "commit": "691483264b84abdbee3d889fd3c0ae2754b99fa5",
      "tree": "6d44a701921ae9e140ce85f299f7359ce96cdf81",
      "parents": [
        "b33b2a93a0a2e51d94ebc844b81686e8ab2e3c64"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jun 19 23:16:12 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jun 24 08:32:04 2025 +0000"
      },
      "message": "Canvas: Implement Agent Sketch node, update dodo-app.jsonschema\n\n- Add Gemini API key to the project\n- Update dodo schema to support Gemini API key\n- Update dodo schema to support Agent Sketch node\n\nChange-Id: I6a96186f86ad169152ca0021b38130e485ebbf14\n"
    },
    {
      "commit": "9b7421ac7ad75ad949e32d1606afcd685443ef8c",
      "tree": "97464a6c474781bd521c96e034733cec0c7b6ab5",
      "parents": [
        "dbabb10be6f6211d630e526d45aa54eae59756c9"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jun 18 12:31:13 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jun 18 15:19:21 2025 +0000"
      },
      "message": "Canvas: Generate Github nodes out of the dodo-app config\n\nChange-Id: Ifc5b09deb39352a3025f7ea66ce39b421daac94d\n"
    },
    {
      "commit": "c31bf14971e228b03f738dde4cbfc8ae34f88f9d",
      "tree": "13345409e55a4628c1228e7606c20158eef2239f",
      "parents": [
        "4b08eb7dd536c9c66263b3eea08bfeb43f035f74"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jun 16 07:48:20 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jun 18 09:13:19 2025 +0000"
      },
      "message": "Canvas: Generate graph state out of dodo-app config\n\nRestructure code, create shared config lib.\n\nChange-Id: I2cf06d35c486d4557484daf8618a2c215316fa7e\n"
    },
    {
      "commit": "4b08eb7dd536c9c66263b3eea08bfeb43f035f74",
      "tree": "721713118e035fcb9d43dfa9ba2ff0abc3d7c5c5",
      "parents": [
        "8e74dc031c5490b736c96cec4dce7cf04725b9e2"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jun 16 03:44:58 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jun 17 07:56:02 2025 +0000"
      },
      "message": "Canvas: Add JSON schema for dodo-app configuration\n\nChange-Id: I7c562c41a05e370016e3d73b975d3cc8b0b5a5e2\n"
    },
    {
      "commit": "8e74dc031c5490b736c96cec4dce7cf04725b9e2",
      "tree": "eb236deefadf80968376e38f6b7cb9562a826678",
      "parents": [
        "e7734b234a6a4e3fd83fe32cbab250a5c1b1ef13"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jun 13 10:19:26 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jun 13 14:33:42 2025 +0000"
      },
      "message": "Canvas: Import modal\n\nChange-Id: I22928007c5b81d93be2eed2d133fed4d73e1703f\n"
    },
    {
      "commit": "e7734b234a6a4e3fd83fe32cbab250a5c1b1ef13",
      "tree": "e445dab82fb9a3d610793ffefed9028bf3b1c175",
      "parents": [
        "5fa669611b128b5365c3f92d6c330ecd06e897b9"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jun 13 10:12:04 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jun 13 10:12:04 2025 +0000"
      },
      "message": "Canvas: Show app tab titles in overview mode\n\nChange-Id: Iafbcfba04c53f033c091152392e724590b2f4e3f\n"
    },
    {
      "commit": "5fa669611b128b5365c3f92d6c330ecd06e897b9",
      "tree": "1908b7332df5cce12ce8a7f2661111ea8259598a",
      "parents": [
        "3fb133dff3380d8278bacd6b0a3e5cdb98f1edea"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jun 13 09:30:40 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jun 13 09:39:56 2025 +0000"
      },
      "message": "Canvas: Improve overview tab styling\n\nChange-Id: I1bb656e5d277c0e8c46da5d6be0748f964551049\n"
    },
    {
      "commit": "3fb133dff3380d8278bacd6b0a3e5cdb98f1edea",
      "tree": "bbbf363464fd20b57838fb5d0b5e91d793195fa2",
      "parents": [
        "08acd3ac799f73e9af2508d6532348f8b6af5aca"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jun 13 07:20:24 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jun 13 09:10:59 2025 +0000"
      },
      "message": "Canvas: Reuse Name component in node details\n\nChange-Id: Ide8094b50f9ac019e7bada9a000100f9233133da\n"
    },
    {
      "commit": "08acd3ac799f73e9af2508d6532348f8b6af5aca",
      "tree": "70e9ddb8ae6e6a2e7577ba684d16ae23ae157a05",
      "parents": [
        "3d0bf03a6396a7148b5e962aa65bac7958257337"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jun 12 12:15:30 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jun 12 12:15:30 2025 +0000"
      },
      "message": "Canvas: Refactor NodeDetails signature\n\nChange-Id: I78a07b130089e50df9524de0895210528b3e09b3\n"
    },
    {
      "commit": "3d0bf03a6396a7148b5e962aa65bac7958257337",
      "tree": "ae5a4454cf774626c5da1e40dfbba7dc8125dfa5",
      "parents": [
        "da12043e344890345c795ef90da783a3d51c620f"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jun 05 06:57:26 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jun 12 10:47:22 2025 +0000"
      },
      "message": "Canvas: Reuse node details component in overview\n\nMake app details tabular.\n\nChange-Id: I78a641e8e513eec44573bb8c8a391ef81a66e7fe\n"
    },
    {
      "commit": "da12043e344890345c795ef90da783a3d51c620f",
      "tree": "6e105d39ce3b941949e67600bc657b1ce903459e",
      "parents": [
        "a71316da2998b2972ace8a155d04333a00b330a9"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jun 02 09:42:26 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jun 02 17:44:25 2025 +0000"
      },
      "message": "Canvas: Overview tab\n\nChange-Id: Ie40ed4e26991b7915ec005681b92eb39fdc354c9\n"
    },
    {
      "commit": "a71316da2998b2972ace8a155d04333a00b330a9",
      "tree": "f4f036585ce8547ce0b3d23f4542f3b5ba543f53",
      "parents": [
        "842db3f5be99c6b700072911c49c7c03f48daca6"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat May 24 09:41:36 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jun 02 09:27:31 2025 +0000"
      },
      "message": "Cavnas: Implement basic service discovery logic\n\nChange-Id: I71b25076dba94d6491ad4db748b259870991c526\n"
    },
    {
      "commit": "8fad76ab737dff9fc24d17b3b88ae491ed9af8b7",
      "tree": "387c24eab8357e5dc7418a2695ac0ec465b2e8b7",
      "parents": [
        "ea6d912dbfd4fbee839cc0d869347e707f19b132"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 22 14:01:23 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 23 07:50:58 2025 +0000"
      },
      "message": "Canvas: Use node full labels when monitoring\n\nChange-Id: I7b3bce3519c2a7b7780f43cf1c092fcca9e6ecd9\n"
    },
    {
      "commit": "918780d890086f65cf6a2c6bded71a26ce76cf96",
      "tree": "5bdba6814ee19d29ac5308e02295d7c672fea940",
      "parents": [
        "2539d9e43e842acb11a9f48ed9a72d829df28e6f"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 22 08:24:41 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 22 09:11:35 2025 +0000"
      },
      "message": "Canvas: Add Reload button on Monitoring page\n\nChange-Id: I593d9068870bcd5f0d43680af4a08d814a18a2a9\n"
    },
    {
      "commit": "0afbaee7098e4f014424d866897fbefc8c504484",
      "tree": "7077720891489144a48b0b34cb705ef3bf41a19b",
      "parents": [
        "9635ccbce34ce2e5a83168e8e0e0e77e4d79089a"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 22 04:34:33 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 22 04:48:03 2025 +0000"
      },
      "message": "Canvas: Display commit message\n\nChange-Id: Ifa2907c3377bd6174fa2c22a862dbae0eb8901fc\n"
    },
    {
      "commit": "c717e36a85298254f8de710245906b0ac9c9e171",
      "tree": "be1ebb523d8fb773214e4d4a803d07062822d046",
      "parents": [
        "5155c1a018373a76319f1a15f5fb18232b6c9ca6"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 21 16:02:03 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 21 16:02:03 2025 +0400"
      },
      "message": "Canvas: Restore .env file\n\nChange-Id: I570c5fec718e7e462cb2f719271041c6f97a5e55\n"
    },
    {
      "commit": "a1efbadf3c50d5d1e6615cf018e57d48c0e01d2b",
      "tree": "6aa811cb15af356d825689528171d5c468422371",
      "parents": [
        "48679461d25e1e81cd2f226cc215c4e5360d8988"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 21 07:16:45 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 21 09:08:21 2025 +0000"
      },
      "message": "Canvas: Rework monitoring page\n\nDisplay worker statuses with list of commands\nCommit hash\n\nChange-Id: I7054ecc5ce81f35cad3fe26fc20677b6f50d3147\n"
    },
    {
      "commit": "48679461d25e1e81cd2f226cc215c4e5360d8988",
      "tree": "fe77c80549048fbe07954c0a88fa242a8c1b4310",
      "parents": [
        "b1c5c454ffb0cda2b8458268d41d925b0c9e3ab6"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 21 04:27:27 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 21 08:52:18 2025 +0000"
      },
      "message": "Canvas: Consistent icons\n\nChange-Id: Ib33a4bb8c0dbafefae7a600b86900b60f6118340\n"
    },
    {
      "commit": "b1c5c454ffb0cda2b8458268d41d925b0c9e3ab6",
      "tree": "faa9d742aae329fd284f67bc4baa020ae127c1ed",
      "parents": [
        "6481c9095aef7c7d2a0554b1d1af8a55171a89c3"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 21 04:16:54 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 21 05:13:19 2025 +0000"
      },
      "message": "Canvas: Refresh env on remove deployment\n\nChange-Id: I1e09b50668a41ed11426fa0b8b0a600089e16c19\n"
    },
    {
      "commit": "b45b1866d422a31135a5d9af73ebc79381d0a0cb",
      "tree": "8d001086da42a8bb5e1e6fab5279c5f66678e287",
      "parents": [
        "bceb0853af62c5f23d62e4d51d7e097223527d12"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 20 11:42:20 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 20 11:42:20 2025 +0000"
      },
      "message": "Canvas: Fix project selection\n\nChange-Id: I34d68d06cc125acd1336fbd180bfdb6bfdfb2553\n"
    },
    {
      "commit": "bceb0853af62c5f23d62e4d51d7e097223527d12",
      "tree": "b3503e16d0b21b8cefe772fad3a8f72787cb70a3",
      "parents": [
        "6a49afc86b5d9626874146cb91225e4f941ae37b"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 20 13:15:18 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 20 13:15:18 2025 +0400"
      },
      "message": "Canvas: Expose nodejs 24.0.2\n\nChange-Id: Ie75960b47d067c24031741edc892ae8f30475ac9\n"
    },
    {
      "commit": "6a49afc86b5d9626874146cb91225e4f941ae37b",
      "tree": "489a36b4cb95860110c7f1e294af1db49e959a68",
      "parents": [
        "ec744fab02aea72142ad3f17b38c68957039e437"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 20 12:48:45 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 20 13:06:52 2025 +0400"
      },
      "message": "Canvas: Fix INTERNAL_API_ADDR\n\nChange-Id: I1079a5db68b1d850ab36314018b6c5a96dee1bc2\n"
    },
    {
      "commit": "376a81d467d707eb2bd98a35c16c0b784e5c2eb3",
      "tree": "478f885a744e24867b987ddd5871886d9cf18ca1",
      "parents": [
        "eb148c8066d00c73a012727d63c30e8c2b207eac"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 20 06:42:01 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 20 06:50:43 2025 +0000"
      },
      "message": "Canvas: Use volume to persist data\n\nChange-Id: Ia93299590885c91d6e44c1e8842ba2c259bfc8a0\n"
    },
    {
      "commit": "eb148c8066d00c73a012727d63c30e8c2b207eac",
      "tree": "13738767beb4ef48e3bd7bfc4fe71688511adc3e",
      "parents": [
        "76d8ae649ccecc0c24f90971cbd250cfd45b99c1"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 19 16:17:22 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 19 16:17:22 2025 +0000"
      },
      "message": "Canvas: Add info about webhooks\n\nChange-Id: Icbe3625f444349f394672d963185fcc7d10b6c19\n"
    },
    {
      "commit": "76d8ae649ccecc0c24f90971cbd250cfd45b99c1",
      "tree": "639016de4bb7b7c75bdcee356d5983f9e1b9c255",
      "parents": [
        "82afef1887f8ee11e84e27bdc7e435a98ef35ecf"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 19 15:21:54 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 19 15:50:38 2025 +0000"
      },
      "message": "Canvas: Auto register github webhook upon deploy\n\nChange-Id: I0321a032014d58016926189869b0fc24ad7ee2b1\n"
    },
    {
      "commit": "6d8b71c93b719eafeae28ad6fadc9165fe66a419",
      "tree": "dce23b09ab7d2151963e8b67e1d272516be45830",
      "parents": [
        "05a993c181ec17ac8004219360188291785e088d"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 19 12:57:35 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 19 13:29:46 2025 +0000"
      },
      "message": "Canvas: Check if network supports auto\n\nChange-Id: I19e06b70e3e1a59f6549fcf01b565bad8a7f5695\n"
    },
    {
      "commit": "05a993c181ec17ac8004219360188291785e088d",
      "tree": "032ef46d683bc6e174dc7e1265b21fcd2fa0077b",
      "parents": [
        "4037078c897d124b7e5209504e0e49493f534113"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 19 11:51:33 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 19 12:34:36 2025 +0000"
      },
      "message": "Canvas: Show count badge on Gateways tab\n\nChange-Id: If93a4425c0c7f3395ad6712a4658711668e03b92\n"
    },
    {
      "commit": "4037078c897d124b7e5209504e0e49493f534113",
      "tree": "225aad787f8fd35dbcc24a6c489d3e87a9bccf50",
      "parents": [
        "6223714336ad69a661483a2cdf0acd1585ea5fcf"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 19 11:04:52 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 19 11:11:04 2025 +0000"
      },
      "message": "Canvas: Do not render input on config tab\n\nChange-Id: I5ebe939457610546ae59894958dbac153fcefcdf\n"
    },
    {
      "commit": "6223714336ad69a661483a2cdf0acd1585ea5fcf",
      "tree": "a32c4ffb766a3e49995431015e460c57f6a9dcd6",
      "parents": [
        "97efd7256d5d4d12654be30c24500edbf4cf7556"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 19 10:39:40 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 19 10:39:40 2025 +0000"
      },
      "message": "Canvas: Refresh env on successful deployment\n\nChange-Id: I7e27b21dd4409eb76fb02ab3feaf35fb56d0b989\n"
    },
    {
      "commit": "97efd7256d5d4d12654be30c24500edbf4cf7556",
      "tree": "d2c257b3a1075e5fd7c7b84d6d3ff9936c513d75",
      "parents": [
        "b77cb93401adc282f70ad3e8e0481af67518f3f5"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 19 10:36:12 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 19 10:36:12 2025 +0000"
      },
      "message": "Canvas: Fix TCP gateway exposing DB\n\nChange-Id: I0aef6a4754b0b674820d479b85fc770987164b02\n"
    },
    {
      "commit": "b77cb93401adc282f70ad3e8e0481af67518f3f5",
      "tree": "de49d8f6d70f5e77ecf65a10c335a7fe19509c85",
      "parents": [
        "6ce4481b19e87a2b010ca9dd7247f894eea32448"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 19 09:37:14 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 19 10:13:30 2025 +0000"
      },
      "message": "Canvas: Rework Deployment/Gateways tab\n\nChange-Id: I938262b9a6ba2af060531e7dcdf91ddd66721385\n"
    },
    {
      "commit": "3304672099846c2323de7bdb26d8df9e14b5eaff",
      "tree": "a4f4aa86214615f42215e3e3154e00d5e3c8e95e",
      "parents": [
        "3ec9424fa7f67122f10540878b210a00b63e1ef7"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 14:49:55 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 14:50:01 2025 +0000"
      },
      "message": "Canvas: Get ready for trial\n\nChange-Id: I16088fa041dd0fb35ac801ddbbedf3c1c6e8563d\n"
    },
    {
      "commit": "3ec9424fa7f67122f10540878b210a00b63e1ef7",
      "tree": "3c7653d5742cd8f7deb0afcc74ff8ae6e1601d10",
      "parents": [
        "f8fa0f8785b498c88d0e168b65f30f593cd1501a"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 12:46:57 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 12:46:57 2025 +0000"
      },
      "message": "Canvas: Disable all inputs during non-edit mode\n\nChange-Id: Ifca28e7cb78cb38175d5463311ff3d5006d412f8\n"
    },
    {
      "commit": "f8fa0f8785b498c88d0e168b65f30f593cd1501a",
      "tree": "8fcf4b9075e09d90b9f095ac963d168044ae1261",
      "parents": [
        "9fc37c7c69a4a26cb38e597c643213d1d63c91dc"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 12:34:26 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 12:34:26 2025 +0000"
      },
      "message": "Canvas: Improve spacing on details component\n\nChange-Id: Id18e89c9413e5f6d988b68d1f6582cdbee980a9d\n"
    },
    {
      "commit": "9fc37c7c69a4a26cb38e597c643213d1d63c91dc",
      "tree": "ca1f514f36d187125e22cc2b468f238e31088dc6",
      "parents": [
        "dc2dfcfeeb08e15e6d3807f499af1f3667ab46f2"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 12:17:18 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 12:17:18 2025 +0000"
      },
      "message": "Canvas: Message type icons\n\nChange-Id: I54f9f79869e593d95cb7dcadc6085951629600a9\n"
    },
    {
      "commit": "dc2dfcfeeb08e15e6d3807f499af1f3667ab46f2",
      "tree": "087cd0325bc8d2cee1a9285c99e63cef86a573c6",
      "parents": [
        "8cadbc764ad65ea0ed6e691cfa6fa2e23541e8a9"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 09:41:04 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 10:06:10 2025 +0000"
      },
      "message": "Canvas: Improve diagram styling\n\nChange-Id: If1c3d48cd94b63de86c8d7ecdb40974af951367f\n"
    },
    {
      "commit": "8cadbc764ad65ea0ed6e691cfa6fa2e23541e8a9",
      "tree": "c1964a70a1a56e1662c5ccbc2dfcc7332bb5dce6",
      "parents": [
        "29050d6e9998c2c3aa3954684e66d4c07c8a8a03"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 07:51:02 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 09:28:06 2025 +0000"
      },
      "message": "Canvas: Fix messages and details scrolling issues\n\nChange-Id: Id7831f65b7e692c611228d5937412500c3beae21\n"
    },
    {
      "commit": "29050d6e9998c2c3aa3954684e66d4c07c8a8a03",
      "tree": "4751db572e67c530fa9b9937d5c15e7d1e3b8324",
      "parents": [
        "e2b955a7b215e78324ff0b57d859d99ad4c3e9da"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 04:49:26 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 04:49:26 2025 +0000"
      },
      "message": "Canvas: Use subdomain only as gateway labels\n\nChange-Id: I2ff225fe4c9ae42ef3999fc51760cf29ccb58bae\n"
    },
    {
      "commit": "e2b955a7b215e78324ff0b57d859d99ad4c3e9da",
      "tree": "d8208aa5d43da2aeaf7c0d895481b5616424627e",
      "parents": [
        "838bcb82ed8d7358aa35a7fb26cb98c82ba4b6c8"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 15 15:41:05 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 04:43:52 2025 +0000"
      },
      "message": "Canvas: Wait during deploy and reload\n\nChange-Id: I8f39a46e263c99dd342b640474de421043ff0d38\n"
    },
    {
      "commit": "bd37a2ba4b803524f80e07394666c046f86a8cd4",
      "tree": "d689881cc23eeccf4dce570f0c29ff9a83d0ce06",
      "parents": [
        "b1d3bd7a965316f19df79af9abc6f09c0a5cf682"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 15 04:28:42 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 15 06:38:02 2025 +0000"
      },
      "message": "Canvas: Remove deployment action\n\nChange-Id: I5887f130f5d11880271c943f58284d62f7d07a23\n"
    },
    {
      "commit": "3ed59599dde16dd593805dd41192efb7e9591d36",
      "tree": "abae56df3d1defebb8ce3c87dbb64f230227babe",
      "parents": [
        "a1f29474e3457e969c798f86402ea27e7f390334"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 14 16:51:09 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 15 03:07:41 2025 +0000"
      },
      "message": "Canvas: Handle repo diff\n\nRefactor github and appmanager clients.\nRemove dev mode ports/ingress definitions.\n\nChange-Id: I0ca15cec897d5a8cfa1c89b8ec9c09c408686c64\n"
    },
    {
      "commit": "48fde051ffe863cb452d770e915bc314e43150f2",
      "tree": "baa701b66f18c91b7fb2f5229bba3b7e137de72e",
      "parents": [
        "359a685c71da766e76673c80e6c82bfd6ff0574b"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 14 09:48:08 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 14 15:19:10 2025 +0000"
      },
      "message": "Canvas: Service dev UI\n\nChange-Id: I11968dbf5ec51c5fd234ad927d40b0b3983e71dd\n"
    },
    {
      "commit": "359a685c71da766e76673c80e6c82bfd6ff0574b",
      "tree": "ea91c76924db8c5c8ac429c8534a8c0f66ac1627",
      "parents": [
        "af8db83af791cb5abfca73735936c9a78be2f7e0"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 14 03:38:24 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 14 03:51:57 2025 +0000"
      },
      "message": "Canvas: Restore viewport on project select\n\nChange-Id: I3dd60983ca0abe5fd3b84011bad384d50fa90dc1\n"
    },
    {
      "commit": "af8db83af791cb5abfca73735936c9a78be2f7e0",
      "tree": "0ff70e5e28d8e1a9861319e2efec9516fcc12676",
      "parents": [
        "74ab785563086f5904cc9ef33c2acf6cea7b461a"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 14:43:05 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 16:18:28 2025 +0000"
      },
      "message": "Canvas: Add new nodes at random positions\n\nChange-Id: I17ba195065bf8c2f7d1eea2091793766f0e0ac65\n"
    },
    {
      "commit": "74ab785563086f5904cc9ef33c2acf6cea7b461a",
      "tree": "8233ce3823082a58bc03669351ba1b460f9f0b87",
      "parents": [
        "e440db8685c8f52b4813a6d934da234426c6a878"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 13:19:31 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 13:20:35 2025 +0000"
      },
      "message": "Canvas: Fix project creation flow\n\nChange-Id: I2373982b37807db17391149a7ad40ebd4a5894ed\n"
    },
    {
      "commit": "e440db8685c8f52b4813a6d934da234426c6a878",
      "tree": "55452a61f267d03672339ebd4d988dbf2429e48c",
      "parents": [
        "02f1cadce9f2081f90610cb757c2ca33c93396ca"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 12:21:44 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 12:21:44 2025 +0000"
      },
      "message": "Canvas: Fix deleting undeployed project\n\nChange-Id: Icc2221338bc021a40ba7aae14eea93c8909af120\n"
    },
    {
      "commit": "02f1cadce9f2081f90610cb757c2ca33c93396ca",
      "tree": "f28af0e915204a6fbccde88ef827b2d04892dfd5",
      "parents": [
        "fcefd7c02b1fc3b3a38c561bade7fc870b538bbf"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 11:51:55 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 11:52:16 2025 +0000"
      },
      "message": "Canvas: Improve spacing on Integrations tab\n\nChange-Id: Ib2b7c1f15dfecabc56e39269ea122fc4f3842c33\n"
    },
    {
      "commit": "fcefd7c02b1fc3b3a38c561bade7fc870b538bbf",
      "tree": "8a23695800107203f3e84e059a78811811801108",
      "parents": [
        "617b1ddbf28310cf3c8c7c064ec7804b08b6fb50"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 08:01:07 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 08:01:07 2025 +0000"
      },
      "message": "Canvas: Consistent spacing on node details component\n\nChange-Id: Ia008d918723bc77a97a1ce37cd02adcd2accc9fe\n"
    },
    {
      "commit": "617b1ddbf28310cf3c8c7c064ec7804b08b6fb50",
      "tree": "021b3d61156022c7574df56070d2b128a213dd63",
      "parents": [
        "818da4e1e7c3a5d338ce85a03386e5d7e0d759f7"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 05:45:41 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 05:45:41 2025 +0000"
      },
      "message": "Canvas: Improve messages component layout\n\nChange-Id: I5ae26b72f480fff0e4634c7fcc294c04ac4ce7c5\n"
    },
    {
      "commit": "818da4e1e7c3a5d338ce85a03386e5d7e0d759f7",
      "tree": "fef25bddeac2e84e51fd3f0c0eb2f6bed4342601",
      "parents": [
        "09fcab513feafb119a80063cb60cc4439055ddb8"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 12 14:45:35 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 05:32:15 2025 +0000"
      },
      "message": "Canvas: Edit/Deploy mode\n\nChange-Id: I51e5b6c2a1f06009433b0d0824ffcf3dfe39d34e\n"
    },
    {
      "commit": "09fcab513feafb119a80063cb60cc4439055ddb8",
      "tree": "92d70ab74ce88a7389d9df618ad9e77a9d559aa3",
      "parents": [
        "4b9b58a2dd57736d0fb74e8947f8cd8a43ba4fa5"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 12 14:05:07 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 12 14:07:18 2025 +0000"
      },
      "message": "Canvas: Implement authorization\n\nRun internal API server on a different port: DODO_PORT_API\n\nChange-Id: Ic5aa066c3fa06bd68a752704df4f73040d1aa0d0\n"
    },
    {
      "commit": "4b9b58a2dd57736d0fb74e8947f8cd8a43ba4fa5",
      "tree": "018043e914d602ff4ebe8e0bf034424d64eafb3d",
      "parents": [
        "7461e50b4373b68ac10e92458840cd1eba7ac311"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 12 11:46:08 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 12 11:47:20 2025 +0000"
      },
      "message": "Canvas: fix empty config tab\n\nChange-Id: I7b59790577478d0b75c0b62e970bc7e95282f65a\n"
    },
    {
      "commit": "7461e50b4373b68ac10e92458840cd1eba7ac311",
      "tree": "f796be82aec7f1e6d4c0607ef6244aea2cbe0da0",
      "parents": [
        "bc47f9f1fdd718ca7604b67405e6b6d1fd6abfd0"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 12 10:11:55 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 12 11:47:15 2025 +0000"
      },
      "message": "Canvas: Auto-select first project\n\nChange-Id: I1065b20f866f9fa7152ca65b7853a60c58ac5de2\n"
    },
    {
      "commit": "bc47f9f1fdd718ca7604b67405e6b6d1fd6abfd0",
      "tree": "c8b25377562bbf9c0694f4deaaa1421e844393e3",
      "parents": [
        "0b4002c49fd2a2d696d549cb2b71af6e46accda5"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 12 08:31:07 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 12 11:46:57 2025 +0000"
      },
      "message": "Canvas: Fix layout, get rid of scroll bars\n\nChange-Id: I3244784ee741e93565190e538472723ffadfb754\n"
    },
    {
      "commit": "0b4002c49fd2a2d696d549cb2b71af6e46accda5",
      "tree": "00a00e51861235df14ab2c0c5f7f893682202fb0",
      "parents": [
        "8d0f635f2fc0b1799daac09ad1da6f6df52b4007"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun May 11 15:48:51 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun May 11 15:52:24 2025 +0000"
      },
      "message": "Canvas: Center icons on details panel\n\nChange-Id: I8ef607f3bf756e028ddab00f79e4ec17bd4582bd\n"
    },
    {
      "commit": "8d0f635f2fc0b1799daac09ad1da6f6df52b4007",
      "tree": "e519ea69761f2940c46a874e6b62ec005e634afe",
      "parents": [
        "880de16983c918c987493ce6a760574ac484db74"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun May 11 13:29:33 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun May 11 13:34:20 2025 +0000"
      },
      "message": "Canvas: Enable ESLint\n\nChange-Id: Ia9e84976b6d237f34c773eb55054fe244c625624\n"
    },
    {
      "commit": "880de16983c918c987493ce6a760574ac484db74",
      "tree": "1866fce94e07a7d72d0125fb18e967f80e958048",
      "parents": [
        "3a921b87b82ac5df520aaebf26ab344b9d86e033"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun May 11 07:26:00 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun May 11 08:05:11 2025 +0000"
      },
      "message": "Canvas: Improve layout\n\nChange-Id: Ife4f14d23eefc0ef0cb6b189446590fc42b8d797\n"
    },
    {
      "commit": "3a921b87b82ac5df520aaebf26ab344b9d86e033",
      "tree": "d2298543125613d4f5e8ec2ece6f9acf2182e8b6",
      "parents": [
        "b87415ce8478284b94e9dbe501b3b8d6fd2c9932"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat May 10 07:36:09 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun May 11 07:07:51 2025 +0000"
      },
      "message": "Canvas: Logs tab\n\nChange-Id: Iddf52dbce6fb2090f095cecb04bafcb50c47e4a7\n"
    },
    {
      "commit": "7d81370d1949b9ffaf0b868c9c7a5b149e3f1436",
      "tree": "3817caf7ea73897995179e67381189d0ea15371f",
      "parents": [
        "5cf364c29b4ddfca0a1bf8fc6238493c4ec63b77"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 08 18:29:52 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 08 18:29:52 2025 +0000"
      },
      "message": "Canvas: Implement worker to manager communication\n\nRegister workers on manager side.\nLet user force reload service workers.\n\nChange-Id: I2635a04167e7c853151d8a1f5c3511646181a063\n"
    },
    {
      "commit": "5cf364c29b4ddfca0a1bf8fc6238493c4ec63b77",
      "tree": "3b11f8593e2033ae857e4a5a0ecf5deea94294e2",
      "parents": [
        "d002661f89c59edbc999b087338b122799bcd612"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 08 16:01:21 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 08 16:06:34 2025 +0000"
      },
      "message": "Canvas: Fix to run validation on change in nodes\n\nChange-Id: Ie1798e65c83e673c90d7df556729cc509a9d2d9c\n"
    },
    {
      "commit": "d002661f89c59edbc999b087338b122799bcd612",
      "tree": "d402604eb544d9dcbb35e8d03a1c98c038abdc22",
      "parents": [
        "a2a845ccefb8b903692e6d2ce2bc0bfa10020538"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 08 13:00:36 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 08 14:48:38 2025 +0000"
      },
      "message": "Canvas: Prettier\n\nChange-Id: I620dde109df0f29f0c85c6fe150e347d2c32a03e\n"
    },
    {
      "commit": "a2a845ccefb8b903692e6d2ce2bc0bfa10020538",
      "tree": "a60d522a2bcb6540df73d2ef97421a7ee8a86991",
      "parents": [
        "6cf8c27f545361e4a8a960719436e281c2f934a7"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 08 11:27:14 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 08 13:12:58 2025 +0000"
      },
      "message": "Canvas: UI polish\n\nChange-Id: I3c7ae930917213dee8dddffdd9b14be7a80dab0a\n"
    },
    {
      "commit": "6cf8c27f545361e4a8a960719436e281c2f934a7",
      "tree": "f417f3e284df4822576ce2146c79962b00ab345a",
      "parents": [
        "7f98e77c44ec4af976f5299a7056ffde1fc27744"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 08 09:01:38 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 08 09:57:05 2025 +0000"
      },
      "message": "Canvas: Fix linter errors\n\nChange-Id: I602c1562d4ab2d948bb4dcf6caf66f185585d720\n"
    }
  ],
  "next": "7f98e77c44ec4af976f5299a7056ffde1fc27744"
}
