> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getcollate.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Breaking Changes - Discovery & Search | Official Documentation

> The redesigned Explore page changes URL parameters, filter behaviour, result ordering, caching, and export in Collate 2.0.

# Discovery & Search

The Explore page is redesigned in 2.0, and the redesign is shared by both Classic Mode and AI Mode.
The mental model changes from *"the tree replaces your filters"* to *"the tree sets a browse location
that stacks with your filters."* Filtering, browsing, pagination, ranking, and export all behave
differently.

## Explore URL parameters changed

**Breaking.** Affects bookmarks, saved links, embedded iframes, and anything that constructs Explore
URLs.

| Parameter                               | 1.13      | 2.0                                        |
| --------------------------------------- | --------- | ------------------------------------------ |
| Page number                             | `page`    | **`currentPage`**                          |
| Page size                               | `size`    | **`pageSize`**                             |
| Browse location                         | N/A       | **`browsePath`** (JSON-encoded field list) |
| Cursor paging                           | N/A       | `cursorType`, `cursorValue`                |
| Free text, quick filters, sort, deleted | unchanged | unchanged                                  |

A 1.13 link with `?page=3&size=25` still loads Explore, but silently lands on **page 1 at the default
page size** — no error and no redirect. The route itself (`/explore/:tab`) is unchanged. Explore also
now accepts only **15, 25 or 50** rows per page; any other `pageSize`, including one inherited from a
user's stored global setting, is coerced back to 15.

<Tip>
  Update deep links, embedded dashboards and internal documentation to `currentPage`/`pageSize`.
</Tip>

## Browsing no longer clears your filters, and facets are scoped differently

**Behavioural.** Affects every Explore user.

In 1.13 the left tree drove the quick filters directly — selecting a service **overwrote** the filter
state. In 2.0 the tree writes to its own `browsePath` parameter, compiled into a separate search
filter and `AND`-ed with the dropdown filters. Selecting Tier 1 and then browsing to a schema now
keeps the Tier 1 filter; removing a browse chip truncates the path from that level down.

Facet aggregation also changes: in 1.13 every dropdown's aggregation was computed against the *full*
combined filter including that dropdown's own selection, so selecting "Table" in Data Assets shrank
the Data Assets dropdown to just "Table." 2.0 excludes a facet's own field from its own aggregation —
within one facet, values are `OR`-ed and the option list keeps showing alternatives; across facets,
constraints are `AND`-ed.

<Tip>
  UI tests that clicked **Update** to commit a dropdown selection must drop that step — selections
  apply immediately in 2.0. The **"Clear all" text link is removed**, replaced by **Clear All** on a
  new query chip row; test suites keyed on `data-testid="clear-filters"` must move to
  `data-testid="explore-query-filter-chips"`. Note also that dismissing an Advanced Search query no
  longer resets quick filters and browse location — it only clears the advanced query.
</Tip>

## Result ordering changes

**Behavioural.** Affects every search and Explore result list.

Search settings gain a per-asset-type `ranking` block: ordered lexical stages first (name matches
outrank description and context matches), then bounded metadata signals (Tier, usage) capped at
`maxBoost: 2.0` so they act as tie-breakers rather than dominating relevance. The 2.0.0 migration
writes this default configuration into any existing stored search settings, merging in missing
stages rather than overwriting operator customizations.

<Warning>
  Expect different result ordering after the upgrade: same query, same corpus, different order. If you
  have automated tests asserting the top result for a given query, re-baseline them. Tune the behaviour
  under **Settings** > **Search** > **Ranking**, which gains a **Reset to Default** button in 2.0.
</Warning>

The `search_after` cursor-paging parameter also changes shape — see
[API & Schema](/ai-2-0/release-2.0/breaking-changes/api-and-schema).

## CSV export becomes a background job

**Behavioural.** Affects Explore users exporting search results.

Choosing **Tools** > **Export** no longer downloads a file directly. It queues a background job
(`jobType: CSV_EXPORT`), shown in a new **Background jobs** tray, and is downloaded from
`GET /v1/csvAsyncJobs/{jobId}/result`. Exporting "all" now covers the full tab result set with an
accurate pre-count, capped at 200,000 rows.

<Note>
  The synchronous endpoint still exists — `GET /v1/search/export` is unchanged and still streams CSV
  directly. Only the **UI** switched to the async endpoint, so scripted exporters don't need to change.
</Note>

## Explore result caching and tree count semantics

**Behavioural**, low risk but worth knowing about.

2.0 adds a short-lived stale-while-revalidate cache keyed by the full search dependency string: a
cache hit renders synchronously with no spinner, then a background refetch updates it. A
stale-response guard drops in-flight responses whose key no longer matches the current search, so a
slow response can no longer overwrite a newer result set. UI tests that wait for a loading spinner on
tab switch need to key off content instead.

Tree counts also now aggregate over the whole data-asset index at every level — a node's count is
the total matching objects in its **subtree**, respecting active filters and browse path — where 1.13
counted only the immediate children from the per-entity index.

## Full detail

For the full narrative walkthrough of Discovery & Search in Collate 2.0 — including screenshots and step-by-step context — see [Release 2.0: Discovery & Search](/ai-2-0/release-2.0/discovery-and-search).
