---
title: Browse and records
description: Browse lists records of one type with search, filters, columns, sort and CSV export. The record page shows values, sightings, links and the keep, drop again and merge controls.
sidebar:
  order: 6
---

## What it is

- **Browse** (`#/browse/<type>`) lists every record of one type.
- **The record page** (`#/entity/<type>/<slug>`) shows one record in full.

## Why it exists

Browse is where people check what a routine found and what its settings cut. The record page is where they correct it: keep a record the settings dropped, merge a duplicate, and add notes the routine never overwrites.

## How it works

### Browse

- **Search** across the record's text.
- **Show dropped** toggle (dropped records are hidden by default and counted in the label).
- **Filters:** Starred only, tag, source, drop reason, a time window (`all`, `week`, `month`, `last-month`), and one select per declared field.
- **Columns:** declared fields, agent columns (with an agent badge) and the meta fields.
- **Sort** by any column, ascending or descending.
- **Save view** writes the current filters to `views/<id>`. See [Views](/desk/views).
- **Export** the filtered rows as CSV through `downloads`. Without it: "Saving a file is not available here. Copy the text below."
- **Star and tag** inline, written to `userstate/<id>`.

Filter state lives in the route's query string, so a filtered list can be bookmarked.

### The record page

| Section | Shows or does |
|---|---|
| About this <noun> | `display` values, links, first and last seen |
| Status | Active, dropped with "Settings filters dropped this <noun>. Keep it to override them for this record.", "Kept by a person", or "Kept (pending next run)" |
| Keep this <noun> | Writes `decisions/<id>` `{decision: "keep", at, by}`. "A keep is recorded now. Applies from the next run, which keeps this record active." |
| Drop again | Deletes the keep. "Drop again is recorded now. Applies from the next run, which applies the settings filters again." |
| Merge into another <noun> | Writes `merges/<id>` `{into, at, by}`; Unmerge deletes it |
| Star, tags, note | `userstate/<id>` `{star, tags, note}`; tags are comma separated |
| Agent fields | `agentFields` values |
| Sightings | The last 30, newest first |

> Since 0.5.0:
> - **Lists:** status defaults to active, with a built-in Dropped view that offers Restore. Meta filters (status, first and last seen ranges, seen count) page through the store 100 at a time. Record-field, tag and star filters read the full filtered set on demand (up to 1000 per read, de-duplicated by id). Targets: first page under 300 ms, full read under 1 s at 5,000 records.
> - **Bulk actions:** Keep, Drop, Tag, Untag, Star, Export selected, and Merge (exactly two). "Select all N matching" asks to confirm and caps at 1,000. Writes run one at a time, then a summary and a 10 second undo.
> - **Record page:** Keep, Drop with a reason (`decisions/<id>` `{decision: "drop", reason, at, by}`), Star, Tag and Merge, with tabs Summary, Sightings, History and Notes, and a "Drop pending" overlay until the next run.
> - **Export:** CSV or JSON, Copy or Download, with the hint "You'll be asked to confirm before the file saves." The file is named `<workspace>-<type plural>-<YYYY-MM-DD>.<ext>`.

## Worked example

On `#/browse/role`, the person turns on Show dropped and filters drop reason to `not in title_keywords`. Five "Hydrogen" roles look right. They open each and press Keep this role. Each page shows "Kept (pending next run)". The next run marks them active with the sighting note `kept by person`, and learning counts them toward "Add hydrogen to title_keywords".

## Common pitfalls

- **Expecting a keep to show active at once.** The stored status changes on the next run.
- **Notes on the record.** Notes, tags and stars live in `userstate/`, shared by everyone on the Desk.
- **Exporting a huge list on a phone.** Export what the filter shows; narrow it first.

## Related

- [Records](/concepts/records)
- [Merges](/concepts/merges)
- [Ownership](/concepts/ownership)
