Skip to content

v0.1.2 — reliable is:unread search

Latest

Choose a tag to compare

@csitte csitte released this 23 Jun 09:18

Fixed

  • search now re-verifies read-state/category predicates against each hit''s live labels. Gmail''s threads.list index silently drops is:unread in some operator combinations (e.g. category:updates is:unread -in:inbox returned read mail too). The query''s unambiguous predicates — is:unread/is:read, is:starred/is:unstarred, is:important, in:inbox/in:trash/in:spam, category:…, each with negation — are checked against the thread''s true labels and index false positives dropped. OR/parenthesised/braced queries disable the post-filter so boolean logic is untouched; label:NAME is not resolved here.

Changed

  • With a label post-filter active, search scans a full candidate page (≤100) and stops once maxResults threads genuinely match, so maxResults stays meaningful.

Added

  • Pure helpers deriveLabelFilters / threadMatchesFilters + 12 vitest cases (suite now 30 tests).