Jedyna obietnica Latent: nic nie zostaje nazwane bezpiecznym bez dowodu i nic nie zostaje usunięte bez drogi powrotu — Kosz dla plików, a zapisane polecenie ponownego pobrania dla dwóch rzeczy, których Kosz nie pomieści.
Każdy element, który śledzi Latent, nosi jedną z trzech plakietek mówiących, co się stanie, jeśli go usuniesz:
Trzy litery, trzy znaczenia — i nic więcej. Na ekranie nie ma czwartego stanu. Pamięć podręczna, o której katalog sądzi, że wraca, ale której nikt nie potwierdził dla twojego folderu, nie jest „pewnie w porządku”: jest I, bursztynowa, z blokadą — dopóki pomiar albo dokumentacja samego dostawcy nie zrobi z niej R. Litera mówi, co się stanie, gdy wiersz zniknie; kolor to powtarza — zielony znaczy, że Latent może działać na podstawie własnych dowodów, bursztynowy, że decyzja jest twoja, szary, że niczyja.
Gdzie stoi litera. Litery oceniają rzeczy, które znikają razem z usunięciem — pamięć podręczną, folder danych, pakiet, pakiet aplikacji wymieniony pod aplikacją. Jednostka wybierana do usunięcia (wiersz aplikacji w zakładce Aplikacje), nie ma litery; mają ją jej części. Wszystko, co jest tylko stanem — w użyciu, trzymane przez zależność, czekające w kwarantannie — jest zapisane szarym obok litery, nigdy jako czwarta litera.
„Bezpieczne do usunięcia” trzeba zdobyć, nigdy się tego nie zakłada. Latent używa czterech rodzajów dowodów, od najsilniejszego:
| Dowód | Co oznacza | Przykłady |
|---|---|---|
| Tożsamość w rejestrze | W chwili usuwania dokładnie ten artefakt nadal odpowiada w swoim rejestrze — porównywane są skróty, rewizje i nazwy plików, a nie same nazwy. | Modele Ollama, repozytoria Hugging Face, modele LM Studio |
| Zapisane pochodzenie | Własny indeks narzędzia zapisał, skąd pochodzi każdy wpis; masowe usunięcie przechodzi tylko wtedy, gdy wszystko prowadzi do publicznego źródła, które nadal to udostępnia. | Pamięć podręczna npm, moduły Gradle |
| Umowa dostawcy | Dostawca udostępnia własne polecenie czyszczenia — samo narzędzie deklaruje, że pamięć podręczna jest do wyrzucenia. Latent i tak używa Kosza, więc cofnięcie zostaje. | pip (pip cache purge), uv (uv cache clean) |
| Dokumentacja dostawcy | Dokumentacja lub kod źródłowy dostawcy mówi, że narzędzie pobiera to ponownie albo odbudowuje przy następnym użyciu — przeczytane na stronie dostawcy, nigdy na blogu ani z domysłu. Ręczna ponowna instalacja się nie liczy. | Pamięć skompilowanych modeli Core ML (Apple), wheel skompilowane przez pip, pamięć mediów Adobe, pakiety Android SDK, które Gradle pobiera sam |
| Obserwowany eksperyment | Folder zostaje odsunięty na bok, aplikacja uruchomiona ponownie, a Latent patrzy, czy wraca — po czym odkłada oryginał bajt w bajt. Kwarantanna robi to samo przez siedem dni dla wszystkiego, co odblokujesz. Każda obserwacja staje się zapisanym dowodem z datą. | Pamięci podręczne składników Codex, dołączone narzędzia LM Studio, środowisko agenta Claude Desktop; wszystko, co odblokujesz |
Niektóre foldery są oceniane po kawałku, a nie w całości: symbole urządzeń Xcode są R dla wersji, którą nadal uruchamia urządzenie sparowane z tym Macem, i I dla reszty; folder wag Keras jest R tylko wtedy, gdy każdy plik w nim jest wagą Keras Applications.
Gdy magazyn miesza zawartość, którą da się potwierdzić, z taką, której się nie da, Latent usuwa tylko potwierdzoną część i mówi dokładnie, co zachował i dlaczego. Własny fine-tune leżący obok pobranych modeli zawsze zostaje na miejscu.
Każdy wiersz I ma blokadę. Jej otwarcie to świadoma zgoda: wiersz da się zaznaczyć, usunięcie jest oznaczone w zapisie jako wymuszone, a arkusz potwierdzenia wyróżnia je na czerwono. Zgoda ma zakres — ponowny skan zamyka każdą otwartą blokadę. Latent nigdy nie otwiera blokady za ciebie, a podłączeni asystenci AI nie mogą jej otworzyć wcale. Wiersze P nie mają blokady do otwarcia: Latent w ogóle ich nie proponuje.
Bo liczą wszystko, co wygląda na pamięć podręczną. Liczba Latent jest celowo mniejsza: każdy bajt w niej ma dowód — odpowiedź rejestru, zapisane pochodzenie, umowę dostawcy albo zaobserwowane odtworzenie. Bajty bez dowodu są nadal pokazane; po prostu decyzja o nich należy do ciebie, z blokadą w twoich rękach.
Zakładka Latent to akcja jednym kliknięciem: przyciskiem jest samo logo, podczas pracy otacza je pierścień postępu, a po zakończeniu pojawia się suma zwolnionego miejsca. To, co usuwa, musi przejść dwa progi, a nie jeden: powrót musi być już udowodniony i element musi być tego rodzaju, że jego brak przejdzie niezauważony — pamięci podręczne pakietów, których dostawca ma własne polecenie czyszczenia, pamięci HTTP przeglądarek, magazyny miniatur. Wszystko, co trzeba by zdobywać od nowa (pobrane modele, toolchainy, zainstalowane wtyczki), zostaje poza Optymalizuj i czeka w zakładce Miejsce na świadome kliknięcie. To celowo ta sama lista dozwolonych, do której ograniczony jest podłączony asystent AI, więc jedno kliknięcie nigdy nie sięgnie dalej, niż wolno asystentowi.
Optymalizuj nigdy nie rusza niezweryfikowanych wierszy, twoich własnych plików ani chronionych ścieżek; nigdy nie otwiera za ciebie blokady; nigdy nie odinstalowuje aplikacji ani pakietów, nie wyładowuje modeli i nie opróżnia Kosza. Jeśli część celów jest otwarta przez działającą aplikację, Optymalizuj najpierw pyta — pokazuje listę blokujących aplikacji, a każda zostanie grzecznie zamknięta (pojawią się jej własne pytania o zapis) tylko wtedy, gdy zostawisz ją zaznaczoną; odznacz którąś, a jej pliki zostaną po prostu pominięte. Wszystko, co się przenosi, trafia do Kosza pod jednym zapisem cofania, a zabezpieczenia są sprawdzane ponownie w chwili usuwania. Arkusz potwierdzenia wymienia też to, co celowo zostaje nietknięte, więc liczba, którą widzisz, to minimum, a nie przechwałka.
Miejsce to jedna lista właścicieli — Xcode, Homebrew, Hugging Face, Chrome i tak dalej —
każdy z paskiem pokolorowanym według tego, co trzyma: zielony dla potwierdzonego R, bursztynowy dla I. Otwórz
właściciela, a jego wiersze pojawią się najpierw R, potem I, w każdej grupie od największego. Każdy wiersz pokazuje
literę, ścieżkę (folder domowy jako ~, pełna ścieżka po najechaniu) i
↗, który pokazuje go w Finderze. Pasek nagłówka właściciela ma ten sam
przełącznik ☐ R co góra listy — zaznacza potwierdzone wiersze tego właściciela i
nic więcej — oraz przycisk Odblokuj zablokowane poniżej (N)…, który otwiera każdą blokadę
pod nim jednym świadomym krokiem. Pod właścicielami są twoje własne foldery — Dokumenty,
Pobrane rzeczy, Zdjęcia — wymienione, nigdy nie zaznaczane z góry.
Pamięci podręczne to coś, o czym Latent może coś udowodnić; miejsce, które naprawdę należy do ciebie, wymaga innej umowy. Pod właścicielami-narzędziami Miejsce wymienia sześć rodzajów twoich własnych kandydatów, pod separatorem, który to mówi, a każdy z nich podlega tej samej zasadzie: wymienione, nigdy nie zaznaczane z góry, nigdy nieruszane przez Optymalizuj ani asystenta.
.dmg/.pkg,
które spełniły już swoje zadanie, w Pobranych rzeczach i na Biurku) oraz porzucone
częściowe pobrania.node_modules, target Rusta,
build/dist, środowiska wirtualne w folderach twoich projektów.
Rozpoznawane tylko obok znacznika projektu (package.json,
Cargo.toml, …), a środowisko wirtualne bez pliku requirements
pozostaje zablokowane — lista pakietów zniknęłaby razem z nim. Mają R, ale
odbudowa kosztuje czas, więc nigdy nie trafiają do Optymalizuj.Aplikacje mają osiem źródeł, każde w osobnej karcie: Aplikacje Mac, Homebrew, npm -g, Python (pip), Conda, Docker · Symulatory, Potwierdzenia .pkg i Pozostałości. Każdy wiersz oznaczający coś, co da się usunąć, nosi R, I lub P jak wiersz w Miejscu; sam wiersz aplikacji nie — to jednostka, którą wybierasz, a oceniane są jej części poniżej. Koło po lewej pokazuje aplikacje według rozmiaru, a pasek pod nim mówi, co wszystkie trzymają: najpierw same pakiety, potem to, co zostawiają, według liter.
Kliknij aplikację, aby zobaczyć każdy plik należący do jej identyfikatora pakietu — pakiet, pamięci podręczne, preferencje, kontenery, agenty uruchamiania — najpierw R, potem I, od największego. Sam pakiet jest wierszem I (odzyskanie aplikacji to ponowna instalacja, a to twoja sprawa). Foldery, które Miejsce już wymienia jako magazyny, są zwinięte w jeden wiersz Magazyny w zakładce Miejsce: z nazwami magazynów i jednym polem dla wszystkich. Latent zaznacza z góry tylko to, co potrafi przypisać z pewnością; dwa rodzaje wierszy nigdy nie są zaznaczane z góry:
Zaznaczenie pola samej aplikacji zaznacza wszystko pod nią — po jednym pytaniu, jeśli coś z tego zawiera twoje dane, a odpowiedź jest pamiętana do końca sesji. Odinstalowanie to jeden zapis: jedno cofnięcie przywraca całość. Jeśli macOS wymaga uprawnień administratora dla pakietu, Latent przekazuje zadanie Finderowi — zobaczysz standardowe okno uwierzytelniania. Potwierdzenia .pkg wymieniają pozostałości instalatorów w miejscach należących do administratora i niczego tam nie usuwają: pokazują, co zostało, uruchamiają deinstalator dostawcy, gdy potwierdzenie go wskazuje, a w przeciwnym razie pokazują pliki do samodzielnego usunięcia w Finderze. Pozostałości wymieniają dane, których aplikacji już nie ma — wszystkie są I i zaznaczasz je ty.
Docker trzyma obrazy, kontenery, wolumeny i pamięć podręczną kompilacji w jednym
nieprzejrzystym dysku maszyny wirtualnej, więc usunięcie na poziomie plików byłoby przywróceniem ustawień fabrycznych — Latent
wymienia ten dysk jako twoje dane i nigdy nie zaznacza go z góry. Zamiast tego panel
Dockera oferuje usuwanie pojedynczych elementów przez sam Docker: obrazu albo
pamięci podręcznej kompilacji. Takie usunięcie jest nieodwracalne — nie trafia do
Kosza i nie ma cofania — dlatego arkusz potwierdzenia mówi to
wprost, a Latent zapisuje wpis przed uruchomieniem
polecenia: co zniknęło, ile zajmowało i dokładną linię
docker pull, która to przywróci. Obrazy używane przez kontener
są odrzucane, a wolumeny nigdy nie są wymieniane — wolumin to czyjaś
baza danych.
Środowiska symulatora iOS działają tak samo i z tego samego powodu:
środowisko to podpisany obraz dysku Apple, zamontowany na żywo i śledzony we własnym
rejestrze Apple, więc usunąć go może tylko simctl. Ta sama umowa —
arkusz mówi, że tego nie da się cofnąć, zapis zachowuje
xcodebuild -downloadPlatform iOS, środowisko z uruchomionym
symulatorem jest odrzucane, a to dołączone do Xcode nigdy nie jest proponowane. Wiersze
mówią tymi samymi trzema literami co wszędzie: środowisko, które Apple może pobrać
ponownie, to R, to, które Apple oznacza jako nieusuwalne, to P, obraz z odniesieniem w rejestrze to
R, a osierocona warstwa to I. „W użyciu” to stan zapisany szarym obok
litery, a przycisk czeka, aż symulator lub kontener zniknie.
Cztery źródła zarządzają tym, co zainstalowały brew, npm -g,
pip --user i conda — rzeczami, które latami po cichu
się gromadzą. Dowiązania kega i rozrzucone pliki wheel sprawiają, że przeniesienie do Kosza
byłoby fikcją, więc usuwanie uruchamia własną deinstalację dostawcy, a zapis cofania zawiera
zamiast tego dokładne polecenie ponownej instalacji. Obowiązuje ta sama zasada dowodu: zanim cokolwiek zostanie
usunięte, Latent sprawdza, czy rejestr (formulae.brew.sh / npm / PyPI) nadal udostępnia
tę nazwę i wersję — brak odpowiedzi, brak usunięcia. Każdy wiersz pakietu ma literę: R, gdy
menedżer może go zainstalować ponownie; R, ale wstrzymane, gdy zależy od niego inny pakiet (zależne
są wymienione, a kliknięcie przenosi do nich); I, gdy nikt nie mógł tego potwierdzić
albo został przez ciebie przypięty; P, gdy to część samego menedżera — pip i setuptools,
node i npm, instalacja condy, wszystko poza twoim folderem domowym albo należące do innego
konta. Katalog użytkownika Pythona, którego interpreter zniknął (klasyczna
pozostałość ~/Library/Python/3.x), jest proponowany jako jedno przeniesienie całego folderu do Kosza
ze zwykłym cofaniem.
Żadnych przycisków „purge”, żadnych wskaźników zdrowia — macOS już kompresuje i stronicuje nieużywaną
pamięć, więc „zwalnianie RAM” zwykle oznacza płacenie za ponowne jej wczytanie. Prawdziwy problem to
zapomniana aplikacja trzymająca gigabajty, więc karta pamięci aplikacji wymienia twoje aplikacje według
faktycznego zużycia, z przyciskiem Zakończ, który działa dokładnie jak Cmd-Q: aplikacja wyświetla własne
pytanie o zapis i nic nigdy nie jest zabijane siłą. Procesy systemowe nigdy nie są wymieniane.
Zakładka pokazuje też, co robi pamięć zunifikowana
i które demony modeli (Ollama, LM Studio, llama.cpp, ComfyUI…) trzymają wagi
w pamięci. Każdy przycisk uruchamia własne polecenie dostawcy — ollama stop,
lms unload --all, /free ComfyUI, wyładowanie przez router llama.cpp —
więc modele po prostu wczytają się ponownie przy następnym użyciu. Latent nigdy niczego nie zabija siłą. Koło
pokazuje tylko twoje aplikacje; udział systemu, swap i kompresja są w małych pierścieniach
pod nim. Wykresy na żywo tutaj i w Przeglądzie zaczynają zbierać próbki w chwili otwarcia
Latent, więc po przejściu do zakładki widać historię, a nie pusty wykres.
Niektórym usunięciom proponowana jest bezpieczniejsza droga zamiast Kosza — 7-dniowa kwarantanna — ale tylko tam, gdzie strata byłaby nieprzejrzysta lub trudna do odwrócenia: elementy chronione i nieczytelne magazyny z „twoimi danymi”. Wszystko inne (niezweryfikowane pamięci podręczne, twoje własne wymienione pliki) trafia prosto do Kosza, gdzie wiersz w Odzyskiwaniu już opisuje ryzyko. To zalecenie, nigdy przymus. W tym okresie przywrócenie to jedno kliknięcie w zakładce Odzyskiwanie. Po jego upływie element przechodzi do Kosza — a Latent zapisuje, czy narzędzie, do którego należał, odtworzyło ścieżkę, budując dowód, którego twierdzenie wcześniej nie miało. Wolisz bezpośrednią drogę? Wybierz w arkuszu potwierdzenia przeniesienie prosto do Kosza; twoja decyzja wygrywa.
Wszystko, co może wrócić, jest w jednej sortowalnej tabeli, z datą usunięcia:
Zielone wiersze — z zapisanym poleceniem ponownego pobrania albo zweryfikowany magazyn, który narzędzie odbudowuje samo — można też opróżnić prosto z Odzyskiwania — jeden wiersz albo wszystkie naraz, po wyraźnym potwierdzeniu bez cofania — bo ich droga powrotu przetrwa bajty. Wiersze, które zniknęłyby na zawsze, nigdy nie dostają tego przycisku; ta decyzja należy do Findera.
Wiersze są pogrupowane według etapu — kwarantanna, Kosz, usunięte — od najnowszych, z datą wejścia elementu w każdy etap w kolumnie tego etapu; sortuj według nazwy, źródła lub rozmiaru, filtruj według etapu, szukaj po nazwie, źródle lub poleceniu. Każdy wiersz ma też literę, którą dostał w chwili usunięcia — R lub I — bo od niej zależy droga powrotu. Ta ostatnia grupa jest najważniejsza: zapis przetrwa Kosz, więc opróżnienie Kosza nie kosztuje cię niczego, czego nie da się świadomie odzyskać. Polecenia są uruchamiane tylko w wąskich, zweryfikowanych formach; wszystko inne jest pokazane do skopiowania.
Inne elementy w Koszu. To, co do Kosza włożył Finder — a nie Latent — jest wymienione pod osobnym nagłówkiem, tylko do odczytu, z przyciskiem Odłóż, który przywraca element w miejsce zapisane przez Findera, jeśli takie istnieje. Latent nigdy ich nie opróżnia ani nie usuwa; pozwala jedynie zobaczyć je obok własnych zapisów.
Latent przenosi rzeczy do Kosza i nigdy nie opróżnia go za twoimi plecami. Nie rusza niczego, czego sam tam nie włożył, i nie usuwa niczego, co nie ma drogi powrotu. Karta Kosza w Przeglądzie pokazuje, co jest w środku, a jeden przycisk otwiera go w Finderze.
Dwa miejsca proponują dokończenie sprawy. Odzyskiwanie opróżnia wiersze pojedynczo albo wszystkie bezpieczne naraz — gdzie „bezpieczne” znaczy, że wiersz nadal ma zapisane polecenie ponownego pobrania lub zweryfikowany dowód, że narzędzie go odbuduje. A Optymalizuj proponuje to zaraz po przebiegu, tylko dla tego przebiegu. Optymalizuj usuwa wyłącznie elementy potwierdzone jako bezpieczne, więc każdy przeniesiony przez nie wiersz sam się pobierze lub odbuduje; odsyłanie cię do Findera, by odzyskać miejsce, oznaczałoby, że aplikacja traci odwagę w sprawie decyzji, za którą już stanęła. Przycisk podaje liczbę i rozmiar i pyta raz.
Wszystko inne w Koszu — łącznie z tym, co wybrano ręcznie w zakładce Miejsce — zostaje do twojej oceny, w Odzyskiwaniu albo w Finderze.
Usuwane pliki trafiają do Kosza, nigdy prosto w niebyt, a każdy przebieg zapisuje zapis cofania, który przywraca dokładnie to, co zostało przeniesione. Środowiska symulatorów i obrazy Dockera są usuwane przez własne narzędzia, które nie mają Kosza — zanim znikną, zapisywane jest polecenie, które pobierze je ponownie. Zanim czyszczenie w Miejscu cokolwiek przeniesie, działają cztery zabezpieczenia: narzędzie, do którego to należy, nie działa, w celu nie ma działającego pliku binarnego, żaden plik w środku nie jest otwarty przez żaden proces i nic się nie zmieniło w ciągu ostatnich 10 minut. Zabezpieczenia są sprawdzane ponownie w chwili usuwania, a nie tylko przy planowaniu. Deinstalator w Aplikacjach ma własną parę — aplikacja nie może działać, a żaden plik w celu nie może być otwarty.
Latent zawiera serwer MCP, więc każdy asystent obsługujący MCP może odczytać obraz twojego dysku i zaproponować czyszczenie. Serwerem jest sam plik binarny aplikacji:
/Applications/Latent.app/Contents/MacOS/Latent --mode mcpLatent potrafi sam podłączyć się do każdego asystenta na tym Macu. Wklej to w Terminalu:
/Applications/Latent.app/Contents/MacOS/Latent --mode mcp-installZapisuje tylko tam, gdzie klient faktycznie jest: uruchamia własne mcp add klienta, jeśli ono istnieje (Claude Code, Codex, Gemini, Grok), a edytuje konfigurację JSON, jeśli nie (Cursor, Claude Desktop, VS Code, Windsurf). Edytowane konfiguracje JSON są najpierw kopiowane do .bak — klient z własnym CLI zachowuje własną konfigurację — i nie powstaje żadna konfiguracja dla klienta, którego nie masz. Klient, który już zna Latent, zostaje nietknięty. Dodaj --dry-run, aby zobaczyć, co by zrobił. Potem rozpocznij nową sesję w tym kliencie i zapytaj, co zapełnia twój dysk.
Albo podłącz jednego klienta samodzielnie:
claude mcp add latent -- /Applications/Latent.app/Contents/MacOS/Latent --mode mcpcodex mcp add latent -- /Applications/Latent.app/Contents/MacOS/Latent --mode mcpgemini mcp add latent /Applications/Latent.app/Contents/MacOS/Latent --mode mcpgrok mcp add latent /Applications/Latent.app/Contents/MacOS/Latent -- --mode mcp-- ma znaczenie: przekazuje --mode mcp do Latent, zamiast
pozwolić Grokowi uznać to za własną flagę. Grok może też sprawdzić swoją stronę
połączenia — grok mcp doctor mówi, czy serwer
się uruchamia, czy uzgadnianie się kończy i ile narzędzi znalazł.
Dodaj to w sekcji serwerów MCP klienta — ~/.cursor/mcp.json
dla Cursor, claude_desktop_config.json dla Claude Desktop,
.vscode/mcp.json dla VS Code (VS Code umieszcza to pod
"servers" zamiast "mcpServers"):
{
"mcpServers": {
"latent": {
"command": "/Applications/Latent.app/Contents/MacOS/Latent",
"args": ["--mode", "mcp"]
}
}
}Transport to zwykłe stdio — bez portu, bez demona, nic nie musi stale działać;
klient uruchamia serwer na żądanie. Obsługiwane są obie generacje
protokołu: obecna (2026-07-28, z server/discover i
wersją w każdym żądaniu) oraz starsze uzgadnianie, więc połączy się każdy klient od 2024 roku.
Serwer udostępnia sześć narzędzi i nigdy nie wywołujesz ich po nazwie — pytasz własnymi słowami, a asystent sam wybiera:
latent_overview — „gdzie podziało się miejsce na dysku?”
Sumy według właściciela i poziomu.latent_items — „co powyżej 500 MB mogę wyczyścić?”
Pojedyncze elementy z rozmiarem, poziomem i dowodem.latent_clean — „wyczyść pamięci podręczne pobrań pip
i npm”. To narzędzie przenosi rzeczy do Kosza i
przyjmuje klucze elementów, które asystent dostał z latent_items —
nigdy folder wspomniany mimochodem.latent_free — „a teraz naprawdę oddaj mi
miejsce”. Opróżnia z Kosza tylko to, co włożył tam Latent, więc
liczba na dysku się zmienia. Tego nie da się cofnąć, a panel wymienia
wszystko, co nie wróci, zanim to zatwierdzisz.latent_duplicates — „czy mam zduplikowane wagi
modeli?”latent_memory — „co teraz trzyma
RAM?” Tylko odczyt; zamykanie aplikacji nigdy nie należy do
asystenta.Większość tego, co zapełnia dysk programisty, nie jest niebezpieczna do usunięcia. Jest tylko kosztowna do odzyskania, a to, jaki koszt zaakceptujesz, to pytanie, na które nikt poza tobą nie odpowie. Dlatego każdy wiersz czytany przez asystenta ma poziom, a asystent powinien pokazać ci cztery sumy, zanim cokolwiek zaproponuje:
Mówisz, jak daleko iść, asystent przekazuje tę liczbę dalej, a plan, który otrzymuje z powrotem, wymienia każdy wiersz z jego poziomem, więc zanim się zgodzisz, możesz sprawdzić, czy trzymał się twojego wyboru. Nie może sam podnieść pułapu: 3 to najdalej, gdzie sięga serwer, o cokolwiek by prosił.
Asystent widzi ścieżki, rozmiary, poziomy i etykiety dowodów — nigdy zawartość plików. Ale ścieżka to informacja: jeśli twój asystent działa w chmurze, nazwy folderów w twoim katalogu domowym trafiają do niego, tak samo jak każdy plik wklejony do czatu. Lokalny model trzyma je na komputerze. Sam Latent niczego nigdzie nie wysyła; odpowiada klientowi, który go uruchomił, przez potok, a ten klient decyduje, dokąd trafi odpowiedź.
Uprawnienia asystenta są ściśle mniejsze niż twoje: domyślnie może ruszać tylko zweryfikowane elementy R, tę samą listę dozwolonych co Optymalizuj jednym kliknięciem, i idzie dalej tylko wtedy, gdy powiesz, jak daleko (zobacz Jak daleko iść). Jedna zasada jest bezwzględna: asystent nie może usunąć niczego, czego ci nie pokazał i na co nie było twojej zgody. Sam Latent decyduje, których elementów dotyczy prośba, przekazuje asystentowi dokładnie tę listę, a potem działa tylko na tej liście: raz, w ciągu kilku minut, odrzucając każdy element, który zmienił się w międzyczasie. Brak odpowiedzi oznacza brak usunięcia. Asystenci nigdy nie otwierają blokady, nigdy nie sięgają po twoje własne pliki i nigdy nie widzą zawartości plików — tylko rozmiary, ścieżki i etykiety dowodów. Każdy element, którego asystent nie może wziąć, ma powód zapisany na samej liście — niepotwierdzone, odbudowa kosztuje sporo czasu, twoje własne pliki, chronione — więc nigdy nie musi zgadywać, a przegląd podaje zarówno liczbę, którą może przenieść, jak i większą sumę potwierdzonych R, którą pokazuje aplikacja.
Zgoda zapada więc tam, gdzie już jesteś: w rozmowie. Latent zapisuje dokładnie, co by zabrał — element, rozmiar, poziom — a asystent czyta ci tę listę i czeka. Powiedz nie albo nic nie mów, a nic się nie przeniesie: plan sam wygasa po kilku minutach i listę trzeba przygotować od nowa.
Usunięcie zaproponowane przez asystenta jest usunięciem jak każde inne: trafia do Kosza, zapisuje ten sam zapis cofania i pojawia się w zakładce Odzyskiwanie z tym samym powrotem jednym kliknięciem. To, że prośba przyszła od asystenta, w niczym nie utrudnia jej odwrócenia.
Latent bez licencji to pełnoprawna przeglądarka: skanuj, ile chcesz, oglądaj koła i pierścienie, śledź wzrost w czasie, czytaj dziennik. Nic nie wygasa. Licencja odblokowuje usuwanie plików — a odzyskiwanie (cofanie, przywracanie z kwarantanny) zawsze działa tak czy inaczej, bo jedyne, czego ta aplikacja nigdy nie zrobi, to wziąć twoich plików jako zakładników.
Pasek menu → Latent → Wprowadź licencję…, wklej klucz, gotowe. Jeden klucz obejmuje więcej niż jednego Maca (klucz beta aktywuje się na maksymalnie 2). Skanowanie nigdy nie wymagało klucza; usuwanie odblokowuje się w chwili, gdy klucz trafi do aplikacji. Bez konta, bez e-maila, bez logowania gdziekolwiek. Pod spodem klucz jest wymieniany na token licencji podpisany przez serwer dla tego Maca; aplikacja sama weryfikuje podpis i odświeża token przy uruchomieniu, więc skopiowany plik ustawień nie odblokuje drugiego Maca, a Mac offline działa tygodniami, zanim poprosi o ponowny kontakt z serwerem. Bez licencji każdy arkusz potwierdzenia nadal pokazuje, co by zrobił, i zamiast przycisku proponuje Kup licencję….
Kupiony klucz aktywuje się na maksymalnie 3 Makach. Jeśli sprzedajesz albo wycofujesz któregoś, otwórz na nim Latent → Wprowadź licencję… i naciśnij Zwolnij — miejsce od razu wraca do twojego klucza i możesz użyć go gdzie indziej. Nic na tym Macu nie jest usuwane i w każdej chwili możesz aktywować go ponownie.
Jeśli zakup zostanie zwrócony lub obciążenie cofnięte, klucz przestaje działać dla usuwania przy następnym uruchomieniu aplikacji. Odzyskiwanie nigdy nie przestaje działać. Cofanie, przywracanie z kwarantanny i Odłóż są całkowicie poza licencją — zwrot może odebrać produkt, ale nigdy nie zostawi twoich plików na lodzie.
Latent jest podpisany certyfikatem Developer ID i notaryzowany przez Apple, a bilet jest dołączony do obrazu dysku — macOS sprawdza go przy pierwszym otwarciu aplikacji, nawet offline. Gdyby plik został zmieniony gdziekolwiek między naszą kompilacją a twoim Makiem, w ogóle by się nie otworzył.
Aby sprawdzić to samodzielnie, po przeniesieniu aplikacji do folderu Aplikacje:
spctl -a -vv /Applications/Latent.appaccepted
source=Notarized Developer ID
origin=Developer ID Application: FatTail Labs (BUS4S7XFQV)
Identyfikator zespołu BUS4S7XFQV jest nasz i nie da się go podrobić; ta linia daje to, czego nie dałaby suma kontrolna na tej stronie, bo każdy, kto mógłby podmienić plik do pobrania, mógłby podmienić też sumę obok niego.
Aktualizacje przechodzą ten sam test. Zanim cokolwiek zastąpi, Latent weryfikuje podpis pobranego pakietu, sprawdza identyfikator zespołu i pyta Gatekeepera — niepowodzenie któregokolwiek z tych kroków kończy aktualizację i zostawia kopię, którą masz.
Latent to jeden pakiet aplikacji i jeden folder. Aby go usunąć, zakończ Latent — ikona na pasku menu zniknie razem z nim — i przeciągnij Latent.app do Kosza. Nie instaluje żadnego procesu pomocniczego, rzeczy otwieranej podczas logowania ani rozszerzenia jądra i nie przechowuje żadnego hasła.
Twoje zapisy są w ~/.latent: zapisy cofania, folder kwarantanny (elementy wciąż w okresie obserwacji), lista wykluczeń i dziennik aktywności. Zostaw go, jeśli możesz zainstalować aplikację ponownie — to są drogi powrotu. Usuń go dopiero, gdy kończysz na dobre: wszystko, co jest jeszcze w kwarantannie, zniknie razem z nim, więc najpierw przywróć lub opróżnij te elementy w zakładce Odzyskiwanie.
Latent wymienia sam siebie w zakładce Aplikacje jako P — nigdy nie usuwa sam siebie od środka.
W aplikacji: Pomoc → Wyślij opinię…. Wysyła twoją wiadomość oraz wersję aplikacji i macOS; dziennik aktywności jest dołączany tylko wtedy, gdy zaznaczysz jego pole, a nazwa twojego folderu domowego jest wcześniej usuwana. Nic nigdy nie jest wysyłane w tle — wysyła tylko ten przycisk. Możesz też napisać na fattaillabs.ceo@gmail.com — czytamy wszystko.