Symptom
A search result shows a highlight, but not what kind of thing matched. Searching pr-2 returned five sessions; the user wanted the one whose title mentioned it and had to scan four lines of every row looking for the amber background to work out that none of them had matched on a title at all.
Today a row can match on any of: project name, project path, first user prompt, last user prompt, any middle prompt, custom title, branch, PR link, last AI reply, or the terminal badge. Only one of those announces itself — a middle-prompt hit gets the match #N line, because that text is not otherwise on screen. Every other field is highlighted silently wherever it happens to render, and a field that is truncated away leaves no trace at all.
So the reader has to reverse-engineer the query result from the pixels.
Proposal: name the source of the match
Extend the existing match #N line into a general "why this row is here" marker, keeping its current visual identity (the amber chip that ties it to the highlight, added in #138):
match title …harden again - pr2-1533-v7-readiness — deps…
match #12 …有寫在文件裡嗎? 2. btw, 你一直提到 "cts" 是指?…
match branch feat-sessions-row-readability
Design constraints learned from the current implementation:
- Vertical space is the scarce resource in a menu-bar popup. Do not add a line per matched field. The existing rule is the right one: show the marker line only when the match is not already visible in the row, which is exactly why
match #N exists and why it is suppressed when the hit is in the first or last prompt.
- With that rule, most rows gain nothing (their match is already on screen and highlighted) and the rows that gain a line are the ones that are currently unexplained.
- The chip already carries the identity; only its label changes from
#N to the field name. match #N stays as-is for prompt hits, since the index is useful there.
An alternative worth weighing during implementation: rather than a line, mark the matched field inline — e.g. the branch bracket or the title turning amber-tinted when it is what matched. That costs no vertical space but is subtler, and this app already has a lot of colour semantics in one row (green title, orange last message, blue AI reply, purple account badge, amber highlight).
Relationship to #140
Two halves of one complaint, deliberately split:
They are independently useful. #140 is the bigger lever for the reported case; this one helps whenever you did not think to scope, which is most of the time.
Priority
Low-to-medium, and lower than #140. Behaviour is correct today — this is about making a correct result legible.
🤖 On behalf of @grimmerk — generated with Claude Code
Symptom
A search result shows a highlight, but not what kind of thing matched. Searching
pr-2returned five sessions; the user wanted the one whose title mentioned it and had to scan four lines of every row looking for the amber background to work out that none of them had matched on a title at all.Today a row can match on any of: project name, project path, first user prompt, last user prompt, any middle prompt, custom title, branch, PR link, last AI reply, or the terminal badge. Only one of those announces itself — a middle-prompt hit gets the
match #Nline, because that text is not otherwise on screen. Every other field is highlighted silently wherever it happens to render, and a field that is truncated away leaves no trace at all.So the reader has to reverse-engineer the query result from the pixels.
Proposal: name the source of the match
Extend the existing
match #Nline into a general "why this row is here" marker, keeping its current visual identity (the amber chip that ties it to the highlight, added in #138):Design constraints learned from the current implementation:
match #Nexists and why it is suppressed when the hit is in the first or last prompt.#Nto the field name.match #Nstays as-is for prompt hits, since the index is useful there.An alternative worth weighing during implementation: rather than a line, mark the matched field inline — e.g. the branch bracket or the title turning amber-tinted when it is what matched. That costs no vertical space but is subtler, and this app already has a lot of colour semantics in one row (green title, orange last message, blue AI reply, purple account badge, amber highlight).
Relationship to #140
Two halves of one complaint, deliberately split:
title:pr2).They are independently useful. #140 is the bigger lever for the reported case; this one helps whenever you did not think to scope, which is most of the time.
Priority
Low-to-medium, and lower than #140. Behaviour is correct today — this is about making a correct result legible.
🤖 On behalf of @grimmerk — generated with Claude Code