Repository navigation
fix(ui): keep the active conversation selected in the sidebar - #134
Conversation
Tie pinned and chronological row selection to the displayed chat identity, independently of hover, editor focus and keyboard cursor position. Synchronize the cursor and cancel delayed previews on explicit opens. Preserve the preview read gate and cover the bindings with regression checks.
|
Merged, thank you Brandon, and welcome. The sidebar pointing at one chat while the pane showed another is exactly the kind of quiet wrongness that bites when you are replying, and you tied the fill to the displayed chat's identity instead of hover or position, which is the right model. I checked the one thing I was worried about: moving the cursor in One small ask: I thank contributors by name in a weekly post on X. Is there an account you'd like tagged? "Rather not be tagged" is an equally good answer. |
…h asked for his X handle) LR-T: blip, change-log, weekly-notes, roster, #133, #134, bndnsmth, ianswope LR-D: blip Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BeRMdPWNC2myz9U8hEeeCi
|
Appreciate the quick review and merge, @nixfred. Feel free to tag |
…damonjanis (#120) LR-T: blip, contributors, x-handles, bndnsmth, damonjanis LR-D: blip Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BeRMdPWNC2myz9U8hEeeCi
Why
In the main app's two-pane window, the sidebar could suggest that a different conversation was selected from the one displayed on the right. This is particularly misleading when composing a reply.
Reproduction confirmed on an installed client:
The conversation pane switches, but the first row can remain highlighted, or the clicked row loses all highlighting once hover ends. Expected: the displayed chat retains a persistent selected state.
The row backgrounds previously represented only hover or the keyboard cursor.
openThread()did not synchronize that cursor, and neither pinned tiles nor chronological rows had a selected state tied toactive.What
Give pinned tiles and chronological rows in split view a persistent selected fill using
Style.selectedFillFor(). Selection follows the displayed chat's identity throughisShowing(), independently of pointer hover, editor focus, or list position. Explicit opens also synchronize the sidebar cursor and stop any pending preview timer, without callingcursorMoved()and scheduling another preview. Existing hover/cursor styling remains for other rows, and the flyout does not gain the split-view selected fill. Add source-level regression checks in the existing QML safety-invariant style and an Unreleased changelog entry.How it was verified
bun testis green (CI will check): 748 passing tests on current upstreammainplus this fix.CLAUDE.md→ named below, and the doc updated if it changed. No invariant changed; the existing "A peeked thread is not read" gate is preserved.Behavioral checks: