Wyszukiwanie z operatorami w Reborn Task i Reborn Notes
10+ operatorów wyszukiwania - tag:, due:, folder:, is:overdue, has:link i więcej - plus boolean OR / AND / grupowanie. Ujednolicone pole, po stronie klienta, zero-knowledge.
Zarówno Reborn Task, jak i Reborn Notes mają już ujednolicone pole wyszukiwania, które łączy wyszukiwanie po tekście z operatorami strukturalnymi. Zwykłe słowa dopasowują się do tytułu jako podciąg; operatory pozwalają zawęzić wyniki po tagu, folderze, liście, datach, flagach i kilku innych wymiarach. Na to nakłada się kompozycja boolowska (OR, AND, grupowanie nawiasami, negacja grupy).
Całe dopasowywanie zachodzi po stronie klienta, na już rozszyfrowanych danych - operatory są przetwarzane tym samym, lokalnym torem co zwykły tekst. Serwer w żadnym z tych przypadków nie widzi zapytania ani wyników.
Ten wpis streszcza, co ta funkcja robi i jak ułożona jest składnia. Pełna gramatyka, włącznie z corner case’ami i regułami cudzysłowów, znajduje się w dokumentacji operatorów.
Skrót operatorów
| Operator | Gdzie | Przykłady |
|---|---|---|
tag:NAZWA | re/notes | tag:work, tag:"side projects" |
folder:ŚCIEŻKA | re/notes | folder:projects, folder:projects/active |
list:NAZWA | re/task | list:Inbox, list:"this week" |
created:DATA | obie | created:2026-01-01, created:>2026-01-01, created:<7d, created:today, created:2026-01-01..2026-02-01 |
modified:DATA | obie | modified:<14d, modified:yesterday |
due:DATA | re/task | due:<7d, due:today, due:>2026-06-01 |
is:starred | obie | is:starred |
is:pinned | re/notes | is:pinned |
is:completed | re/task | is:completed |
is:overdue | re/task | is:overdue |
has:link | obie | has:link (dopasowuje notatki/opisy zawierające URL-e lub linki Markdown) |
Modyfikatory
-OPERATOR- neguje pojedynczy operator. Przykład:-tag:archived,-is:completed.-SŁOWO- wyklucza elementy, których tytuł (lub treść, gdy aktywna jest ścieżka body-aware) zawiera dane słowo. Przykład:cat -mouse."wartość w cudzysłowie"- zachowuje spacje i dwukropki. Wewnątrz operatora:tag:"in progress",list:"Q2 planning". Jako zwykły tekst:"meeting prep"dopasowuje dosłowną frazę, a nie dwa słowa niezależnie.-"wartość w cudzysłowie"- wyklucza frazę. Przykład:cat -"angry mouse".
Łączenie klauzul
Spacja między klauzulami to niejawne AND. Każda klauzula musi być spełniona jednocześnie - operatory między sobą, operatory ze słowami zwykłego tekstu, a także wykluczenia:
meeting tag:work -is:completed modified:<14d -draft
…dopasowuje elementy zawierające słowo meeting, otagowane work, jeszcze nieukończone, zmodyfikowane w ostatnich 14 dniach i niezawierające słowa draft.
Operatory boolean
Poza niejawnym AND pole wyszukiwania obsługuje jawne OR, grupowanie nawiasami oraz negację grupy. Jawne AND jest też rozpoznawane jako redundantny synonim.
tag:work OR tag:personal # pasuje którykolwiek tag
is:completed OR is:overdue # ukończone lub zaległe
tag:work (is:starred OR modified:<7d) # praca + (z gwiazdką LUB ruszone niedawno)
(tag:reading AND has:link) OR is:starred # reading z linkiem, albo cokolwiek z gwiazdką
-(tag:archived OR tag:draft) # ani archived, ani draft
OR i AND muszą być zapisane wielkimi literami, ze spacjami wokół - taka sama konwencja jak w Gmailu, GitHubie i Linearze. Małymi literami (or, and) traktowane są jako zwykłe słowa. Aby wyszukać dosłowny ciąg OR, wstaw go w cudzysłów: "OR".
AND wiąże silniej niż OR, więc cat dog OR mouse parsuje się jako (cat AND dog) OR mouse. Puste grupy (()) są ignorowane, a zbędne zagnieżdżenia w stylu ((cat)) zwijają się naturalnie. Cudzysłowy zawsze zachowują znaki dosłownie - OR, AND, ( i ) w cudzysłowie są częścią wartości, a nie składni boolowskiej.
Wyrażenia dat
Trzy pola przyjmują wyrażenia dat: created: (znacznik utworzenia), modified: (ostatnia aktualizacja) oraz due: (tylko re/task). Wszystkie trzy korzystają z tej samej gramatyki.
Daty bezwzględne
created:2026-01-15 # dokładnie ten dzień
created:>2026-01-15 # po tym dniu
created:<2026-01-15 # przed tym dniem
created:2026-01-01..2026-01-31 # zakres, oba końce włącznie
Format zawsze YYYY-MM-DD. Niepoprawne daty (np. 2026-02-30) po cichu degradują się do wyszukiwania zwykłego tekstu.
Zakresy względne
modified:<7d # w ciągu ostatnich 7 dni
created:<2w # w ciągu ostatnich 2 tygodni
modified:>1m # starsze niż miesiąc
due:<3d # do oddania w ciągu 3 dni (`due:` patrzy w przód)
Jednostki: d (dni), w (tygodnie = 7 dni), m (miesiące ≈ 30 dni). Konwencja kierunku: < celuje w „teraz” (świeże), > ucieka od „teraz” (starsze).
Słowa kluczowe
created:today
modified:yesterday
Daty są interpretowane w lokalnej strefie czasowej, nie UTC - „today” odpowiada zegarowi na ścianie.
Tekst zwykły i przełącznik treści
Słowa zwykłe dopasowują się jako podciąg do:
- Tytułów - zawsze, natychmiast, bez deszyfrowania.
- Opisów (re/task) / treści (re/notes) - tylko gdy włączony jest przełącznik Szukaj w opisie / treści. Deszyfrowanie zachodzi w pamięci; serwer nigdy nie widzi zapytania.
Operatory wymagające treści notatki/zadania - obecnie tylko has:link - automatycznie wymuszają ścieżkę body-aware, nawet gdy przełącznik jest wyłączony.
Wiele słów zwykłych łączy się przez AND: meeting prep wymaga, by meeting i prep pojawiły się niezależnie. Dla dosłownej frazy użyj cudzysłowu: "meeting prep".
Wyszukiwanie w koszu
Obie aplikacje mają wydzielony widok kosza, a pole wyszukiwania zawsze przeszukuje tylko bieżący zakres - elementy aktywne w widokach normalnych, elementy usunięte w widoku kosza. Nie ma operatora łączącego oba zakresy; aby przejrzeć usunięte elementy, należy przełączyć się do widoku kosza. Wszystkie operatory powyżej (tag, folder, list, daty, …) działają również na zawartości kosza.
Jest to celowe: wyszukiwanie łączące oba zakresy pokazywałoby nieaktualne dopasowania w codziennych zapytaniach. Przyszła wersja może wprowadzić jawny tryb ujednoliconego wyszukiwania.
Wybaczająca degradacja
Jeśli parser nie rozpozna tokenu (literówka typu taq:work, niepoprawna data, wiszące OR/AND, niedomknięty nawias), traktuje niepoprawne operatory jako tokeny zwykłego tekstu zamiast zgłaszać błąd. Zapytanie staje się mniej precyzyjne, dopóki składnia się nie domknie - nie pojawia się czerwony stan błędu w trakcie pisania.
W praktyce:
created:tomorrow- nie ma takiego słowa kluczowego (obsługiwane są tylkotodayiyesterday). Cały token jest wyszukiwany jako dosłowny ciąg.tag:(bez wartości) - degraduje się do zwykłego tekstu.- Nieznane nazwy operatorów (
status:done,priority:high, …) - traktowane jako zwykły tekst. W przyszłej iteracji mogą stać się prawdziwymi operatorami.
Jeżeli zapytanie „nie działa po Twojej myśli”, najczęstszą przyczyną jest literówka po cichu degradująca się do zwykłego tekstu. Sprawdź nazwę operatora i format wartości w tabeli powyżej.
Prywatność i architektura
Dodanie operatorów nie zmieniło modelu zagrożeń. Każdy krok dzieje się lokalnie:
- Zaszyfrowana baza jest deszyfrowana w pamięci po odblokowaniu.
- Pole wyszukiwania parsuje zapytanie do AST (drzewa składniowego).
- AST jest ewaluowany na in-memory indeksie metadanych - tytuły, daty, tagi, flagi.
- Jeśli zapytanie wymaga treści (
has:linklub przełącznik treści), deszyfrowane są wyłącznie elementy wstępnie pasujące. - Nic nie trafia na serwer. Brak server-side search endpointu, brak inverted indexu, brak telemetrii zapytań.
Pełen opis architektury w Zero Knowledge Architecture.
Roadmapa
Kilka funkcji dla zaawansowanych jest zaplanowanych jako fast-follow:
- Zapisane wyszukiwania - przypnij zapytanie typu
due:<7d -is:completedi otwieraj je jednym kliknięciem. - Smart foldery - zapisane wyszukiwania jako wirtualne foldery w sidebarze.
- Kolejne operatory - kandydaci:
priority:,status:, traversowanie hierarchii list i folderów.
Pełen opis, włącznie z corner case’ami i regułami cudzysłowów, jest w dokumentacji operatorów.
Nie znasz jeszcze Reborn Apps? Wypróbuj je na naszej publicznej instancji - darmowej, zero-knowledge, bez emaila. Albo postaw własną.
Podziękowania
Słownik operatorów i rozłożenie ich na tiery (najpierw esencja, power-user feature’y jako fast-follow) wzięły się ze szczegółowego feedbacku od Travisa Solina (@computrav).