LOGOWANIE panel/00-logowanie · #/logowanie · ekran przed ramą E-mail i hasło · Google pod spodem
app.ninerdeck.pl/#/logowanie
ODMOWA panel/00-logowanie · 401 invalid_credentials Ton czerwony · spróbuj jeszcze raz · pola zostają
app.ninerdeck.pl/#/logowanie
NIE PAMIĘTAM HASŁA panel/00-logowanie · #/logowanie/haslo · link z e-maila Jedno pole · jedna odpowiedź · bez pola hasła
app.ninerdeck.pl/#/logowanie/haslo
ZAŁÓŻ KONTO panel/00-logowanie · #/logowanie/konto · link z e-maila Dwa pola · jedna odpowiedź · bez pola hasła · bez kodu klubu
app.ninerdeck.pl/#/logowanie/konto
Wszystkie stany ekranu
Zanim Google narysuje przycisk Formularz e-mail i hasło NIE CZEKA - jest znany lokalnie i stoi od pierwszej klatki (reguła „co znamy lokalnie, nie czeka"). Czeka wyłącznie przycisk Google: skrypt dostawcy jedzie z sieci, więc przez chwilę tego przycisku po prostu nie ma w drzewie. W jego miejscu stoi PLAMKA w jego geometrii (44 px, pigułka) - nigdy spinner i nigdy pustka. Bez niej karta skakałaby w chwili wjazdu przycisku.
Serwer sprawdza poświadczenie Między „Zaloguj się" a wejściem jest realna chwila: serwer liczy skrót hasła (albo sprawdza podpis tokenu Google). Zdanie stoi POD przyciskiem, którego dotyczy, i mówi, co się dzieje - to nie jest blokada, tylko postęp czynności, o którą człowiek właśnie poprosił. Przy Google to samo zdanie stoi pod przyciskiem Google.
Link wysłany - potwierdzenie Drugi stan okna „Nie pamiętam hasła": baner ok nad kartą, adres do odczytu, powrót do logowania. Zdanie jest ZAWSZE to samo - także dla adresu, którego serwer nie zna, i po przekroczeniu limitu wysyłek - bo inna odpowiedź wyliczałaby konta (§5.4). Żadnego pola hasła ani kodu w panelu: hasło ustawia strona /haslo/ z linku, a ta karta tylko wysyła i potwierdza.
Link wysłany - rejestracja (potwierdzenie) Drugi stan okna „Załóż konto" (issue #180): baner ok w trybie WARUNKOWYM, oba pola do odczytu (literówkę w adresie widać TERAZ), powrót do logowania. Zdanie jest ZAWSZE to samo - adres wolny dostaje list „załóż hasło do nowego konta", adres zajęty zwykły list resetu ze zdaniem „masz już konto"; także po przekroczeniu limitu wysyłek (3 na adres w 15 min, wspólny z telefonem) - inaczej formularz wyliczałby konta (§8 pkt 2). Inne zdanie pada wyłącznie przy awarii sieci („nie wiem, czy wysłano") i przy odmowie KSZTAŁTU danych (400 - o koncie nie mówi nic). „Wyślij ponownie" NIE MA: kto musi, wraca i wysyła znów świadomie.
Cztery odmowy, cztery zdania Hasła wróciły w 2.1.0 (2026-09-16) jako druga metoda, więc wróciła też odmowa POŚWIADCZEŃ - i jest JEDNA na trzy stany: login nieznany, osoba bez hasła, złe hasło dają to samo zdanie i ten sam czas odpowiedzi (serwer liczy skrót także dla nieznanego adresu), żeby formularz nie wyliczał kont. Ton czerwony: warto spróbować jeszcze raz. Za dużo prób to bursztyn z CZASEM w zdaniu - „za chwilę" nie mówi, czy chwila to minuta, czy godzina. Pozostałe odmowy dotyczą KONTA, które serwer już rozpoznał (Googlem albo hasłem), i każda ma inną drogę wyjścia, więc każda ma własne zdanie; ton bursztynowy znaczy „idź po administratora". Konto wyłączone mówi się WPROST: tożsamość jest już dowiedziona, więc nie ma czego ukrywać. Dawne 403 not_registered zniknęło razem z tokenem osoby (2026-09-10): osoba bez klubu to dla panelu no_panel_access.
401 invalid_credentials - login nieznany / bez hasła / złe hasło: jedno zdanie, pola zostają 429 too_many_attempts - 10 prób na login albo 30 na adres IP w 15 min; czas z `retryAfterSec` 403 no_membership - konto jest, ale nie ma aktywnego członkostwa w żadnym klubie (osoba po pierwszym logowaniu, ze zgłoszeniem w kolejce, odrzucona albo wyłączona wszędzie - od #180 bywa nią ktoś, kto przed chwilą założył konto W TYM panelu). Od issue #216 („panel dla wszystkich", 2026-09-25) to JEDYNA odmowa dla rozpoznanego konta: członek z pustym zakresem wchodzi (Moje konto i Kalendarz), więc dawne `no_panel_access` i zdanie „dostęp nadaje administrator" zniknęły 401 account_disabled - konto wyłączone; próbowanie ponownie nic nie zmieni
Awarie - ton czerwony, bo warto spróbować jeszcze raz Trzy różne miejsca, w których coś może paść, i trzy różne zdania: token Google, serwer i skrypt dostawcy. Awaria skryptu Google NIE ODBIERA drogi hasłem - formularz stoi wyżej i działa; znika sam przycisk pod separatorem. Przy nieznanej odmowie KOD ZOSTAJE W ZDANIU - to jedyna rzecz, którą człowiek może przekazać dalej, a „coś poszło nie tak" nie pomaga nikomu.
401 - podpisu tokenu Google nie da się potwierdzić serwer nie odpowiada (nie ma statusu - `fetch` rzucił, zanim cokolwiek wróciło) skrypt Google nie dojechał - przycisku nie będzie wcale; hasło działa dalej odmowa nieznana - kod w zdaniu
Czego na tym ekranie NIE MA Lista jest częścią specyfikacji, bo każda z tych rzeczy tu kiedyś stała albo mogłaby stanąć: wykład o uprawnieniach przed zalogowaniem, zdanie „konta zakłada administrator" (opis budowy produktu pokazywany komuś, kto chce się zalogować), kod jednorazowy do przepisania (wycięty przeglądem właściciela 2026-09-16 - dublował link innym kształtem), pole na nowe hasło (ustawia się je na stronie z linku, nie tu), hasło tymczasowe od administratora (link nigdy nie daje sesji - sesję daje dopiero hasło, które zna wyłącznie jego właściciel), kod pilota jako login (jest jedyny w klubie, nie na serwerze, a panel nie zna klubu przed zalogowaniem), wymogi co do znaków i wskaźnik siły (D4 - hasła tu się podaje, a nie ustawia). Natomiast pola e-mail i hasła oraz „Nie pamiętam hasła" SĄ - od 2.1.0 (2026-09-16); od 2026-09-04 do tego dnia nie było ich wcale (haseł nie było w produkcie), a wróciły z powodu, którego tamta decyzja nie przewidziała: wspólnego tabletu w samolocie. „Załóż konto" JEST od 2026-09-24 (issue #180) - do tego dnia tę listę otwierała „samodzielna rejestracja z formularzem" (osoba powstawała przy pierwszym logowaniu Googlem, z ręki superadministratora albo w APLIKACJI na 00H), a właściciel zakładający konta testowe musiał sięgać po telefon. Mechanizm jest ten sam, co przy „Nie pamiętam hasła", i niczego w klubie nie omija; kodu klubu w panelu nadal NIE MA - do klubu wchodzi się z aplikacji (00E) i to jest granica tamtego zgłoszenia, nie przeoczenie.