)]}'
{
  "log": [
    {
      "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "46998892c2f05af77d6dabd27dbcb22b9036af10",
      "tree": "6819b9e83b23dc31804f3d7cba237b598704726a",
      "parents": [
        "6e46ac1988a084abf9d7e64b430b32f65066e7a1"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Oct 24 21:07:54 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Oct 24 21:07:54 2024 +0400"
      },
      "message": "Etherpad: Installer configuration\n\nChange-Id: I808e3c1835e2f0bf5fe2e0da138710c979a38e38\n"
    },
    {
      "commit": "6e46ac1988a084abf9d7e64b430b32f65066e7a1",
      "tree": "eb3ee8a1e3a493df383ce5776bac0f7db02845e3",
      "parents": [
        "45c31828e2655b6bb8f2c7fcca87f61437a1c913"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Oct 24 13:51:31 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Oct 24 13:51:31 2024 +0400"
      },
      "message": "Matrix: Upgrade to v1.117.0\n\nChange-Id: If75bcdb05ce57448f05093daefbdc4658b170574\n"
    },
    {
      "commit": "6e1f4571b795d600d6202fe38a20a014b34a87a8",
      "tree": "b1cfc008e9fbb9553ed110919ac658f3281377b2",
      "parents": [
        "f0061854caf493598f879b105edcd509e3acd5da"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Oct 24 07:49:28 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Oct 24 07:49:28 2024 +0400"
      },
      "message": "VM: Fix typo Virutal -\u003e Virtual\n\nChange-Id: Icda78b3cd9d966ebc4ccb01018da2a76ac662664\n"
    },
    {
      "commit": "f078f46a2a60c774e50b2e22cf8cfd9f3a81754f",
      "tree": "bff8f265fb1a8fc28e2428d04867d9d379b77247",
      "parents": [
        "4fde4a1fed6a333653e079d5d756f3902b2d1622"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Oct 14 09:07:33 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Oct 14 09:07:33 2024 +0400"
      },
      "message": "DodoApp: Ingress can configure label and home path\n\nChange-Id: I55b83f54f4aa10e6fcc74b08ea081c0f040829ac\n"
    },
    {
      "commit": "4fde4a1fed6a333653e079d5d756f3902b2d1622",
      "tree": "cdd711f0382bbb7baadd39026e2ac8914be11cf0",
      "parents": [
        "9870cc00ca128b0428e5fef1fff930ec33446039"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Oct 13 12:19:30 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Oct 14 09:07:05 2024 +0400"
      },
      "message": "AuthProxy: Support Regexps when checking if path requires auth\n\nChange-Id: I3bc6d3143cef46b711bb3ccc7e2cb1ee8c59313f\n"
    },
    {
      "commit": "3cabc3ea44f3c25bcca5ca9db7736f5272af6c58",
      "tree": "a6d092094db6604dfbd00efa3a1fcab1cc6af151",
      "parents": [
        "2f9ed20ed2886164383f6c71e60c6e2bd784d97c"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Oct 06 18:37:27 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Oct 06 21:38:46 2024 +0400"
      },
      "message": "PrivateNetwork: Configure cluster proxy backend\n\nChange-Id: Ieeca2da6bd69ee3a440960ff3d4cdb9371f3a8c6\n"
    },
    {
      "commit": "2f9ed20ed2886164383f6c71e60c6e2bd784d97c",
      "tree": "a177a2b14ad27a453a79f7435514f1e81b94a7ab",
      "parents": [
        "69b8443d29976593af8ad4c446c7a51db9e6fc15"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Oct 06 17:47:00 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Oct 06 17:47:00 2024 +0400"
      },
      "message": "Headscale: Configure Memberships sync API endpoint\n\nChange-Id: Iab3264231cdb1c2efb6089e0c01c5e7367d228ca\n"
    },
    {
      "commit": "07458ded00bb47d86ba550458735c4caab4f7692",
      "tree": "7b69a15c776117c42fc0b75d71bf1f95b523f2c3",
      "parents": [
        "e44c151f6296b576d05d512d26483d4dd18e99da"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Oct 06 17:45:45 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Oct 06 17:45:45 2024 +0400"
      },
      "message": "EnvManager: Configure config repo data volume\n\nChange-Id: Ide487088df33cd9a351134fc2587eae9c8d96549\n"
    },
    {
      "commit": "4557dc0f42f18e964f3e39327f971d639a348b04",
      "tree": "baa112210af95d26c0f43ff00b14c6cf6508c69a",
      "parents": [
        "1afc3cdd8264c87d3b029ae7f8e82939e73286d1"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Oct 04 19:29:25 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Oct 04 19:29:25 2024 +0400"
      },
      "message": "PrivateNetwork: Setup secrets ACL for both of the tailscale clients.\n\nChange-Id: I671b66ba06712b6842aa47cb2607b2a46ce0e0d4\n"
    },
    {
      "commit": "28d5b72e868f490a81412523539f7c58682c5080",
      "tree": "eb31cd742ef61737ca068c9d909422e0adfa4a40",
      "parents": [
        "5887caa19c080583a548775d8cf20e476bfba6da"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Oct 04 19:27:34 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Oct 04 19:27:34 2024 +0400"
      },
      "message": "Memberships: Use external volume, remove one from the Helm chart.\n\nChange-Id: Ie2afcd9ab28a12e7d6bea6375a96e00a0f63b525\n"
    },
    {
      "commit": "9b215271defd55beba6cd8726bd9a70a57cff499",
      "tree": "c8e418fa96834453d498a40c0f4cfcdc373f3f87",
      "parents": [
        "488554fc5a7721500f8a6d57c52c4002f1da6e5b"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Oct 03 10:07:13 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Oct 03 12:48:17 2024 +0400"
      },
      "message": "Gerrit: Update to 3.10.0 and add serviceuser plugin\n\nChange-Id: I20023f0da93982461e78639a554c73191762a1e4\n"
    },
    {
      "commit": "dd213159a7a44ae9b35524de154f6ca6ccd568f3",
      "tree": "6ccf5807dbc42331bca84e4081023b58fae9bfa6",
      "parents": [
        "dcd9fefca814cd6cb997d2da9b00b4356589aee3"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Sep 27 11:26:59 2024 +0200"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Oct 03 12:43:25 2024 +0400"
      },
      "message": "Auth: Add page to change password.\n\nConfigure launcher as a default return to address.\n\nUse standard X-Forwarded-User instead of custom X-User header.\nAdd X-Forwarded-UserId header holding user unique identificator.\n\nChange-Id: Ib2e6329ba9fb91d2cc9a86b0c5fc78898769e3b8\n"
    },
    {
      "commit": "c81a847da3d91a83c05c98c41adadf89d18f913b",
      "tree": "b292ac26094257efdafafca25abb60ff24e79100",
      "parents": [
        "8f2903253c51454d613c948eb10d2dbc8b55daa3"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Sep 24 13:06:19 2024 +0200"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Sep 26 14:04:15 2024 +0200"
      },
      "message": "DodoApp: Use JSON file for configuration.\n\nSpecify json schema so code editors can validate user input.\nUpdate auth proxy to disable auth on specified paths.\n\nChange-Id: Ic6667d802a9553444d3630c4ff73f4b33304ccfd\n"
    },
    {
      "commit": "8f2903253c51454d613c948eb10d2dbc8b55daa3",
      "tree": "f8aa032050c2e53e841151e2c5281a12989bfe6d",
      "parents": [
        "f15b9dae8da59ea970cebe865673c0b74fb05d14"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat Sep 21 15:37:45 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat Sep 21 17:58:03 2024 +0400"
      },
      "message": "Clusters: Support persistent storage on remote clusters.\n\nWith this merged users can request persistent volumes and PostgreSQL\ninstances on remote clusters.\n\nThis is achieved by Cluster manager installing open-iscsi on all\nremote servers and running longhorn on top of them.\n\nChange-Id: Ic1b24ede12fa32bb99f38e560207230437b45fd6\n"
    },
    {
      "commit": "f6ad298e24e22c1fadb203d85f8b8dd6cb118e25",
      "tree": "ec764428f186cf879085d6956b20d315434408aa",
      "parents": [
        "4a3e54c86c05e4881105f7aced6f039a383ed5a1"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Aug 23 17:42:49 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Sep 20 14:19:48 2024 +0000"
      },
      "message": "ClusterManager: Implements support of remote clusters.\n\nAfter this change users will be able to:\n* Create cluster and add/remove servers to it\n* Install apps on remote cluster\n* Move already installed apps between clusters\n* Apps running on server being removed will auto-migrate\n  to another server from that same cluster\n\nThis is achieved by:\n* Installing and running minimal version of dodo on remote cluster\n* Ingress-nginx is installed automatically on new clusters\n* Next to nginx we run VPN client in the same pod, so that\n  default cluster can establish secure communication with it\n* Multiple reverse proxies are configured to get to the\n  remote cluster service from ingress installed on default cluster.\n\nNext steps:\n* Support remote clusters in dodo apps (prototype ready)\n* Clean up old cluster when moving app to the new one. Currently\n  old cluster keeps running app pods even though no ingress can\n  reach it anymore.\n\nChange-Id: Iffc908c93416d4126a8e1c2832eae7b659cb8044\n"
    },
    {
      "commit": "4a3e54c86c05e4881105f7aced6f039a383ed5a1",
      "tree": "f46ae31bee0e0ac429fd9a0dbf3c40c61ebe74d3",
      "parents": [
        "29f6b872c0a6b438198e0fbd3d9fc22150d378e1"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Sep 18 19:10:06 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Sep 19 22:50:55 2024 +0400"
      },
      "message": "Jenkins: Update configuration-as-code plugin version\n\nChange-Id: I962810c9d8d0586bf7a94a9388aee0e3530b4370\n"
    },
    {
      "commit": "29f6b872c0a6b438198e0fbd3d9fc22150d378e1",
      "tree": "1de826a26d8c6c3be5e6aff48b273ae49a3c024e",
      "parents": [
        "cfb228ce21f864457a72d1fe238a336359db8a65"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Sep 08 16:14:58 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Sep 09 18:03:10 2024 +0400"
      },
      "message": "VirtualMachine: Make VPN optional\n\nChange-Id: I22c8235a651969665fc50e6b2841d710ca137109\n"
    },
    {
      "commit": "7fbd4ad2920fa3ac2923bffb3f30c2bd2dd1a846",
      "tree": "14fb607a7a45e142ea90e58751c4b7825e2a7e59",
      "parents": [
        "dd32bbcf11ff3be729efe7bcc9902761858e2b00"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Aug 27 10:06:39 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Sep 04 13:50:35 2024 +0400"
      },
      "message": "DodoApp: Support dev virtual machines\n\nChange-Id: Ib7641adb5be477bdde7cd9a06df4b45aa65a1c01\n"
    },
    {
      "commit": "dd32bbcf11ff3be729efe7bcc9902761858e2b00",
      "tree": "4a9f07107cfa9a9a6515c46eb93c49df69a01dd5",
      "parents": [
        "36b23b3c95ddb458a3e30b147c694eeba78139cc"
      ],
      "author": {
        "name": "Davit Tabidze",
        "email": "davidtabidzef1@gmail.com",
        "time": "Wed Aug 28 17:14:26 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Aug 28 14:29:44 2024 +0000"
      },
      "message": "Welcome: Remove headscale-user installation\n\nAuto user sync logic takes care of creating headscale internal users.\n\nChange-Id: I25ca82a5e327c8e7666ce27cfd5f810690641a5e\n"
    },
    {
      "commit": "36b23b3c95ddb458a3e30b147c694eeba78139cc",
      "tree": "07d0634412ebb55fa4f899b63d1b991753357b96",
      "parents": [
        "b36178fae43c466c648a928c94047605e9357808"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Aug 25 12:20:54 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Aug 27 08:46:39 2024 +0400"
      },
      "message": "VirtualMachine: Implement virtual machines using KubeVirt\n\nAuto adds new VM into given user\u0027s Tailscale network\n\nChange-Id: I16847a0b9eacc17b0e794d3b4913eb1d80a93f0a\n"
    },
    {
      "commit": "9877f292b2b037beea96dc916144feb7b8700a30",
      "tree": "92c8309cfed74332269ac6620027a41a6cced354",
      "parents": [
        "1bf00809c3db2b93c115af677ad18d3a48c5a75e"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat Aug 17 15:11:15 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Aug 19 14:31:31 2024 +0400"
      },
      "message": "AppManager: Use dodo hosted repo for Helm charts\n\nChange-Id: I236bd13907514ab3bced6c7353edc1b03b60b6ee\n"
    },
    {
      "commit": "d28f83c53dbee2b81b3d08ed1d2f726962465a68",
      "tree": "4a8fefad34241856899eb791395fd55cc2abb5e0",
      "parents": [
        "780a0d0939c9f0ae8dd88c34dd331248a5b47e7b"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Aug 15 10:53:40 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Aug 15 21:08:50 2024 +0400"
      },
      "message": "IngressPublic: use Deployment with NodePort service\n\nSpread replicas on different hosts.\nNow PortAllocator allocates node ports as well.\n\nChange-Id: Ia16cb24673fc6c61185f21ab30fde8964157aa4c\n"
    },
    {
      "commit": "932849fc25499d0b2d12e4ac0bc01d3b32fda6ba",
      "tree": "362ff0c5261ae7865422d4cd53e8560b4a908067",
      "parents": [
        "2728e40ac3b213dc98e7da6561e81031a972c12e"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Aug 02 09:01:48 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Aug 02 11:03:02 2024 +0400"
      },
      "message": "Coder: Helm chart and configuration\n\nChange-Id: I43515c289001bf1407aee1f9734151a261a7808a\n"
    },
    {
      "commit": "2728e40ac3b213dc98e7da6561e81031a972c12e",
      "tree": "2e3326a3b59d995213b366b948993b61c9adf5f5",
      "parents": [
        "4784f8e6ebd0266b24a808a5d7bd15251728df29"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Aug 01 18:14:21 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Aug 01 19:03:30 2024 +0400"
      },
      "message": "Welcome: Create new users via Memberships API\n\nChange-Id: Iaa12b3438340a5ca4c4fdb2157d1e8f064d56139\n"
    },
    {
      "commit": "8c942d28635a9b9da8b6b82b03e6255513dfdcd7",
      "tree": "c88b2850bea803edc6b587dcb4e091eaa635516b",
      "parents": [
        "636d1304af28c9b3ef67760bf8f15d5332aa9835"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jul 17 13:43:02 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Aug 01 13:30:40 2024 +0400"
      },
      "message": "Installer: Rightsize app icons\n\nChange-Id: Ie7045e66382554d26c443cc59f82e33910d7551e\n"
    },
    {
      "commit": "636d1304af28c9b3ef67760bf8f15d5332aa9835",
      "tree": "5a7b20d437e38bfe944881c8ccbd7e1e6701dd31",
      "parents": [
        "785d8bb21e11d881e2f83d5f296791f688f19321"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Aug 01 09:17:28 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Aug 01 11:09:40 2024 +0400"
      },
      "message": "Network: Update help document to list DNS records to publish\n\nChange-Id: I0ba46191b0ad7fee9c1caf5e52cadbd44c73dbf2\n"
    },
    {
      "commit": "785d8bb21e11d881e2f83d5f296791f688f19321",
      "tree": "a1bf175c15d9055a146dba01eae0306500454633",
      "parents": [
        "4699440871aae03580345c2658d8d31049d4ab00"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jul 31 17:47:07 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Aug 01 11:09:23 2024 +0400"
      },
      "message": "EnvManager: Remove dependencies on ingress-private\n\nChange-Id: If9db88b0a5c589ceb791647977e3608282a81190\n"
    },
    {
      "commit": "4699440871aae03580345c2658d8d31049d4ab00",
      "tree": "bfef1cbf81d856018976f3b77326c5f12481034e",
      "parents": [
        "fdf3b9bd12d14bbe2d84b74647cb661cae9578f2"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jul 31 18:11:00 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Aug 01 11:09:07 2024 +0400"
      },
      "message": "Zot: Use OAuth2 for authorization\n\nChange-Id: I2569f4df3ad3eff4d94eaa5b67e1180915eceebc\n"
    },
    {
      "commit": "cafd4e63ce3f39090699ef8ec608ddc71d62856a",
      "tree": "daa290416e753df724bb1e37f44144f8e6c00352",
      "parents": [
        "b54db2456380b3f4070d789a8bf1cb82b226dad9"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jul 31 10:53:40 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jul 31 11:37:08 2024 +0400"
      },
      "message": "DodoApp: Implement user synchronization API\n\nChange-Id: Id38c96f379832d2d5034e215de2e51d28a25634c\n"
    },
    {
      "commit": "7841f4fa84099fef36e426842a2239d72c74ba53",
      "tree": "297758546279a32ffcb747432bec2c6bb2039818",
      "parents": [
        "aec6d8a8403e0600da36cc02b74aaa35789e3655"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jul 26 19:53:49 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jul 31 09:56:47 2024 +0400"
      },
      "message": "Installer: Make Private network optional\n\nChange-Id: Ic7a2e5250a42dc03de2416b1e2a0d1bbca3f010c\n"
    },
    {
      "commit": "94904700fb6b32f65c9a5f6545a1f9e872d03953",
      "tree": "b80b8b0b312e698c48b0807856607e9c5052f57a",
      "parents": [
        "d8ab4f504f65006c97e09f8b7c0b32cfd19c6b2c"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jul 26 16:58:34 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 30 11:03:32 2024 +0400"
      },
      "message": "DodoApp: Deploy Ingress resource for status page\n\nChange-Id: I0f102664d655d060d0ba37a63e3681816457f79b\n"
    },
    {
      "commit": "4ece99cc103001305d5e69fc83784e44629f5917",
      "tree": "64325b003697d47d4b1cafc9c95d7107a530279c",
      "parents": [
        "11617ac140a250505e177fa0e375fdcd411efe08"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 18 11:05:50 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 18 14:10:19 2024 +0000"
      },
      "message": "Installer: Implement multi network selector\n\nChange-Id: I52227a0f0e964ac48cb378ead077fad941c3315c\n"
    },
    {
      "commit": "11617ac140a250505e177fa0e375fdcd411efe08",
      "tree": "19f5bd8985efd7e926b6439f8b13994236c2b4cf",
      "parents": [
        "1e5682b8f719589494b23b9805590ffeb9ff5e3f"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jul 15 16:09:04 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 18 14:10:04 2024 +0000"
      },
      "message": "DodoApp: Restrict users to one domain\n\nChange-Id: I4d09d5ee61d0ec712fd9dfa848c0af0c8e550d68\n"
    },
    {
      "commit": "3a5baedcf997f5032bd717029d1562f2aebd4473",
      "tree": "b0ccd176c8515f4834bb4f0ecd98370d1bcbd74e",
      "parents": [
        "d1b742eb21597f04eb8e86bd8b79b1214fa1fb62"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 16 15:39:31 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 16 13:49:08 2024 +0000"
      },
      "message": "DodoApp: Make cluster role name unique\n\nChange-Id: Ia10a79bf00769f70ef977d5c0a468c97ca8e717a\n"
    },
    {
      "commit": "d1b742eb21597f04eb8e86bd8b79b1214fa1fb62",
      "tree": "c34312811cc805671b317628c701b2ba98d01706",
      "parents": [
        "b1c4e5468ba93e2c0c98a2d37b69dcce290f7558"
      ],
      "author": {
        "name": "Davit Tabidze",
        "email": "davidtabidzef1@gmail.com",
        "time": "Mon Jul 15 16:01:52 2024 +0400"
      },
      "committer": {
        "name": "dtabidze",
        "email": "dtabidze@v1.dodo.cloud",
        "time": "Tue Jul 16 13:47:04 2024 +0000"
      },
      "message": "Appmanager: UI Rework\n\nChange-Id: I2f809f96e274adac7df9f63d44b0a794bfa3a0dc\n"
    },
    {
      "commit": "23bdc1bf054f81d3760c8a04a37501011138d4bc",
      "tree": "0505647260ce9c0f9ad6d7e34be0bb52f4e53d68",
      "parents": [
        "38df35d4a95c71be4204836d95d403ace8e450a3"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 11 16:07:47 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jul 12 17:55:13 2024 +0400"
      },
      "message": "DodoApp: Filter domains\n\nChange-Id: I475f6b6c9d00ccc0214c54f22c6c8fd428cd996d\n"
    },
    {
      "commit": "38df35d4a95c71be4204836d95d403ace8e450a3",
      "tree": "23456248387010eee23befc08db0a3f00e0a59fa",
      "parents": [
        "7302c979635db8e76463d70167dc723a11d2bc2a",
        "520c6229eb24377b16957a5f98439bbb4b430631"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jul 12 10:59:34 2024 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "gerrit@v1.dodo.cloud",
        "time": "Fri Jul 12 10:59:34 2024 +0000"
      },
      "message": "Merge \"Installer: Give unique names to OAuth2 clients\" into main"
    },
    {
      "commit": "7302c979635db8e76463d70167dc723a11d2bc2a",
      "tree": "b3c087433bebdc73b1c2cbe921a5b9b91426658a",
      "parents": [
        "9ca4926565efe3be10af21a99f5e0272b4df511b",
        "cb34ad27802be5d8d94cbec7a7c82242edf9ed9b"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jul 12 10:59:20 2024 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "gerrit@v1.dodo.cloud",
        "time": "Fri Jul 12 10:59:20 2024 +0000"
      },
      "message": "Merge \"Installer: Handle custom networks/domains\" into main"
    },
    {
      "commit": "9ca4926565efe3be10af21a99f5e0272b4df511b",
      "tree": "e7fa5049aa4643863eadd4eee4267492c181fbfd",
      "parents": [
        "81246f000e61fa3d1282870cab9bb04170c633f2"
      ],
      "author": {
        "name": "Davit Tabidze",
        "email": "davidtabidzef1@gmail.com",
        "time": "Wed Jul 10 15:51:27 2024 +0400"
      },
      "committer": {
        "name": "dtabidze",
        "email": "dtabidze@v1.dodo.cloud",
        "time": "Fri Jul 12 10:53:22 2024 +0000"
      },
      "message": "Launcher: UI rework\n\nFixed help modal header margins for title and close button. Help menu titles now have same padding from both sides. Scroll fixed in chrome. Problem in Safari.\n\nChange-Id: I2987ea93379e385125e81ec37b9f0bb61a6d7797\n"
    },
    {
      "commit": "520c6229eb24377b16957a5f98439bbb4b430631",
      "tree": "eeb57a99c418166cd49c177286ca5f6b100dd2c6",
      "parents": [
        "a60f0decc365f877d7b88d099a65e0b686db78e9"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 11 17:34:40 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 11 17:34:40 2024 +0400"
      },
      "message": "Installer: Give unique names to OAuth2 clients\n\nChange-Id: I218f8f8655f7662bfcd41cddaa17f3e11fcfe910\n"
    },
    {
      "commit": "cb34ad27802be5d8d94cbec7a7c82242edf9ed9b",
      "tree": "faa9d548dd3ea7dcb3888784fa343fee2f0a9e09",
      "parents": [
        "81246f000e61fa3d1282870cab9bb04170c633f2"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 11 08:01:13 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 11 15:10:45 2024 +0400"
      },
      "message": "Installer: Handle custom networks/domains\n\nChange-Id: Id88e82a0757365466d92fb31223e21b7199ef940\n"
    },
    {
      "commit": "a60f0decc365f877d7b88d099a65e0b686db78e9",
      "tree": "fc62da0f29749454569cc49710cd809724581bc6",
      "parents": [
        "71eecceeec941c4d1efe46c446139fa1b3eaa479"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jul 08 10:49:48 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jul 10 09:23:39 2024 +0400"
      },
      "message": "DodoApp: Status page\n\nImplements basic status page, listing all apps and their commit\nstatuses. Separates web and api endpoints. Unifies API addresses a bit.\n\nChange-Id: I98f9f949a49b60e80e188f7b51ec0e967666e65b\n"
    },
    {
      "commit": "33059767fa0c051f624bbeb492906566218dd3f7",
      "tree": "3d22e4f08d88e4b3a41abfbf43f0815e1982c208",
      "parents": [
        "4b50c8ff7ed54c09288ce9164aab40b497be3a13"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jul 05 13:19:07 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 09 12:13:09 2024 +0000"
      },
      "message": "DodoApp: API to create new app\n\nChange-Id: I20d73ef17cc03073c913fceb4f3bed7a26754cea\n"
    },
    {
      "commit": "caaae915ff79234bf49dcf2dd7f8b9b1993ec986",
      "tree": "3c01133f37fa0dc2b36fa16f8cfefae37dc5f157",
      "parents": [
        "266c04fe17fb79285f09777b268310b039343a69"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 09 15:41:40 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 09 15:41:40 2024 +0400"
      },
      "message": "Gerrit: Fix container image version\n\nChange-Id: Ifbd1e2f31300487c0d1403ac1e3cb86e43ada5b7\n"
    },
    {
      "commit": "266c04fe17fb79285f09777b268310b039343a69",
      "tree": "26e19ff36f6d55ced011b57c5e06439ba07b0758",
      "parents": [
        "1364e437bf921780052f27d49f51682ffd1811f0"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jul 03 14:18:45 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 04 18:18:53 2024 +0400"
      },
      "message": "DodoApp: Prepare dodo-app to support multiple app repositories\n\nPreviously Git repository storing configuration for PCloud\nenvironment, linked dodo-app repositories directly. After this change,\ndodo-app will first create config repository which will link\nindividual application repositories. And PCloud env will link to the\nconfig repo. That way dodo-app manger will be able to create multiple\napp repositories per installation.\n\nChange-Id: I647cacda7a9a4f241d2acc28ae5d8bbd8c6424d6\n"
    },
    {
      "commit": "01cf5cbd1b3e86d325d3a487f2e45862ba04b167",
      "tree": "1854e19ce09738bf0478dd814a0c400570384df5",
      "parents": [
        "f71a0833ebf1048bd9be24c70ae24caca50b9ad5"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jun 28 00:18:18 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jul 01 11:43:57 2024 +0000"
      },
      "message": "Installer: Simplify volume usage API\n\nChange-Id: I4a7189af9194c70a6c5aac96d39618a6827965bd\n"
    },
    {
      "commit": "caa365a70bea0d971b8733f47eacb635024a8e5f",
      "tree": "a67c33c1c23baa902094fcaef66c13cecf926729",
      "parents": [
        "1752a176b8ec249ce8a89985e8d73f14054d0a5d"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jun 25 14:24:28 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jun 25 14:24:28 2024 +0400"
      },
      "message": "DodoApp: Display Git server public key in the help document\n\nChange-Id: I95de1202ffe4d81ed00d8f9abe991b7b80f458b6\n"
    },
    {
      "commit": "1752a176b8ec249ce8a89985e8d73f14054d0a5d",
      "tree": "a1de12cdae786a70f1b148186f095af0fe65b9a9",
      "parents": [
        "f5ffedb5f8b7d2039ded283c700edf39b13d94b9"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jun 19 15:18:19 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jun 19 16:03:14 2024 +0400"
      },
      "message": "Launcher: implement copy to clipboard\n\nChange-Id: Idbcf5d1bfe574005d5abb60e519eac3ede6aec52\n"
    },
    {
      "commit": "cdfa372736902dadab00148e11a0d0e3ef2e25b2",
      "tree": "c16e3da042c9a603680fada36b61094f74f81a1a",
      "parents": [
        "bd7ab0be99524208ed4cf49b9af49dc174e5ae61"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jun 13 20:10:14 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jun 17 13:25:38 2024 +0400"
      },
      "message": "Installer: deallocate ports upon app uninstall\n\nChange-Id: I19298537fed02de03a9e74fa351cf23f733de699\n"
    },
    {
      "commit": "3e67ce121286e5c45b138e25d583802b36bfdb21",
      "tree": "d81182c67fc8460dbe5f3dd28c73abf44944fa30",
      "parents": [
        "efa0ed4866fc7b67652a52c1c29142542be55049"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jun 13 19:47:19 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jun 13 19:47:19 2024 +0400"
      },
      "message": "Installer: auto generate target service namespace in port forwards\n\nChange-Id: Id7e0dcdd750034375c796881e86b1f3eb53e9299\n"
    },
    {
      "commit": "efa0ed4866fc7b67652a52c1c29142542be55049",
      "tree": "1fea1aa9928dc0ef30abc31f1c7eadca43da2ead",
      "parents": [
        "f9f0beec8492e05a459bd7080ad095b4cf9292bc"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jun 13 12:31:43 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jun 13 18:59:36 2024 +0400"
      },
      "message": "Installer: dynamically generate open port requests\n\nApp config can mark any of the input (int) fields as having a role.\nFor such fields installer first will make port reservation request to\nPort Allocator, which will dynamically allocate and reserve one of the\navailable ports for the application. Once application is committed to\nconfig repository, installer makes another request to port allocator\nto actually open dynamically reserved port in the ingress service.\n\nAdded port reservation logic to Port Allocator. Reservation lasts 30\nminutes.\n\nChange-Id: Ic8caa0d04459b1a6e8a351e2ca6964ac15c7253d\n"
    },
    {
      "commit": "f9f0beec8492e05a459bd7080ad095b4cf9292bc",
      "tree": "61f8cb3afbd01bdecaf04d3d2005f31c09adc914",
      "parents": [
        "56bcf2524a384c66ffe99d5172054c12e51c2ee1"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jun 11 20:10:05 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jun 13 13:57:38 2024 +0400"
      },
      "message": "AppManager: improve installation status page\n\n* Status is refreshed in the background\n* Render release item infos instead of internal names\n\nChange-Id: I63a6082656e4e6772a4b5c734c5dd5c23141f70b\n"
    },
    {
      "commit": "f88434168174a99f76853e509877475c7ffde893",
      "tree": "2fc1c2a35444462db55f09c3570bd22ec5b5c482",
      "parents": [
        "6ec78549d803828a27b62878dfc40567913db195"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 22 16:38:05 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jun 12 16:41:40 2024 +0400"
      },
      "message": "AppManager: cache helm charts and container images to local registry\n\nCaching container images is disabled until we figure out how to run\ncontainer registry behind TLS.\n\nChange-Id: I0253f2a862e5adddff18a82b102f67258151c070\n"
    },
    {
      "commit": "0eaf271490f399be8591a522ebfceee80d41003f",
      "tree": "c1688dbde8537313a845ce8f8533e12474ed2067",
      "parents": [
        "d9c398e445a5eff15e89929dbb111b64eaf8244b"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v0.dodo.cloud",
        "time": "Sun Apr 14 13:08:46 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jun 06 13:59:18 2024 +0400"
      },
      "message": "Dodo APP: infrastructure to deploy app by pusing to Git repo\n\nChange-Id: I4034c6893255581b014ddb207c844261cb34202b\n"
    },
    {
      "commit": "4e3e9982097a9b8fb08cd20b0d5257b6cc48ff66",
      "tree": "879308d94fd874ad05373ba30c2f2ee612127bc8",
      "parents": [
        "1a20cbd1ae368709a4e79db328c5f442f59516ad"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 20 13:09:45 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 29 13:14:32 2024 +0400"
      },
      "message": "SoftServe: improve help documentation\n\nChange-Id: I6a1273b818850f4729be58f7560f6a0490e5340f\n"
    },
    {
      "commit": "1a20cbd1ae368709a4e79db328c5f442f59516ad",
      "tree": "ee6d24f0fe18116d13ebb4c70907a1d6ceb72178",
      "parents": [
        "1591fa75daa568ff87fb7d4f82a2ed744019ab4a"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun May 26 16:32:41 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun May 26 16:32:41 2024 +0400"
      },
      "message": "Headscale: fix headscale URL\n\nChange-Id: Ie714cea8ec9c4091f0ba806e8dcba7b191df9a66\n"
    },
    {
      "commit": "18d5c689281452f2c9032422c2844b4a9e7cfc5a",
      "tree": "9ae3bc224b80ed057a5bb94307b7eb04c24a6391",
      "parents": [
        "ff2a29a86863902564baa28eb497df2cd6491927"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 02 10:30:57 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu May 02 12:49:43 2024 +0400"
      },
      "message": "Open up for super early adopters.\n\nChange-Id: I1009d2b3d276bad93c1f017cda23ae062fe88860\n"
    },
    {
      "commit": "ff2a29a86863902564baa28eb497df2cd6491927",
      "tree": "c2b770f0ef6f680d80652f07f7dee1d84b7d9a09",
      "parents": [
        "c23530e378a525feddf0075a41889c151fae5f62"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 01 17:06:42 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 01 17:52:26 2024 +0400"
      },
      "message": "Soft-Serve: ingress with port-forward\n\nChange-Id: I44dcef24276a86902ad5fa7df2de24cc813b37a9\n"
    },
    {
      "commit": "d809aa7ba6de31ba0df35c89ed0d9ffd992705e2",
      "tree": "8a066ceddeabd5b7fe60691d31333f525077eb7d",
      "parents": [
        "09a3e5b6179f524963b2786d4c7f2fc6f50e2b6f"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Apr 26 14:11:06 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Apr 30 18:33:08 2024 +0400"
      },
      "message": "Env: gerrit and launcher icons\n\nChange-Id: Ia91b48f4745944f2e5ba61f04c4296ba3c1e3292\n"
    },
    {
      "commit": "09a3e5b6179f524963b2786d4c7f2fc6f50e2b6f",
      "tree": "a5c430a494dc70d6da128827ed1c79294242ccfc",
      "parents": [
        "778577fa26e41103dcc4ad9775a017728094af39"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Apr 26 14:11:06 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Apr 30 18:13:39 2024 +0400"
      },
      "message": "Env: configure urls and help documents\n\nChange-Id: I9522e074575e0c1e67735462ac4cc266ab1ebb8c\n"
    },
    {
      "commit": "44f621bf542469bae8b1888765a0e5e95b4b4459",
      "tree": "e8bae41e2b6b7b8b9d18b2255cc20a85db61c5c0",
      "parents": [
        "e72b54f819a38afc6656b99010370d6f3d51c38e"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Apr 29 09:44:38 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Apr 30 16:19:37 2024 +0400"
      },
      "message": "AppManager: clean up UI\n\nChange-Id: I8119ea81c80ff6165f4217dfdf9837e776703fc0\n"
    },
    {
      "commit": "e72b54f819a38afc6656b99010370d6f3d51c38e",
      "tree": "3da4dec10618aca7403f423005ba31ed8c3fae04",
      "parents": [
        "56f86a481e4ac0be5548c8337ea85c1af0561462"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Apr 22 10:44:41 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Apr 30 16:15:43 2024 +0400"
      },
      "message": "DNS: run separate CoreDNS instance for each PCloud env.\n\nPreviously shared CoreDNS instance was used to handle all domains. This has multiple downsides, most important which is security. For example DNS-Sec keys of all domains were persisted on the same shared volume. Also key itself was generated by PCloud env-manager as part of bootstrapping new env. Which is counter to the main aspirations of PCloud, that environment internal private data must not leak outside of the environment.\n\nWith new approach implemented in this change, environment starts up it’s own CoreDNS and DNS record manager servers. Manager generates dns-sec keys internally and only exposes public information to the outside world. PCloud infrastructure runes another instance of CoreDNS which acts as a proxy service forwarding requests to individual environments based an requested domain.\n\nThis simplifies DNS based TLS challenge solvers, as private certificate issuer of each env will point directly to the DNS record manager of the same environment.\n\nChange-Id: Ifb0f36d2a133e3b53da22030cc7d6b9099136b3d\n"
    },
    {
      "commit": "56f86a481e4ac0be5548c8337ea85c1af0561462",
      "tree": "ef0c0dc4fa769504e723e7a9ac088cbf35e353e6",
      "parents": [
        "207ce086a9a3600969d74727e2292d8363b9d50c"
      ],
      "author": {
        "name": "Davit Tabidze",
        "email": "davidtabidzef1@gmail.com",
        "time": "Tue Apr 09 19:15:25 2024 +0400"
      },
      "committer": {
        "name": "Davit Tabidze",
        "email": "davidtabidzef1@gmail.com",
        "time": "Tue Apr 30 16:06:33 2024 +0400"
      },
      "message": "Launcher: take app information from AppManager\n\nChange-Id: I0dedd5a710adc4810feb9210b903655a3d2f5533\n"
    },
    {
      "commit": "207ce086a9a3600969d74727e2292d8363b9d50c",
      "tree": "00b3c843dd6d11bb00a6950fabc7bd09303fb0e4",
      "parents": [
        "c916187ddccbe0ae65e62b0474f84b1b7395b939"
      ],
      "author": {
        "name": "Davit Tabidze",
        "email": "davidtabidzef1@gmail.com",
        "time": "Tue Apr 09 19:15:25 2024 +0400"
      },
      "committer": {
        "name": "Davit Tabidze",
        "email": "davidtabidzef1@gmail.com",
        "time": "Wed Apr 24 13:20:26 2024 +0400"
      },
      "message": "launcher: application launcher\n\nChange-Id: I81d49a0651702dc821d683d6a4b3bbff6af3c753\n"
    },
    {
      "commit": "c916187ddccbe0ae65e62b0474f84b1b7395b939",
      "tree": "0d0c810134a46ff1ca5cdb0f7346e805e2da6b76",
      "parents": [
        "1de49585e44866e0cc4c4f1bbd9edf34965c0ec1"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Apr 21 10:46:35 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Apr 21 12:06:32 2024 +0400"
      },
      "message": "OpenProject: Helm chart and application config\n\nChange-Id: Ic3e963e72ed4fd7f3d8550feb55ed468dc561884\n"
    },
    {
      "commit": "1de49585e44866e0cc4c4f1bbd9edf34965c0ec1",
      "tree": "3343d5c2c40e91483af0c26cedb715de9f52a5d0",
      "parents": [
        "308105eedb9edefe37b40341f9ba02705a5c60b5"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Apr 21 08:33:57 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Apr 21 08:52:38 2024 +0400"
      },
      "message": "Ingress: Introduce explicit ingress field in app configs\n\nChange-Id: I79186f851b6a046b39b1045577e906f19c7be309\n"
    },
    {
      "commit": "db274d18bded70f68a886f4943fcc47dd54e22d5",
      "tree": "0fc01ff5833969727404310e00fcffb50081cd11",
      "parents": [
        "3cdee59de09438ef564aec0eb4975b51bedc24b0"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Apr 19 11:53:18 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Apr 19 19:44:51 2024 +0400"
      },
      "message": "Ingress: clear X-Frame-Options header from responses.\n\nThis enables applications to be loaded in iframes. Although it does\nsacrifice security a bit.\n\nhttps: //developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options\nChange-Id: Ibb5568b5461bbe001106724a0cf64ec25e7fd4ce\n"
    },
    {
      "commit": "3cdee59de09438ef564aec0eb4975b51bedc24b0",
      "tree": "25bba11f220a1b87aab5dc6c02fe6d3f33f22fa9",
      "parents": [
        "3af43943f99b7a05b1c597c99aa0a3a999e839ec"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v0.dodo.cloud",
        "time": "Wed Apr 17 10:15:56 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Apr 19 19:36:07 2024 +0400"
      },
      "message": "Installer: Separate infrastructure and environment apps.\n\nHave two separate application managers, one for installing apps on the\ndodo infra, and nother installing on individual environments.\n\nChange-Id: I1b24f008e30c5533c48c22ea92328bc4bb7abc54\n"
    },
    {
      "commit": "3af43943f99b7a05b1c597c99aa0a3a999e839ec",
      "tree": "21e8559e36b37f92760eaf13b1a430010e605d2b",
      "parents": [
        "ef01fbb46843e198939f9d844110f7fb6c250015"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v0.dodo.cloud",
        "time": "Tue Apr 16 08:13:50 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Apr 18 17:52:43 2024 +0400"
      },
      "message": "Installer: Clean up RepoIO interface\n\nChange-Id: If80d7be1460c725b7df9d1d27c9354cb9141acfe\n"
    },
    {
      "commit": "4a9d83d0879fb97b0edaa6af5f84ea5d22168d3e",
      "tree": "b7f635f816dbbb7c893c42eae6ab2097d55b8a5d",
      "parents": [
        "eb8345cf25b1659a7d83b42d6fc0fe820032db24"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v0.dodo.cloud",
        "time": "Sun Apr 14 13:14:40 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v0.dodo.cloud",
        "time": "Mon Apr 15 08:53:12 2024 +0000"
      },
      "message": "zot: helm chart and app cue configuration\n\nZot OCI registry: https://zotregistry.dev/\n\nChange-Id: I40ec7383cdc6450613deae862d92d25cc647c892\n"
    },
    {
      "commit": "eb8345cf25b1659a7d83b42d6fc0fe820032db24",
      "tree": "e5250f1bcd5d9aefa0ea6bf593796b311f4c4f45",
      "parents": [
        "e5b1657c7220673ae9284421740c6e038fc4f050"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v0.dodo.cloud",
        "time": "Fri Apr 12 16:58:49 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v0.dodo.cloud",
        "time": "Mon Apr 15 08:13:29 2024 +0000"
      },
      "message": "gerrit: add more default plugins to improve user experience\n\nPlugins added: singleusergroup, codemirror-editor, reviewnotes\n\nChange-Id: I33c5e61b777143334a87ec3b65e81962b79d2dc9\n"
    },
    {
      "commit": "a1a6506bc85255fd1c91809e0fb8b5ee1856fc4d",
      "tree": "bacc2551b1a8971e793f258d59d9815cc074a80f",
      "parents": [
        "35982660303868b6f48ace10d553b8b98f0c52b2"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v0.dodo.cloud",
        "time": "Sat Apr 13 09:20:44 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v0.dodo.cloud",
        "time": "Sat Apr 13 09:20:44 2024 +0400"
      },
      "message": "matrix: bump synapse version from v1.98.0 to v1.104.0\n\nChange-Id: Ib94a0461be46e2327f60b059329bf2fb8c6f9f10\n"
    },
    {
      "commit": "35982660303868b6f48ace10d553b8b98f0c52b2",
      "tree": "931cb9e607e23f6e6d8157869896b8f30a6d794a",
      "parents": [
        "bbc6fad85be02f2473955929e15f1c287d8e8b2c"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Fri Apr 05 13:05:40 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v0.dodo.cloud",
        "time": "Fri Apr 12 13:51:46 2024 +0000"
      },
      "message": "jenkins: helm chart and cue configuration\n\nChange-Id: I3398b0fab8af43c4a138112a258263153d3ab473\n"
    },
    {
      "commit": "ef7f8334aae2639c186808b1872795dc98f1b501",
      "tree": "48bbafb392dbe9e3a84fc340e458f4f7633350c5",
      "parents": [
        "b59b7c21e16cdbc0989787c075f1055a295e8235"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Mon Apr 08 19:46:54 2024 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Wed Apr 10 13:39:44 2024 +0400"
      },
      "message": "gerrit: use pcloud oauth provider instead of auth-proxy\n\nChange-Id: I555a05ca00c90e84d3c82f31ccd53a220feff344\n"
    },
    {
      "commit": "b59b7c21e16cdbc0989787c075f1055a295e8235",
      "tree": "1a5553a752dfece34e5fc2f9f3fe6701bef08e73",
      "parents": [
        "c0d2bf569807c5551c98ecc08f4602c17af73ae2"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Wed Apr 03 22:17:50 2024 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Mon Apr 08 20:28:51 2024 +0400"
      },
      "message": "port-allocator: allocates ports on preconfigured ingress-nginx\n\nReplacement of /core/installer/tcp-udp-transport\n\nChange-Id: I3d116b0f4508b462398f69e980ad55771dc88b7c\n"
    },
    {
      "commit": "e9c05499ec80f74658f378d377b68603cf77a9d5",
      "tree": "75fa879127feae808174df3cbac8f42dc06a6ce5",
      "parents": [
        "b6a5806f163b36847c41619339693b2f46e75847"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Wed Apr 03 15:14:18 2024 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Wed Apr 03 15:14:18 2024 +0400"
      },
      "message": "gerrit: enable download-commands plugin\n\nChange-Id: I191eceff5813f09fce9b150f6a93807fce4ea95e\n"
    },
    {
      "commit": "b6a5806f163b36847c41619339693b2f46e75847",
      "tree": "82c03e2359c3c88f69567213aebd77e86a52fa9e",
      "parents": [
        "ee15ee2ff85bd1ac46d9c199f18ce25dd2086b2e"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Tue Apr 02 16:49:19 2024 +0400"
      },
      "committer": {
        "name": "\u0027gio",
        "email": "\u0027gio@v0.dodo.cloud\u0027",
        "time": "Wed Apr 03 05:56:55 2024 +0000"
      },
      "message": "gerrit: auto configure ssh keys\n\nChange-Id: I9c3091e4bb998fa6c846c3c60c2801c7daa45bcf\n"
    },
    {
      "commit": "ee15ee2ff85bd1ac46d9c199f18ce25dd2086b2e",
      "tree": "0da2d7647d8151407a8129bd724570a3ac05d38f",
      "parents": [
        "4b44ff4f5973c14e74e3852f752341bbf6ce71bd"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Thu Mar 28 12:35:10 2024 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Tue Apr 02 16:26:38 2024 +0400"
      },
      "message": "gerrit: charts and app configuration\n\nChange-Id: If4f05f749719d6ba0e2ced8da563699bc6fbc4c0\n"
    },
    {
      "commit": "13da8ff2f198880745bf185dabc430b67063ea35",
      "tree": "56964586e719a79cdfa9075f9a84d5453fd5631d",
      "parents": [
        "9fe49184b20ae766397260e9cd2f5b60f717d716"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "giolekva@gmail.com",
        "time": "Tue Mar 26 12:12:24 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 26 12:12:24 2024 +0400"
      },
      "message": "ingress: force ssl for both private and public ingresses (#124)\n\nCo-authored-by: Giorgi Lekveishvili \u003clekva@gl-mbp-m1-max.local\u003e"
    },
    {
      "commit": "3c91e8b6b312ae2faaf37e3bd3d0667979d4cb3a",
      "tree": "90bb44b5ce91737e6b6b89b203837da4f7974237",
      "parents": [
        "329af57afc69ffec3f292ef7bc87b3e68da97931"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "giolekva@gmail.com",
        "time": "Mon Mar 25 20:20:14 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 25 20:20:14 2024 +0400"
      },
      "message": "appmanager: behind auth-proxy (#119)\n\ncloses #117"
    },
    {
      "commit": "329af57afc69ffec3f292ef7bc87b3e68da97931",
      "tree": "9d59d7accb3eff582c5b0d3f8574a9fe01be03e9",
      "parents": [
        "908bb851e18b122c07664f950f5d25d6be8ec905"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "giolekva@gmail.com",
        "time": "Mon Mar 25 20:14:41 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 25 20:14:41 2024 +0400"
      },
      "message": "memberships: run api service on a different port from ui (#118)\n\n* memberships: run api service on different port\r\n\r\n* memberships: add api service to chart\r\n\r\n* installer: use membership api endpoint instead\r\n\r\n---------\r\n\r\nCo-authored-by: Giorgi Lekveishvili \u003clekva@gl-mbp-m1-max.local\u003e"
    },
    {
      "commit": "d542b734b96290e10786e3936af01b7e379b3814",
      "tree": "7bcd7b68cff4005bcf29d795ebe3bab8502cf82d",
      "parents": [
        "942c76164eae4f82ea9cfcbe363fa57966c56331"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "giolekva@gmail.com",
        "time": "Mon Mar 25 18:17:39 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 25 18:17:39 2024 +0400"
      },
      "message": "welcome: init group memberships for first create (#115)\n\n* rename createAdminAccount to createAccount\r\n\r\n* welcome: call memberships init on first user\r\n\r\n* auth: add http endpoints to allowed return addresses\r\n\r\n* memberships: make init user member of groups as well\r\n\r\n---------\r\n\r\nCo-authored-by: Giorgi Lekveishvili \u003clekva@gl-mbp-m1-max.local\u003e"
    },
    {
      "commit": "6738396b324f0e3a7aaccf02ef8b7520c00ad5f8",
      "tree": "1c995e0cc7238536e066969dcf58adf358546c50",
      "parents": [
        "c0b4d8fbf6a6aecd60a5f320d2e3389b73c5759c"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "giolekva@gmail.com",
        "time": "Fri Mar 22 19:27:34 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 22 19:27:34 2024 +0400"
      },
      "message": "auth-proxy: reusable ingress with auth proxy object for cue configs (#113)\n\naffects: #110\r\n\r\nCreates reusable auth proxy object in base cue config, and migrates rpuppy, url-shortener, pihole and memberships app to it.\r\n\r\nMemberships app always requires authentication.\r\nurl-shortener now supports non-auth based interactions."
    },
    {
      "commit": "a09fad74443c2313bfc97f61f7b2a83c82423aef",
      "tree": "af5f1db30a2ab4d18180b3e97d52926cc5dac51e",
      "parents": [
        "618e243b36c6518a97e1d3a8ce9a6d69a5eaffad"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "giolekva@gmail.com",
        "time": "Thu Mar 21 15:24:35 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 21 15:24:35 2024 +0400"
      },
      "message": "auth-proxy: verify group membership (#105)\n\n* auth-proxy: verify group membership\r\n\r\n* memberships: install memberships app and use it in few apps\r\n\r\n* app-repo: render auth\r\n\r\n* installer: always use external dependencies option in app configs\r\n\r\n* installer: fix auth handling\r\n\r\n* auth-proxy: configure membership-addr and groups flags in helm chart\r\n\r\n* installer: fix indentation\r\n\r\n* app-manager: fix how auth block is rendered\r\n\r\n---------\r\n\r\nCo-authored-by: Giorgi Lekveishvili \u003clekva@gl-mbp-m1-max.local\u003e"
    },
    {
      "commit": "618e243b36c6518a97e1d3a8ce9a6d69a5eaffad",
      "tree": "df50d1e61ca43394900091b54cfbbebec028086a",
      "parents": [
        "0ba5e4081640155aa4a356fa279c6d6bb9e55d90"
      ],
      "author": {
        "name": "DTabidze",
        "email": "130773020+DTabidze@users.noreply.github.com",
        "time": "Wed Mar 20 21:07:52 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 20 21:07:52 2024 +0400"
      },
      "message": "auth: memberships behind the auth-proxy (#106)\n\n* auth proxy ingress added\r\n\r\n* removed ingress from install\r\n\r\n* port \u003e portName"
    },
    {
      "commit": "0ba5e4081640155aa4a356fa279c6d6bb9e55d90",
      "tree": "64cf73da6abcdf295404a76f7172151cd1a11c1b",
      "parents": [
        "d7744a6874c4eceeabf5011a18e68430725eed4d"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "giolekva@gmail.com",
        "time": "Wed Mar 20 15:56:30 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 20 15:56:30 2024 +0400"
      },
      "message": "auth-proxy: proxies only authenticated requests to upstream, redirects to login page otherwise (#103)\n\n* auth-proxy: inspects authenticated user\r\n\r\n* ingress: chart and use in rpuppy\r\n\r\n* auth-proxy: make it optional in rpuppy\r\n\r\n* kratos: whitelist env pub/priv domains for auth return_to addr\r\n\r\n* url-shortener: put behind auth-proxy\r\n\r\n* pihole: replace oauth2-client with auth-proxy\r\n\r\n* auth-proxy: fix upstream uri generation\r\n\r\n* pihole: remove old chart using oauth2\r\n\r\n* auth-proxy: remove temporary values file\r\n\r\n* url-shortener: check x-user header for authentication\r\n\r\n* auth: fix allowed_return_urls list\r\n\r\n* auth-proxy: fix current address generation logic\r\n\r\n---------\r\n\r\nCo-authored-by: Giorgi Lekveishvili \u003clekva@gl-mbp-m1-max.local\u003e"
    },
    {
      "commit": "0d8025964db3ecfd9963aa7049597f58de003eb5",
      "tree": "130d0816588baebc661eadc279ef8e7e2f8048a8",
      "parents": [
        "c724578ebc273c12bae1dc0b391a2d878be0ef93"
      ],
      "author": {
        "name": "DTabidze",
        "email": "130773020+DTabidze@users.noreply.github.com",
        "time": "Tue Mar 19 17:42:45 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 19 17:42:45 2024 +0400"
      },
      "message": "auth: groups and memberships (#97)\n\n* group membership unpolished\r\n\r\n* fixed index.html\r\n\r\n* fixed undefined variable errors\r\n\r\n* Implemented adding a user to a group.\r\n\r\n* fixed variable names, moved permission check into handler, separated fanctionality for adding ownership or membership for user\r\n\r\n* minor changes: Gave variables consistent names\r\n\r\n* separated tables for owners and members. some clean code fixes. added group description into group page.\r\n\r\n* added to creat child group. minor fixes\r\n\r\n* added yaml files\r\n\r\n* added cue file\r\n\r\n* moved groupOwnership check separatly. redo conditionals into oneline. separated status string check.\r\n\r\n* added mempership into app.go infraAppConfigs\r\n\r\n* changed svg icon. fixed indentation\r\n\r\n* svg icon fix\r\n\r\n* added  transaction\r\n\r\n* minor owner add fix\r\n\r\n* added multiple db rollbacks\r\n\r\n---------\r\n\r\nCo-authored-by: Giorgi Lekveishvili \u003clekva@gl-mbp-m1-max.local\u003e"
    }
  ],
  "next": "925f0deb100ab516297348798a01a5f55db76c1a"
}
