)]}'
{
  "log": [
    {
      "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": "56bcf2524a384c66ffe99d5172054c12e51c2ee1",
      "tree": "26429585a0a3eb824feb08f0a3409b4621de303a",
      "parents": [
        "f88434168174a99f76853e509877475c7ffde893"
      ],
      "author": {
        "name": "Davit Tabidze",
        "email": "davidtabidzef1@gmail.com",
        "time": "Wed Jun 12 19:00:45 2024 +0400"
      },
      "committer": {
        "name": "Davit Tabidze",
        "email": "davidtabidzef1@gmail.com",
        "time": "Thu Jun 13 13:27:43 2024 +0400"
      },
      "message": "AppManager: Fix instance menu scrollbar occurrence during installation\n\nChange-Id: I1c34fd202694d02fb57c438202624b3415bc52eb\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": "6ec78549d803828a27b62878dfc40567913db195",
      "tree": "523d7acf7492ce5d41bb8ff65ea74f5a419dddcc",
      "parents": [
        "00077272977bee6d24c1dcedeebc19ebde23b6af"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jun 12 11:21:18 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jun 12 11:21:18 2024 +0400"
      },
      "message": "HeadscaleAPI: replace Echo server with Gorilla Mux\n\nChange-Id: Ie1109cb0a981844c91dd0948592dccf0090c1961\n"
    },
    {
      "commit": "00077272977bee6d24c1dcedeebc19ebde23b6af",
      "tree": "5c290bf986edbe097a87a87ca3d40304633d10a0",
      "parents": [
        "563b6ad8b349c38fc53ed3d954a2352a2d80118c"
      ],
      "author": {
        "name": "Davit Tabidze",
        "email": "davidtabidzef1@gmail.com",
        "time": "Tue Jun 11 20:19:36 2024 +0400"
      },
      "committer": {
        "name": "Davit Tabidze",
        "email": "davidtabidzef1@gmail.com",
        "time": "Tue Jun 11 23:25:58 2024 +0400"
      },
      "message": "Launcher: Separate iFrame for each app, toggle invisibility between clicks\n\nChange-Id: I540c04ea9f67c27624d69664a3b5a3057734268f\n"
    },
    {
      "commit": "563b6ad8b349c38fc53ed3d954a2352a2d80118c",
      "tree": "2c402069698c85b35ed33b9efb4cefa6c8cefc91",
      "parents": [
        "ab352addbe5f4657110e79066f8471bf6682de8c"
      ],
      "author": {
        "name": "Davit Tabidze",
        "email": "davidtabidzef1@gmail.com",
        "time": "Tue Jun 11 13:38:56 2024 +0400"
      },
      "committer": {
        "name": "Davit Tabidze",
        "email": "davidtabidzef1@gmail.com",
        "time": "Tue Jun 11 17:19:42 2024 +0400"
      },
      "message": "Launcher: Shorten long url inside app instance tooltip\n\nChange-Id: If80b8a4a519745101056e34c3535543a6c8a78d2\n"
    },
    {
      "commit": "ab352addbe5f4657110e79066f8471bf6682de8c",
      "tree": "fd36fcf2895c881af4b55cf30b748cdae2abc4a7",
      "parents": [
        "09f8efa82798bd93041e029612bbb223f474ad22",
        "7304dab99f6bc262a1b77b73401f782fe3134ea3"
      ],
      "author": {
        "name": "dtabidze",
        "email": "dtabidze@v1.dodo.cloud",
        "time": "Tue Jun 11 09:05:36 2024 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "gerrit@v1.dodo.cloud",
        "time": "Tue Jun 11 09:05:36 2024 +0000"
      },
      "message": "Merge \"Launcher: Added logout url\" into main"
    },
    {
      "commit": "7304dab99f6bc262a1b77b73401f782fe3134ea3",
      "tree": "bec4c100e7185318cde1df64aacec71e79971119",
      "parents": [
        "e25ce1c3c72fc5a8f319d54bb0edcf3e2326e912"
      ],
      "author": {
        "name": "Davit Tabidze",
        "email": "davidtabidzef1@gmail.com",
        "time": "Mon Jun 10 21:34:00 2024 +0400"
      },
      "committer": {
        "name": "dtabidze",
        "email": "dtabidze@v1.dodo.cloud",
        "time": "Mon Jun 10 19:10:46 2024 +0000"
      },
      "message": "Launcher: Added logout url\n\nChange-Id: I321d8e7feb7054b369bee0210200c77dc24fbe08\n"
    },
    {
      "commit": "09f8efa82798bd93041e029612bbb223f474ad22",
      "tree": "58a0316a961d7ca3ee65d9acd865ef884dfd4746",
      "parents": [
        "aa0fcdb54e7ff372899e6234405505abe6da96b7"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jun 10 22:35:24 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jun 10 22:35:52 2024 +0400"
      },
      "message": "Installer: Add Cache-Control header to static assets\n\nThis fixes UX where Launcher iframe blanks when navigating in the app\n\nChange-Id: I2966ef383c77d2986b6892f3828581b7785e90b0\n"
    },
    {
      "commit": "aa0fcdb54e7ff372899e6234405505abe6da96b7",
      "tree": "59b3e3cf279d9d938fd9b7ae5e3eaf85f7307696",
      "parents": [
        "e25ce1c3c72fc5a8f319d54bb0edcf3e2326e912"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jun 10 22:19:25 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jun 10 22:19:25 2024 +0400"
      },
      "message": "AppManager: replace Echo server with Gorilla Mux\n\nChange-Id: I4f238b18d87e767f63930aae1ff13e0ee7937466\n"
    },
    {
      "commit": "e25ce1c3c72fc5a8f319d54bb0edcf3e2326e912",
      "tree": "ce2b7d867928d51d28887249eb220ce7c8380861",
      "parents": [
        "014c6962ad35d03b6bdc5b9e60a05e358e22dedb"
      ],
      "author": {
        "name": "Davit Tabidze",
        "email": "davidtabidzef1@gmail.com",
        "time": "Mon Jun 10 14:36:21 2024 +0400"
      },
      "committer": {
        "name": "Davit Tabidze",
        "email": "davidtabidzef1@gmail.com",
        "time": "Mon Jun 10 20:59:48 2024 +0400"
      },
      "message": "Appmanager: instance tooltip\n\nChange-Id: I86084b24e1c839e8a87f178764409bd91deb216c\n"
    },
    {
      "commit": "014c6962ad35d03b6bdc5b9e60a05e358e22dedb",
      "tree": "462409f4c4cb4fd87c7b7b835c3f582a27f32be7",
      "parents": [
        "3ec24cf660ee0d441d2680b6b8f6cf6d0db721db"
      ],
      "author": {
        "name": "Davit Tabidze",
        "email": "davidtabidzef1@gmail.com",
        "time": "Fri Jun 07 18:37:04 2024 +0400"
      },
      "committer": {
        "name": "Davit Tabidze",
        "email": "davidtabidzef1@gmail.com",
        "time": "Mon Jun 10 14:33:18 2024 +0400"
      },
      "message": "Appmanager: menu scrolling fix\n\nChange-Id: I62762dd1bfb4a9be6eec0279e6e18d04990fb4ec\n"
    },
    {
      "commit": "3ec24cf660ee0d441d2680b6b8f6cf6d0db721db",
      "tree": "9147ec1a50c67459d0615fd4c4fbeebb38629b9a",
      "parents": [
        "0eaf271490f399be8591a522ebfceee80d41003f"
      ],
      "author": {
        "name": "Davit Tabidze",
        "email": "davidtabidzef1@gmail.com",
        "time": "Wed May 22 14:06:02 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jun 07 15:24:17 2024 +0400"
      },
      "message": "Appmanager: Rework of UI\n\nChange-Id: I044373c38c167cb5931aa801af00ce4afea201ef\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": "d9c398e445a5eff15e89929dbb111b64eaf8244b",
      "tree": "4996fd473c5631bee0c70de97495c19e94570458",
      "parents": [
        "dc98688660adbf7ee47728a467f83c5f40a488e8"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jun 06 13:33:03 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jun 06 13:59:06 2024 +0400"
      },
      "message": "EnvManager: fix race condition in test\n\nRefactor EnvManager so it takes TaskManager as an input.\nThis way clients can interject created tasks and install listeners.\n\nChange-Id: Ief332060aea9e98587b43d04d68a4640717d18cd\n"
    },
    {
      "commit": "dc98688660adbf7ee47728a467f83c5f40a488e8",
      "tree": "e4ecc23a5b7cf9d00b0e5316a710468b5f52e1fe",
      "parents": [
        "d4affa00ef463294eae410e6a50fd54e9fc70c6f"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jun 05 17:10:39 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jun 05 17:10:39 2024 +0400"
      },
      "message": "Launcher: fix issue with help modal close button not working\n\nChange-Id: I695b7116df42156a48825880ad50314490cc4d9a\n"
    },
    {
      "commit": "d4affa00ef463294eae410e6a50fd54e9fc70c6f",
      "tree": "1e8c5a11e69ef539d09c558d69fdbb9310c052d1",
      "parents": [
        "4e3e9982097a9b8fb08cd20b0d5257b6cc48ff66"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jun 04 18:29:33 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jun 04 18:29:33 2024 +0400"
      },
      "message": "Launcher: distinguish dock icons by their instance ids\n\nChange-Id: Ie11930082454b44292ddb904fa08350d16f4ac05\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": "1591fa75daa568ff87fb7d4f82a2ed744019ab4a",
      "tree": "7673eb96208c4a05e9684f353f99bdf1b482c09b",
      "parents": [
        "96718469e90b5c234778bb41d36c3fbfeb4abe4a"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 24 18:01:58 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri May 24 18:01:58 2024 +0400"
      },
      "message": "EnvManager: auto refresh status page despite errors\n\nChange-Id: I2f148d6152a58176ad84e8d1a941e15460fcbdaa\n"
    },
    {
      "commit": "96718469e90b5c234778bb41d36c3fbfeb4abe4a",
      "tree": "d80216ab470315e9e8e7913e3845bea353b909ea",
      "parents": [
        "90606b60dcd9189fd9b1eb476396c2b40606c096"
      ],
      "author": {
        "name": "Davit Tabidze",
        "email": "davidtabidzef1@gmail.com",
        "time": "Wed May 22 14:06:02 2024 +0400"
      },
      "committer": {
        "name": "Davit Tabidze",
        "email": "davidtabidzef1@gmail.com",
        "time": "Wed May 22 14:45:09 2024 +0400"
      },
      "message": "Launcher: groupe same app instances. added url inside tooltip.\n\nChange-Id: Ib2f6ed3507ceae4c85aad024e62cab4bd460ee25\n"
    },
    {
      "commit": "90606b60dcd9189fd9b1eb476396c2b40606c096",
      "tree": "de8cc0293c05e43337eeec0cbc1fcfa26f2e19be",
      "parents": [
        "cf6c714933f80ef878e133ddfd9a383e63605c04"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 21 14:45:51 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 21 14:45:51 2024 +0400"
      },
      "message": "Launcher: only render Help button when help documents actually exist\n\nChange-Id: If288e8bf40425d421a43ee4dd0e84136e44ddf9a\n"
    },
    {
      "commit": "cf6c714933f80ef878e133ddfd9a383e63605c04",
      "tree": "bb512d852e8495506b2982e1904ae958d55bfedc",
      "parents": [
        "92d8686d55508d86a7bed162109f27bcb1b995f5"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 21 13:26:42 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 21 13:26:42 2024 +0400"
      },
      "message": "Launcher: open help modal when clicking on app icon without url\n\nChange-Id: Iaa4ccbc60652fd2046173244a80c3f98ba49019c\n"
    },
    {
      "commit": "92d8686d55508d86a7bed162109f27bcb1b995f5",
      "tree": "4812c946be5e5ab0b6787a2d83b33d07ee1769aa",
      "parents": [
        "106b0245068e2f63604b9b8571bcf9dd50a2dc37"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 21 12:51:31 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 21 12:51:31 2024 +0400"
      },
      "message": "Launcher: close help modal on Escape and click outside of modal\n\nChange-Id: I0a260d7f184e8826e25aee753eb06d5ee861e47d\n"
    },
    {
      "commit": "106b0245068e2f63604b9b8571bcf9dd50a2dc37",
      "tree": "fe1284e73d55ea07be067370de31e56df2cce69e",
      "parents": [
        "be7b72405ad68b899449e43a084649496e888583"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 21 12:17:03 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue May 21 12:17:03 2024 +0400"
      },
      "message": "Launcher: style help content menu\n\nChange-Id: I5bd5d6f7663cc2a3f47a0329428f00f6343b597c\n"
    },
    {
      "commit": "be7b72405ad68b899449e43a084649496e888583",
      "tree": "52df1995c0d4431de25a06da2a663c814db3a9a2",
      "parents": [
        "18d5c689281452f2c9032422c2844b4a9e7cfc5a"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 20 18:13:55 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon May 20 18:13:55 2024 +0400"
      },
      "message": "launcher: automatically display first help document\n\nChange-Id: I0f887d5b9303876f6fbab4c96e935dbd58ff5936\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": "c23530e378a525feddf0075a41889c151fae5f62",
      "tree": "05ac367df0b90d499db3e116e1734ab5f9b3fc6e",
      "parents": [
        "d809aa7ba6de31ba0df35c89ed0d9ffd992705e2"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 01 11:06:09 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed May 01 11:06:09 2024 +0400"
      },
      "message": "Launcher: Render help document contents using Markdown\n\nChange-Id: I580c56bff201cd508efd52ba75eed28a8869f9b1\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": "778577fa26e41103dcc4ad9775a017728094af39",
      "tree": "a44d948d038b539f15fea77c47563fe83b40a11a",
      "parents": [
        "44f621bf542469bae8b1888765a0e5e95b4b4459"
      ],
      "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:24:51 2024 +0400"
      },
      "message": "AppManager: monitor installed HelmRelease resources\n\nChange-Id: Ia036e7dda8136ad696d8222e799c4d1b6a9018a9\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": "308105eedb9edefe37b40341f9ba02705a5c60b5",
      "tree": "7b718be43454bc9f5c8fc02bc5a9fd1a2f678190",
      "parents": [
        "db274d18bded70f68a886f4943fcc47dd54e22d5"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Apr 19 13:12:13 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Apr 19 20:44:29 2024 +0400"
      },
      "message": "Rewrite: rewrites env config repo and commits application cue files\n\nWe can build upon this tool to implement version to version migration logic.\n\nChange-Id: I6066f565f118ca44ca3ce7a0ac7522258958cf25\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": "ef01fbb46843e198939f9d844110f7fb6c250015",
      "tree": "76fb9adcf6d2526876cf7d1690e952e3e4184a73",
      "parents": [
        "5c44e6c105a0bb441a0494560dc6adebea623114"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v0.dodo.cloud",
        "time": "Fri Apr 12 16:52:59 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v0.dodo.cloud",
        "time": "Mon Apr 15 17:27:27 2024 +0400"
      },
      "message": "app: remove JSON based schema, and each App returns single namespace\n\nChange-Id: I2ced82edd1251edc592f7ae0156d5ea3c81865c2\n"
    },
    {
      "commit": "5c44e6c105a0bb441a0494560dc6adebea623114",
      "tree": "6fb292964d30d3fa1bffc323723fc69d02166c96",
      "parents": [
        "4a9d83d0879fb97b0edaa6af5f84ea5d22168d3e"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v0.dodo.cloud",
        "time": "Fri Apr 12 16:52:59 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v0.dodo.cloud",
        "time": "Mon Apr 15 17:26:46 2024 +0400"
      },
      "message": "app-manager: convert input back to the renderable format\n\nChange-Id: Ibd426a37f153549bcde8c22117390b6f76771286\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": "e5b1657c7220673ae9284421740c6e038fc4f050",
      "tree": "5155dc0510ab7185d2af48d9a36bf1be04d1fa3a",
      "parents": [
        "eabb4a294ef5ff21521ff4259793f14b9cd379bd",
        "a1a6506bc85255fd1c91809e0fb8b5ee1856fc4d"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v0.dodo.cloud",
        "time": "Mon Apr 15 08:12:01 2024 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "gerrit@v0.dodo.cloud",
        "time": "Mon Apr 15 08:12:01 2024 +0000"
      },
      "message": "Merge \"matrix: bump synapse version from v1.98.0 to v1.104.0\" into main"
    },
    {
      "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": "eabb4a294ef5ff21521ff4259793f14b9cd379bd",
      "tree": "37900e92ec4163ffce6a350a13ade8b7c85e7d60",
      "parents": [
        "35982660303868b6f48ace10d553b8b98f0c52b2"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v0.dodo.cloud",
        "time": "Sat Apr 13 09:16:52 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v0.dodo.cloud",
        "time": "Sat Apr 13 09:17:50 2024 +0400"
      },
      "message": "matrix: explicitly define homeserver port in well-known config\n\nMore details can be found at: https://matrix-org.github.io/synapse/latest/delegate.html\n\nChange-Id: I38f0e702398e11b74c89e9305c49a8024eb1df23\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": "bbc6fad85be02f2473955929e15f1c287d8e8b2c",
      "tree": "6076dfb77e82ee0bdf24e88554f6e473b29ec8ef",
      "parents": [
        "1f2c1c52e148ef43fd951593cb749a439bbce2cd"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v0.dodo.cloud",
        "time": "Fri Apr 12 15:53:05 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v0.dodo.cloud",
        "time": "Fri Apr 12 13:48:44 2024 +0000"
      },
      "message": "port-allocator: reserve 22 port for host nodes\n\nOnce public IPs are assigned to only kubernetes process we can open it\nback up again.\n\nChange-Id: If538c7cbf99a14ab3853914715d5c0c8722dfbd4\n"
    },
    {
      "commit": "1f2c1c52e148ef43fd951593cb749a439bbce2cd",
      "tree": "fef7aaa9e192bd3696480a99dd5cc924a25b3343",
      "parents": [
        "a40058c6271d54bfb75a30fd883c3de4fa53c27a"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Fri Apr 12 07:17:58 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v0.dodo.cloud",
        "time": "Fri Apr 12 13:46:22 2024 +0000"
      },
      "message": "auth-ui: auto consent\n\nChange-Id: I466dd8f2fcc7ba4899f02168518899e9f1d60de6\n"
    },
    {
      "commit": "a40058c6271d54bfb75a30fd883c3de4fa53c27a",
      "tree": "51ccef37aebd8116f6775cdfa55be21f44526a4e",
      "parents": [
        "e7f64e7e227e67549e548b46c1e667838868e647"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v0.dodo.cloud",
        "time": "Fri Apr 12 10:20:49 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v0.dodo.cloud",
        "time": "Fri Apr 12 11:21:11 2024 +0400"
      },
      "message": "ci/cd: add jenkinsfile with build and test stages\n\nChange-Id: Iaeb60151883c1368f9a1584047046602c04a2069\n"
    },
    {
      "commit": "e7f64e7e227e67549e548b46c1e667838868e647",
      "tree": "46bb9a63c3999e0d8e100f1af3f89876ac5929a0",
      "parents": [
        "7016d887d1c8cb90e7da3ee75744543f651a32da",
        "ef7f8334aae2639c186808b1872795dc98f1b501"
      ],
      "author": {
        "name": "\u0027gio",
        "email": "\u0027gio@v0.dodo.cloud\u0027",
        "time": "Wed Apr 10 09:41:54 2024 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "gerrit@v0.dodo.cloud",
        "time": "Wed Apr 10 09:41:54 2024 +0000"
      },
      "message": "Merge \"gerrit: use pcloud oauth provider instead of auth-proxy\" into main"
    },
    {
      "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": "7016d887d1c8cb90e7da3ee75744543f651a32da",
      "tree": "a7fa3ed2928fdbbf21fe8846e0e931617535a2cb",
      "parents": [
        "b59b7c21e16cdbc0989787c075f1055a295e8235"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Tue Apr 09 09:06:53 2024 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Tue Apr 09 09:06:53 2024 +0400"
      },
      "message": "auth-ui: redirect user directly to consent page if already logged in\n\nChange-Id: I4ea575acbeb493bf2d4b4aca424043922ea07499\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": "c0d2bf569807c5551c98ecc08f4602c17af73ae2",
      "tree": "89e440d98330e07764c0e427f2614f4eb3f06111",
      "parents": [
        "e9c05499ec80f74658f378d377b68603cf77a9d5"
      ],
      "author": {
        "name": "Davit Tabidze",
        "email": "davidtabidzef1@gmail.com",
        "time": "Wed Apr 03 15:39:33 2024 +0400"
      },
      "committer": {
        "name": "Davit Tabidze",
        "email": "davidtabidzef1@gmail.com",
        "time": "Mon Apr 08 15:48:20 2024 +0400"
      },
      "message": "memberships: owner groups\n\nChange-Id: I7dd4110a288a4f7b59b2d6b755968b5e3a23d30c\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": "4b44ff4f5973c14e74e3852f752341bbf6ce71bd",
      "tree": "950f24cd75c5e5ffac3349b90b326bdc8a8a954e",
      "parents": [
        "0a0ca0e4b0f12ff30c93e41004d137ea2fec5971"
      ],
      "author": {
        "name": "DTabidze",
        "email": "130773020+DTabidze@users.noreply.github.com",
        "time": "Tue Apr 02 03:16:26 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 02 03:16:26 2024 +0400"
      },
      "message": "memberships: modal for errors (#133)\n\n* unpolished version of error modal rendering\r\n\r\n* rework of html files. template implemented\r\n\r\n* new html files\r\n\r\n* minor fixes.\r\n\r\n* minor fixes\r\n\r\n* title changes"
    },
    {
      "commit": "0a0ca0e4b0f12ff30c93e41004d137ea2fec5971",
      "tree": "d7708b66a424d20c0b86c829d13d1a676cf95f93",
      "parents": [
        "ab7ff6eb3a1c56e594811f09b414643af0656a1b"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Mon Apr 01 09:07:41 2024 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Mon Apr 01 09:07:41 2024 +0400"
      },
      "message": "installer: concurrent parent task must wait for all children\n\nChange-Id: I1515d36cc731c6063359dd6957743d853b0255f6\n"
    },
    {
      "commit": "ab7ff6eb3a1c56e594811f09b414643af0656a1b",
      "tree": "d9b0d2f98be3a362d4d5462cb271da4c7de0f9c3",
      "parents": [
        "afde8af1d241e52575368dcaabc806ff013982c0"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Fri Mar 29 13:11:30 2024 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "gio@gerrit.p.v0.dodo.cloud",
        "time": "Fri Mar 29 12:44:35 2024 +0000"
      },
      "message": "env: status page\n\nUpdates page asynchronously every 5 seconds.\nIntroduces beforeStart and afterStart trigger points to update setup status information.\n\nChange-Id: Ic2f6a9bb7a0fefeefc4d6a1a7338d506a4f99e80\n"
    },
    {
      "commit": "afde8af1d241e52575368dcaabc806ff013982c0",
      "tree": "6292a228833139c6810c653e956ae86859787f51",
      "parents": [
        "0757f8a4376f57bb6d89fc96261ab3e05a71110d"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "giolekva@gmail.com",
        "time": "Thu Mar 28 23:23:15 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 28 23:23:15 2024 +0400"
      },
      "message": "headscale: generage random suffix for new users (#132)\n\nChange-Id: I7ef50ca45d005592bcd627920e4512ba876ca6b7\r\n\r\nCo-authored-by: Giorgi Lekveishvili \u003clekva@gl-mbp-m1-max.local\u003e"
    },
    {
      "commit": "0757f8a4376f57bb6d89fc96261ab3e05a71110d",
      "tree": "c3bd7497556b307bf0f15fcb9a17109dfd377eea",
      "parents": [
        "5c1b06ef92a2992fb2a97a03a8ecdbd7379eda51"
      ],
      "author": {
        "name": "DTabidze",
        "email": "130773020+DTabidze@users.noreply.github.com",
        "time": "Thu Mar 28 16:49:09 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 28 16:49:09 2024 +0400"
      },
      "message": "memberships: modal for confirmation (#130)\n\n* unpolished version of working modal\r\n\r\n* separated JS script\r\n\r\n* minor change in JS\r\n\r\n* minor changes JS file"
    },
    {
      "commit": "5c1b06ef92a2992fb2a97a03a8ecdbd7379eda51",
      "tree": "b05064fd0d104b4a2e3f8b5c64c81541354f2dd9",
      "parents": [
        "078385f049306b01d32dd5b8d055aa8740b49ed8"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "giolekva@gmail.com",
        "time": "Thu Mar 28 15:19:44 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 28 15:19:44 2024 +0400"
      },
      "message": "env-manager: ui polish (#127)\n\n* env-manager: migrate to pico 2.0.6\r\n\r\n* env: option to hide children from ui\r\n\r\n* introduce template hierarchy\r\n\r\n* style: improve menu styling\r\n\r\n* env: reorganize tasks, pull before install\r\n\r\n---------\r\n\r\nCo-authored-by: Giorgi Lekveishvili \u003clekva@gl-mbp-m1-max.local\u003e"
    },
    {
      "commit": "078385f049306b01d32dd5b8d055aa8740b49ed8",
      "tree": "0e671086a3c8b2c906b786f8c5ddd3f9e3fde1bf",
      "parents": [
        "2b224bff53bbc8b08a35c6cbcb94ae9bdd576d6a"
      ],
      "author": {
        "name": "DTabidze",
        "email": "130773020+DTabidze@users.noreply.github.com",
        "time": "Wed Mar 27 14:49:05 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 27 14:49:05 2024 +0400"
      },
      "message": "memberships: handlers endpoint rework (#129)\n\n* reworked api endpoints\r\n\r\n* minor fix"
    },
    {
      "commit": "2b224bff53bbc8b08a35c6cbcb94ae9bdd576d6a",
      "tree": "5b0ca6c4048f0ea679b7bf58b05e69cd7af8ba15",
      "parents": [
        "5d735e34c80cf431b79b8f7f28d157a3c716d185"
      ],
      "author": {
        "name": "DTabidze",
        "email": "130773020+DTabidze@users.noreply.github.com",
        "time": "Wed Mar 27 13:25:49 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 27 13:25:49 2024 +0400"
      },
      "message": "memberships: remove owner, member and child group (#128)\n\n* remove child group\r\n\r\n* remove group as a child fixed\r\n\r\n* remove group as a child fixed\r\n\r\n* remove owner and member from group\r\n\r\n* removed table names from html, changed api url approach\r\n\r\n* changed handler url"
    },
    {
      "commit": "5d735e34c80cf431b79b8f7f28d157a3c716d185",
      "tree": "9e56a48f2073d39dfd3db1efded6d81cceaadc7a",
      "parents": [
        "6cf332b0d98447576ef95bc473e467f24ddbadd8"
      ],
      "author": {
        "name": "DTabidze",
        "email": "130773020+DTabidze@users.noreply.github.com",
        "time": "Tue Mar 26 16:01:06 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 26 16:01:06 2024 +0400"
      },
      "message": "memberships: user page (#126)\n\n* reworked homepage and userhandler\r\n\r\n* minor fixes for UI"
    },
    {
      "commit": "6cf332b0d98447576ef95bc473e467f24ddbadd8",
      "tree": "ddbb8bb6ce1740538c0e913a371ad86deeadb555",
      "parents": [
        "13da8ff2f198880745bf185dabc430b67063ea35"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "giolekva@gmail.com",
        "time": "Tue Mar 26 12:30:20 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 26 12:30:20 2024 +0400"
      },
      "message": "env page design (#125)\n\nCo-authored-by: Giorgi Lekveishvili \u003clekva@gl-mbp-m1-max.local\u003e"
    },
    {
      "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": "9fe49184b20ae766397260e9cd2f5b60f717d716",
      "tree": "9f2f00bd02231bc58e9ae106e84f5c4dafb0f46a",
      "parents": [
        "3c91e8b6b312ae2faaf37e3bd3d0667979d4cb3a"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "giolekva@gmail.com",
        "time": "Tue Mar 26 10:54:07 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 26 10:54:07 2024 +0400"
      },
      "message": "cleanup: remove old unused files (#122)\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": "908bb851e18b122c07664f950f5d25d6be8ec905",
      "tree": "391a4efd780c2f579f8d20012d0782a31052bb4b",
      "parents": [
        "d542b734b96290e10786e3936af01b7e379b3814"
      ],
      "author": {
        "name": "DTabidze",
        "email": "130773020+DTabidze@users.noreply.github.com",
        "time": "Mon Mar 25 20:07:57 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 25 20:07:57 2024 +0400"
      },
      "message": "membership: groupname and username validations (#116)\n\n* group and username validations lowercase names\r\n\r\n* fixed changes validations\r\n\r\n* removed username validation\r\n\r\n* lowercasing username"
    },
    {
      "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": "942c76164eae4f82ea9cfcbe363fa57966c56331",
      "tree": "87cba7a8c0c59c22bc45e8abdffe0309c19492c7",
      "parents": [
        "6738396b324f0e3a7aaccf02ef8b7520c00ad5f8"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "giolekva@gmail.com",
        "time": "Fri Mar 22 19:27:48 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 22 19:27:48 2024 +0400"
      },
      "message": "memberships: api init endpoint (#114)\n\nAdds API endpoint to initialise database with first owner and groups.\r\n\r\naffects: #108"
    },
    {
      "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": "c0b4d8fbf6a6aecd60a5f320d2e3389b73c5759c",
      "tree": "f9ea655647ef98c893d3368f1a175e3df4ec64a5",
      "parents": [
        "a09fad74443c2313bfc97f61f7b2a83c82423aef"
      ],
      "author": {
        "name": "DTabidze",
        "email": "130773020+DTabidze@users.noreply.github.com",
        "time": "Fri Mar 22 17:25:10 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 22 17:25:10 2024 +0400"
      },
      "message": "membership: list child and parent groups (#107)\n\n* Group page shows child and parent groups\r\n\r\n* moved recursion as a helper\r\n\r\n* reworked several funcs to return directly Group type\r\n\r\n* added TransitiveGroups on homepage\r\n\r\n* added circular reference detection\r\n\r\n* improved performance of transitive groups\r\n\r\n* minor fix\r\n\r\n* GetAllTransitiveGroupsForGroup parameter changed to string\r\n\r\n* cover getting transitive groups with unit test\r\n\r\n* recursion logic needs fix\r\n\r\n* refactor: reuse code for processing user/group transitive groups\r\n\r\n* recursion fix\r\n\r\n---------\r\n\r\nCo-authored-by: Giorgi Lekveishvili \u003clekva@gl-mbp-m1-max.local\u003e"
    },
    {
      "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": "d7744a6874c4eceeabf5011a18e68430725eed4d",
      "tree": "3c0353189b254b8a493e1816ce2a3494a35038ce",
      "parents": [
        "0d8025964db3ecfd9963aa7049597f58de003eb5"
      ],
      "author": {
        "name": "DTabidze",
        "email": "130773020+DTabidze@users.noreply.github.com",
        "time": "Wed Mar 20 14:09:15 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 20 14:09:15 2024 +0400"
      },
      "message": "membership: api group membership endpoint (#104)\n\n* added api group handler\r\n\r\n* func name fixes\r\n\r\n* changed json encoding"
    },
    {
      "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"
    },
    {
      "commit": "c724578ebc273c12bae1dc0b391a2d878be0ef93",
      "tree": "33f9413e4f1bde1925d2fc65e2c3b1d36b9c4f26",
      "parents": [
        "925f0deb100ab516297348798a01a5f55db76c1a"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "giolekva@gmail.com",
        "time": "Fri Mar 15 13:22:52 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 15 13:22:52 2024 +0400"
      },
      "message": "cleanup: remove old unused dir (#99)\n\nCo-authored-by: Giorgi Lekveishvili \u003clekva@gl-mbp-m1-max.local\u003e"
    },
    {
      "commit": "925f0deb100ab516297348798a01a5f55db76c1a",
      "tree": "029ea39d0adb5180f863fcdedf756c11886a30c2",
      "parents": [
        "ba589ae864f8a3afc6d897d966b0372433cce11c"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "giolekva@gmail.com",
        "time": "Thu Mar 14 18:51:56 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 14 18:51:56 2024 +0400"
      },
      "message": "chart: extract hydra maester chart out of auth/charts/hydra.tar.gz (#96)\n\n* chart: extract hydra maester chart out of auth/charts/hydra.tar.gz\r\n\r\n* auth: install shared hydra maester during bootstrap\r\n\r\n* hydra-maester: fix chart name typo\r\n\r\n* hydra-maester: fix charts repo namespace\r\n\r\n---------\r\n\r\nCo-authored-by: Giorgi Lekveishvili \u003clekva@gl-mbp-m1-max.local\u003e"
    },
    {
      "commit": "ba589ae864f8a3afc6d897d966b0372433cce11c",
      "tree": "ab35a45ffb42daae2f2b971316379f3010d29d3a",
      "parents": [
        "0c6b324af80de6ccca61675e2fbfff304f26767b"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "giolekva@gmail.com",
        "time": "Thu Mar 14 18:51:34 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 14 18:51:34 2024 +0400"
      },
      "message": "hetzner: automatically restart tailscale upon network setup (#95)\n\nCo-authored-by: Giorgi Lekveishvili \u003clekva@gl-mbp-m1-max.local\u003e"
    },
    {
      "commit": "0c6b324af80de6ccca61675e2fbfff304f26767b",
      "tree": "f9680131f783932af086629c0816bd045ff2ec18",
      "parents": [
        "024757cc787b7d33ff039d42599810a64b7dc365"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "giolekva@gmail.com",
        "time": "Thu Mar 14 15:31:08 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 14 15:31:08 2024 +0400"
      },
      "message": "oauth2-client: migrate apps to use oauth2-client helm chart (#90)\n\n* headscale: use oauth2-client helm chart\r\n\r\n* pihole: use oauth2-client helm chart\r\n\r\n* matrix: use oauth2-client helm chart\r\n\r\n* oauth2: pass issuer address to pihole, headscale and matrix apps\r\n\r\n* pihole: fix secret name\r\n\r\n* matrix: fix version to v1.98.0\r\n\r\n* headscale: make oauth2-client depend on auth release\r\n\r\n---------\r\n\r\nCo-authored-by: Giorgi Lekveishvili \u003clekva@gl-mbp-m1-max.local\u003e"
    },
    {
      "commit": "024757cc787b7d33ff039d42599810a64b7dc365",
      "tree": "286b5c550ef7dfe8c98b37f31ec7a0d12cceea2b",
      "parents": [
        "98fe81999fd177d6383419809d492afc868c74fd"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "giolekva@gmail.com",
        "time": "Thu Mar 14 13:27:29 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 14 13:27:29 2024 +0400"
      },
      "message": "installer: use main branch for chart discovery (#92)\n\nCo-authored-by: Giorgi Lekveishvili \u003clekva@gl-mbp-m1-max.local\u003e"
    },
    {
      "commit": "98fe81999fd177d6383419809d492afc868c74fd",
      "tree": "5d8c4117db26c43b5d74fd43c64adc1bb4bd95b2",
      "parents": [
        "b4fcaa251b740ab36de4d695d804a3ff33b129f4"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "giolekva@gmail.com",
        "time": "Thu Mar 14 13:27:17 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 14 13:27:17 2024 +0400"
      },
      "message": "url-shortener: remove quotes from db path flag (#94)\n\n* url-shortener: remove quotes from db path flag\r\n\r\n* clean: rm whitespace\r\n\r\n---------\r\n\r\nCo-authored-by: Giorgi Lekveishvili \u003clekva@gl-mbp-m1-max.local\u003e"
    },
    {
      "commit": "b4fcaa251b740ab36de4d695d804a3ff33b129f4",
      "tree": "b1747f4a3605e968547cae9800169a6614f8b9b4",
      "parents": [
        "9d5e3f5931af72a503654a24bea1950f5f108fbc"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "giolekva@gmail.com",
        "time": "Wed Mar 13 16:34:49 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 13 16:34:49 2024 +0400"
      },
      "message": "url-shortener: fix cue config file (#91)\n\nCo-authored-by: Giorgi Lekveishvili \u003clekva@gl-mbp-m1-max.local\u003e"
    },
    {
      "commit": "9d5e3f5931af72a503654a24bea1950f5f108fbc",
      "tree": "99cda7daebd9bc84b8d0aa8717ad8fb0761cd729",
      "parents": [
        "0993581136984e5f80177987b08fa11bd4ef1541"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "giolekva@gmail.com",
        "time": "Wed Mar 13 15:02:50 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 13 15:02:50 2024 +0400"
      },
      "message": "env-manager: dynamically generate cidr for new env (#85)\n\n* env-manager: allocate env cidrs dynamically\r\n\r\n* fix: net.IP to netip.Addr conversion\r\n\r\n* bootstrapper: generate empty env-cidrs.yaml\r\n\r\n* fix: net.IP to netip.Addr conversion for IP pool\r\n\r\n* infra: expose provided startIP subnet via tailscale proxy\r\n\r\n* headscale: pass private network ip subnet to expose to api service\r\n\r\n* dns: make ingress IP configurable\r\n\r\n---------\r\n\r\nCo-authored-by: Giorgi Lekveishvili \u003clekva@gl-mbp-m1-max.local\u003e"
    },
    {
      "commit": "0993581136984e5f80177987b08fa11bd4ef1541",
      "tree": "2314c9ab86ced0f242a21c7e6500f1f5bdb1e17d",
      "parents": [
        "dc76b400ca9adb12b19d13217081af94055ce71c"
      ],
      "author": {
        "name": "DTabidze",
        "email": "130773020+DTabidze@users.noreply.github.com",
        "time": "Wed Mar 13 13:47:39 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 13 13:47:39 2024 +0400"
      },
      "message": "url-shortener: helm chart with cue config file (#89)\n\n* added cue file for url-shortener\r\n\r\n* added yaml files for url-shortener\r\n\r\n* fixed yaml and cue for url-shortener\r\n\r\n* port variable  fix\r\n\r\n* cue minor fix\r\n\r\n* added url-shortener into appstore svg change\r\n\r\n* minor fixes\r\n\r\n* version fix\r\n\r\n* added url-shortener into app.go"
    },
    {
      "commit": "dc76b400ca9adb12b19d13217081af94055ce71c",
      "tree": "eb818fc34218614ce58f92315a54c46b0b7c6b23",
      "parents": [
        "0d2e9ad9c225dbc89a07ad20709520139ded3c1a"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "giolekva@gmail.com",
        "time": "Wed Mar 13 13:30:28 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 13 13:30:28 2024 +0400"
      },
      "message": "hetzner: rm third server (#88)\n\nCo-authored-by: Giorgi Lekveishvili \u003clekva@gl-mbp-m1-max.local\u003e"
    },
    {
      "commit": "0d2e9ad9c225dbc89a07ad20709520139ded3c1a",
      "tree": "59fb3bce799a8d5b98d13bd69b4363119ac125cc",
      "parents": [
        "83b7219dc678a0e40751caf594f652f73a888266"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "giolekva@gmail.com",
        "time": "Wed Mar 13 13:30:15 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 13 13:30:15 2024 +0400"
      },
      "message": "welcome: cleanup login-addr flag (#87)\n\nCo-authored-by: Giorgi Lekveishvili \u003clekva@gl-mbp-m1-max.local\u003e"
    },
    {
      "commit": "83b7219dc678a0e40751caf594f652f73a888266",
      "tree": "cfedee7894e996172df23f789feb60b6151ee7a1",
      "parents": [
        "3183056f2cb91eca8d0b182fc56169af0033c750"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "giolekva@gmail.com",
        "time": "Mon Mar 11 18:36:14 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 11 18:36:14 2024 +0400"
      },
      "message": "welcome: successful registration page (#82)\n\n"
    },
    {
      "commit": "3183056f2cb91eca8d0b182fc56169af0033c750",
      "tree": "e956ebb7c7e92d0d4b2a32b976790a67b5bd9c6f",
      "parents": [
        "7c037394ea830a06b24415c59ed6fd1a4fee72d9"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "giolekva@gmail.com",
        "time": "Mon Mar 11 14:40:55 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 11 14:40:55 2024 +0400"
      },
      "message": "auth: bump kratos and hydra versions (#79)\n\nCo-authored-by: Giorgi Lekveishvili \u003clekva@gl-mbp-m1-max.local\u003e"
    },
    {
      "commit": "7c037394ea830a06b24415c59ed6fd1a4fee72d9",
      "tree": "1e08868585b5e98a3d166eac76b98d1eaa3b929d",
      "parents": [
        "03d6f4b45e22385d45017f2f56e21f44071d4bcf"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "giolekva@gmail.com",
        "time": "Mon Mar 11 14:40:24 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 11 14:40:24 2024 +0400"
      },
      "message": "installer: remove old yaml config files (#78)\n\nCo-authored-by: Giorgi Lekveishvili \u003clekva@gl-mbp-m1-max.local\u003e"
    },
    {
      "commit": "03d6f4b45e22385d45017f2f56e21f44071d4bcf",
      "tree": "f8c02bdcc9602ee7084311a3a767af7ba68826c1",
      "parents": [
        "525933992ab86d6902969647e44ca663cff1dca1"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "giolekva@gmail.com",
        "time": "Fri Mar 08 13:05:21 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 08 13:05:21 2024 +0400"
      },
      "message": "configure app names (#77)\n\nCo-authored-by: Giorgi Lekveishvili \u003clekva@gl-mbp-m1-max.local\u003e"
    }
  ],
  "next": "525933992ab86d6902969647e44ca663cff1dca1"
}
