Bubble [main]

Add subheadings to subspace index, if the list is long

8376bc1cb45b96a86bfa27450c1254ef931047dc
diff --git a/subspace.py b/subspace.py
index 5ac1c41..3389cd1 100644
--- a/subspace.py
+++ b/subspace.py
@@ -97,12 +97,27 @@ def make_subspaces_page(session):
             return f"{title} by {latest.poster_avatar} {latest.poster_name} ยท {age}\n"
         return ''
 
+    def sub_heading(sub):
+        i = sub.id[0].upper()
+        if i in string.digits or i in string.punctuation:
+            return '0-9'
+        if i in string.ascii_uppercase:
+            return i
+        return 'Other'
+
     if len(subs) == 0:
         page += 'No subspaces.\n'
 
     elif view_mode == 'name':
+        use_headings = len(subs) >= 50
+        last_heading = None
         page += f'## {LABELS[view_mode]}\n\n'
         for sub in subs:
+            if use_headings:
+                heading = sub_heading(sub)
+                if heading != last_heading:
+                    last_heading = heading
+                    page += f'\n### {heading}\n'
             page += sub_link(sub)
 
     elif view_mode == 'alpha' or view_mode == 'chrono':