Folge deinen Rivalen: Freunde und eine Freundesrangliste
Folge den Spielern, die du gern schlägst, sieh sie in einer eigenen Ranglisten-Registerkarte und verwalte alle über eine neue Freundesseite mit Spitznamensuche.

Kurz gesagt
opolyx macht mit Leuten mehr Spaß, die man wiedererkennt. Du kannst jetzt jedem Spieler folgen — tipp in seinem Profil auf Folgen oder finde ihn über den Spitznamen auf der neuen Freundesseite — und er taucht in einer Ranglisten-Registerkarte auf, in der nur du und die Leute stehen, denen du folgst.
Folgen ist einseitig, wie in den meisten sozialen Apps: Der andere muss dir nicht zurückfolgen, und es gibt nichts zu bestätigen. Eine Rangliste ist ohnehin eine öffentliche Reihung, jemandem zu folgen legt also nichts offen, was er nicht schon sichtbar gemacht hätte.
- Folgen und Entfolgen von jeder Profilseite aus mit einer einzigen Schaltfläche.
- Eine neue Freundesseite mit den Registerkarten „Folge ich“ und „Follower“ sowie einer Spitznamensuche, um Spieler zu finden.
- Eine Freundes-Registerkarte in der Rangliste reiht dich und alle, denen du folgst, nach XP.
- Follower- und Folge-ich-Zahlen erscheinen jetzt als Chips in jedem Profil.
Für technisch Neugierige
Migration 0033 fügt eine follows-Tabelle hinzu — eine gerichtete Kante (Folgender, Gefolgter) mit einem Primärschlüssel als Doppelungssperre, einer Prüfung gegen Selbstfolgen und kaskadierendem Löschen. Gelesen wird über zeilenbasierte Sicherheit auf die eigene Zeile (jede Seite kann ihre eigenen Kanten lesen); geschrieben wird über zwei auth.uid()-basierte Security-Definer-RPCs nach dem Vorbild von create_game.
-- follow_user / unfollow_user: idempotent, auth.uid()-scoped, security definer
-- 0031 grant lesson applied: default privileges grant EXECUTE to anon —
-- revoke from public, anon FIRST, then grant execute to authenticated only.Die Follower eines beliebigen Nutzers zu zählen wird durch genau diese Eigenzeilen-Sicherheit blockiert, deshalb fügt Migration 0034 get_follow_counts(p_user) hinzu — eine Security-Definer-Funktion, die Follower und Gefolgte zurückgibt. Weil Zählwerte unkritisch sind und Profile öffentlich lesbar (ein Profil wird auch für anonyme Besucher gerendert), ist sie an anon und authenticated vergeben — das Gegenteil der Schreib-RPCs aus 0033.
Die Abfrage der Freundesrangliste ist schlicht die Kennung des Betrachters, vereinigt mit allen, denen er folgt, gereiht nach globaler XP. Beide Migrationen wurden über die Supabase-Management-API auf die Produktionsdatenbank angewendet und geprüft (Rechte: authenticated ja / anon nein fürs Schreiben, anon ja fürs Zählen), bevor die Weboberfläche ausgeliefert wurde.
