Browse and records
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.
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. - 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 |
display values, links, first and last seen |
| Status | Active, dropped with “Settings filters dropped this |
| Keep this |
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 |
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.