)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "6481c9095aef7c7d2a0554b1d1af8a55171a89c3",
      "tree": "c82ca1b5f49c7a3247a8f0abb45092f763506673",
      "parents": [
        "b45b1866d422a31135a5d9af73ebc79381d0a0cb"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 20 16:16:30 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 20 21:55:58 2025 +0400"
      },
      "message": "DodoApp: Introduce password role\n\nAuto generate passwords for PostgreSQL and MongoDB.\n\nChange-Id: Ibd9fb900ddc8dd505c60ae4dfba73f1c951e3470\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": "ec744fab02aea72142ad3f17b38c68957039e437",
      "tree": "532df83dcbb820050067488a71c58f17e5a3a9c6",
      "parents": [
        "a3cc4bf0cf6547328774cda51a81dfb5e23d13ce"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 20 12:47:03 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 20 12:47:27 2025 +0400"
      },
      "message": "AppRunner: Support Nodejs 24.0.2\n\nChange-Id: I37659d91d8211d5cfb4240a885da5a51ef43774a\n"
    },
    {
      "commit": "a3cc4bf0cf6547328774cda51a81dfb5e23d13ce",
      "tree": "f9f331d0cec15250684f3ed12f9b88998fa102c7",
      "parents": [
        "376a81d467d707eb2bd98a35c16c0b784e5c2eb3"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 20 11:31:21 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 20 12:47:27 2025 +0400"
      },
      "message": "DodoApp: Fix volume handling\n\nChange-Id: I84c6ea063bbd97ee6d2c4b11693b4a43df889c3c\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": "82afef1887f8ee11e84e27bdc7e435a98ef35ecf",
      "tree": "ba6225e9ced8ff792cdfc4f5f670b955fa22489b",
      "parents": [
        "b58cd0578991c7b4b56a4fd6f4b9f564d19d5d38"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 19 17:20:06 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 19 18:01:12 2025 +0400"
      },
      "message": "DodoApp: User service name when port forwarding\n\nChange-Id: Iaa5049917980f0095178c5ac14294b904430e714\n"
    },
    {
      "commit": "b58cd0578991c7b4b56a4fd6f4b9f564d19d5d38",
      "tree": "76150275bd4d4149361d4a00b8605ada1c727ee3",
      "parents": [
        "6d8b71c93b719eafeae28ad6fadc9165fe66a419"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 19 16:33:08 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 19 18:01:12 2025 +0400"
      },
      "message": "AppManager: Fix port reservation during update\n\nChange-Id: I5262f13b1dcd9f0ac192c9e80f43e40409ae4182\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": "6ce4481b19e87a2b010ca9dd7247f894eea32448",
      "tree": "8e1531b7a50520bc4617df14f6d5d893e8719ebc",
      "parents": [
        "fd8202a598472da514ee9b220e6f2127daeac385"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat May 17 07:31:54 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 19 13:44:35 2025 +0400"
      },
      "message": "DodoApp: Output access points\n\nChange-Id: I078adfd43bd254e260bf63113a2fb3ab059c7706\n"
    },
    {
      "commit": "fd8202a598472da514ee9b220e6f2127daeac385",
      "tree": "26ac8b94765301d9d950c46fd5e0349fb3240125",
      "parents": [
        "3304672099846c2323de7bdb26d8df9e14b5eaff"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat May 17 07:03:12 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat May 17 07:03:12 2025 +0400"
      },
      "message": "DodoApp: Fix nodejs version\n\nChange-Id: I93dacfd5fd88febf559afec5e2658b76f139f56f\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"
    }
  ],
  "next": "f8fa0f8785b498c88d0e168b65f30f593cd1501a"
}
