Support blob type visualization - #72
Conversation
gordonmurray
left a comment
There was a problem hiding this comment.
Thanks for implementing media detection and inline previews. This is a useful direction for issue #3, but I’m requesting changes before merge.
I need to define the binary/media response contract before this implementation can land. The viewer must not embed arbitrary-size images, audio, or video as base64 in every /rows response. That would make large binary datasets substantially slower and could worsen the existing large-payload problem. Browser-side loading="lazy" does not avoid transferring the base64 data already present in the JSON response.
The intended design should be:
- small media may be returned inline under a documented size limit;
- larger media returns metadata only, without a base64 payload;
- loading large media happens through an explicit, bounded/lazy request or user action;
- the API contract clearly distinguishes media metadata from inline content.
I’ll follow up with the exact size limit and endpoint contract. After that, please revise the implementation and add:
- API-level tests for small and oversized media values;
- compatibility tests for ordinary and fixed-size binary columns;
- the media response contract in docs/spec.md;
- the required [Unreleased] CHANGELOG.md entry referencing issue #3.
The preview UX is beneficial, but the current eager full-payload behavior is not safe to merge.
|
Hi @gordonmurray thanks for the feedback! On inline storage fetch vs extra access, I'm thinking whether we could
|
Closes #3
Hi team, since lance file format specializes for multi-model support, in this PR I want to add inline visualization for blob-type data, including videos, images, audios, etc.
In simple words, the backend detects media formats from binary signatures and returns MIME metadata with a base64 payload. The frontend renders recognized values as inline images, audio, or video.
Example UI display

Followup items
AI usage disclaimer:
GPT-5.5 helped me make the code change, I deployed my own fork to k8s and verified it worked