Repository navigation
fix(web): display local images in chat - #110
Merged
Merged
Conversation
enisze
marked this pull request as ready for review
October 6, 2026 22:09
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Markdown images in chat bypassed the existing media renderer, so local image paths reached the browser directly and failed to load. Route those images through the shared media resolver and signed environment asset URLs, preserve file/data/blob sources through markdown sanitization, and use the existing loading, failure, and expandable-preview components.
Web and desktop share this fix. Mobile already resolves markdown images through signed assets. The wire contract and provider adapters are unchanged, and image requests still target the thread's environment for remote connections.
Validation: 12 chat-image regression tests and 51 shared media-resolution tests pass. Focused lint has no errors. Web typechecking passes with the two pre-existing voice test files excluded; the normal check fails because those files import the unavailable
vitestmodule. Browser verification reproduced the broken relative request before the fix and confirmed a decoded 640×320 image through the signed asset endpoint afterward. Click-to-expand and Escape-to-close work, and the preview covers the viewport. The macOS arm64 DMG was built from merged commit3f5175e7e6f4, locally signed with an ad hoc signature, verified, and installed in place of the previous app with a backup retained. GitHub CI remains queued.Before:
After:
Model: GPT-6. Harness: Codex.