· Fundacja Reborn

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.

wyszukiwanie funkcja zero-knowledge
Read in English →

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

OperatorGdziePrzykłady
tag:NAZWAre/notestag:work, tag:"side projects"
folder:ŚCIEŻKAre/notesfolder:projects, folder:projects/active
list:NAZWAre/tasklist:Inbox, list:"this week"
created:DATAobiecreated:2026-01-01, created:>2026-01-01, created:<7d, created:today, created:2026-01-01..2026-02-01
modified:DATAobiemodified:<14d, modified:yesterday
due:DATAre/taskdue:<7d, due:today, due:>2026-06-01
is:starredobieis:starred
is:pinnedre/notesis:pinned
is:completedre/taskis:completed
is:overduere/taskis:overdue
has:linkobiehas:link (dopasowuje notatki/opisy zawierające URL-e lub linki Markdown)
no:folderre/notesno:folder - notatki spoza folderów
no:tagre/notesno:tag - notatki bez tagów

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.

Filtry pustego pola

no:folder i no:tag (re/notes) dopasowują notatki, w których pole kontenera jest puste - lustrzane odbicie folder: i tag:. Trzymają się konwencji, której GitHub używa dla no:label / no:assignee, i składają się oraz negują jak każdy inny operator:

no:folder              # notatki nieprzypisane do żadnego folderu
no:folder no:tag       # ani w folderze, ani z tagiem - „inbox" nieuporządkowanych notatek
-no:folder             # odwrotność: tylko notatki, które SĄ w jakimś folderze
folder:projects no:tag # nieotagowane notatki w Projects (i podfolderach)

Dopasowywanie jest metadata-only, więc działa na natychmiastowej ścieżce tytułów, bez deszyfrowania treści notatek.

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ą tylko today i yesterday). 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:

  1. Zaszyfrowana baza jest deszyfrowana w pamięci po odblokowaniu.
  2. Pole wyszukiwania parsuje zapytanie do AST (drzewa składniowego).
  3. AST jest ewaluowany na in-memory indeksie metadanych - tytuły, daty, tagi, flagi.
  4. Jeśli zapytanie wymaga treści (has:link lub przełącznik treści), deszyfrowane są wyłącznie elementy wstępnie pasujące.
  5. 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:completed i 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).