* advanced search filters
* improve labelId filtering in query
* index label ids on typesense
* index label ids on typesense
* filters on AI search
* refactor: detect typesense schema drift from the declared collection schema
* feat: show secondary search filters only when applied
Created by and Labels now stay hidden until they hold a value; a Filter
button at the right end of the bar lists the hidden ones and opens the
picked filter's dropdown immediately.
* fix: keep applied search filters in the order they were added
* feat: add title-only search mode
Adds a titleOnly flag to page search: the Postgres driver matches
titles via trigram-indexed unaccented LIKE ranked by word_similarity,
and a Match filter in the search spotlight switches between everything
and title-only matching.
* refactor: make title-only search a toggle chip
* fix: drop stale results when the search content type changes
* feat: add trigram index on attachment file names
* feat: extend title-only search to attachments
The titleOnly flag now matches attachment file names via the
separator-normalized trigram expression, and the toggle chip stays
available in attachment mode as File name only.
* refactor: keep the title-only label uniform across search modes
* feat: index txt attachments for content search
* feat: pin the current user at the top of the creator filter
* refactor: dim the you suffix in the creator filter
* feat: browse label-filtered pages without a query
Selecting labels now lists their pages newest-first before any text is
typed, on both the Postgres and Typesense drivers.
* fix: match any selected label instead of requiring all
* fix: use a gray spotlight selection instead of primary blue
* feat: include search results in the spotlight tab order
* feat: show last updated time on search results
* fix: stop empty-state flicker while the search query debounces
* feat: browse creator-filtered results without a query
Selecting a creator with an empty query now lists their pages (or
attachments in attachment mode) newest-first, with the same space and
page permission filtering as typed search.
* fix: show Untitled for pages without a title in search results
* quick page sharing fix
* minor search filter fixes
---------
Co-authored-by: Philipinho <16838612+Philipinho@users.noreply.github.com>
* feat(ai): add AI_VECTOR_DRIVER and turbopuffer configuration
* feat(ai): carry workspace and target space ids on vector lifecycle events
* feat(ai): add vector driver interface and turbopuffer request helpers
* feat(ai): add pgvector driver behind the vector driver interface
* refactor(ai): route vector reads and writes through the vector driver
* feat(ai): add turbopuffer vector driver
* feat(ai): rebuild turbopuffer namespaces when the embedding model changes
* feat(ai): warm the vector namespace cache on session start
* fix(ai): harden turbopuffer misconfiguration and reset failure paths
* fix(ai): collapse blank-line runs in extracted page text
* fix(ai): skip full re-embed when ai search is re-enabled within the delete grace window
* sync
* fix(ai): store real embedding dimensions instead of serialized vector length
* fix(ai): filter search hits by the page's current space at query time
* fix(ai): retry the page moved-to-space vector patch job
* sync
* feat(ai): pre-warm the vector namespace
* fix(ai): pass AI_VECTOR_DRIVER through the client build config
* feat: support opening property menu directly on options panel
* refactor: expose group-by property from useKanbanColumns
* feat: rename kanban group by clicking column name
* feat: edit group-by property from kanban column menu
* fix: license-gate base and kanban inserts
* fix: add missing bases strings to en-US translation file