)]}'
{
  "log": [
    {
      "commit": "e085d5baf2a4c404e47820b1061417f62671ad42",
      "tree": "e91dbde6df15c5df0b1f1395dd82478df56ac577",
      "parents": [
        "007c85773b71d3a38cefda2d3e23b46700384907"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 08 07:51:36 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 08 07:51:36 2025 +0000"
      },
      "message": "Canvas: App wide env vars\n\nChange-Id: Ia4101ba7c646e33591a1ddd642622e2712865b71\n"
    },
    {
      "commit": "007c85773b71d3a38cefda2d3e23b46700384907",
      "tree": "3e4a8350b750485fa0d904d70ef5d1b382481be2",
      "parents": [
        "166d9925c67149410a414b5b412b32d8322ca759"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 08 04:27:35 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 08 04:27:35 2025 +0000"
      },
      "message": "Canvas: Configure deploy keys on repo owner\n\nExpose Agent compact prop\nImplement GitHub repo pagination\n\nChange-Id: Ib444c53f2c7f83d7461e6f1a8e9d86698d320e92\n"
    },
    {
      "commit": "166d9925c67149410a414b5b412b32d8322ca759",
      "tree": "abbc7d4e8f3721931855f886fc0852c88953ff4d",
      "parents": [
        "785c98873f248641a1c4385eb2b4d60af3e30ad5"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jul 07 17:30:21 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jul 07 17:30:21 2025 +0000"
      },
      "message": "Canvas: Auto cleanup old workers\n\nChange-Id: I046ce8dcbadd14b53e465fe0ffb60fae642c6951\n"
    },
    {
      "commit": "785c98873f248641a1c4385eb2b4d60af3e30ad5",
      "tree": "08b7049ce80585075721a72c6635f57d403d7ed8",
      "parents": [
        "31f16a1d520126779e9c05a08257982ad932648d"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jul 07 16:40:25 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jul 07 16:40:28 2025 +0000"
      },
      "message": "Canvas: Check agent health\n\nChange-Id: I429eecebde1d661513dfd94e27cdaa820bd49493\n"
    },
    {
      "commit": "f9892a564b78ef812b0d0f1efedd453ea5425c3d",
      "tree": "89528cb1ba7e8f3f6affbef8bf9c794515c730b9",
      "parents": [
        "5be6f78135341869b3b395429a25ebeeea4c0710"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jul 07 19:23:28 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jul 07 19:23:28 2025 +0400"
      },
      "message": "Canvas: Add nodeId field to dodo-app.jsonschema\n\nChange-Id: I2761a6f91f98c610b5436c6e6586d1ceecafcf70\n"
    },
    {
      "commit": "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": "10ff134f60a350c2d2aa8742a941f48af0baa77c",
      "tree": "00e217692c5bf20d0e97ee6c3e51048b6dd75417",
      "parents": [
        "8edf6c7753525fb9680c90ef09a6fdd16bfb818b"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat Jul 05 10:22:15 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Jul 06 05:21:45 2025 +0000"
      },
      "message": "Canvas: Use GraphSchema to validate state\n\nChange-Id: I342c8959c97f3486c4a7cb2aff92fb930a2b3146\n"
    },
    {
      "commit": "8a5f12fc0a4a44ba221305eb6a58fcb3a7f40db7",
      "tree": "6b0b27dfe37d253c457dbc6fbab4c71dd4c3dab3",
      "parents": [
        "74c6f75a5fc197356660339149b7a84990f85ea8"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat Jul 05 07:02:31 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat Jul 05 08:38:05 2025 +0000"
      },
      "message": "Canvas: Implement streaming state updates\n\nChange-Id: I2bc5a51b5792839bde93f927f5ffea22b3250fe2\n"
    },
    {
      "commit": "577d23428911fc6abec626b1a0c0d1f3d84e8a00",
      "tree": "9606d1568a0e80ac72affce0dfa25ad0730e3ca7",
      "parents": [
        "37fba252cb61ffff23c8c1d31a55b1ac25944e02"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 03 12:50:18 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 03 13:08:10 2025 +0000"
      },
      "message": "Canvas: Add worker kill action to monitoring tab\n\nChange-Id: I8387dcf2320f9eccdb2e443fd4039e91ff35ed31\n"
    },
    {
      "commit": "69ff759f4e5bafc74f80cb2b72e4e417ec2edbbb",
      "tree": "9d40d639f30a9b053513b7082e4a52bf0d9c0730",
      "parents": [
        "4745b3fec208c81e4e694a11cb41d827239b8872"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 03 06:27:21 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 03 08:15:36 2025 +0000"
      },
      "message": "Canvas: Support Anthropic Claude based AI agents\n\nChange-Id: Ib74c9672da9a80a4f20d63741a471c728a435b8e\n"
    },
    {
      "commit": "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": "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": "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": "691483264b84abdbee3d889fd3c0ae2754b99fa5",
      "tree": "6d44a701921ae9e140ce85f299f7359ce96cdf81",
      "parents": [
        "b33b2a93a0a2e51d94ebc844b81686e8ab2e3c64"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jun 19 23:16:12 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jun 24 08:32:04 2025 +0000"
      },
      "message": "Canvas: Implement Agent Sketch node, update dodo-app.jsonschema\n\n- Add Gemini API key to the project\n- Update dodo schema to support Gemini API key\n- Update dodo schema to support Agent Sketch node\n\nChange-Id: I6a96186f86ad169152ca0021b38130e485ebbf14\n"
    },
    {
      "commit": "9b7421ac7ad75ad949e32d1606afcd685443ef8c",
      "tree": "97464a6c474781bd521c96e034733cec0c7b6ab5",
      "parents": [
        "dbabb10be6f6211d630e526d45aa54eae59756c9"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jun 18 12:31:13 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jun 18 15:19:21 2025 +0000"
      },
      "message": "Canvas: Generate Github nodes out of the dodo-app config\n\nChange-Id: Ifc5b09deb39352a3025f7ea66ce39b421daac94d\n"
    },
    {
      "commit": "c31bf14971e228b03f738dde4cbfc8ae34f88f9d",
      "tree": "13345409e55a4628c1228e7606c20158eef2239f",
      "parents": [
        "4b08eb7dd536c9c66263b3eea08bfeb43f035f74"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jun 16 07:48:20 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jun 18 09:13:19 2025 +0000"
      },
      "message": "Canvas: Generate graph state out of dodo-app config\n\nRestructure code, create shared config lib.\n\nChange-Id: I2cf06d35c486d4557484daf8618a2c215316fa7e\n"
    },
    {
      "commit": "4b08eb7dd536c9c66263b3eea08bfeb43f035f74",
      "tree": "721713118e035fcb9d43dfa9ba2ff0abc3d7c5c5",
      "parents": [
        "8e74dc031c5490b736c96cec4dce7cf04725b9e2"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jun 16 03:44:58 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jun 17 07:56:02 2025 +0000"
      },
      "message": "Canvas: Add JSON schema for dodo-app configuration\n\nChange-Id: I7c562c41a05e370016e3d73b975d3cc8b0b5a5e2\n"
    },
    {
      "commit": "8e74dc031c5490b736c96cec4dce7cf04725b9e2",
      "tree": "eb236deefadf80968376e38f6b7cb9562a826678",
      "parents": [
        "e7734b234a6a4e3fd83fe32cbab250a5c1b1ef13"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jun 13 10:19:26 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jun 13 14:33:42 2025 +0000"
      },
      "message": "Canvas: Import modal\n\nChange-Id: I22928007c5b81d93be2eed2d133fed4d73e1703f\n"
    },
    {
      "commit": "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": "918780d890086f65cf6a2c6bded71a26ce76cf96",
      "tree": "5bdba6814ee19d29ac5308e02295d7c672fea940",
      "parents": [
        "2539d9e43e842acb11a9f48ed9a72d829df28e6f"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 22 08:24:41 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 22 09:11:35 2025 +0000"
      },
      "message": "Canvas: Add Reload button on Monitoring page\n\nChange-Id: I593d9068870bcd5f0d43680af4a08d814a18a2a9\n"
    },
    {
      "commit": "0afbaee7098e4f014424d866897fbefc8c504484",
      "tree": "7077720891489144a48b0b34cb705ef3bf41a19b",
      "parents": [
        "9635ccbce34ce2e5a83168e8e0e0e77e4d79089a"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 22 04:34:33 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 22 04:48:03 2025 +0000"
      },
      "message": "Canvas: Display commit message\n\nChange-Id: Ifa2907c3377bd6174fa2c22a862dbae0eb8901fc\n"
    },
    {
      "commit": "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": "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": "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": "76d8ae649ccecc0c24f90971cbd250cfd45b99c1",
      "tree": "639016de4bb7b7c75bdcee356d5983f9e1b9c255",
      "parents": [
        "82afef1887f8ee11e84e27bdc7e435a98ef35ecf"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 19 15:21:54 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 19 15:50:38 2025 +0000"
      },
      "message": "Canvas: Auto register github webhook upon deploy\n\nChange-Id: I0321a032014d58016926189869b0fc24ad7ee2b1\n"
    },
    {
      "commit": "6d8b71c93b719eafeae28ad6fadc9165fe66a419",
      "tree": "dce23b09ab7d2151963e8b67e1d272516be45830",
      "parents": [
        "05a993c181ec17ac8004219360188291785e088d"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 19 12:57:35 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 19 13:29:46 2025 +0000"
      },
      "message": "Canvas: Check if network supports auto\n\nChange-Id: I19e06b70e3e1a59f6549fcf01b565bad8a7f5695\n"
    },
    {
      "commit": "b77cb93401adc282f70ad3e8e0481af67518f3f5",
      "tree": "de49d8f6d70f5e77ecf65a10c335a7fe19509c85",
      "parents": [
        "6ce4481b19e87a2b010ca9dd7247f894eea32448"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 19 09:37:14 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 19 10:13:30 2025 +0000"
      },
      "message": "Canvas: Rework Deployment/Gateways tab\n\nChange-Id: I938262b9a6ba2af060531e7dcdf91ddd66721385\n"
    },
    {
      "commit": "3304672099846c2323de7bdb26d8df9e14b5eaff",
      "tree": "a4f4aa86214615f42215e3e3154e00d5e3c8e95e",
      "parents": [
        "3ec9424fa7f67122f10540878b210a00b63e1ef7"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 14:49:55 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 14:50:01 2025 +0000"
      },
      "message": "Canvas: Get ready for trial\n\nChange-Id: I16088fa041dd0fb35ac801ddbbedf3c1c6e8563d\n"
    },
    {
      "commit": "bd37a2ba4b803524f80e07394666c046f86a8cd4",
      "tree": "d689881cc23eeccf4dce570f0c29ff9a83d0ce06",
      "parents": [
        "b1d3bd7a965316f19df79af9abc6f09c0a5cf682"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 15 04:28:42 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 15 06:38:02 2025 +0000"
      },
      "message": "Canvas: Remove deployment action\n\nChange-Id: I5887f130f5d11880271c943f58284d62f7d07a23\n"
    },
    {
      "commit": "3ed59599dde16dd593805dd41192efb7e9591d36",
      "tree": "abae56df3d1defebb8ce3c87dbb64f230227babe",
      "parents": [
        "a1f29474e3457e969c798f86402ea27e7f390334"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 14 16:51:09 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 15 03:07:41 2025 +0000"
      },
      "message": "Canvas: Handle repo diff\n\nRefactor github and appmanager clients.\nRemove dev mode ports/ingress definitions.\n\nChange-Id: I0ca15cec897d5a8cfa1c89b8ec9c09c408686c64\n"
    },
    {
      "commit": "74ab785563086f5904cc9ef33c2acf6cea7b461a",
      "tree": "8233ce3823082a58bc03669351ba1b460f9f0b87",
      "parents": [
        "e440db8685c8f52b4813a6d934da234426c6a878"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 13:19:31 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 13:20:35 2025 +0000"
      },
      "message": "Canvas: Fix project creation flow\n\nChange-Id: I2373982b37807db17391149a7ad40ebd4a5894ed\n"
    },
    {
      "commit": "e440db8685c8f52b4813a6d934da234426c6a878",
      "tree": "55452a61f267d03672339ebd4d988dbf2429e48c",
      "parents": [
        "02f1cadce9f2081f90610cb757c2ca33c93396ca"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 12:21:44 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 12:21:44 2025 +0000"
      },
      "message": "Canvas: Fix deleting undeployed project\n\nChange-Id: Icc2221338bc021a40ba7aae14eea93c8909af120\n"
    },
    {
      "commit": "818da4e1e7c3a5d338ce85a03386e5d7e0d759f7",
      "tree": "fef25bddeac2e84e51fd3f0c0eb2f6bed4342601",
      "parents": [
        "09fcab513feafb119a80063cb60cc4439055ddb8"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 12 14:45:35 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 05:32:15 2025 +0000"
      },
      "message": "Canvas: Edit/Deploy mode\n\nChange-Id: I51e5b6c2a1f06009433b0d0824ffcf3dfe39d34e\n"
    },
    {
      "commit": "09fcab513feafb119a80063cb60cc4439055ddb8",
      "tree": "92d70ab74ce88a7389d9df618ad9e77a9d559aa3",
      "parents": [
        "4b9b58a2dd57736d0fb74e8947f8cd8a43ba4fa5"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 12 14:05:07 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 12 14:07:18 2025 +0000"
      },
      "message": "Canvas: Implement authorization\n\nRun internal API server on a different port: DODO_PORT_API\n\nChange-Id: Ic5aa066c3fa06bd68a752704df4f73040d1aa0d0\n"
    },
    {
      "commit": "0b4002c49fd2a2d696d549cb2b71af6e46accda5",
      "tree": "00a00e51861235df14ab2c0c5f7f893682202fb0",
      "parents": [
        "8d0f635f2fc0b1799daac09ad1da6f6df52b4007"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun May 11 15:48:51 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun May 11 15:52:24 2025 +0000"
      },
      "message": "Canvas: Center icons on details panel\n\nChange-Id: I8ef607f3bf756e028ddab00f79e4ec17bd4582bd\n"
    },
    {
      "commit": "8d0f635f2fc0b1799daac09ad1da6f6df52b4007",
      "tree": "e519ea69761f2940c46a874e6b62ec005e634afe",
      "parents": [
        "880de16983c918c987493ce6a760574ac484db74"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun May 11 13:29:33 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun May 11 13:34:20 2025 +0000"
      },
      "message": "Canvas: Enable ESLint\n\nChange-Id: Ia9e84976b6d237f34c773eb55054fe244c625624\n"
    },
    {
      "commit": "3a921b87b82ac5df520aaebf26ab344b9d86e033",
      "tree": "d2298543125613d4f5e8ec2ece6f9acf2182e8b6",
      "parents": [
        "b87415ce8478284b94e9dbe501b3b8d6fd2c9932"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat May 10 07:36:09 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun May 11 07:07:51 2025 +0000"
      },
      "message": "Canvas: Logs tab\n\nChange-Id: Iddf52dbce6fb2090f095cecb04bafcb50c47e4a7\n"
    },
    {
      "commit": "7d81370d1949b9ffaf0b868c9c7a5b149e3f1436",
      "tree": "3817caf7ea73897995179e67381189d0ea15371f",
      "parents": [
        "5cf364c29b4ddfca0a1bf8fc6238493c4ec63b77"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 08 18:29:52 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 08 18:29:52 2025 +0000"
      },
      "message": "Canvas: Implement worker to manager communication\n\nRegister workers on manager side.\nLet user force reload service workers.\n\nChange-Id: I2635a04167e7c853151d8a1f5c3511646181a063\n"
    },
    {
      "commit": "d002661f89c59edbc999b087338b122799bcd612",
      "tree": "d402604eb544d9dcbb35e8d03a1c98c038abdc22",
      "parents": [
        "a2a845ccefb8b903692e6d2ce2bc0bfa10020538"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 08 13:00:36 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 08 14:48:38 2025 +0000"
      },
      "message": "Canvas: Prettier\n\nChange-Id: I620dde109df0f29f0c85c6fe150e347d2c32a03e\n"
    }
  ]
}
