You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Expanded media navigation is currently scoped to the attachment group that opened it, not to the thread.
On web/desktop, opening one of several images attached to the same user message provides previous/next arrows, ArrowLeft/ArrowRight shortcuts, wraparound, and a position counter. However, opening an image cannot continue to images or other previewable attachments in earlier or later messages. Preview-annotation images are opened as a one-item collection. Mobile similarly opens a single-item viewer.
In a long thread containing screenshots, generated images, videos, PDFs, or other file attachments, reviewing those items means closing the preview, scrolling through the conversation, locating the next item, and opening it again.
Proposed experience
Treat previewable items already represented in the active thread as one ordered collection:
Opening any item starts at that item.
Previous/next controls navigate through items in timeline order across message boundaries.
Web/desktop support visible arrows and ArrowLeft/ArrowRight.
Mobile supports swipe navigation and accessible previous/next controls.
Show the current item name/type and position, for example 7 / 18.
Preserve a way to locate or return to the source message for the current item.
Skip unsupported or unavailable items gracefully.
Items could include user attachments and assistant-produced media/files that already have a safe preview or open action. This does not need to include arbitrary workspace files, browser tabs, terminal sessions, or files that are not represented in the thread.
Smallest useful scope
Start with all previewable image/video attachments visible in the loaded thread, across user and assistant messages. The existing expanded viewer and media action model can remain the presentation surface; only the collection passed to it needs to become thread-wide. Other file types can participate when they already have an in-app preview.
Constraints
Do not eagerly fetch full attachment bytes merely to build the collection.
Avoid rescanning or rerendering the full timeline on every navigation step in long threads.
Preserve authenticated/scoped asset access for remote, relay, and tunnel connections.
Keep navigation stable if a media item fails to load or the live thread receives a new item.
Current implementation
ExpandedImageDialog already implements previous/next controls and keyboard navigation when preview.images.length > 1.
Normal timeline images call buildExpandedImagePreview(regularImages, image.id), where regularImages belongs only to the current user message.
Preview annotations call it with [props.image].
Mobile stores only one { uri, headers } as the expanded image and passes a one-element array to ImageViewing.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Problem
Expanded media navigation is currently scoped to the attachment group that opened it, not to the thread.
On web/desktop, opening one of several images attached to the same user message provides previous/next arrows, ArrowLeft/ArrowRight shortcuts, wraparound, and a position counter. However, opening an image cannot continue to images or other previewable attachments in earlier or later messages. Preview-annotation images are opened as a one-item collection. Mobile similarly opens a single-item viewer.
In a long thread containing screenshots, generated images, videos, PDFs, or other file attachments, reviewing those items means closing the preview, scrolling through the conversation, locating the next item, and opening it again.
Proposed experience
Treat previewable items already represented in the active thread as one ordered collection:
7 / 18.Items could include user attachments and assistant-produced media/files that already have a safe preview or open action. This does not need to include arbitrary workspace files, browser tabs, terminal sessions, or files that are not represented in the thread.
Smallest useful scope
Start with all previewable image/video attachments visible in the loaded thread, across user and assistant messages. The existing expanded viewer and media action model can remain the presentation surface; only the collection passed to it needs to become thread-wide. Other file types can participate when they already have an in-app preview.
Constraints
Current implementation
ExpandedImageDialogalready implements previous/next controls and keyboard navigation whenpreview.images.length > 1.buildExpandedImagePreview(regularImages, image.id), whereregularImagesbelongs only to the current user message.[props.image].{ uri, headers }as the expanded image and passes a one-element array toImageViewing.Related work
/attachments#113 added the existing per-message gallery navigation while implementing persisted message image attachments.All reactions