Ostatnia aktualizacja: 20 października 2026

Prywatność

nodes to aplikacja jednej osoby, w zamkniętej becie. Ta strona mówi dokładnie, co opuszcza Twoje urządzenie, co go nie opuszcza, kto jeszcze ma z tym styczność i jak wyłączyć to, co jest opcjonalne. Napisana jest po to, żeby ją przeczytać, a nie przetrwać — jeśli coś tu jest niejasne, to błąd tej strony.

Krótko

Co zostaje na Twoim urządzeniu

Na komputerze i telefonie cała kolekcja leży w pliku SQLite na Twojej maszynie — po jednym na zalogowane konto. Nauka, edycja, import, graf wiedzy i planowanie powtórek działają lokalnie i offline. Kilka rzeczy nie wychodzi stąd nigdy:

Co trafia do chmury przy synchronizacji

Na komputerze i telefonie synchronizacja jest ręczna — dzieje się wtedy, gdy naciśniesz przycisk. Klient webowy pod adresem /app/ działa inaczej: nie ma lokalnej bazy, więc czyta i zapisuje kopię w chmurze bezpośrednio, a powtórki zrobione tam zapisują się na bieżąco.

Co jest wysyłane — wszystko pod Twoim kontem:

Ten ostatni punkt zasługuje na szczegół: magazyn obrazków może odczytać każdy, kto zna 256-bitową ścieżkę, a ścieżka nie zawiera ani nazwy pliku, ani nazwy talii, ani identyfikatora konta. Mapę, z której te ścieżki powstają, może odczytać wyłącznie Twoje konto. To nie jest sejf — to magazyn, w którym znalezienie Twojego obrazka wymaga wcześniejszej znajomości jego dokładnej zawartości.

Diagnostyka w trakcie bety

Aplikacja nie miała żadnego sposobu, żeby zobaczyć awarię. Osoba testująca, której ekran zrobił się czerwony, nie zostawiała po sobie niczego — a to kiepski sposób prowadzenia bety. Dlatego aplikacja zgłasza teraz dwie rzeczy. Obie obejmuje jeden przełącznik, domyślnie włączony, który aplikacja proponuje wyłączyć przy pierwszym uruchomieniu.

Statystyki użycia

Siedem nazw zdarzeń i ani jednej więcej — nazwę, której aplikacja nie zadeklarowała, baza odrzuca. Każde zdarzenie niesie liczby, flagi i ustalone etykiety; nigdy tekst, który wpisujesz:

Zdarzenia czekają w kolejce na Twoim urządzeniu i wysyłane są przy starcie aplikacji oraz po synchronizacji, więc offline nie wychodzi nic. Kolejka mieści najwyżej 500 pozycji i porzuca wszystko starsze niż 30 dni.

Zgłoszenia awarii

Kiedy coś rzuci wyjątkiem, aplikacja może wysłać komunikat błędu, ślad stosu, krótką ustaloną etykietę miejsca, wersję aplikacji i platformę. Adres IP, nazwa użytkownika i nazwa urządzenia są jawnie wyłączone, a pomiary wydajności nie są zbierane w ogóle.

Słowo „może” niesie tu sporo treści. Zgłaszanie awarii instaluje się wyłącznie w kompilacji zrobionej z kluczem raportującym, a żaden skrypt budujący w publicznym repozytorium aplikacji takiego klucza nie podaje — łącznie z tym, który tworzy pliki do pobrania dla bety. Jeśli więc nie masz specjalnie przygotowanej kopii, moduł zgłaszania awarii nie jest u Ciebie po prostu wyłączony: nigdy nie został zainstalowany i żadne zgłoszenie nie opuściło Twojego urządzenia. Statystyki użycia to osobna sprawa i to ich nie dotyczy.

Dwie rzeczy, które aplikacja formułuje odrobinę za mocno

„Anonimowe” nie jest do końca trafne. Zgłoszenia i zdarzenia niosą identyfikator Twojego konta — po to, żeby dało się odpowiedzieć na pytanie „ta sama osoba wciąż trafia na ten sam błąd”. Nie niosą imienia, adresu e-mail ani adresu zamieszkania, ale są powiązane z kontem, a uczciwe słowo na to brzmi „pseudonimowe”, nie „anonimowe”. Napis w aplikacji zostanie poprawiony tak, żeby zgadzał się z tą stroną.

„Karty nigdy nie opuszczają urządzenia” to obietnica o zamiarze plus sufit. Żadne zdarzenie ani zgłoszenie awarii nie jest pomyślane tak, by nieść treść karty, a zamknięta lista powyżej to wszystko, co jest wysyłane. Ale parser, który zakrztusi się źle sformowaną kartą, potrafi zacytować jej fragment we własnym komunikacie błędu. Dlatego każde pole z dowolnym tekstem w zgłoszeniu awarii jest przycinane do 240 znaków przed wysłaniem. To zamienia „cała notatka ląduje w raporcie o błędzie” w „może wylądować fragment” — co jest realną różnicą i czymś mniejszym niż obietnica absolutna. Czytaj to więc tak: treść kart nigdy nie jest wysyłana celowo i nie może zostać wysłana w całości.

Jak to wyłączyć

Ustawienia → Diagnostyka → pierwszy przełącznik. Statystyki przestają być zapisywane w chwili, gdy go przestawisz, a to, co już czeka w kolejce, zostaje na Twoim urządzeniu i nie zostaje wysłane. Zgłaszanie awarii wyłącza się przy następnym uruchomieniu aplikacji, bo instaluje się zanim narysowany zostanie pierwszy ekran.

Diagnostyka działa tylko na komputerze i telefonie. Klient webowy pod /app/ nie zbiera ani awarii, ani statystyk.

Funkcje AI i Twój własny klucz

Czat o karcie, generowanie kart z tekstu i „inne ujęcia” istniejącej karty wysyłają tekst do API Gemini firmy Google. Tym tekstem jest to, czego dana funkcja dotyczy: wklejony fragment albo karta, o którą pytasz. Te funkcje nie robią zupełnie nic, dopóki nie wpiszesz w Ustawieniach własnego klucza API do Gemini, a klucz trzymany jest wyłącznie na Twoim urządzeniu. Jeśli nigdy go nie wpiszesz, aplikacja nie wyśle do Google nic. Z Nodes Plus mogą też działać na kredytach AI, a wtedy tekst trafia do Anthropic, nie do Google (niżej).

Gdy tworzysz fiszki z fragmentu zaznaczonego w książce z Biblioteki, ten fragment jest wysyłany dokładnie tak jak wklejony tekst, i tylko on: nigdy reszta książki, nazwa jej pliku ani strona, z której pochodzi. Sama książka nadal nigdy nie opuszcza Twojego urządzenia.

Gdy tworzysz fiszki z obszaru, który przeciągasz po rysunku, tabeli lub zeskanowanej stronie, wysyłane są też obrazy zaznaczone w książce: obraz samego tego prostokąta, wyrenderowany na Twoim urządzeniu (najwyżej 3 MB), razem z tekstem wydrukowanym w odległości około pół cala od niego, jeśli strona go ma. Nic więcej ze strony i nic z reszty książki nie wychodzi. Model ma opisać słowami, co pokazuje obraz, i zachować go na fiszkach, które go używają. Te fiszki niosą potem obraz jak zwykły obraz fiszki, więc jest zapisany razem z nimi i synchronizowany jak każdy obraz fiszki (patrz Obrazki z kart wyżej); książka nadal nie. Zapis generatora przechowuje tekst modelu i liczbę pokazanych obrazów, nigdy sam obraz.

Jeśli karta, którą wysyłasz do „Popraw fiszkę” („Więcej ujęć”, „Podziel fiszkę” albo „Napisz od nowa”), zawiera obrazy, one również trafiają do Gemini razem z tekstem karty — najwyżej cztery na kartę, każdy poniżej 3 MB, odczytane z Twojego urządzenia. Model ma opisać w nowych kartach, co pokazuje każdy obraz, i zachować go na nich. Obrazy nie są nigdzie zapisywane w tym celu: opisany wyżej zapis generatora przechowuje tekst modelu i liczbę pokazanych mu obrazów, nigdy same obrazy.

„Popraw fiszkę” ma też opcjonalne pole, w którym możesz napisać, dlaczego fiszka nie zostaje Ci w pamięci. Jeśli coś w nim wpiszesz, ta notatka trafia do Gemini razem z fiszką i wskazuje, nad czym mają pracować nowe fiszki. Nie jest nigdzie zapisywana: zapis generatora przechowuje tylko informację, czy notatka była, nigdy jej treść.

To, co Google robi z tym tekstem, regulują warunki Google dla klucza, którego używasz — nie ta strona.

Z Nodes Plus sprawdzanie fiszek z generatora działa na większym modelu w chmurze: Clef w Cloudflare Workers AI. Dla każdej fiszki, którą napisze generator, wysyłamy jej pytanie, odpowiedź i fragment, który model dla niej zacytował — nie resztę Twojego tekstu — i dostajemy z powrotem jedną liczbę. Nasz serwer tylko przekazuje ten tekst i nie zapisuje go w logach. Żeby pilnować dziennego limitu, zapisuje dla każdego dnia, ile fiszek sprawdziłeś i ile tokenów to zajęło, nigdy sam tekst. Bez Plus nic nie jest wysyłane; używany jest wtedy moduł sprawdzający na Twoim komputerze, jeśli go pobrałeś. To, co Cloudflare robi z tym tekstem, regulują warunki Cloudflare dla Workers AI.

Nodes Plus obejmuje też kredyty AI, dzięki którym funkcje AI działają bez własnego klucza Gemini. Gdy funkcja korzysta z tych kredytów (a nie z Twojego klucza — wybierasz to w Preferencjach), ten sam tekst, który trafiłby do Gemini, trafia przez nasz serwer do Claude API firmy Anthropic: fragment lub fiszka, nad którą pracujesz, obrazy z fiszki lub obszar zaznaczony w książce i ewentualna notatka. Anthropic przetwarza go w naszym imieniu na podstawie swojej umowy powierzenia, która obejmuje przekazanie danych do Stanów Zjednoczonych. Nasz serwer tylko przekazuje tekst i niczego z niego nie zapisuje. Żeby pilnować miesięcznego przydziału, zapisuje dziennie liczbę wywołań, zużyte tokeny i ich koszt — nigdy tekst.

Prezentacja na stronie głównej

Na stronie głównej działa kopia aplikacji, którą można wyklikać. Liczymy wyłącznie to, jak daleko docierają odwiedzający: ile osób otworzyło każdą z trzech prezentacji, ile kart odpowiedziano i ile osób doszło do końca. To są dzienne sumy i nic poza tym — żadnego ciasteczka, żadnego identyfikatora, żadnego adresu IP, żadnego odcisku przeglądarki, żadnego zapisu pojedynczej wizyty. Z tych liczb nie da się odczytać, czy dwie z nich pochodzą od tej samej osoby — my też tego nie wiemy. To nasz własny licznik na naszej własnej domenie; na stronie nie ma skryptu analitycznego podmiotu trzeciego.

Formularz zaproszenia na stronie głównej

„Poproś o zaproszenie” zapisuje wpisany adres e-mail oraz — jeśli wcześniej otwarto jedną z tych trzech prezentacji — którą z nich. Nic poza tym: żadnego imienia, żadnego ciasteczka, żadnego zapisu tego, co robisz na stronie. Zostanie użyty raz, żeby wysłać Ci zaproszenie. Klucz, którego używa strona, może dopisać wiersz do tej listy i nie może jej odczytać.

Kto to przetwarza i gdzie

Nie ma na tej liście sieci reklamowej, piksela śledzącego, nagrywarki sesji ani brokera danych.

Usuwanie

Karta albo talia — usuń ją w aplikacji. Przy następnej synchronizacji znika też z chmury, a nie tylko przestaje być widoczna.

Konto i wszystko, co się w nim znajduje — nie ma jeszcze przycisku, który zrobi to sam; jest na liście. Zanim powstanie, wystarczy poprosić i zostanie to zrobione ręcznie: konto i każdy przypisany do niego wiersz w bazie, czyli Twoja kolekcja, historia i zdarzenia użycia. Zgłoszenia awarii leżą w osobnym systemie i kasowane są oddzielnie, w ramach tej samej prośby. Napisz na privacy@nodes.cards.

Jedna rzecz, do której usunięcie nie sięga, bo sięgnąć nie może: odduplikowane bajty obrazków opisane wyżej. Mapa z obrazka na Twojej karcie do jego bajtów należy do Ciebie i znika razem z kontem. Same bajty zostają we wspólnym magazynie, już bez odniesienia — leżą pod ścieżką, która jest skrótem samego pliku, więc nie da się do nich dotrzeć, nie mając wcześniej tego pliku, a ich usunięcie zepsułoby każde inne konto, które akurat ma ten sam obrazek.

Usunięcie aplikacji bez usunięcia konta zostawia kopię w chmurze — o to w kopii w chmurze chodzi, i dlatego właśnie istnieje prośba powyżej.

Zmiany

To jest beta i ta strona będzie się z nią zmieniać. Leży w publicznym repozytorium aplikacji, więc każda jej zmiana to datowany, czytelny commit, a nie ciche podmienienie. Data na górze to ta ostatnia.