)]}'
{
  "log": [
    {
      "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": "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": "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": "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": "525933992ab86d6902969647e44ca663cff1dca1",
      "tree": "3e3fe41309b9c156fd10fc3f5fab1491786af19a",
      "parents": [
        "186eae5d5922e675c88bd8096df784100ed460e8"
      ],
      "author": {
        "name": "DTabidze",
        "email": "130773020+DTabidze@users.noreply.github.com",
        "time": "Fri Mar 08 12:53:20 2024 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 08 12:53:20 2024 +0400"
      },
      "message": "welcome: username error handling (#75)\n\n* username error handling welcome ui\r\n\r\n* added short username check with separate error handling function\r\n\r\n* nothing happaned here\r\n\r\n* added username error handling, form saves info\r\n\r\n* pull75 fixes\r\n\r\n* pull75 fixes ui\r\n\r\n* CSS change\r\n\r\n* separate css for errors, added logic for several type of errors\r\n\r\n* rename extractErrorMessage\r\n\r\n* validation changes\r\n\r\n* added validations in api\r\n\r\n* changed rendering template, recives errors in JSON format\r\n\r\n* rolled back schema and makefile in kratos\r\n\r\n* changes in HTML\r\n\r\n* combined kratos and manual validations\r\n\r\n* fixed rendering and handling JSON error response\r\n\r\n* rollback unused index.html\r\n\r\n* minor fixes\r\n\r\n* refactored the repeated logic of Errors into a separate function\r\n\r\n* rollback\r\n\r\n* refactor: group errors and form data together\r\n\r\n* rollback picocss version\r\n\r\n* use picocss 2.0.6\r\n\r\n---------\r\n\r\nCo-authored-by: Giorgi Lekveishvili \u003clekva@gl-mbp-m1-max.local\u003e"
    },
    {
      "commit": "8339905ead513754448d09758c02be7208cd3ccc",
      "tree": "94bc6da9fe4508d42ab212870d925791ef4bf46c",
      "parents": [
        "cefecf15e39337665c4507cd7e69c0644eb9e720"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Wed Feb 14 13:27:30 2024 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Wed Feb 14 13:29:05 2024 +0400"
      },
      "message": "welcome: dump error message as response\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": "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": "58cb148faf14b29c310a4075b739c4ef2aa54b7c",
      "tree": "e7b1b390bf9944ee02f5cdcafe4f6a5612726bc7",
      "parents": [
        "106a935ae765f18fec9d51b94e2625a145f35ec7"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Mon Dec 04 12:33:49 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Mon Dec 04 12:33:49 2023 +0400"
      },
      "message": "auth-ui: picocss\n"
    },
    {
      "commit": "a1e7790c41fbccde0c4796c2606cf7b1734fb950",
      "tree": "6dba18f5e5987fcd0295b42e7488c13196c5f42d",
      "parents": [
        "29c95caac0f7f792bc6d3b145c7d6b075ef6612c"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Mon Nov 06 14:48:27 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Mon Nov 06 14:48:27 2023 +0400"
      },
      "message": "installer: use soft-serve keygen lib\n"
    },
    {
      "commit": "8be0b942e6bfbae45d7afe2a7de9ffd68508ce9a",
      "tree": "66b78d0e828b0ff3e001b2603753e426d57236c6",
      "parents": [
        "524485f13f8e7b463d45ee533a413c9abf0e53be"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Tue Jun 13 13:29:21 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Tue Jun 13 13:29:21 2023 +0400"
      },
      "message": "core-auth: use k8s internal service address for hydra-admin\n"
    },
    {
      "commit": "4d2784df122176cb62ba24b7b492749b54a81a71",
      "tree": "a4eede35ea9dd3c0bb9138dd79465d8cba6b80bb",
      "parents": [
        "e390a14fcff1f90ce9cbfe0b8808e51da6955ebd"
      ],
      "author": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Thu Jun 01 14:27:32 2023 +0400"
      },
      "committer": {
        "name": "Giorgi Lekveishvili",
        "email": "lekva@gl-mbp-m1-max.local",
        "time": "Thu Jun 01 14:27:32 2023 +0400"
      },
      "message": "headscale ingress-private\n"
    },
    {
      "commit": "6f3e233c7121388e7dff3700f9aaf9d20e302b01",
      "tree": "1a02d6daefaeb7ad1ef71a02bf97ca5fa01578ad",
      "parents": [
        "704bfd9e58a16d97f821857f95d1db55ac5b2a40"
      ],
      "author": {
        "name": "giolekva",
        "email": "giolekva@gmail.com",
        "time": "Sat Dec 04 19:42:13 2021 +0400"
      },
      "committer": {
        "name": "giolekva",
        "email": "giolekva@gmail.com",
        "time": "Sat Dec 04 19:42:13 2021 +0400"
      },
      "message": "Build multi-arch container images across stack\n"
    },
    {
      "commit": "7fc15e7f3ceb8abd9da1f0baf433c362ce029fdf",
      "tree": "af33c478c1ac889787c28c60ff30d132f02af26d",
      "parents": [
        "26a96815245899b58f51679b99e55d739dc6e873"
      ],
      "author": {
        "name": "giolekva",
        "email": "giolekva@gmail.com",
        "time": "Fri Dec 03 15:54:42 2021 +0400"
      },
      "committer": {
        "name": "giolekva",
        "email": "giolekva@gmail.com",
        "time": "Fri Dec 03 15:54:42 2021 +0400"
      },
      "message": "Installer: make vpn ip configurable\n"
    },
    {
      "commit": "4703175dcdf67dbdc3adcd6253efc741fed9b4fb",
      "tree": "c170708f9de074a7b187276e79133ca68f2adc98",
      "parents": [
        "5f2b91ca0e6d9de94997bfedd7e430d7d6eadd6d"
      ],
      "author": {
        "name": "giolekva",
        "email": "giolekva@gmail.com",
        "time": "Fri Nov 12 14:34:33 2021 +0400"
      },
      "committer": {
        "name": "giolekva",
        "email": "giolekva@gmail.com",
        "time": "Fri Nov 12 14:34:33 2021 +0400"
      },
      "message": "Auth: prettier ui\n"
    },
    {
      "commit": "95340e88088a9d27c1af1202cc019cb25a23cfa4",
      "tree": "5f8cd29ea8bfdf90f37a4f966bef6fa2b5bd112f",
      "parents": [
        "d9d85130a2c410d1afcc1552bb3048f7554f3d24"
      ],
      "author": {
        "name": "giolekva",
        "email": "giolekva@gmail.com",
        "time": "Mon Nov 08 21:36:55 2021 +0400"
      },
      "committer": {
        "name": "giolekva",
        "email": "giolekva@gmail.com",
        "time": "Mon Nov 08 21:36:55 2021 +0400"
      },
      "message": "Installer: matrix with hydra maester to auto-register oauth2 client\n"
    },
    {
      "commit": "dd750802fc0efc8f0d799f3ab966f8f954a51a76",
      "tree": "992fd5504805c895b61c7d733599fbd7f0acb03a",
      "parents": [
        "f15d5a342e8c6a101f05392365164c5afefd811e"
      ],
      "author": {
        "name": "giolekva",
        "email": "giolekva@gmail.com",
        "time": "Sun Nov 07 13:24:21 2021 +0400"
      },
      "committer": {
        "name": "giolekva",
        "email": "giolekva@gmail.com",
        "time": "Sun Nov 07 13:24:21 2021 +0400"
      },
      "message": "Installer: core auth services\n"
    },
    {
      "commit": "788dc6eaff422ebf660a76bb1d384015931b7e8f",
      "tree": "0f2cf93ceffa8af92bb1fb100eec4d9a98002b80",
      "parents": [
        "c4e512fc30b4c2067fd4bacae882d9171936d2c8"
      ],
      "author": {
        "name": "giolekva",
        "email": "giolekva@gmail.com",
        "time": "Mon Oct 25 20:40:53 2021 +0400"
      },
      "committer": {
        "name": "giolekva",
        "email": "giolekva@gmail.com",
        "time": "Mon Oct 25 20:40:53 2021 +0400"
      },
      "message": "Auth: implement consent logic\n"
    },
    {
      "commit": "eb590282e20f318678c4d527e4234e871122ef61",
      "tree": "6b0e0de955d5608defeeb00961387624eee6a3ed",
      "parents": [
        "603e73ad0d4a919b989f3affae761611e215a404"
      ],
      "author": {
        "name": "giolekva",
        "email": "giolekva@gmail.com",
        "time": "Fri Oct 22 17:31:40 2021 +0400"
      },
      "committer": {
        "name": "giolekva",
        "email": "giolekva@gmail.com",
        "time": "Fri Oct 22 17:31:40 2021 +0400"
      },
      "message": "Auth: hydra deployment + basic integration with kratos/auth-ui flow\n"
    },
    {
      "commit": "603e73ad0d4a919b989f3affae761611e215a404",
      "tree": "6614b0633e9c01d37e54ad4dd78775ec05903078",
      "parents": [
        "7032d3c7941ba15908f9f9dd784743a7c51a7b96"
      ],
      "author": {
        "name": "giolekva",
        "email": "giolekva@gmail.com",
        "time": "Fri Oct 22 14:46:45 2021 +0400"
      },
      "committer": {
        "name": "giolekva",
        "email": "giolekva@gmail.com",
        "time": "Fri Oct 22 14:46:45 2021 +0400"
      },
      "message": "Auth: registration/login/logout/whoami\n"
    },
    {
      "commit": "7032d3c7941ba15908f9f9dd784743a7c51a7b96",
      "tree": "fab512f2629f1093fae47d7fe04e54d822b40435",
      "parents": [
        "4c2413b474a4222f49e443d55fa0412c894dcb9b"
      ],
      "author": {
        "name": "giolekva",
        "email": "giolekva@gmail.com",
        "time": "Fri Oct 22 14:46:31 2021 +0400"
      },
      "committer": {
        "name": "giolekva",
        "email": "giolekva@gmail.com",
        "time": "Fri Oct 22 14:46:31 2021 +0400"
      },
      "message": "Auth: ory/kratos deployment\n"
    }
  ]
}
