Rich toast: thread / invite quick-reply misroutes (reply target is the coalescing tag, not a room id) #17

Closed
opened 2026-09-17 23:24:13 -04:00 by jared · 1 comment
Owner

Migrated from LOTUS_TODO.md on 2026-09-17 (the file is now reference-only).

[Med] [desktop] Thread / invite quick-reply misroutes. The reply target is the coalescing tag — ${roomId}:${threadId} for thread replies, 'lotus-invites' for invites (ClientNonUIFeatures.tsx:471,192) — not a real room id, so mx.sendMessage(tag, …) fails silently (useTauriToastActions.ts:37). Body-click navigation is correct (uses path). Fix: pass the real roomId separately (e.g. data.roomId) and have the shim (lib.rs NOTIFICATION_BRIDGE) + toast.rs use it for the reply target; keep tag for coalescing. Invite toasts should also drop the reply box (nothing to reply to).

_Migrated from `LOTUS_TODO.md` on 2026-09-17 (the file is now reference-only)._ **[Med] [desktop]** **Thread / invite quick-reply misroutes.** The reply target is the coalescing `tag` — `${roomId}:${threadId}` for thread replies, `'lotus-invites'` for invites (`ClientNonUIFeatures.tsx:471,192`) — not a real room id, so `mx.sendMessage(tag, …)` fails silently (`useTauriToastActions.ts:37`). Body-click navigation is correct (uses `path`). Fix: pass the real `roomId` separately (e.g. `data.roomId`) and have the shim (`lib.rs` `NOTIFICATION_BRIDGE`) + `toast.rs` use it for the reply target; keep `tag` for coalescing. Invite toasts should also drop the reply box (nothing to reply to).
jared added this to the Desktop 2026-Q4 milestone 2026-09-17 23:24:13 -04:00
jared added the bugpriority: mediumarea: native labels 2026-09-17 23:24:13 -04:00
Author
Owner

Fixed in c1ae01b + cinny 3b6de2fd. The bridge now passes tag, roomId and threadId separately; the reply target is the real room id, never the coalescing tag. Thread replies go into the thread (m.thread relation). Invite toasts (no room id) get no reply box.

Verified in the real app with the real bridge script and a stubbed invoke:

  • room message → tag=roomId, roomId
  • thread reply → tag=room:thread, roomId, threadId
  • invite → tag=lotus-invites, no roomId
  • quick reply with threadId → sent with rel_type: m.thread to the right root
Fixed in `c1ae01b` + cinny `3b6de2fd`. The bridge now passes `tag`, `roomId` and `threadId` separately; the reply target is the real room id, never the coalescing tag. Thread replies go into the thread (`m.thread` relation). Invite toasts (no room id) get no reply box. Verified in the real app with the real bridge script and a stubbed `invoke`: - room message → `tag=roomId, roomId` - thread reply → `tag=room:thread, roomId, threadId` - invite → `tag=lotus-invites`, no `roomId` - quick reply with `threadId` → sent with `rel_type: m.thread` to the right root
jared closed this issue 2026-09-23 22:46:49 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: LotusGuild/cinny-desktop#17