Frontend UX: search result rows lack type/date meta; single thin facet; "estimated" count not flagged #61
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Severity: Low–Medium. From a frontend UX audit. (The search screen is otherwise solid — URL-synced debounced query, visibility in the URL, infinite scroll, XSS-safe highlight.)
Problems
SearchResultRow(web/src/search/search-result-row.tsx:18-27) shows name + object_number + visibility badge + a 2-line snippet, but no object type/category or date — power users often disambiguate hits by type/period, not just name+number.search-panel.tsx:64-80) — thin faceting for a collection.estimated_totalbut the copy is just "{{count}} results" (search-panel.tsx:108) — presented as exact when it's an estimate.Suggested fix
Source: frontend UX/design audit, 2026-06-06.
Done — merged to
main(c68bbb9).Date on result rows (the disambiguator the data actually supports): threaded
recording_date(YYYY-MM-DD) through the whole search pipeline —SearchDocument(projected inbuild_documentfromobject.recording_date) →SearchHit→SearchHitView(Rust) → the regeneratedschema.d.ts.SearchResultRownow shows it on the meta line (Name · № · 1962-04-03) when present.Optionend-to-end, so objects without a date — and already-indexed docs that haven't been re-indexed yet — simply omit it (new/edited objects index it automatically via the on-writesync_object;reindex_allbackfills the rest).Estimated count flagged: the count copy is now
~{{count}} results(en) /~{{count}} träffar(sv), since it's Meilisearch'sestimated_total— no longer presented as exact.Declined (no data to support it): object type/category meta + a type facet — there is no type/classification field anywhere in the domain (objects have number/name/count/description/location/owner/recorder/recording_date/visibility + flexible fields). That would be a new domain concept — filed as a follow-up.
61 Rust (search+api) tests + 226 frontend tests green; clippy/fmt clean; typecheck/lint/build/check:size (215.5 KB gz)/check:colors clean; en/sv parity (guarded by the #60 test); no codename; no new dependency.
Follow-ups (out of scope): an object type/classification concept + type facet; a
reindexCLI command to backfillrecording_dateonto already-indexed objects; makingrecording_datefilterable/sortable in search; richer faceting.