diff --git a/docs/core-checklist-status.md b/docs/core-checklist-status.md index e841320..5a7472c 100644 --- a/docs/core-checklist-status.md +++ b/docs/core-checklist-status.md @@ -22,7 +22,7 @@ Legend: 13. Reactions - `DONE` 14. Delivery Status - `DONE` (sent/delivered/read + reconnect reconciliation after backend restarts) 15. Typing Realtime - `DONE` (web: typing start/stop + recording voice start/stop; `recording_video_*` remains for mobile circle-video clients) -16. Media & Attachments - `DONE` (upload/preview/download/gallery; sticker/GIF inline media no longer opens photo viewer on click; Chat Info and message context menus use blob-download flow with success/error toasts) +16. Media & Attachments - `DONE` (upload/preview/download/gallery; sticker/GIF inline media no longer opens photo viewer on click; Chat Info and message context menus now have consistent `Open/Download/Copy` behavior with menu auto-close and download toasts) 17. Voice Messages - `PARTIAL` (record/send/play/seek + global speed 1x/1.5x/2x; recorder uses improved mime priority for better duration metadata; backend media allowlist includes `audio/mp4`/`audio/x-m4a`; audio store tracks duration via `durationchange/seekable` fallback; websocket send/recorder stop race on fast chat switch is guarded; UX still being polished) 18. Circle Video Messages - `PARTIAL` (mobile-priority only: backend type/realtime supported; web composer intentionally does not send circles) 19. Stickers - `PARTIAL` (web sticker picker with preset pack + favorites) diff --git a/web/src/components/ChatInfoPanel.tsx b/web/src/components/ChatInfoPanel.tsx index f3a4d4b..0efa024 100644 --- a/web/src/components/ChatInfoPanel.tsx +++ b/web/src/components/ChatInfoPanel.tsx @@ -987,9 +987,16 @@ export function ChatInfoPanel({ chatId, open, onClose }: Props) { style={{ left: attachmentCtx.x, top: attachmentCtx.y }} onClick={(event) => event.stopPropagation()} > - +