Skip to content

Feature: Mark room and space as read (manual) #107

@mjkatgithub

Description

@mjkatgithub

Planning

  • Milestone: Phase 3
  • Priority: P2
  • Size: S
  • Estimate: 2 SP

Goal

Manual Mark as read for a single room and for all channels under a space (Element-style), without opening each room.

Background

  • Auto mark-read on open already exists (useRoomUnread, markRoomAsRead).
  • Missing: explicit user action from sidebar (room ⋯ menu / space header menu).
  • Space-level: mark all descendant channels (via m.space.child tree, same as unread rollup in spaceUnread.ts) as read.

Scope

  • Room: "Mark as read" in RoomCategoryList ellipsis menu when room has unread.
  • Space: "Mark space as read" in space header / space menu when space has unread badge.
  • Reuse markRoomAsRead; add batch helper for space child room IDs (collectSpaceChildRoomIds).
  • Update unread indicators immediately after success.
  • i18n EN/DE.

Branch

feature/mark-as-read

Acceptance Criteria

  • Room with unread: menu action clears room unread (and mention) indicator.
  • Space with unread rollup: action clears unread for all channels in that space subtree.
  • Active room/thread behavior unchanged (still auto-read on view).
  • No mark-read when already read (action hidden or disabled).
  • Errors surfaced if API fails.

Test Checklist

Unit

  • Space batch collects correct room IDs (reuse spaceUnread helpers).
  • Unread state refreshes after batch mark.

Manuell

  • Mark single room read from sidebar without selecting it.
  • Mark space read clears rail badge + all channel dots in space.

Notes

Epic

Sub-issue of #3 (Phase 3).

Metadata

Metadata

Assignees

No one assigned

    Projects

    Status
    Backlog

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions