)]}'
{
  "log": [
    {
      "commit": "b16325962a9414390439d3393f8e72ba8a1b30b1",
      "tree": "a272390c9a508812a19597dd441a40e37b2999bf",
      "parents": [
        "8c4ea242050b617dfd80d5e3d35f56df7f9ea98b"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Aug 04 11:41:44 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Aug 04 14:46:19 2025 +0000"
      },
      "message": "Canvas: Fix gateway copy button\n\nChange-Id: Ic8af3fe65fbd2ba0530b67ac0f377122b364d767\n"
    },
    {
      "commit": "8c4ea242050b617dfd80d5e3d35f56df7f9ea98b",
      "tree": "5737ba19cf7a252fde29efa8793171b46bd894e9",
      "parents": [
        "2f81c6def8d6e147e0c373996c5db951e0078441"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Aug 04 13:11:29 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Aug 04 14:45:41 2025 +0000"
      },
      "message": "Canvas: Require authentication\n\nChange-Id: Ia1328cbcfd1b977bae8f0707a8fef4695bccad64\n"
    },
    {
      "commit": "2f81c6def8d6e147e0c373996c5db951e0078441",
      "tree": "7e9cb3a1192194db3deec03bd8129baf764f79a4",
      "parents": [
        "2a79bfe4b885d4db6902603d9a6fdcd4358aacf7"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Aug 04 16:11:01 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Aug 04 17:08:34 2025 +0400"
      },
      "message": "DodoApp: Annotate app proxy with nginx config hash\n\nSo that Nginx automatically restarts on config change\n\nChange-Id: I7f91fa4809f326d91d6e858cce4d53b60bf5b96f\n"
    },
    {
      "commit": "2a79bfe4b885d4db6902603d9a6fdcd4358aacf7",
      "tree": "4ec6facafc1690aa05253b0643ede3edceaa0ce0",
      "parents": [
        "deaf326f5d9858f9d53dc60f899443bb9e35f9ba"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Aug 04 16:02:22 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Aug 04 16:12:30 2025 +0400"
      },
      "message": "Launcher: Remove tooltip width\n\nChange-Id: I00d82cf8fdde1619307af7b69e982c765e2f5b4a\n"
    },
    {
      "commit": "deaf326f5d9858f9d53dc60f899443bb9e35f9ba",
      "tree": "b56fe88ec8d7ac30a63c4da033f32f699bc53105",
      "parents": [
        "8323a0509934ad06880ecbc34800b071f35fb647"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Aug 04 11:12:41 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Aug 04 11:41:49 2025 +0000"
      },
      "message": "Canvas: Implement ingress auth\n\nChange-Id: Id884940feb0ac96559874f698fb213acd60f76f4\n"
    },
    {
      "commit": "8323a0509934ad06880ecbc34800b071f35fb647",
      "tree": "63c2210e14881d2b17743e26c38271493ec92b21",
      "parents": [
        "3322247c26ee3fac4310baa16acf4727b32e9826"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Aug 04 06:12:26 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Aug 04 11:41:49 2025 +0000"
      },
      "message": "Canvas: Show env var values in deploy mode\n\nChange-Id: Icfa8e33f1441e7bab1bb139286b38a223583919d\n"
    },
    {
      "commit": "3322247c26ee3fac4310baa16acf4727b32e9826",
      "tree": "6beeb24fa2228018b52c5829ba78568412fffc98",
      "parents": [
        "456167909ed79b2c580b2e1f59a0c7c40585c3ed"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Aug 04 12:02:34 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Aug 04 15:23:19 2025 +0400"
      },
      "message": "AppManager: Report env vars as part of access\n\nChange-Id: Ibc488b86b4b3968efb00a8ef0eda3c7f0f1c4a41\n"
    },
    {
      "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": "6439d448800083c5726f86240621cf2b2120e650",
      "tree": "5177fa551b6e7c25487ef31cef2a7ee500734a3b",
      "parents": [
        "59d7a823fcc0a5c52ef2f1de16754254a974689f"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Aug 03 06:18:15 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Aug 03 06:19:59 2025 +0400"
      },
      "message": "Headscale: Include last seen in node info\n\nAdd debugging API endpoint to run arbitrary headscale command.\n\nChange-Id: I713d55b44d9657971c0ecb8befc8a1408e4b76af\n"
    },
    {
      "commit": "59d7a823fcc0a5c52ef2f1de16754254a974689f",
      "tree": "4a59cd6e67f23e37aec838ca0569b4d30e439c20",
      "parents": [
        "43e0aadc734358431b604c4ebf62269ef266c415"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat Aug 02 13:06:32 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat Aug 02 14:25:03 2025 +0400"
      },
      "message": "DodoApp: Remove unused dev.ports\n\nChange-Id: Id5a1ab55862bd4075064cded76eca590c35f5899\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": "2835615e4cd72a46289f2e14c9afb0ccc43e0ceb",
      "tree": "a4248756f410c3c3bd3794e56f8c98c3fb3a740d",
      "parents": [
        "134be72adbab1ee6071fa0f976ad29a97262ef7f"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 24 17:20:56 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jul 30 13:19:03 2025 +0400"
      },
      "message": "AppManager: Fix auth schema\n\nChange-Id: Iab9e76795467b9ed9e6ad7b8389473eb71d49c89\n"
    },
    {
      "commit": "134be72adbab1ee6071fa0f976ad29a97262ef7f",
      "tree": "bebc9b706ae4156baebdc550d75b26a536e59d18",
      "parents": [
        "5449e2749f1bca529f40d1debd61640bb77def34"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Jul 20 19:01:17 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jul 30 13:00:00 2025 +0400"
      },
      "message": "Memebrships: Refactor Store interface\n\nUse unified memberships table.\nAdd few internal API endpoints.\n\nChange-Id: I80ac5a0f5c262e04d7898cca571b938a35d68d39\n"
    },
    {
      "commit": "5449e2749f1bca529f40d1debd61640bb77def34",
      "tree": "d9d73cc55a1a149d41a9008ba022d9e42183c110",
      "parents": [
        "4a29775a467b4c7472aef7c0b1ddfdeee720174e"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jul 23 13:14:01 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jul 23 13:14:01 2025 +0400"
      },
      "message": "AppManager: Add Excalidraw\n\nChange-Id: I053676e18773e8dec452c54bda350cdc978ae0ca\n"
    },
    {
      "commit": "4a29775a467b4c7472aef7c0b1ddfdeee720174e",
      "tree": "4b0c753493deaddc96ff81fbc7bd116b1fb54521",
      "parents": [
        "404e23747a4d6c9fec6c15fed75ca078cf884c37"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 15 13:24:57 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 15 13:24:57 2025 +0400"
      },
      "message": "Memberships: Fix static file handler\n\nChange-Id: I13b1cfefec5cb5b43a590d2f7e40f13e7b70aba7\n"
    },
    {
      "commit": "404e23747a4d6c9fec6c15fed75ca078cf884c37",
      "tree": "6e85217f266b43cb2af51e0d4920789eadcb97f9",
      "parents": [
        "0e1a97d95423a4fb693ecced2007b7e0b0f4db1e"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jul 11 12:50:26 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jul 11 18:16:04 2025 +0400"
      },
      "message": "Immich: Add Immich installer configuration\n\nChange-Id: I88796e42d0b0b14d84b094d4a1c5213b43c56f2a\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": "212f8005eccaab752054eb65ef74fc01d37a31fd",
      "tree": "fffad966154dda6ca79732440dc0a9b3c94ae9aa",
      "parents": [
        "e085d5baf2a4c404e47820b1061417f62671ad42"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 08 14:28:43 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 08 14:34:44 2025 +0400"
      },
      "message": "DodoApp: Return env vars on install/update\n\nPass service namespace as env var as well.\nFix llm-api-key flag.\n\nChange-Id: Iff8c845c4a1b62eb4940463a62eb32487abd5992\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": "31f16a1d520126779e9c05a08257982ad932648d",
      "tree": "3bfe3312048e3172c48f52f10cdec545d29ab5f6",
      "parents": [
        "f9892a564b78ef812b0d0f1efedd453ea5425c3d"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jul 07 19:23:43 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jul 07 19:23:43 2025 +0400"
      },
      "message": "AppRunner: Install bash in Sketch runner\n\nChange-Id: I3e6ba41c7f3a1f53cd8fdddfad7a6b023c28e6eb\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": "5be6f78135341869b3b395429a25ebeeea4c0710",
      "tree": "b1b3c90a9f25fc28fc002c93b098ba02254edfba",
      "parents": [
        "b0dc2d17ad60e6e306c29daefed479a5de1cf59f"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jul 07 17:42:00 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jul 07 19:21:20 2025 +0400"
      },
      "message": "AppRunner: Reload app on configuration change\n\nChange-Id: I2c5ea0eaf3453815c8c89c9290edba250ca4fbaa\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": "8edf6c7753525fb9680c90ef09a6fdd16bfb818b",
      "tree": "7bbeefe00f82e8896416ff899b1c7256c74bbac4",
      "parents": [
        "8a5f12fc0a4a44ba221305eb6a58fcb3a7f40db7"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat Jul 05 13:15:55 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat Jul 05 13:17:09 2025 +0400"
      },
      "message": "DodoApp: Pass agent node it\u0027s name as a DODO_AGENT_NAME env var\n\nChange-Id: I1cf13d1c971e886bf494643c5dd39d34f7c5068a\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": "790c87fbfff0d78e67b79587781ff2bb420d7af3",
      "tree": "610829a52dc99d58b0eaa06947fa4272907ce05d",
      "parents": [
        "ff9b552850e9afabeba14b2436e9e0b560eecf40"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 03 18:37:13 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 03 18:37:31 2025 +0400"
      },
      "message": "AppRunner: Ping manager once a second\n\nChange-Id: I8c0da7fe77df4b400bf04570fc3c219fc0c00039\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": "37fba252cb61ffff23c8c1d31a55b1ac25944e02",
      "tree": "d4eafe50b9445bd0f95d2f4ed5fe6451f9e56443",
      "parents": [
        "69ff759f4e5bafc74f80cb2b72e4e417ec2edbbb"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 03 14:02:04 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 03 16:48:18 2025 +0400"
      },
      "message": "AppRunner: Shutdown on SIGTERM and SIGINT signals\n\nImplement /quitquitquit handler\n\nChange-Id: I0d11791bf3b2831b71548e2ca573e34ad854c561\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": "4745b3fec208c81e4e694a11cb41d827239b8872",
      "tree": "2c8d643aacafd5bacb4d7793bf51f2ea6550f019",
      "parents": [
        "34193053a2bfdd685fd3844d0a5c484669ee5a26"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 03 10:29:09 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 03 08:07:37 2025 +0000"
      },
      "message": "DodoApp: Support Anthropic Claude based AI agent\n\nChange-Id: I57c902c8e6fc7528df48013dc0dd61f9b74d0686\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": "3aba30926494639c5617e5a25822f8802d1b6876",
      "tree": "dcc06eb2497f2e39c087536ffd48b67b649d60c5",
      "parents": [
        "40c0c999eb85dbbb0f5c470a51bfdb647bde5f37"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jul 02 18:49:44 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jul 02 18:49:44 2025 +0400"
      },
      "message": "DodoApp: Use service name as container image name\n\nThis avoids clashes between multiple service definitions.\n\nChange-Id: I379111dba1ed5265bf1b1b17975a4219c45261d8\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": "89c5b5e630fa43caace1657cedc97c8e07d40f3b",
      "tree": "ef7e40d1464137cc2829a606d465ee0f04089db3",
      "parents": [
        "aa6e27a7dd90f9e39b09391d5e29cb2be40c32fd"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jul 02 12:15:04 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jul 02 12:15:04 2025 +0400"
      },
      "message": "AppRunner: Include commit hash in the ping request\n\nIncrease ping frequencey to twice a second.\n\nChange-Id: I43a064d17a22525e276140c689bea23df6c31655\n"
    },
    {
      "commit": "aa6e27a7dd90f9e39b09391d5e29cb2be40c32fd",
      "tree": "45618e5bdb96098f599cadc2aa07a9a86df08003",
      "parents": [
        "2f393c12fe97a6794a8bd6a5969320bbf184fe3f"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Jun 29 23:17:54 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jul 02 11:31:53 2025 +0400"
      },
      "message": "AppRunner: Automatically annotate logs\n\nChange-Id: I5e614fc1e841e183ac649758972428ae55162a67\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": "8f8b086c368c7c2c7fe24c3c11fb1393f6f1b83f",
      "tree": "4223685146764a2e561d420c6f650495bcb8530c",
      "parents": [
        "dbf4a85c936183a0e01d0fe45afc1d7531ad0ee7"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 01 13:31:42 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 01 16:48:45 2025 +0400"
      },
      "message": "DodoApp: Pass lowercased port names to app-runner\n\nUse Debian based Deno container image\n\nChange-Id: I90300af78fe55ac6504c352c62e0f1d48adf89da\n"
    },
    {
      "commit": "dbf4a85c936183a0e01d0fe45afc1d7531ad0ee7",
      "tree": "46d309ee94b03846aeb6864c006d04450577954f",
      "parents": [
        "be95f05ed937bd1b944999ad3ba45ae0abe84350"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jun 30 17:09:46 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jun 30 17:09:46 2025 +0400"
      },
      "message": "Longhorn: Upgrade from 1.8.1 to 1.9.0\n\nChange-Id: I809890d3f73e85119c5f3d97e53856bd371c8c81\n"
    },
    {
      "commit": "be95f05ed937bd1b944999ad3ba45ae0abe84350",
      "tree": "e4be45d29cad26d3dd4b98def19b86cf6487215b",
      "parents": [
        "1037ee2f7f2f64f007e0480009297cad78b5c456"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Jun 29 23:18:56 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Jun 29 19:25:20 2025 +0000"
      },
      "message": "Jenkins: Upgrade from 2.452 to 2.454\n\nChange-Id: I2b94aecb42538642c6ef71504495a7d2a7493229\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": "85ddcdf7453f8f222654136116e856a64b4eae7c",
      "tree": "56f63b1f0dc147cc6c9d230ea6c5b0f71c8152c6",
      "parents": [
        "cefb3b500ad84268b0f999023c4d37e4fbb328c3"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jun 25 07:51:16 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jun 25 07:51:16 2025 +0400"
      },
      "message": "AppManager: Include agentName in HTTPS access\n\nChange-Id: I8c6329f0c1225d49da0c66af20fb30a7a664e426\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": "e8402359dfa65dbe72fee68ba3961a43f892aacc",
      "tree": "73838c0f7c9aae1d2fecda1c68073e3141c98dcb",
      "parents": [
        "24d6e9a2b8fd4a3c4f67a4d95b08e8f538e92d53"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jun 24 21:28:25 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jun 24 21:28:25 2025 +0400"
      },
      "message": "AppRunner: Create .git directory when cloning repository\n\nChange-Id: Ibd3fe3285bb230bb3cc4be70575742806aa7fd18\n"
    },
    {
      "commit": "24d6e9a2b8fd4a3c4f67a4d95b08e8f538e92d53",
      "tree": "d603354a9b029cf5155c9334b5ad88048014616e",
      "parents": [
        "379ff06c5691795c2a65032e9cc28e25c8b27d5d"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jun 24 15:02:29 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jun 24 15:03:14 2025 +0400"
      },
      "message": "AppRunner: Create .git directory when cloning repository\n\nChange-Id: I733fd2aad5d7ec67c38cb773097b12b86ed69755\n"
    },
    {
      "commit": "379ff06c5691795c2a65032e9cc28e25c8b27d5d",
      "tree": "1f970e6315094a73bec65b1abeac792c6f4d0308",
      "parents": [
        "691483264b84abdbee3d889fd3c0ae2754b99fa5"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jun 24 13:09:47 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jun 24 13:22:09 2025 +0400"
      },
      "message": "DodoApp: Discriminate between Agent access endpoint and regular HTTPS\n\nChange-Id: I063a33328b27004cf4e9c7020c2a93c1b52ffb73\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": "b33b2a93a0a2e51d94ebc844b81686e8ab2e3c64",
      "tree": "f7e3a9e47a8ece4356502a1775b6ec1e922fe36b",
      "parents": [
        "7f293f399a6b0e4310b3a0cd229cfaaa355bc3d1"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jun 13 18:42:45 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jun 24 12:10:27 2025 +0400"
      },
      "message": "AppRunner: Include ssh client and keygen tools\n\nChange-Id: I4ef99076df3dbf7bfeb62b60c1980c308f925e11\n"
    },
    {
      "commit": "7f293f399a6b0e4310b3a0cd229cfaaa355bc3d1",
      "tree": "285da46f913d0e9d9c4594d3c250a7cd22133063",
      "parents": [
        "e65d9a934c8d6bab4d16358132f73f8396041e97"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jun 24 09:03:46 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jun 24 09:03:46 2025 +0400"
      },
      "message": "DodoApp: Fix env handling\n\nChange-Id: I836c2037a58463d07a31c61e3e31a52e80be1cbd\n"
    },
    {
      "commit": "e65d9a934c8d6bab4d16358132f73f8396041e97",
      "tree": "3e220983f618fd40162f0b6ec7db964951b065ee",
      "parents": [
        "9b7421ac7ad75ad949e32d1606afcd685443ef8c"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jun 19 09:02:32 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jun 20 07:21:12 2025 +0400"
      },
      "message": "dodo: Support Sketch agent\n\nChange-Id: I4dcd6aab7d7a2c2e86aaf1ad8d36d30a649ab31d\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": "dbabb10be6f6211d630e526d45aa54eae59756c9",
      "tree": "fe39f57e482fdc9fb8329ea543c2d0298a3a8d89",
      "parents": [
        "b63594259c27151030c80857caa19c3e1bd9be0a"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jun 18 14:22:53 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jun 18 10:48:28 2025 +0000"
      },
      "message": "AppManager: Cache helm charts locally during update\n\nChange-Id: I663e923bc6560c9a75318025178d5701e969074d\n"
    },
    {
      "commit": "b63594259c27151030c80857caa19c3e1bd9be0a",
      "tree": "f8ad8da6e91088e8a8706cace6217882a7ffc194",
      "parents": [
        "c31bf14971e228b03f738dde4cbfc8ae34f88f9d"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jun 18 13:35:09 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jun 18 14:24:24 2025 +0400"
      },
      "message": "dodoapp: add optional nodeId to output objects\n\nChange-Id: I9e254dac9170000be81decee23954cd0c8f4a6bb\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": "842db3f5be99c6b700072911c49c7c03f48daca6",
      "tree": "f914b4c4377fe6658fb1a5c944bd848fc3e58745",
      "parents": [
        "8fad76ab737dff9fc24d17b3b88ae491ed9af8b7"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 30 11:57:20 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 30 13:02:42 2025 +0400"
      },
      "message": "AppManager: Fix derived value calculation\n\nChange-Id: I97c429437b5df4ea782883190f420f9f60111ff4\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": "ea6d912dbfd4fbee839cc0d869347e707f19b132",
      "tree": "0486302c80abf30016d7aeea672428a3bdb83503",
      "parents": [
        "4bfed00a3f4078c8d85eab8fe9d956cef6a58503"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 22 17:57:18 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 23 07:41:48 2025 +0000"
      },
      "message": "AppManager: Implement ingress monitoring\n\nChange-Id: I156236c3f062a616cfd5de9821aeccbf686e0c22\n"
    },
    {
      "commit": "4bfed00a3f4078c8d85eab8fe9d956cef6a58503",
      "tree": "49aa035fa615bc5c53c1d168bd3829480c8d9777",
      "parents": [
        "918780d890086f65cf6a2c6bded71a26ce76cf96"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 22 13:23:22 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 22 13:23:41 2025 +0400"
      },
      "message": "AppRunner: Log actions\n\nChange-Id: I085f760bc81e610ac0d94d6764403e27a21ada00\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": "2539d9e43e842acb11a9f48ed9a72d829df28e6f",
      "tree": "fd37404afab60f36ede6e41ee6997b37687d36e4",
      "parents": [
        "c9b92b1069bce89ccc3143051e510b43f10d4f50"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 22 12:19:30 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 22 12:19:30 2025 +0400"
      },
      "message": "Longhorn: Upgrade from 1.7.3 to 1.8.1\n\nChange-Id: Ie2076df97ee3d00cbced65ad52888d3b467725d4\n"
    },
    {
      "commit": "c9b92b1069bce89ccc3143051e510b43f10d4f50",
      "tree": "b4007187faa0ca2b9a026981c65d9aaff15593f7",
      "parents": [
        "0afbaee7098e4f014424d866897fbefc8c504484"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 22 08:57:18 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 22 04:57:48 2025 +0000"
      },
      "message": "Longhorn: Upgrade from 1.6.4. to 1.7.3\n\nChange-Id: I4e713a453a6b9e983685e2db550066fd2694609f\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": "9635ccbce34ce2e5a83168e8e0e0e77e4d79089a",
      "tree": "99ab8a17bad61956b76ec2a042a5003205517011",
      "parents": [
        "16bb63869b3221add2afcc9a124b16170b82a837"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 22 08:33:38 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 22 08:33:38 2025 +0400"
      },
      "message": "AppRunner: Include commit message in the status\n\nChange-Id: I1c9101df71e004888b0fc38cbc351d77fbcc70bd\n"
    },
    {
      "commit": "16bb63869b3221add2afcc9a124b16170b82a837",
      "tree": "f5c6142e35cc25523a26a9adf638ac6e53b8b970",
      "parents": [
        "c717e36a85298254f8de710245906b0ac9c9e171"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 21 18:42:40 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 21 22:23:11 2025 +0400"
      },
      "message": "Upgrade: Longhorn from 1.5.2 to 1.6.4\n\nChange-Id: I8cdc3c0a07133f00442b496800ccc30e2c1dad61\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": "5155c1a018373a76319f1a15f5fb18232b6c9ca6",
      "tree": "a0b68d445bbdc9054361e3a557d17592f348f108",
      "parents": [
        "a1efbadf3c50d5d1e6615cf018e57d48c0e01d2b"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 21 15:36:21 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 21 15:36:21 2025 +0400"
      },
      "message": "AppRunner: Reports detailed status\n\nStatus includes: commit hash, running commands and logs\n\nChange-Id: I5f28f69710b30508bb3296a22fc97b9ad7553844\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"
    }
  ],
  "next": "6481c9095aef7c7d2a0554b1d1af8a55171a89c3"
}
