fix(members): roster rows read like session rows, plus search - #6685
Conversation
Design Review (Fable 5) — ✅ PASSDesign-level review of Design-Verdict: PASS Real UX-parity gap, solved in the right layers — and the redact-before-truncate fix it surfaced is the correct root-cause repair, applied to both callers. Suggestions
[DESIGN-REVIEWED] 6711caf |
GPT 5.6 Review — ✅ no blocking findingsGPT 5.6 completed its review of This comment is updated in place on each push. Review detailsNo findings. False positive or not applicable? A repository writer can comment: |
UX Review (Fable 5) — 🟡 CONCERNSUX-level review of UX-Verdict: CONCERNS Swapping "Working/Idle" for previews leaves presence on an aria-hidden color dot alone — colorblind and screen-reader users lose the status the label used to carry. Watch
Suggestions
[UX-REVIEWED] 6711caf |
First Principles Review (Fable 5) — 🟡 CONCERNSPremise-level review of All facts verified. I have what I need for the review: First-Principles-Verdict: CONCERNS The What this change shipsIntent: make the crew roster read and behave like the sessions list, per PM review of the shipped page — a FIX of three reported UX defects.
Watch
Subtractions
[FIRST-PRINCIPLES-REVIEWED] 6711caf |
Opus 4.8 Review — ✅ no blocking findingsReviewed Verdict parsed from the review's SHA-scoped output markers for commit False positive or not applicable? A repository writer can comment: |
3f795bd to
b78f2be
Compare
|
GPT disposition — the truncation-before-redaction finding is valid and fixed in d0130f4, at the cause rather than by reverting the field:
|
b78f2be to
d0130f4
Compare
Follow-up PM round on the Crew Members page (the prior batch landed in #6616): - Roster rows drop the Idle/Working label for the thread's last-message preview — the same sub-line a session row carries. Presence already rides the avatar dot, so the textual label said nothing the dot did not. The preview reuses the sessions list's last_message_preview + redaction path, so a member row can never leak what a session row would not. - A SearchInput (the sessions sidebar idiom) filters the roster by name; new search_members key across 12 locales, en-XA regenerated. - The thread header drops its status sub-line (name only, like the chat page header), and the drawer's local close button survives only below md — on desktop the header's panel toggle is the one close gesture, matching the chat page's side panel. Backend: the roster response gains last_message, read in the same one-thread-hop batch as last_active_ts. Tests: backend pins last_message ('' when no transcript); frontend pins the preview sub-line, the absence of status labels, and the name filter. Capture assertions updated and all frames re-verified.
|
First Principles dispositions — addressed in 6711caf:
|
d0130f4 to
6711caf
Compare
bolichen97
left a comment
There was a problem hiding this comment.
Independent subagent code review completed for this head; no blocking changes found.
Problem / Motivation
PM review of the shipped Crew Members page (follow-up to #6616), three findings:
Why it matters
The members list and the sessions list are the product's two conversation surfaces. Every divergence between them is a pattern the user has to learn twice; the missing preview also makes the recency ordering unreadable (rows reorder between visits with no visible cause).
What changed
last_message_preview+ credential/URL redaction path the sessions list uses, read in the same one-thread-hop batch aslast_active_ts. Presence stays on the avatar dot.SearchInput(sessions sidebar idiom) filters by name; newsearch_memberskey in all 12 locales, en-XA regenerated.last_message_previewnow takes an injectedsanitizecallable applied to the full text BEFORE the cap, and BOTH callers (sessions list + members roster) inject the shared redaction chain. Pinned by a boundary-straddling AKIA test.md:hidden— kept only below md where the overlay covers the header toggle, so desktop has exactly one close gesture.Tests
last_message(''for a member with no transcript) — pinned intest_roster_reports_last_activity_from_the_dm_transcript.Manual verification
Self-verified capture harness (assertions updated: no status labels, preview visible, exactly one search input), all frames green.
Screenshots / video
Mobile + light theme
no linked issue: PM chat feedback on the shipped page, no tracked issue filed.