Planning
Goal
Fix sidebar unread state so inactive channels show data-unread="true" when
another user posts, clear on open, survive reload, and aggregate mentions on
the space rail.
Scope
- Unread indicator for inactive channel
- Opening channel clears unread indicator
- Unread indicator survives reload
- Mention unread aggregates on the space rail
- Remove
@wip when green
Branch
bug/e2e-wip-unread
Acceptance criteria
Test checklist
E2E
Unit (if composables change)
Notes
Root cause: hasUnread relied on Matrix NotificationCountType.Total, which
stays zero for normal group messages under default push rules; mentions
(Highlight) already worked.
Fix: activity-based fallback in roomUnread.ts (getEventReadUpTo vs latest
foreign message, including encrypted via getLastLiveEvent); mute rooms skip
fallback; useRoomUnread passes userId, notification level, and refreshes on
sync/unread-notification events. E2E steps select Home + scoped sidebar locators
(unread + I open the seeded test room). @wip removed from four cluster A
scenarios.
Verified: 6/6 targeted unread E2E green; full lane 36/40 (all cluster A +
mention regression pass; 4 unrelated flakes incl. create-space rail).
Docs: N/A — logic in existing unread modules.
Planning
Goal
Fix sidebar unread state so inactive channels show
data-unread="true"whenanother user posts, clear on open, survive reload, and aggregate mentions on
the space rail.
Scope
@wipwhen greenBranch
bug/e2e-wip-unreadAcceptance criteria
@wip.Test checklist
E2E
chat.featureUnit (if composables change)
npm run test:unitfor unread helpersNotes
Root cause:
hasUnreadrelied on MatrixNotificationCountType.Total, whichstays zero for normal group messages under default push rules; mentions
(Highlight) already worked.
Fix: activity-based fallback in
roomUnread.ts(getEventReadUpTovs latestforeign message, including encrypted via
getLastLiveEvent); mute rooms skipfallback;
useRoomUnreadpassesuserId, notification level, and refreshes onsync/unread-notification events. E2E steps select Home + scoped sidebar locators
(unread +
I open the seeded test room).@wipremoved from four cluster Ascenarios.
Verified: 6/6 targeted unread E2E green; full lane 36/40 (all cluster A +
mention regression pass; 4 unrelated flakes incl. create-space rail).
Docs: N/A — logic in existing unread modules.