[verify] Thread composer must honour "Hide Typing & Read Receipts" (typing) #140

Closed
opened 2026-09-17 16:26:17 -04:00 by jared · 1 comment
Owner

The thread composer (P3-8) landed after the privacy toggle. Verify that useTypingStatusUpdater in the thread composer path checks hideActivity exactly like the main composer; if not, that is a privacy leak — typing notices are sent in the thread even with the toggle on. Add a unit test on the gate.

The thread composer (P3-8) landed after the privacy toggle. Verify that `useTypingStatusUpdater` in the thread composer path checks `hideActivity` exactly like the main composer; if not, that is a privacy leak — typing notices are sent in the thread even with the toggle on. Add a unit test on the gate.
jared added this to the Features 2026-Q4 milestone 2026-09-17 16:26:17 -04:00
jared added the bugpriority: highsecurityarea: threads labels 2026-09-17 16:26:17 -04:00
jared self-assigned this 2026-09-17 16:26:17 -04:00
Author
Owner

Verified on the local dev homeserver with Playwright (scripts/dev-homeserver.sh), capturing every request to /typing/ and /receipt/ while typing in the main composer and in the thread composer (thread opened from the root's "2 replies" chip), then receiving a new thread reply while the panel was open. Settings toggled through the real Settings UI, persisted across a reload.

setting main typing PUTs thread typing PUTs receipts
privacy off 1 2 m.read ×4 (all thread_id scoped)
Hide Typing & Read Receipts + Private Read Receipts on 0 0 m.read.private ×4 (all thread_id scoped)

The thread composer is the same RoomInput as the main one and its typing calls are gated on hideActivity (RoomInput.tsx:875). Verified — closing.

Verified on the local dev homeserver with Playwright (`scripts/dev-homeserver.sh`), capturing every request to `/typing/` and `/receipt/` while typing in the **main** composer and in the **thread** composer (thread opened from the root's "2 replies" chip), then receiving a new thread reply while the panel was open. Settings toggled through the real Settings UI, persisted across a reload. | setting | main typing PUTs | thread typing PUTs | receipts | |---|---|---|---| | privacy off | 1 | 2 | `m.read` ×4 (all `thread_id` scoped) | | **Hide Typing & Read Receipts + Private Read Receipts on** | **0** | **0** | **`m.read.private` ×4** (all `thread_id` scoped) | The thread composer is the same `RoomInput` as the main one and its typing calls are gated on `hideActivity` (`RoomInput.tsx:875`). Verified — closing.
jared closed this issue 2026-09-18 00:37:19 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: LotusGuild/cinny#140