diff --git a/.github/workflows/mirror.yml b/.github/workflows/mirror.yml
index 589c6e05..36aefb0e 100644
--- a/.github/workflows/mirror.yml
+++ b/.github/workflows/mirror.yml
@@ -3,7 +3,7 @@ name: Mirror to Codeberg
 on: [push, delete]
 
 jobs:
-  to_gitlab:
+  to_codeberg:
     if: github.repository_owner == 'neodb-social'
     runs-on: ubuntu-latest
     steps:
diff --git a/catalog/views.py b/catalog/views.py
index 44d7e01c..1c8345f2 100644
--- a/catalog/views.py
+++ b/catalog/views.py
@@ -1,7 +1,7 @@
 from django.contrib.auth.decorators import login_required
 from django.core.cache import cache
 from django.db.models import Count
-from django.http import Http404, JsonResponse
+from django.http import Http404, HttpResponse, JsonResponse
 from django.shortcuts import get_object_or_404, redirect, render
 from django.urls import reverse
 from django.utils import timezone
@@ -44,7 +44,7 @@ def retrieve_redirect(request, item_path, item_uuid):
     return redirect(f"/{item_path}/{item_uuid}", permanent=True)
 
 
-@require_http_methods(["GET"])
+@require_http_methods(["GET", "HEAD"])
 @xframe_options_exempt
 def embed(request, item_path, item_uuid):
     item = Item.get_by_url(item_uuid)
@@ -59,6 +59,8 @@ def embed(request, item_path, item_uuid):
         focus_item = get_object_or_404(
             Item, uid=get_uuid_or_404(request.GET.get("focus"))
         )
+    if request.method == "HEAD":
+        return HttpResponse()
     return render(
         request,
         "embed_" + item.class_name + ".html",
@@ -81,6 +83,8 @@ def retrieve(request, item_path, item_uuid):
         return redirect(item.merged_to_item.url)
     if not skipcheck and item.is_deleted:
         raise Http404(_("Item no longer exists"))
+    if request.method == "HEAD":
+        return HttpResponse()
     if request.headers.get("Accept", "").endswith("json"):
         return JsonResponse(item.ap_object)
     focus_item = None
diff --git a/journal/views/profile.py b/journal/views/profile.py
index 440d0932..af397c01 100644
--- a/journal/views/profile.py
+++ b/journal/views/profile.py
@@ -2,6 +2,7 @@ import datetime
 from urllib.parse import quote_plus
 
 from django.contrib.auth.decorators import login_required
+from django.http import HttpResponse
 from django.shortcuts import render
 from django.views.decorators.http import require_http_methods
 
@@ -17,9 +18,11 @@ from ..forms import *
 from ..models import *
 
 
-@require_http_methods(["GET"])
+@require_http_methods(["GET", "HEAD"])
 @profile_identity_required
 def profile(request: AuthedHttpRequest, user_name):
+    if request.method == "HEAD":
+        return HttpResponse()
     target = request.target_identity
     anonymous = not request.user.is_authenticated
     if anonymous and (not target.local or not target.anonymous_viewable):
diff --git a/neodb-takahe b/neodb-takahe
index b783d46e..1f8f9d1e 160000
--- a/neodb-takahe
+++ b/neodb-takahe
@@ -1 +1 @@
-Subproject commit b783d46e5858e6fc8919a0b022b835a06634314c
+Subproject commit 1f8f9d1e73eca349288db0d43708c8e205d1e338