diff --git a/lectures/templates/lectures/includes/lecture.html b/lectures/templates/lectures/includes/lecture.html
index eb8469b6427f770f0f359c57490f1deca99b37bd..97b6de33de243905b2c384cd306f4e97272d2039 100644
--- a/lectures/templates/lectures/includes/lecture.html
+++ b/lectures/templates/lectures/includes/lecture.html
@@ -18,11 +18,13 @@
                     {{ lecture.name }}
                 </h2>
 
-                <span class="flex gap-2 mb-4">
-                    <span>
-                        <i class="ico--clock mr-1"></i> {{ lecture.timestamp }}
+                {% if lecture.timestamp %}
+                    <span class="flex gap-2 mb-4">
+                        <span>
+                            <i class="ico--clock mr-1"></i> {{ lecture.timestamp }}
+                        </span>
                     </span>
-                </span>
+                {% endif %}
 
                 {% if lecture.description %}
                     <div class="prose max-w-none">
diff --git a/lectures/templates/lectures/view_lecture.html b/lectures/templates/lectures/view_lecture.html
index 28217eb76ea1777b84f14c8f7ffe7ac9d65ab705..06b71893afc41680276d86b2072e4fd84b25b9ef 100644
--- a/lectures/templates/lectures/view_lecture.html
+++ b/lectures/templates/lectures/view_lecture.html
@@ -55,15 +55,18 @@
     {% endif %}
 
     <div class="flex flex-col gap-2 my-4 py-4 border-y border-gray-200">
-        <div class="flex justify-between gap-2 text-lg text-gray-600">
-            <div class="flex gap-2 items-center">
-                <i class="ico--clock"></i>
-                <span>Datum konání</span>
-            </div>
-            <div>
-                {{ lecture.timestamp }}
+        {% if lecture.timestamp %}
+            <div class="flex justify-between gap-2 text-lg text-gray-600">
+                <div class="flex gap-2 items-center">
+                    <i class="ico--clock"></i>
+                    <span>Datum konání</span>
+                </div>
+                <div>
+                    {{ lecture.timestamp }}
+                </div>
             </div>
-        </div>
+        {% endif %}
+
         <div class="flex justify-between gap-2 text-lg text-gray-600">
             <div class="flex gap-2 items-center">
                 <i class="ico--users"></i>
diff --git a/lectures/views.py b/lectures/views.py
index c1961a545114126363a6da69f1cc0cee3c0138da..34cb3c39f99f0c82e1b29b9be52aa4ec07724e49 100644
--- a/lectures/views.py
+++ b/lectures/views.py
@@ -157,8 +157,11 @@ def view_group_lectures(request, group_id: int):
 
     past_lectures = (
         Lecture.objects.filter(
-            lecture_group_types__group=group,
-            timestamp__lt=timestamp_starting_separator,
+            models.Q(lecture_group_types__group=group)
+            & models.Q(
+                models.Q(timestamp__lt=timestamp_starting_separator)
+                | models.Q(timestamp__isnull=True)
+            )
         )
         .order_by("category")
         .all()
@@ -212,6 +215,9 @@ def view_group_lectures(request, group_id: int):
     has_next_timeline_years = False
 
     for lecture in all_lectures:
+        if lecture.timestamp is None:
+            continue
+
         if not has_previous_timeline_years and lecture.timestamp.year < current_year:
             has_previous_timeline_years = True
 
diff --git a/static_src/view_group_lectures.js b/static_src/view_group_lectures.js
index aa05271e51d2514cfb62ba47564d29f35b212d37..1f21a36b850f69a613816c60f62847fcfbf0109d 100644
--- a/static_src/view_group_lectures.js
+++ b/static_src/view_group_lectures.js
@@ -15,6 +15,37 @@ const showTimelineYear = () => {
     );
 }
 
+const assignOpenerListeners = () => {
+    $(".__lecture-category").on(
+        "click",
+        event => {
+            if (event.currentTarget.dataset.isOpen === 'true') {
+                $(event.currentTarget).
+                find(".__lecture-category-opener").
+                addClass("ico--chevron-down").
+                removeClass("ico--chevron-up")
+
+                event.currentTarget.dataset.isOpen = 'false'
+
+                $(event.currentTarget).
+                find(".__lecture-category-content").
+                addClass("hidden")
+            } else {
+                $(event.currentTarget).
+                find(".__lecture-category-opener").
+                removeClass("ico--chevron-down").
+                addClass("ico--chevron-up")
+
+                event.currentTarget.dataset.isOpen = 'true'
+
+                $(event.currentTarget).
+                find(".__lecture-category-content").
+                removeClass("hidden")
+            }
+        }
+    )
+}
+
 $(window).ready(
     () => {
         window.nextTimelineYear = () => {
@@ -27,32 +58,38 @@ $(window).ready(
             showTimelineYear();
         }
 
-        $(".__lecture-category").on(
+        assignOpenerListeners()
+
+        // Make sure our listeners exist
+        setInterval(
+            () => {
+                const currentUrl = window.location.href;
+
+                if (currentUrl != previousUrl) {
+                    // URL changed
+                    previousUrl = currentUrl;
+
+                    const params = new Proxy(
+                        new URLSearchParams(window.location.search), {
+                        get: (searchParams, prop) => searchParams.get(prop),
+                        }
+                    )
+
+                    if (
+                        params.view !== null
+                        && params.view === "recordings"
+                    ) {
+                        assignOpenerListeners()
+                    }
+                }
+            },
+            100
+        )
+
+        $(".switch__item").on(
             "click",
             event => {
-                if (event.currentTarget.dataset.isOpen === 'true') {
-                    $(event.currentTarget).
-                    find(".__lecture-category-opener").
-                    addClass("ico--chevron-down").
-                    removeClass("ico--chevron-up")
-
-                    event.currentTarget.dataset.isOpen = 'false'
-
-                    $(event.currentTarget).
-                    find(".__lecture-category-content").
-                    addClass("hidden")
-                } else {
-                    $(event.currentTarget).
-                    find(".__lecture-category-opener").
-                    removeClass("ico--chevron-down").
-                    addClass("ico--chevron-up")
-
-                    event.currentTarget.dataset.isOpen = 'true'
-
-                    $(event.currentTarget).
-                    find(".__lecture-category-content").
-                    removeClass("hidden")
-                }
+                assignOpenerListeners()
             }
         )
     }