)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "f8fa0f8785b498c88d0e168b65f30f593cd1501a",
      "tree": "8fcf4b9075e09d90b9f095ac963d168044ae1261",
      "parents": [
        "9fc37c7c69a4a26cb38e597c643213d1d63c91dc"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 12:34:26 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 12:34:26 2025 +0000"
      },
      "message": "Canvas: Improve spacing on details component\n\nChange-Id: Id18e89c9413e5f6d988b68d1f6582cdbee980a9d\n"
    },
    {
      "commit": "9fc37c7c69a4a26cb38e597c643213d1d63c91dc",
      "tree": "ca1f514f36d187125e22cc2b468f238e31088dc6",
      "parents": [
        "dc2dfcfeeb08e15e6d3807f499af1f3667ab46f2"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 12:17:18 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 12:17:18 2025 +0000"
      },
      "message": "Canvas: Message type icons\n\nChange-Id: I54f9f79869e593d95cb7dcadc6085951629600a9\n"
    },
    {
      "commit": "dc2dfcfeeb08e15e6d3807f499af1f3667ab46f2",
      "tree": "087cd0325bc8d2cee1a9285c99e63cef86a573c6",
      "parents": [
        "8cadbc764ad65ea0ed6e691cfa6fa2e23541e8a9"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 09:41:04 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 10:06:10 2025 +0000"
      },
      "message": "Canvas: Improve diagram styling\n\nChange-Id: If1c3d48cd94b63de86c8d7ecdb40974af951367f\n"
    },
    {
      "commit": "8cadbc764ad65ea0ed6e691cfa6fa2e23541e8a9",
      "tree": "c1964a70a1a56e1662c5ccbc2dfcc7332bb5dce6",
      "parents": [
        "29050d6e9998c2c3aa3954684e66d4c07c8a8a03"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 07:51:02 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 09:28:06 2025 +0000"
      },
      "message": "Canvas: Fix messages and details scrolling issues\n\nChange-Id: Id7831f65b7e692c611228d5937412500c3beae21\n"
    },
    {
      "commit": "29050d6e9998c2c3aa3954684e66d4c07c8a8a03",
      "tree": "4751db572e67c530fa9b9937d5c15e7d1e3b8324",
      "parents": [
        "e2b955a7b215e78324ff0b57d859d99ad4c3e9da"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 04:49:26 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 04:49:26 2025 +0000"
      },
      "message": "Canvas: Use subdomain only as gateway labels\n\nChange-Id: I2ff225fe4c9ae42ef3999fc51760cf29ccb58bae\n"
    },
    {
      "commit": "e2b955a7b215e78324ff0b57d859d99ad4c3e9da",
      "tree": "d8208aa5d43da2aeaf7c0d895481b5616424627e",
      "parents": [
        "838bcb82ed8d7358aa35a7fb26cb98c82ba4b6c8"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 15 15:41:05 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 16 04:43:52 2025 +0000"
      },
      "message": "Canvas: Wait during deploy and reload\n\nChange-Id: I8f39a46e263c99dd342b640474de421043ff0d38\n"
    },
    {
      "commit": "838bcb82ed8d7358aa35a7fb26cb98c82ba4b6c8",
      "tree": "b69f3f31581fe08727376c5214fb5720ba3f52fc",
      "parents": [
        "451d40de49ab60f492e797d835934541f6fcba86"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 15 19:39:04 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 15 19:39:04 2025 +0400"
      },
      "message": "AppManager: Handle new port forwards during app update\n\nChange-Id: I72a4c5b7ec4bd5ba6ddd32cd3f33dce023d7d9ea\n"
    },
    {
      "commit": "451d40de49ab60f492e797d835934541f6fcba86",
      "tree": "2b44dad25461114f6849067cd64257641d89008a",
      "parents": [
        "bd37a2ba4b803524f80e07394666c046f86a8cd4"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 15 13:13:41 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 15 13:28:11 2025 +0400"
      },
      "message": "DodoApp: Merge dev enabled/disabled images and charts\n\nChange-Id: Idf5b10640e32848fa31ce726dd8e0cf7bed033be\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": "b1d3bd7a965316f19df79af9abc6f09c0a5cf682",
      "tree": "2533c13270c441bd6e6f018db58fdd5f75e38ff4",
      "parents": [
        "3ed59599dde16dd593805dd41192efb7e9591d36"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 15 07:20:06 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 15 09:20:19 2025 +0400"
      },
      "message": "DodoApp: VM optionally takes ssh key as an input\n\nChange-Id: I1557dff32a622762c42fa7947723caa5d810d1ed\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": "a1f29474e3457e969c798f86402ea27e7f390334",
      "tree": "e3ad6cebcbf861193d7cab7f39b5fa04acdafe21",
      "parents": [
        "48fde051ffe863cb452d770e915bc314e43150f2"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 14 13:05:05 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 14 15:27:54 2025 +0000"
      },
      "message": "DodoApp: Individually configure dev-vm code-server, ssh, vpn\n\nRefactor openPortMap handling a bit.\n\nChange-Id: I2ea4d4c9b090f2791700149dda6cc8dcd8ab6820\n"
    },
    {
      "commit": "48fde051ffe863cb452d770e915bc314e43150f2",
      "tree": "baa701b66f18c91b7fb2f5229bba3b7e137de72e",
      "parents": [
        "359a685c71da766e76673c80e6c82bfd6ff0574b"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 14 09:48:08 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 14 15:19:10 2025 +0000"
      },
      "message": "Canvas: Service dev UI\n\nChange-Id: I11968dbf5ec51c5fd234ad927d40b0b3983e71dd\n"
    },
    {
      "commit": "359a685c71da766e76673c80e6c82bfd6ff0574b",
      "tree": "ea91c76924db8c5c8ac429c8534a8c0f66ac1627",
      "parents": [
        "af8db83af791cb5abfca73735936c9a78be2f7e0"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 14 03:38:24 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 14 03:51:57 2025 +0000"
      },
      "message": "Canvas: Restore viewport on project select\n\nChange-Id: I3dd60983ca0abe5fd3b84011bad384d50fa90dc1\n"
    },
    {
      "commit": "af8db83af791cb5abfca73735936c9a78be2f7e0",
      "tree": "0ff70e5e28d8e1a9861319e2efec9516fcc12676",
      "parents": [
        "74ab785563086f5904cc9ef33c2acf6cea7b461a"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 14:43:05 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 16:18:28 2025 +0000"
      },
      "message": "Canvas: Add new nodes at random positions\n\nChange-Id: I17ba195065bf8c2f7d1eea2091793766f0e0ac65\n"
    },
    {
      "commit": "74ab785563086f5904cc9ef33c2acf6cea7b461a",
      "tree": "8233ce3823082a58bc03669351ba1b460f9f0b87",
      "parents": [
        "e440db8685c8f52b4813a6d934da234426c6a878"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 13:19:31 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 13:20:35 2025 +0000"
      },
      "message": "Canvas: Fix project creation flow\n\nChange-Id: I2373982b37807db17391149a7ad40ebd4a5894ed\n"
    },
    {
      "commit": "e440db8685c8f52b4813a6d934da234426c6a878",
      "tree": "55452a61f267d03672339ebd4d988dbf2429e48c",
      "parents": [
        "02f1cadce9f2081f90610cb757c2ca33c93396ca"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 12:21:44 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 12:21:44 2025 +0000"
      },
      "message": "Canvas: Fix deleting undeployed project\n\nChange-Id: Icc2221338bc021a40ba7aae14eea93c8909af120\n"
    },
    {
      "commit": "02f1cadce9f2081f90610cb757c2ca33c93396ca",
      "tree": "f28af0e915204a6fbccde88ef827b2d04892dfd5",
      "parents": [
        "fcefd7c02b1fc3b3a38c561bade7fc870b538bbf"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 11:51:55 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 11:52:16 2025 +0000"
      },
      "message": "Canvas: Improve spacing on Integrations tab\n\nChange-Id: Ib2b7c1f15dfecabc56e39269ea122fc4f3842c33\n"
    },
    {
      "commit": "fcefd7c02b1fc3b3a38c561bade7fc870b538bbf",
      "tree": "8a23695800107203f3e84e059a78811811801108",
      "parents": [
        "617b1ddbf28310cf3c8c7c064ec7804b08b6fb50"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 08:01:07 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 08:01:07 2025 +0000"
      },
      "message": "Canvas: Consistent spacing on node details component\n\nChange-Id: Ia008d918723bc77a97a1ce37cd02adcd2accc9fe\n"
    },
    {
      "commit": "617b1ddbf28310cf3c8c7c064ec7804b08b6fb50",
      "tree": "021b3d61156022c7574df56070d2b128a213dd63",
      "parents": [
        "818da4e1e7c3a5d338ce85a03386e5d7e0d759f7"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 05:45:41 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 05:45:41 2025 +0000"
      },
      "message": "Canvas: Improve messages component layout\n\nChange-Id: I5ae26b72f480fff0e4634c7fcc294c04ac4ce7c5\n"
    },
    {
      "commit": "818da4e1e7c3a5d338ce85a03386e5d7e0d759f7",
      "tree": "fef25bddeac2e84e51fd3f0c0eb2f6bed4342601",
      "parents": [
        "09fcab513feafb119a80063cb60cc4439055ddb8"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 12 14:45:35 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 13 05:32:15 2025 +0000"
      },
      "message": "Canvas: Edit/Deploy mode\n\nChange-Id: I51e5b6c2a1f06009433b0d0824ffcf3dfe39d34e\n"
    },
    {
      "commit": "09fcab513feafb119a80063cb60cc4439055ddb8",
      "tree": "92d70ab74ce88a7389d9df618ad9e77a9d559aa3",
      "parents": [
        "4b9b58a2dd57736d0fb74e8947f8cd8a43ba4fa5"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 12 14:05:07 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 12 14:07:18 2025 +0000"
      },
      "message": "Canvas: Implement authorization\n\nRun internal API server on a different port: DODO_PORT_API\n\nChange-Id: Ic5aa066c3fa06bd68a752704df4f73040d1aa0d0\n"
    },
    {
      "commit": "4b9b58a2dd57736d0fb74e8947f8cd8a43ba4fa5",
      "tree": "018043e914d602ff4ebe8e0bf034424d64eafb3d",
      "parents": [
        "7461e50b4373b68ac10e92458840cd1eba7ac311"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 12 11:46:08 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 12 11:47:20 2025 +0000"
      },
      "message": "Canvas: fix empty config tab\n\nChange-Id: I7b59790577478d0b75c0b62e970bc7e95282f65a\n"
    },
    {
      "commit": "7461e50b4373b68ac10e92458840cd1eba7ac311",
      "tree": "f796be82aec7f1e6d4c0607ef6244aea2cbe0da0",
      "parents": [
        "bc47f9f1fdd718ca7604b67405e6b6d1fd6abfd0"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 12 10:11:55 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 12 11:47:15 2025 +0000"
      },
      "message": "Canvas: Auto-select first project\n\nChange-Id: I1065b20f866f9fa7152ca65b7853a60c58ac5de2\n"
    },
    {
      "commit": "bc47f9f1fdd718ca7604b67405e6b6d1fd6abfd0",
      "tree": "c8b25377562bbf9c0694f4deaaa1421e844393e3",
      "parents": [
        "0b4002c49fd2a2d696d549cb2b71af6e46accda5"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 12 08:31:07 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 12 11:46:57 2025 +0000"
      },
      "message": "Canvas: Fix layout, get rid of scroll bars\n\nChange-Id: I3244784ee741e93565190e538472723ffadfb754\n"
    },
    {
      "commit": "0b4002c49fd2a2d696d549cb2b71af6e46accda5",
      "tree": "00a00e51861235df14ab2c0c5f7f893682202fb0",
      "parents": [
        "8d0f635f2fc0b1799daac09ad1da6f6df52b4007"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun May 11 15:48:51 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun May 11 15:52:24 2025 +0000"
      },
      "message": "Canvas: Center icons on details panel\n\nChange-Id: I8ef607f3bf756e028ddab00f79e4ec17bd4582bd\n"
    },
    {
      "commit": "8d0f635f2fc0b1799daac09ad1da6f6df52b4007",
      "tree": "e519ea69761f2940c46a874e6b62ec005e634afe",
      "parents": [
        "880de16983c918c987493ce6a760574ac484db74"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun May 11 13:29:33 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun May 11 13:34:20 2025 +0000"
      },
      "message": "Canvas: Enable ESLint\n\nChange-Id: Ia9e84976b6d237f34c773eb55054fe244c625624\n"
    },
    {
      "commit": "880de16983c918c987493ce6a760574ac484db74",
      "tree": "1866fce94e07a7d72d0125fb18e967f80e958048",
      "parents": [
        "3a921b87b82ac5df520aaebf26ab344b9d86e033"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun May 11 07:26:00 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun May 11 08:05:11 2025 +0000"
      },
      "message": "Canvas: Improve layout\n\nChange-Id: Ife4f14d23eefc0ef0cb6b189446590fc42b8d797\n"
    },
    {
      "commit": "3a921b87b82ac5df520aaebf26ab344b9d86e033",
      "tree": "d2298543125613d4f5e8ec2ece6f9acf2182e8b6",
      "parents": [
        "b87415ce8478284b94e9dbe501b3b8d6fd2c9932"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat May 10 07:36:09 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun May 11 07:07:51 2025 +0000"
      },
      "message": "Canvas: Logs tab\n\nChange-Id: Iddf52dbce6fb2090f095cecb04bafcb50c47e4a7\n"
    },
    {
      "commit": "b87415ce8478284b94e9dbe501b3b8d6fd2c9932",
      "tree": "8beb95686a122de5cdcf51eb72a1d93082e44bfa",
      "parents": [
        "7d81370d1949b9ffaf0b868c9c7a5b149e3f1436"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 08 22:32:11 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat May 10 11:36:41 2025 +0400"
      },
      "message": "AppRunner: Ping manager periodically\n\nChange-Id: I58d79400acae5fdcd2c0a2bdae234c6303770cbc\n"
    },
    {
      "commit": "7d81370d1949b9ffaf0b868c9c7a5b149e3f1436",
      "tree": "3817caf7ea73897995179e67381189d0ea15371f",
      "parents": [
        "5cf364c29b4ddfca0a1bf8fc6238493c4ec63b77"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 08 18:29:52 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 08 18:29:52 2025 +0000"
      },
      "message": "Canvas: Implement worker to manager communication\n\nRegister workers on manager side.\nLet user force reload service workers.\n\nChange-Id: I2635a04167e7c853151d8a1f5c3511646181a063\n"
    },
    {
      "commit": "5cf364c29b4ddfca0a1bf8fc6238493c4ec63b77",
      "tree": "3b11f8593e2033ae857e4a5a0ecf5deea94294e2",
      "parents": [
        "d002661f89c59edbc999b087338b122799bcd612"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 08 16:01:21 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 08 16:06:34 2025 +0000"
      },
      "message": "Canvas: Fix to run validation on change in nodes\n\nChange-Id: Ie1798e65c83e673c90d7df556729cc509a9d2d9c\n"
    },
    {
      "commit": "d002661f89c59edbc999b087338b122799bcd612",
      "tree": "d402604eb544d9dcbb35e8d03a1c98c038abdc22",
      "parents": [
        "a2a845ccefb8b903692e6d2ce2bc0bfa10020538"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 08 13:00:36 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 08 14:48:38 2025 +0000"
      },
      "message": "Canvas: Prettier\n\nChange-Id: I620dde109df0f29f0c85c6fe150e347d2c32a03e\n"
    },
    {
      "commit": "a2a845ccefb8b903692e6d2ce2bc0bfa10020538",
      "tree": "a60d522a2bcb6540df73d2ef97421a7ee8a86991",
      "parents": [
        "6cf8c27f545361e4a8a960719436e281c2f934a7"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 08 11:27:14 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 08 13:12:58 2025 +0000"
      },
      "message": "Canvas: UI polish\n\nChange-Id: I3c7ae930917213dee8dddffdd9b14be7a80dab0a\n"
    },
    {
      "commit": "6cf8c27f545361e4a8a960719436e281c2f934a7",
      "tree": "f417f3e284df4822576ce2146c79962b00ab345a",
      "parents": [
        "7f98e77c44ec4af976f5299a7056ffde1fc27744"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 08 09:01:38 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 08 09:57:05 2025 +0000"
      },
      "message": "Canvas: Fix linter errors\n\nChange-Id: I602c1562d4ab2d948bb4dcf6caf66f185585d720\n"
    },
    {
      "commit": "7f98e77c44ec4af976f5299a7056ffde1fc27744",
      "tree": "dc64c9a9402db679374fa5c18c22d51597e92551",
      "parents": [
        "fe746ddf83f56a8d125657361023081a0047c5a6"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 07 11:00:14 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 08 07:55:03 2025 +0000"
      },
      "message": "Canvas: Github repository picker\n\nChange-Id: Icb8f2ffbef2894b2fdea4e4c13c74c0f4970506b\n"
    },
    {
      "commit": "fe746ddf83f56a8d125657361023081a0047c5a6",
      "tree": "cfcbd005d555a7a03993d4fa9c5a533ee82cbe71",
      "parents": [
        "9b2d49654845dc39a0632045bd8a9011cbb5f4c1"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 07 09:57:40 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 07 09:57:40 2025 +0000"
      },
      "message": "Canvas: Sort resource details by node type\n\nChange-Id: Ie5f9a149bf9700a08922e355bf8ca541fc915a0a\n"
    },
    {
      "commit": "9b2d49654845dc39a0632045bd8a9011cbb5f4c1",
      "tree": "2c9cbd71624b2265a71d297b6ddcb3bc2fb10018",
      "parents": [
        "33990c6ebc130fbd0036595da9f9a3a1168bfb6c"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 07 04:59:39 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 07 04:59:39 2025 +0000"
      },
      "message": "Canvas: Expose ingress auth details\n\nChange-Id: I337163f5919db5c8e48d6d429dcdc6420b196d3d\n"
    },
    {
      "commit": "33990c6ebc130fbd0036595da9f9a3a1168bfb6c",
      "tree": "99eed7c2a6d8df650c5b44896cc629fd7f059153",
      "parents": [
        "c0b27cce9a248731cad64e81c26ca820ab654cf8"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 06 07:51:24 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 06 07:56:16 2025 +0000"
      },
      "message": "Canvas: Form to choose source repository\n\nChange-Id: I48011d6374e036ead934815ed8e88dc0d1bb914e\n"
    },
    {
      "commit": "c0b27cce9a248731cad64e81c26ca820ab654cf8",
      "tree": "509cfd79686dcde25ab97327e51e58639466a7ff",
      "parents": [
        "bcd25e9ea44bd300e36f7fd6ed1b52ce0a46380d",
        "911656100a3085f8a5edd5af1f5d393d4194450a"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat May 03 18:02:51 2025 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "gerrit@v1.dodo.cloud",
        "time": "Sat May 03 18:02:51 2025 +0000"
      },
      "message": "Merge \"Canvas: Process pre-build commands\" into main"
    },
    {
      "commit": "911656100a3085f8a5edd5af1f5d393d4194450a",
      "tree": "024925d54ac0d43b73c466afa57896a9fb657c08",
      "parents": [
        "a6024622a8f30cce101bf3ddca0e64e552f1e91c"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat May 03 17:07:38 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat May 03 17:07:38 2025 +0000"
      },
      "message": "Canvas: Process pre-build commands\n\nChange-Id: I236f154c430b9ea29a4e0e491e1de27e78438440\n"
    },
    {
      "commit": "bcd25e9ea44bd300e36f7fd6ed1b52ce0a46380d",
      "tree": "7cc8d741a23205fc7ee2fdbe35befcffa5c847b5",
      "parents": [
        "d2d2df05c004c448ff62021ad2ea184b4987c871"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat May 03 19:14:10 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat May 03 20:06:29 2025 +0400"
      },
      "message": "DodoApp: Run commands using `/bin/sh -c ...`\n\nChange-Id: I58b4943c7819649f7589dfc7f9488e6abaf6f65c\n"
    },
    {
      "commit": "d2d2df05c004c448ff62021ad2ea184b4987c871",
      "tree": "eb18d3765416b89c599614a2cff0f6eab20401fa",
      "parents": [
        "a6024622a8f30cce101bf3ddca0e64e552f1e91c"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat May 03 19:15:17 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat May 03 19:15:17 2025 +0400"
      },
      "message": "AppManager: Format cue config files\n\nChange-Id: I36b7cccdf3b786d4d8de6b741b695bc2927e882d\n"
    },
    {
      "commit": "a6024622a8f30cce101bf3ddca0e64e552f1e91c",
      "tree": "332afbbef76f84c3fa5e075c14b1e5aa1e91f9e2",
      "parents": [
        "0af17d672d23334362010dcbcfe5c5cb0938759a"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 01 18:37:16 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat May 03 18:22:40 2025 +0400"
      },
      "message": "DodoApp: Abstract away service definition\n\nTODO(gio): There seems to be a performance degradation evaluating cue files.\n\nChange-Id: Ib157dfaa1c108f06f3026032e8fad79c06f42d3a\n"
    },
    {
      "commit": "0af17d672d23334362010dcbcfe5c5cb0938759a",
      "tree": "5cd4473ad0a0061d2ce49b7ab6d9a4cf77018b23",
      "parents": [
        "01ed36f84b3edabe038f53dc8ef7d572e11415f5"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 01 15:36:00 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 01 15:36:00 2025 +0400"
      },
      "message": "AppManager: Monitor volumes\n\nChange-Id: I0f1e007099b660dc055371fdf5dea7ba700ed485\n"
    },
    {
      "commit": "01ed36f84b3edabe038f53dc8ef7d572e11415f5",
      "tree": "65086a3f29aaba340cb620d2cbb26e8c14ba6e54",
      "parents": [
        "da7086581dc83be65c3ed7d38e8fef8ae3b30738"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 01 08:43:04 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 01 08:43:04 2025 +0000"
      },
      "message": "Canvas: Remove sqlite db file\n\nChange-Id: I30034a3ca2ac8942c9efe2745ea972d54af6c802\n"
    },
    {
      "commit": "da7086581dc83be65c3ed7d38e8fef8ae3b30738",
      "tree": "d69e419ea63fb4710a70cf284468d9f6922ad6ae",
      "parents": [
        "f8acc61632105a2ccc99c8a9b5897f2cb41ce44a"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Apr 30 14:57:38 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 01 12:29:06 2025 +0400"
      },
      "message": "AppManager: Recursively monitor dodo resources\n\nChange-Id: I23f3014e416f5b68f8909dbfbcba27db66eaee3f\n"
    },
    {
      "commit": "f8acc61632105a2ccc99c8a9b5897f2cb41ce44a",
      "tree": "2abe511ac444b46a5eadbd6967fb284c504a1fab",
      "parents": [
        "aba9a968f7d5f9dba7859834a0510c00f03e1127"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat Apr 26 08:20:55 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Apr 30 09:59:04 2025 +0400"
      },
      "message": "AppManager: App installation status monitoring\n\nChange-Id: I64f4ae0d27892b74f8827a275907cb75da09a758\n"
    },
    {
      "commit": "aba9a968f7d5f9dba7859834a0510c00f03e1127",
      "tree": "958592c8de697d2e4939b50d81f2a30b859f0454",
      "parents": [
        "b68003c7a77599e167ac4294d6c9dabfa6594683"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Apr 25 14:19:40 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Apr 25 15:19:04 2025 +0000"
      },
      "message": "Canvas: Render network nodes\n\nChange-Id: I63938da205af9377a1e210c0e972591142211a68\n"
    },
    {
      "commit": "b68003c7a77599e167ac4294d6c9dabfa6594683",
      "tree": "ef15c75c5ed130007d060e0d770b3c38dc0ac013",
      "parents": [
        "1dc800a666122965d7ea81d5e1c96bbea37cf98f"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Apr 25 03:05:21 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Apr 25 03:05:21 2025 +0000"
      },
      "message": "Canvas: Implement delete project\n\nChange-Id: I0c2abfde3d813376b9f22ab8dc8b1752262679cb\n"
    },
    {
      "commit": "1dc800a666122965d7ea81d5e1c96bbea37cf98f",
      "tree": "c263d81b18c1cf9e1a4980d729f13bd9805ad73e",
      "parents": [
        "268787aa0dc98f3fa5388bd71b453552a8c57d34"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Apr 24 17:15:43 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Apr 24 17:21:52 2025 +0000"
      },
      "message": "Canvas: Monitor deployment\n\nChange-Id: If5895724025e8e4082a372563c159cbf2216b97f\n"
    },
    {
      "commit": "268787aa0dc98f3fa5388bd71b453552a8c57d34",
      "tree": "4d66c9f69c22d8cc13db7068e67d97c4b9713363",
      "parents": [
        "f96ffb8fbd65d47c6f7a91f112a8df5731b7b3db"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Apr 24 21:18:06 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Apr 24 21:18:06 2025 +0400"
      },
      "message": "AppManager: Implement task status API\n\nChange-Id: I70c895d7461ffe4afc45868ca6bf754d37072a0f\n"
    },
    {
      "commit": "f96ffb8fbd65d47c6f7a91f112a8df5731b7b3db",
      "tree": "c7c5e0f5b17e7ac988423437d8fcd075bc808b11",
      "parents": [
        "b41ecae932b01a4749deb9ee9bff12f7e0f61435"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Apr 24 09:31:05 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Apr 24 09:32:27 2025 +0000"
      },
      "message": "Canvas: Remember Ingress, PostgreSQL and MongoDB details\n\nChange-Id: I5c75a3c9b1b1c7a65307d9608428208ac643040d\n"
    },
    {
      "commit": "b41ecae932b01a4749deb9ee9bff12f7e0f61435",
      "tree": "6702bde696abc9efa510b3044b7457825872fb52",
      "parents": [
        "355883e7e506c7fc1da4ff942f4e4baad60982d3"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Apr 24 08:46:50 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Apr 24 08:46:50 2025 +0000"
      },
      "message": "Canvas: Update edges on port removal\n\nChange-Id: I5f550f0511257207db4a2f0469957cc4449514bd\n"
    },
    {
      "commit": "355883e7e506c7fc1da4ff942f4e4baad60982d3",
      "tree": "da73698f6896bd66d2c1e572853b08c0a6e09ba5",
      "parents": [
        "4e3b24d8aa1e06d9e0bcc00e645195006206df27"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Apr 23 14:10:51 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Apr 23 14:10:55 2025 +0000"
      },
      "message": "Canvas: Include service ports in self env vars\n\nChange-Id: Iaef1b27069bc2672429e0b23ea42d6a305bf4e6d\n"
    },
    {
      "commit": "4e3b24d8aa1e06d9e0bcc00e645195006206df27",
      "tree": "c01fabf64afeedce01a42f3156b25232ff7bd9cf",
      "parents": [
        "b7a3e1299ed7be6fc088b389c8841eb479ae3acb"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Apr 23 15:29:13 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Apr 23 17:59:02 2025 +0400"
      },
      "message": "DodoApp: Support env aliases\n\nChange-Id: I7567935df8615c03089cb27d46852c0fb8ea5877\n"
    },
    {
      "commit": "b7a3e1299ed7be6fc088b389c8841eb479ae3acb",
      "tree": "06db7cbc196fd79703e3b17e618da7a3221f3f30",
      "parents": [
        "63a1a825ee40d8c21f05c633cead681d0b4190e8"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Apr 23 09:19:58 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Apr 23 09:38:18 2025 +0000"
      },
      "message": "Canvas: Issue update if previously deployed\n\nChange-Id: I7ffbba814154eb9129fbe035ce15278cb8e25fe9\n"
    },
    {
      "commit": "63a1a825ee40d8c21f05c633cead681d0b4190e8",
      "tree": "fdaa1637f07966534f9754bc8119bff8bd6fa4ea",
      "parents": [
        "a6de205efb8dd7ad4fa4457d7cf61aed1e14127e"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Apr 23 12:59:40 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Apr 23 13:01:40 2025 +0400"
      },
      "message": "AppManager: Let client override config files during update\n\nTake old input and merge with the new one.\n\nChange-Id: I2d8ad0e5f0cef97a3efa23aa9ca0c7f9163e703b\n"
    },
    {
      "commit": "a6de205efb8dd7ad4fa4457d7cf61aed1e14127e",
      "tree": "211bdd2a85f85e9d3e02c68922dfaf88dc5f3354",
      "parents": [
        "cbbcf05490a30ad6ba46b5026a1a0891eca7fc4f",
        "218e81323ccf3ce1ec70de849ea42dde8d7dc43b"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Apr 22 17:48:55 2025 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "gerrit@v1.dodo.cloud",
        "time": "Tue Apr 22 17:48:55 2025 +0000"
      },
      "message": "Merge \"Canvas: Organize back and front components\" into main"
    },
    {
      "commit": "218e81323ccf3ce1ec70de849ea42dde8d7dc43b",
      "tree": "4ed8738fac63d66b87ffa13f8dde6c94f15d592a",
      "parents": [
        "a421b06990b7c323b4ef5fe84f7415a4fab820de"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Apr 22 17:11:58 2025 +0000"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Apr 22 17:44:09 2025 +0000"
      },
      "message": "Canvas: Organize back and front components\n\nChange-Id: I0f2c0bbe47b2693127a367a72321b24eb1af7796\n"
    },
    {
      "commit": "cbbcf05490a30ad6ba46b5026a1a0891eca7fc4f",
      "tree": "3bb9bbbd23100131e2e57bdf5796de5745a40902",
      "parents": [
        "a421b06990b7c323b4ef5fe84f7415a4fab820de"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Apr 22 16:49:44 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Apr 22 16:49:44 2025 +0400"
      },
      "message": "DodoApp: Add Deno 2.2.0 support\n\nChange-Id: I3e683cda2dd18e9a3dce87b8eb1f65ea11dd5f14\n"
    },
    {
      "commit": "a421b06990b7c323b4ef5fe84f7415a4fab820de",
      "tree": "097fc6c5fe420a2a0c0d48c9d9e341a4d1cdde69",
      "parents": [
        "24128f3c1fe47c5892f9e74fabd8ef1816c03f5c"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Apr 21 09:45:04 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Apr 21 09:59:29 2025 +0400"
      },
      "message": "AppManager: Unify regular and dodo app installation logic\n\nChange-Id: I4c18bbebc6499e8dfe38eb8ac18536bc6017f673\n"
    },
    {
      "commit": "24128f3c1fe47c5892f9e74fabd8ef1816c03f5c",
      "tree": "5146611aba18c48f1239e4cc2bbf5aab36a875b5",
      "parents": [
        "f60724b4f325b9619215821429733f4ca3736101"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Apr 21 06:40:40 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Apr 21 06:40:40 2025 +0400"
      },
      "message": "Ingress: Fix chart port value\n\nChange-Id: Ic03c05be92fc1f2d3324c662f4b2400c17e64d1d\n"
    },
    {
      "commit": "f60724b4f325b9619215821429733f4ca3736101",
      "tree": "4a4f1067ebb551a9987fa1f8c7db677500837bad",
      "parents": [
        "24312ccf16d9e777e238594ca7911e361895b766"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Apr 20 15:53:15 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Apr 20 16:32:13 2025 +0400"
      },
      "message": "AppManager: Actually pass service port to the auth-proxy\n\nChange-Id: I836ba0c4feefad29022f6fef611c9dfd4c998d23\n"
    },
    {
      "commit": "24312ccf16d9e777e238594ca7911e361895b766",
      "tree": "bb0ae020f40d5b9cbb7b8b6a95f4e5dd8166d9c1",
      "parents": [
        "74e73e99d32fd0a47e3f75de4a349bef458d4d3e"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Apr 20 15:53:15 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Apr 20 15:53:15 2025 +0400"
      },
      "message": "AppManager: Use port numbers in ingress definitions\n\nChange-Id: I6d69566667490aac70597387c59cecbb8601a5a8\n"
    },
    {
      "commit": "74e73e99d32fd0a47e3f75de4a349bef458d4d3e",
      "tree": "2f3e754829eade16987485b009f4f386a3a0145c",
      "parents": [
        "9bd87caa14964f78d9eee6d1b95ced5e873c9cec"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Apr 20 11:57:44 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Apr 20 11:57:44 2025 +0400"
      },
      "message": "DodoApp: Auto generate SSH key to access source repositories\n\nChange-Id: I5caaed03ecb52b24c7d30fb121c15d7739607e99\n"
    },
    {
      "commit": "9bd87caa14964f78d9eee6d1b95ced5e873c9cec",
      "tree": "02c4f7cd8cc11c3f49bc983ddaa6bc9e83332771",
      "parents": [
        "af7e6439158c990ff15eb804ff755954a188a6a2"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Apr 20 08:05:34 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Apr 20 08:05:34 2025 +0400"
      },
      "message": "AppManager: Format cue files\n\nChange-Id: Ia37908797b0227ab3b66e0faab08dcc2379e5282\n"
    },
    {
      "commit": "af7e6439158c990ff15eb804ff755954a188a6a2",
      "tree": "3880acc8d56efa5cc3aa2c28763a3327656c2ae9",
      "parents": [
        "c555e0a1dfc50d079e8dc128a1804289c779563c"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Apr 17 18:46:05 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Apr 20 07:50:36 2025 +0400"
      },
      "message": "VirtualMachines: Support auto creation of the config files\n\nMount using virtiofs\n\nChange-Id: I77c5282b7bb1ad55df6ddfe0e4e53757b94f11e8\n"
    },
    {
      "commit": "c555e0a1dfc50d079e8dc128a1804289c779563c",
      "tree": "8a1ab0e0acf7f8f637df389cf438ae660c1dfaa2",
      "parents": [
        "be9ce3f10a66c70ffbe8156e69efb1a8e5edca00"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Apr 17 11:03:45 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Apr 17 16:44:05 2025 +0400"
      },
      "message": "DodoApp: Deprecate managerAddr and appId optional\n\nFix dev VM ingress.\n\nChange-Id: If1242eca53dd5919c632a543434b7e329f2e0409\n"
    },
    {
      "commit": "be9ce3f10a66c70ffbe8156e69efb1a8e5edca00",
      "tree": "4554a8f6068332d148647410bbe844b8e2ad7570",
      "parents": [
        "4fa7eb316a34f2e5320d8e06b4c682acbae61e4e"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Apr 17 08:30:28 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Apr 17 08:30:28 2025 +0400"
      },
      "message": "AppManager: Uninstall k3s from the last server without draining it\n\nChange-Id: If824b95875ce9e4114a1c5d9b354b1935e566b52\n"
    },
    {
      "commit": "4fa7eb316a34f2e5320d8e06b4c682acbae61e4e",
      "tree": "8b70cc841b87408f1d85d083527a1d766c6575f9",
      "parents": [
        "f55ab36eb75967020b08fa078dfad313cd2ee449"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Apr 16 17:23:06 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Apr 16 17:48:03 2025 +0400"
      },
      "message": "DodoApp: Support multiple ingresses per service\n\nChange-Id: I76fbf92c152a7c8e12bbded51cb8fea07ea9c045\n"
    },
    {
      "commit": "f55ab36eb75967020b08fa078dfad313cd2ee449",
      "tree": "0608dac568a5a637ef34b917d3bc3204814b2966",
      "parents": [
        "cbd8909ed7d8f3bdb17abd679173c137ec62169b"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Apr 11 17:48:17 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Apr 16 16:57:09 2025 +0400"
      },
      "message": "Ingress: Improve port opening\n\nUpdate nginx replica counts and rollout strategy.\nWhat proxy-backend configmap changes and reload auto proxy nginx.\nMake ingress optional.\nUse \u003cPREFIX\u003e.\u003cCLUSTER_NAME\u003e.clusters.p.\u003cDOMAIN\u003e addresses for remote\ncluster services.\n\nChange-Id: Ideb146a8c0275822ee5cd28311c00a817f4202aa\n"
    },
    {
      "commit": "cbd8909ed7d8f3bdb17abd679173c137ec62169b",
      "tree": "b159762a4dc660cc6d9f1c9d5d0427be7520f9c3",
      "parents": [
        "4dd2c0d6d8df04a5a1de3c60f620b93142c5bd97"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Apr 11 16:53:19 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Apr 11 16:53:19 2025 +0400"
      },
      "message": "Echo: Use DODO_PORT_ECHO env variable when present\n\nChange-Id: I2fa0b148dcfa8d4a2d52a989b6172d8c38baf37b\n"
    },
    {
      "commit": "4dd2c0d6d8df04a5a1de3c60f620b93142c5bd97",
      "tree": "c105fef8e73aac485c5475377573e72469845363",
      "parents": [
        "2446de060590098b8e00a49d758553a7433d065b"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Apr 11 16:40:55 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Apr 11 16:40:55 2025 +0400"
      },
      "message": "Echo: Basic TCP echo server\n\nChange-Id: I46e1f0e4d2733d14609efa68953e09b631cc28fb\n"
    },
    {
      "commit": "2446de060590098b8e00a49d758553a7433d065b",
      "tree": "91d6d16adc3c92ad49e5c0fa99fe62f4c63552ba",
      "parents": [
        "d78896a1f93805c7f699d2f0cfaae68e6abeb6c0"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Apr 11 11:20:39 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Apr 11 12:58:40 2025 +0400"
      },
      "message": "Build: Fix multi-arch docker builds\n\nChange-Id: I3968065215b696256ee819e2062ab1d3cadfcbcf\n"
    },
    {
      "commit": "d78896a1f93805c7f699d2f0cfaae68e6abeb6c0",
      "tree": "a0aa2d879fad1ddddfbd05a77058af7d438d96f5",
      "parents": [
        "7c34c6c07c5a3f5409be8c6b0cfa09cce467b7ec"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Apr 10 07:42:13 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Apr 10 16:38:23 2025 +0400"
      },
      "message": "AppManager: Reuse cross-cluster port forwarding logic\n\nServices define single open port with optional cluster and\nouter layer converts it to cross cluster bindings.\n\nChange-Id: I2f83270d19aaa367789d19a3ffbdf3a2158c1cf8\n"
    },
    {
      "commit": "7c34c6c07c5a3f5409be8c6b0cfa09cce467b7ec",
      "tree": "526ce62f0f95dad1df941579598e0a18e39c3d54",
      "parents": [
        "b4704ac44f7675fbd84d58b3c573d5f00615fb24"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Apr 09 22:29:41 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Apr 09 22:29:41 2025 +0400"
      },
      "message": "Matrix: Upgrade to v1.126.0\n\nChange-Id: Id5d8d9ee3cb308f18898d44ac8327c4b4659c25b\n"
    },
    {
      "commit": "b4704ac44f7675fbd84d58b3c573d5f00615fb24",
      "tree": "a4d7d8f7ce91250cb8cf6abcc7e550e464d8402f",
      "parents": [
        "2aa289c120493e51ca8e9a506a07bad182b31d61"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Apr 08 22:30:03 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Apr 09 22:14:33 2025 +0400"
      },
      "message": "AppManager: Support inter-cluster proxy for MongoDB\n\nChange-Id: I2434e8d0118214447bd5ede2f6623d2d922b0a9a\n"
    },
    {
      "commit": "2aa289c120493e51ca8e9a506a07bad182b31d61",
      "tree": "2c749f15c08abd53a65db0d5635997aa866282f0",
      "parents": [
        "f434463cc5feacf48057ea730f1c8f4639ea1b64"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Apr 09 08:13:40 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Apr 09 08:13:40 2025 +0400"
      },
      "message": "Headscale: Upgrade to 0.25.1\n\nUpdate configuration template.\n\nChange-Id: I3029e6eda0f5f049e28e9418ec1e596c78d25a57\n"
    },
    {
      "commit": "f434463cc5feacf48057ea730f1c8f4639ea1b64",
      "tree": "f85693b3e1fa3c5fb99433c9cfa89a9cea1594cc",
      "parents": [
        "721c004cdfea0c7a13ffc61010a1b41fc3e1abfc"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Apr 08 20:04:35 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Apr 08 20:04:54 2025 +0400"
      },
      "message": "AppManager: Support exposing ports on public networks\n\nSets up [public ingress -\u003e private ingress -\u003e remote cluster] proxy chain\n\nChange-Id: I6376a006b2692c31f3cb895bbfd6e373182e8824\n"
    },
    {
      "commit": "721c004cdfea0c7a13ffc61010a1b41fc3e1abfc",
      "tree": "a7f5123efd5c71c215d13d659a83e108b4833956",
      "parents": [
        "997af63f2dbf8bfa423e51e04bdb284791cc34c0"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Apr 03 11:56:36 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Apr 08 15:37:40 2025 +0400"
      },
      "message": "AppManager: Support exposing cross-cluster ports\n\nChange-Id: I4bdb3573209935f6777656ec2f3481e79d84a9c9\n"
    },
    {
      "commit": "997af63f2dbf8bfa423e51e04bdb284791cc34c0",
      "tree": "e13214e1e3e59e06c0163c491b0b12f761ce2b42",
      "parents": [
        "fc441e3383e3c6cf323c4646d2ca7eabff73ac03"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Apr 08 12:24:39 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Apr 08 12:24:39 2025 +0400"
      },
      "message": "Tailscale: Upgrade client version to v1.82.0\n\nChange-Id: I8484949305f0ebe8d5b7b94bd4fac5a288d0735e\n"
    },
    {
      "commit": "fc441e3383e3c6cf323c4646d2ca7eabff73ac03",
      "tree": "913b6683a6e3e6bde590d5ce75669a9c33479a3f",
      "parents": [
        "5f2f100451baee800b04a0871f6c268ed0dc7daa"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Nov 11 16:26:14 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Apr 02 15:26:40 2025 +0400"
      },
      "message": "AppManager: Add API endpoint to install dodo app\n\nRefactors cue definitions.\n\nNext steps:\n* Needs some cleanup, namespace is hard coded ...\n* Maybe merge with regular install API\n* Support exposing ports across clusters\n\nChange-Id: Ibfc3c3f742b61f2c5874012fe6c77b958eae81d9\n"
    },
    {
      "commit": "5f2f100451baee800b04a0871f6c268ed0dc7daa",
      "tree": "2da0211831c380f04989725167520f96fe24d9d4",
      "parents": [
        "9c43d0c4d9840f1d914313064f02f71c9de76f4a"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Mar 20 18:38:48 2025 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Mar 27 14:49:06 2025 +0400"
      },
      "message": "Canvas: build application infrastructure with drag and drop\n\nChange-Id: I5cfd12e67794f3376c5c025af29470d52d77cf16\n"
    },
    {
      "commit": "9c43d0c4d9840f1d914313064f02f71c9de76f4a",
      "tree": "420e23a609be0b7461455d533d7fbbe152d994c1",
      "parents": [
        "561724f05b2a468600a9be5b213d4f7b6663f35f"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Nov 19 01:04:06 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Nov 19 08:18:22 2024 +0400"
      },
      "message": "DodoApp: run `npm install` before `npm ci`\n\nChange-Id: Iba43cfa2ebd91c12606f821be1891291952c9fa7\n"
    },
    {
      "commit": "561724f05b2a468600a9be5b213d4f7b6663f35f",
      "tree": "ccb7e45584ef68fcd33cc182457d08867529efb9",
      "parents": [
        "236fdc3223978071fc6b6b81cfa0462a318d021d"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Nov 04 08:37:34 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Nov 11 09:53:11 2024 +0000"
      },
      "message": "Installer: Add option to expose PostgreSQL\n\nChange-Id: I1e00bc4d1d1f417956c1744634287c32d9e3f513\n"
    },
    {
      "commit": "236fdc3223978071fc6b6b81cfa0462a318d021d",
      "tree": "7dc5d5cd41c78a037268d76d1784f6bfdf58103e",
      "parents": [
        "0710c6b488ff04ec1310ce219c5c7e2525037656"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Nov 08 07:54:18 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Nov 08 07:55:50 2024 +0400"
      },
      "message": "DodoApp: Fix env var listing\n\nChange-Id: I84559a1026889fb779940a0d5e4fe22c08b324dc\n"
    },
    {
      "commit": "0710c6b488ff04ec1310ce219c5c7e2525037656",
      "tree": "fc3ab7e55cfc9a615cfd7a64e94d78ecb64a5eb2",
      "parents": [
        "802311e517728e816f74f94ce601a1722c09c40d"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Nov 04 19:08:30 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Nov 04 19:08:30 2024 +0400"
      },
      "message": "DodoApp: Disable repo client logging\n\nChange-Id: I7b1340a096228d06e81965e10a373e45c44d97cb\n"
    },
    {
      "commit": "802311e517728e816f74f94ce601a1722c09c40d",
      "tree": "b33d3cf76f6552493cc37871a30a7da2b88ea4d7",
      "parents": [
        "138a06e6e599483af7a50dcc653f57187e716872"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Nov 04 08:37:34 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Nov 04 08:57:26 2024 +0400"
      },
      "message": "Installer: Move port forwarding config into the apps\n\nChange-Id: I6d70c8ce72d21ebe74d126a680fa66ba6c3f2857\n"
    },
    {
      "commit": "138a06e6e599483af7a50dcc653f57187e716872",
      "tree": "83ce61f82543cce56bb948fe407e21fb8b714d8d",
      "parents": [
        "8fae028921963255ee7b7132256b035ba2767217"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Nov 01 17:03:10 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Nov 01 17:03:10 2024 +0400"
      },
      "message": "DodoApp: Support NodeJS backend\n\nChange-Id: Ia8d407d009e4d690febfbf4f1270f3baa2d3e781\n"
    },
    {
      "commit": "8fae028921963255ee7b7132256b035ba2767217",
      "tree": "076b239bfcc8dca0a614def5d92f458c8b3e3976",
      "parents": [
        "f3486a55c4832c4d2644e10ef1241d4a387e104e"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Oct 30 07:32:45 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Oct 30 08:12:08 2024 +0400"
      },
      "message": "NextJS: Use correct default port number 3000\n\nChange-Id: Iba055accf2f08a167d03f036df20bf9a9674e88d\n"
    },
    {
      "commit": "f3486a55c4832c4d2644e10ef1241d4a387e104e",
      "tree": "eadd1f5a8f0fcf029f4fb227e67ad4f0775c5a28",
      "parents": [
        "88d3766ff683db399a277162ec97017c6188dffa"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Oct 29 23:38:18 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Oct 30 08:11:47 2024 +0400"
      },
      "message": "DodoApp: Expose same app ports on VM as well\n\nChange-Id: I5d04330ffc7c23443c1305ece5201e3f59fb91d4\n"
    },
    {
      "commit": "88d3766ff683db399a277162ec97017c6188dffa",
      "tree": "7ff87635ac4898bf52a3e58c099abc38a826caf8",
      "parents": [
        "5fb003291aaa99d66ae48447f65b22913782ce07"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Oct 27 22:52:34 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Oct 28 14:05:59 2024 +0400"
      },
      "message": "DodoApp: Support apps exposing multiple ports\n\nChange-Id: I9c8a47d20ffc1836cef6390c0ac6f22e977e38f2\n"
    }
  ],
  "next": "5fb003291aaa99d66ae48447f65b22913782ce07"
}
