Changelog

Kolofon · 3 września 2026

0.11.16 — konta na odnośnik, kafelek jako jednostka listy i wpisy wychodzące

wieczór — trzy rzeczy z jednego dnia, które długo stały w instancji, zanim weszły do silnika

0.11.16 — konta na odnośnik, kafelek jako jednostka listy i wpisy wychodzące

Tekst: Kolofon

To wydanie jest większe niż zwykle, bo jego kod stał przez cały dzień w instancji prowadzącej, wdrożony na produkcji, zanim wszedł do repo silnika. Tak miało być: konta i poczta to rzeczy, które trzeba sprawdzić na żywym adresie, a nie w kontenerze. Numer dostają dopiero teraz.

Pierwsza rzecz: konto czytelnika. Nie ma hasła. Czytelnik podaje adres, przychodzi na niego jednorazowy odnośnik ważny trzydzieści minut, kliknięcie loguje i — jeśli konta nie było — zakłada je. Potwierdzenie adresu to i tak jest odnośnik pocztą; hasło dokładałoby do tego przechowywanie skrótów, ścieżkę resetu i coś, co da się wykraść. W bazie nie ma tokenu, jest tylko jego skrót. Odpowiedź na prośbę o odnośnik jest identyczna dla adresu istniejącego i nieistniejącego. Konto to adres: jedna osoba może mieć ich dowolnie wiele i nic ich nie łączy, bo kluczem jest identyfikator, nie człowiek.

Konto potrzebuje poczty, a poczta potrzebuje ochrony innej niż komentarze. Komentarz od bota czeka na moderację u autora, więc brak sekretu na workerze przepuszcza — instancja świeżo postawiona ma się dać przetestować. Wiadomość wysłana na dowolny podany adres wychodzi poza serwis i płaci za nią reputacja domeny. Dlatego przy wszystkim, co wysyła pocztę, sprawdzenie jest twarde: brak sekretu odmawia, a brak odpowiedzi od dostawcy liczy się jako test niezdany. Sprawdzenie idzie przed pierwszym zapytaniem do bazy.

Druga rzecz: lista. Do tej pory indeks serii i strumień miały każde własny układ karty, a siatka rosła od zawartości — dłuższy tytuł albo zdjęcie o innych proporcjach rozjeżdżały wiersz. Teraz jest jeden kafelek dla obu miejsc, o stałej wysokości w siatce; obraz jest w nim kadrem, nie reprodukcją, a liczba wierszy tekstu jest mierzona po wyrenderowaniu, nie zgadywana. Liczbę kolumn — jedną, dwie, trzy — wybiera czytelnik, a wybór idzie za nim: na koncie, jeśli jest, w przeglądarce, jeśli nie. W nagłówku stoi znak konta; dla zalogowanego widoczny także przy zerze wyróżnień, bo zero na koncie to informacja, a zero bez konta to nic.

Trzecia rzecz jest z innego porządku i powstała z pytania, które nie było techniczne: jak odesłać czytelnika do cudzego tekstu, nie udając, że jest nasz. Wpis dostał pole z adresem. Gdy jest ustawione, treść wpisu nie jest tekstem, tylko opisem cudzego tekstu — kilka zdań od redakcji, po co tam iść — a kafelek prowadzi wprost pod cudzy adres, w nowej karcie, z prawdziwym odnośnikiem bez znacznika, który każe wyszukiwarkom go nie liczyć. Odnośnik jest częścią tego, co się daje.

Cztery konsekwencje siedzą w kodzie, nie w konwencji. Kafelek wychodzący jest rozróżnialny trzema sygnałami naraz — inny kolor krawędzi i tła, domena docelowa w metryczce, słowo „na zewnątrz” — bo sam kolor nie jest sygnałem dla każdego. Wpis wychodzący nie wchodzi do kanału RSS ani nie budzi powiadomienia: na kanale stoi dystrybucja, która przepisuje pozycje w cudze posty jako treść serwisu, i cudzy tekst poszedłby pod naszą marką. Nie liczy czasu czytania i nie przyznaje wyróżnień, bo opis ma trzy zdania. Nie ma oceny, bo ocenialibyśmy własny opis. Własna strona wpisu zostaje — przez nią działa przełącznik języka — z notą, że to odesłanie, i wyjściem nad opisem i pod nim.

Jedno w tym wydaniu jest zobowiązaniem, nie funkcją. Odesłanie do żywego bloga może po roku prowadzić do czegoś innego niż to, co opisaliśmy. Wpis ma pole z datą ostatniego sprawdzenia, ale nic go jeszcze nie pilnuje. To jest dług zapisany na następny raz — razem z regułą, która nie jest kodem: opis mówi o tekście, nie o autorze.