)]}'
{
  "log": [
    {
      "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": "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": "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": "8fae028921963255ee7b7132256b035ba2767217",
      "tree": "076b239bfcc8dca0a614def5d92f458c8b3e3976",
      "parents": [
        "f3486a55c4832c4d2644e10ef1241d4a387e104e"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Oct 30 07:32:45 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Oct 30 08:12:08 2024 +0400"
      },
      "message": "NextJS: Use correct default port number 3000\n\nChange-Id: Iba055accf2f08a167d03f036df20bf9a9674e88d\n"
    },
    {
      "commit": "f3486a55c4832c4d2644e10ef1241d4a387e104e",
      "tree": "eadd1f5a8f0fcf029f4fb227e67ad4f0775c5a28",
      "parents": [
        "88d3766ff683db399a277162ec97017c6188dffa"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Oct 29 23:38:18 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Oct 30 08:11:47 2024 +0400"
      },
      "message": "DodoApp: Expose same app ports on VM as well\n\nChange-Id: I5d04330ffc7c23443c1305ece5201e3f59fb91d4\n"
    },
    {
      "commit": "88d3766ff683db399a277162ec97017c6188dffa",
      "tree": "7ff87635ac4898bf52a3e58c099abc38a826caf8",
      "parents": [
        "5fb003291aaa99d66ae48447f65b22913782ce07"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Oct 27 22:52:34 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Oct 28 14:05:59 2024 +0400"
      },
      "message": "DodoApp: Support apps exposing multiple ports\n\nChange-Id: I9c8a47d20ffc1836cef6390c0ac6f22e977e38f2\n"
    },
    {
      "commit": "07eb108299bb089423a7ad4f8ef3e5934022e59a",
      "tree": "e09a569463b8edab422f4742af62fa8217e5f331",
      "parents": [
        "46998892c2f05af77d6dabd27dbcb22b9036af10"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Oct 25 14:35:56 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Oct 25 23:26:46 2024 +0400"
      },
      "message": "DodoApp: Support MongoDB\n\nChange-Id: I275f662848fb7d78b98d5e935f5ca87d73ca60ec\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": "2b1157aedb2cbd8c20304af7e175f3e2b321680e",
      "tree": "4f27fd45cc06ed6ceb3059a02df815b6915117ee",
      "parents": [
        "51abcffce3f4ef6a18ad6a16a60acd634354b526"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Oct 24 08:45:07 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Oct 24 08:45:07 2024 +0400"
      },
      "message": "AppRunner: Clone specific branch instead of always running master\n\nChange-Id: I262d232f5fa1648474eb8bb55ce13f986507b0d4\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": "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": "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": "f15b9dae8da59ea970cebe865673c0b74fb05d14",
      "tree": "f6ae28d7c46bd6c833ada7c436f4dacab0628876",
      "parents": [
        "f6ad298e24e22c1fadb203d85f8b8dd6cb118e25"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Sep 19 06:59:16 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat Sep 21 11:45:45 2024 +0400"
      },
      "message": "DodoApp: Support remote clusters\n\nChange-Id: I6f4e6a0a32cc723b47c96518d83b1ffdb5169f14\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": "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": "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": "b36178fae43c466c648a928c94047605e9357808",
      "tree": "6fc5284c708a783e2d7799e1191203dcc4f1f44e",
      "parents": [
        "c76baedf55dd3e0d36ef0fd7a476601120bd57d7"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Aug 23 18:59:15 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Aug 26 15:40:54 2024 +0000"
      },
      "message": "Headscale: Sync users and update ACLs\n\nChange-Id: Ie3488f6296567f5e2301476912d79de845299708\n"
    },
    {
      "commit": "43b0f42893efb5284f0fb5d6ca9c12f4688680b4",
      "tree": "0b042cac5d1d7939a36601893cb27cb2ac39bc4e",
      "parents": [
        "608148d0414fd65e8dadeccc07093e3e4e9e6321"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Aug 21 10:40:13 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Aug 21 19:56:55 2024 +0400"
      },
      "message": "Reconciler: Reconcile dodo Apps as well\n\nFix service-account assignment.\n\nChange-Id: Ic66c46ae5b728e09ee9118f61e31ab860623bce0\n"
    },
    {
      "commit": "12e887d5a4c515e173bc3306c83aec0e28113e5b",
      "tree": "25d837416a2ae666982e583cf74511288908a19b",
      "parents": [
        "e2e31e1cd45d3eadb745af73bf6db225f6b1fbb0"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sun Aug 18 16:09:47 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Aug 19 14:32:22 2024 +0400"
      },
      "message": "DodoApp: Support postgresql config\n\nChange-Id: I491553c709385b99d0bc1326dd967bd73c4fec6a\n"
    },
    {
      "commit": "5f00a395178c23115904278e94d163ba6f19f0f8",
      "tree": "68cd291c3b74f15ad22821ccf6cca1b1b7c4019a",
      "parents": [
        "33fa9caf7e18db1c651beecd5997291cf611e6b4"
      ],
      "author": {
        "name": "Davit Tabidze",
        "email": "davidtabidzef1@gmail.com",
        "time": "Tue Aug 13 18:37:02 2024 +0400"
      },
      "committer": {
        "name": "Davit Tabidze",
        "email": "davidtabidzef1@gmail.com",
        "time": "Fri Aug 16 18:34:46 2024 +0400"
      },
      "message": "AuthProxy: Render unauthorized page\n\nChange-Id: I979762c63b0d1b3c3674fd0b9ab79ccd8849887a\n"
    },
    {
      "commit": "2ccb6e3deada87db0fddc82726662af084565e0b",
      "tree": "68bca7fbe39660c8164d45ce3da26ff883281f0c",
      "parents": [
        "d28f83c53dbee2b81b3d08ed1d2f726962465a68"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Aug 15 12:01:33 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Aug 15 22:40:06 2024 +0400"
      },
      "message": "DodoApp: New app gets all internal users as read-write collaborators\n\nDisable SoftServe keyless and anon access\n\nChange-Id: I898a34a5dbd4c8ce049f834dd61a96a3abb1e603\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": "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": "b54db2456380b3f4070d789a8bf1cb82b226dad9",
      "tree": "64c7f31d0c1b31c92d81e0523355598a8d1714f4",
      "parents": [
        "7841f4fa84099fef36e426842a2239d72c74ba53"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 30 18:49:33 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jul 31 11:36:39 2024 +0400"
      },
      "message": "DodoApp: Support PHP 8.2\n\nChange-Id: I7cfe082c66a0efe0b3b9c85433a96623466ced5c\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": "a190594350f72ad8a1db1f54a6bde27155a024b8",
      "tree": "c1a29111d2b48a9613fb349673fb7e97238bb4e6",
      "parents": [
        "950d804ed0e1ee129ec3c9a6d0ece6f6d97e611f"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jul 19 12:18:30 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jul 19 16:25:00 2024 +0000"
      },
      "message": "DodoApp: Use untrusted-external runtime class for app runner\n\nChange-Id: I6beab523e1688fc98c2b6a5b756f46a5fc89f3cb\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": "1e5682b8f719589494b23b9805590ffeb9ff5e3f",
      "tree": "8a5fed4ebe51aff29b391622aa5a9242aae1fe68",
      "parents": [
        "42a6b8d140c5a5471390138ab61b49a52230fea1"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 18 17:01:26 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Thu Jul 18 17:01:26 2024 +0400"
      },
      "message": "Memberships: Use nonroot base image\n\nChange-Id: I8ce754b62f283088a979636cf7ed441c5f5fcfac\n"
    },
    {
      "commit": "4eb2efe327311901547f77472219b9636b1484ad",
      "tree": "17f0979ef0b52194aa91edf916228ead2d5a4cd8",
      "parents": [
        "c6c663f413fc3cb6645a8b83923a136e2538bb39"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Fri Jul 12 20:55:31 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Mon Jul 15 11:32:07 2024 +0400"
      },
      "message": "rPuppy: Update Makefile and Dockerfile\n\nChange-Id: I3832c88878b517554ceecaa89fe8a0a03ee1876f\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": "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": "4b50c8ff7ed54c09288ce9164aab40b497be3a13",
      "tree": "cce9f964bb36c2e8cadf403eb2a74cfb9193d08c",
      "parents": [
        "caaae915ff79234bf49dcf2dd7f8b9b1993ec986"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 09 15:54:41 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 09 12:11:18 2024 +0000"
      },
      "message": "Jenkins: Upgrade configuration-as-code plugin version\n\nGit plugin depends on 1810 while by default we used to use 1775\n\nChange-Id: I10662ce723a19621a9400f531543fae5ebb7440c\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": "1364e437bf921780052f27d49f51682ffd1811f0",
      "tree": "18d96f57728f02d66f5edae29d4d1a32996cd5df",
      "parents": [
        "01cf5cbd1b3e86d325d3a487f2e45862ba04b167"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Sat Jun 29 11:39:18 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Tue Jul 02 13:40:18 2024 +0400"
      },
      "message": "DodoApp: Support volume requests\n\nUsers can define volumes section under app, and for each volume\ncorresponding env variable will be passed down to the application.\n\nChange-Id: I8da9d5e1ca652cdb2f0196fcba1b6242064d057f\n"
    },
    {
      "commit": "5f31c7821200acfe8d3e02a20b77da5eb41586b3",
      "tree": "0aea2d2c34a9f8016c5d0c7b94f4129485a6637c",
      "parents": [
        "caa365a70bea0d971b8733f47eacb635024a8e5f"
      ],
      "author": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jun 26 11:25:12 2024 +0400"
      },
      "committer": {
        "name": "gio",
        "email": "gio@v1.dodo.cloud",
        "time": "Wed Jun 26 11:26:19 2024 +0400"
      },
      "message": "Cleanup: Delete unused services, move some things into archive\n\nChange-Id: Ie5bc61d48101e7f39cc82a29025cdd8920f35e70\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": "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": "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": "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": "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": "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": "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": "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": "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"
    },
    {
      "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": "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": "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": "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": "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": "e009a5dd3fbd34d4586d2f2f9d08347b0f31ad6b",
      "tree": "9d7550cc19de32cc82e05a631c6da62b8bfc7979",
      "parents": [
        "b00a1db3769c05f06d10aca90acec784b9e4c2ee"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Fri Jan 05 14:10:11 2024 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Wed Jan 17 12:39:32 2024 +0400"
      },
      "message": "installer: migrate apps to cuelang\n"
    },
    {
      "commit": "d76414ebcf4a079b003f1edd67edbee330408c94",
      "tree": "fcd481ac8bf95ff5ecc8bbf1bca57d6576c3d580",
      "parents": [
        "c89b900f8c8f0bc1d9ed13dbfe1abf1a86559fb1"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Thu Dec 21 13:30:23 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Thu Dec 21 13:30:23 2023 +0400"
      },
      "message": "auth: disable registration on ui\n"
    },
    {
      "commit": "c89b900f8c8f0bc1d9ed13dbfe1abf1a86559fb1",
      "tree": "1ba2b3a64fd3e0f22703070bdfdf31d74fc4f6b6",
      "parents": [
        "fedd00675f604327578d433cea4831f116262460"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Thu Dec 21 13:09:26 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Thu Dec 21 13:09:26 2023 +0400"
      },
      "message": "welcome: call api to create account\n"
    },
    {
      "commit": "fedd00675f604327578d433cea4831f116262460",
      "tree": "61907067933b2d618d5f614e681923611c3eda4a",
      "parents": [
        "bae313542250c1a1457ae611320dd5dc2d3a0416"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Thu Dec 21 10:52:49 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Thu Dec 21 12:11:12 2023 +0400"
      },
      "message": "core-auth: api to create new identities\n"
    },
    {
      "commit": "bae313542250c1a1457ae611320dd5dc2d3a0416",
      "tree": "e03ee33fe31dbcef3b95a9947d468fd9626060de",
      "parents": [
        "9d4c10df6901a642e92f6069e43876be4cd0b279"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Thu Dec 21 07:48:05 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Thu Dec 21 07:48:05 2023 +0400"
      },
      "message": "matrix: fix cert and well-known\n"
    },
    {
      "commit": "9d4c10df6901a642e92f6069e43876be4cd0b279",
      "tree": "7911ac14b6ce5a55bf782fbbb8343e97db8b8d76",
      "parents": [
        "cf5f0b19cf990d793942f4c8259c5c409933e45f"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Wed Dec 20 20:22:47 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Wed Dec 20 20:22:47 2023 +0400"
      },
      "message": "matrix: bump version\n"
    },
    {
      "commit": "cf252f04a43851614c41dbd8089d875ff375ef1d",
      "tree": "3eb5b4db9b8cb842d3a154474f06fa7b9a55d157",
      "parents": [
        "30c887a2b1f0e252ebceec5a1ac410777f76758b"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Wed Dec 20 19:28:57 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Wed Dec 20 19:28:57 2023 +0400"
      },
      "message": "matrix: fix jinja template generation\n"
    },
    {
      "commit": "6d7dcb84b2075b3dcb9eba690c9e8eb637dfcc6b",
      "tree": "df4f0ca1032dc31edb4745b41e6777eb2b55a751",
      "parents": [
        "d2f3dca1a79cafbcf9a52be44d2a3ae16db6f8fd"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Wed Dec 20 14:44:42 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Wed Dec 20 17:23:42 2023 +0400"
      },
      "message": "matrix: use resource renderer\n"
    },
    {
      "commit": "0435b204c8526cb00e4e33e710b8e4efb083b99b",
      "tree": "698b088ed13aef77828de88a971777e2cc2c594f",
      "parents": [
        "9e2fafad32b5ee7e050d30dd6c1c5925f9ccb0a5"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Mon Dec 18 18:23:06 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Mon Dec 18 18:23:06 2023 +0400"
      },
      "message": "pihole: admin.enabled \u003d false\n"
    },
    {
      "commit": "561f3d3e6531f3bbef2ce5fde987dddfec43fd1c",
      "tree": "01551bc8ad7e139098242d62f2bdcd47bc07c485",
      "parents": [
        "9bce26cfb03fd5f058e8244fa41124773234b993"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Mon Dec 18 14:12:06 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Mon Dec 18 14:12:06 2023 +0400"
      },
      "message": "charts: pihole - disable admin password\n"
    },
    {
      "commit": "18791c04589408ad8618514a1e4cd6bdd9e27452",
      "tree": "14cd6af136f14b8cdadbf78217bdbb549c5eb669",
      "parents": [
        "2dd35c217bcd7dc248f670a24944956170a3cd09"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Mon Dec 18 10:21:29 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Mon Dec 18 10:21:29 2023 +0400"
      },
      "message": "fluxcd-bootstrapper: disable dbg container\n"
    },
    {
      "commit": "2dd35c217bcd7dc248f670a24944956170a3cd09",
      "tree": "9722085928279570ce66830e2bfb8d88800748ed",
      "parents": [
        "c5f5276dc4d60e1f31e845d40380750297953bbb"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Sun Dec 17 21:22:00 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Sun Dec 17 23:16:26 2023 +0400"
      },
      "message": "fluxcd-reconciler: fix binary path\n"
    },
    {
      "commit": "c5f5276dc4d60e1f31e845d40380750297953bbb",
      "tree": "167332e2b76263ac35fd8f222e5ca5213125aad3",
      "parents": [
        "2df23dbf85fe616b2ea83fcbf77834e4a336a595"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Thu Dec 14 21:06:02 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Thu Dec 14 21:06:02 2023 +0400"
      },
      "message": "bootstrapper: run busybox with fluxd-bootstrap\n"
    },
    {
      "commit": "2df23dbf85fe616b2ea83fcbf77834e4a336a595",
      "tree": "2476557a336b2d3b236e36496682e0cefa894543",
      "parents": [
        "1caed36cebccd7b8b13666667d044547bb6751dc"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Thu Dec 14 07:55:22 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Thu Dec 14 07:55:22 2023 +0400"
      },
      "message": "fluxcd-reconciler, env creator calling it every 30 sec to sync the cluster\n"
    },
    {
      "commit": "efce51ff114b84d036aed12e8fc8b15e4286a5da",
      "tree": "a5edfe525d2b3f97251fa10a4b9b3760a8f8b54f",
      "parents": [
        "378ea88919ca0aa15a1b3d12ece501bd3f6aee2e"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Tue Dec 12 18:25:48 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Tue Dec 12 18:25:48 2023 +0400"
      },
      "message": "installer-env: full permissions\n"
    },
    {
      "commit": "e287076723578f067df050e8d314183417840157",
      "tree": "fd0b629c75fcc9ab39553e7f8be1849dbcbb5097",
      "parents": [
        "2d1c2eb09083cf7ad106e9bdfdc47e5dbb8b5ab8"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Sat Dec 09 14:21:22 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Sun Dec 10 08:28:50 2023 +0400"
      },
      "message": "headscale: run ui container\n"
    },
    {
      "commit": "2d1c2eb09083cf7ad106e9bdfdc47e5dbb8b5ab8",
      "tree": "c450c4eba25d4f2a2dd3d59278d1ffc0dcf0efed",
      "parents": [
        "260a97db59484417514eddc29bd256c15bdc530c"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Fri Dec 08 22:58:17 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Fri Dec 08 22:58:17 2023 +0400"
      },
      "message": "cert-issuer-private: fix pcloud resolver name\n"
    },
    {
      "commit": "1afafb44491c71cf87efa35daec9297826a12260",
      "tree": "2b339c88e38331f5448295a80d00b62a10dd5d68",
      "parents": [
        "cced4c38d6caa647196f234191e3678388fb9a0a"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Fri Dec 08 10:44:42 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Fri Dec 08 10:44:42 2023 +0400"
      },
      "message": "issuer-private: fix configmap namespace\n"
    },
    {
      "commit": "cced4c38d6caa647196f234191e3678388fb9a0a",
      "tree": "792bfeb8bd4dc32eb33d614c8a5972f3831d7197",
      "parents": [
        "5c2c0b9624d05a915fa317c2024989106d7e8670"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Fri Dec 08 08:56:40 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Fri Dec 08 10:26:31 2023 +0400"
      },
      "message": "env: create private cert issuer as part of new env\n"
    },
    {
      "commit": "5c2c0b9624d05a915fa317c2024989106d7e8670",
      "tree": "896473347017fa36c6b22c15b04277b140ea0485",
      "parents": [
        "91494a688c3f0287a9636659e3827fa2979501ea"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Thu Dec 07 17:35:40 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Thu Dec 07 20:31:20 2023 +0400"
      },
      "message": "bootstrapper: tie up all dns related services\n"
    },
    {
      "commit": "c9d88a067babf04f2047308774fb7e805f5d3b9d",
      "tree": "dca80e69a6f8cc27590f61049d07f181d64ac166",
      "parents": [
        "e58fc59cf4e5751ad521d040123d87aba8f2b6ae"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Thu Dec 07 13:50:37 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Thu Dec 07 13:50:37 2023 +0400"
      },
      "message": "cert-manager-webhook-pcloud: role\n"
    },
    {
      "commit": "ae1a4a47226f02c0f2ffc3edd9e5e68d49f861e5",
      "tree": "5f56c7169e6678f36deeb449fe73ecc973f63278",
      "parents": [
        "e71e8143cdac0fc89bb3a90fc8c90e6c7c8946fb"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Thu Dec 07 13:23:17 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Thu Dec 07 13:23:17 2023 +0400"
      },
      "message": "cert-manager dns-challenge-solver\n"
    },
    {
      "commit": "e71e8143cdac0fc89bb3a90fc8c90e6c7c8946fb",
      "tree": "969a523e23845b72df1612731668ad19bb556aad",
      "parents": [
        "d025b6af7495c2809b70205881f42f5000470629"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Wed Dec 06 16:09:31 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Wed Dec 06 16:13:05 2023 +0400"
      },
      "message": "charts: private cert issuer configures txt add/delete addrs\n"
    },
    {
      "commit": "d025b6af7495c2809b70205881f42f5000470629",
      "tree": "3d3d2986397be538327c1fa7b7e71df506d6b37c",
      "parents": [
        "a466804f1cd205ef1416d455f1817fdb8d308a0f"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Wed Dec 06 11:22:07 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Wed Dec 06 11:22:07 2023 +0400"
      },
      "message": "charts: ns-controller expose api endpoint as service\n"
    },
    {
      "commit": "a466804f1cd205ef1416d455f1817fdb8d308a0f",
      "tree": "33f5e1221a06eca0ce963612184aabc1e93db4c6",
      "parents": [
        "2dbce6c29b843b13f2f3b9201cc7f452d44f3312"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Wed Dec 06 10:12:12 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Wed Dec 06 10:12:12 2023 +0400"
      },
      "message": "charts: use in-house private certificate issuer\n"
    },
    {
      "commit": "39913697ac3878fcbec0a110b424cc2d9a5d458f",
      "tree": "bbff7059f862bb99c9916a7bbbd8cf1e3b219d45",
      "parents": [
        "6ae65d1402c77dc29905296d293fcee0ddc72d71"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Tue Dec 05 08:58:08 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Tue Dec 05 09:18:13 2023 +0400"
      },
      "message": "installer: create headscale user resource\n"
    }
  ],
  "next": "6ae65d1402c77dc29905296d293fcee0ddc72d71"
}
