All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Inline preview for small media held in binary columns. The backend detects images, audio, and video from file signatures and returns the MIME type with the size. A value of 64 KiB or less carries a base64 payload, and the table draws it inline. A larger value returns its type and size only (#3).
- Tables can be opened at main, a numeric version, or a tag (#83).
- Dataset locations can be selected in the UI when
DATA_PATHis set to an empty value (#83). - CI smoke test. Each build starts the image it just built and checks
/healthz,/datasets, and the static files, before the image is published (#67).
- GitHub Actions pinned to the majors that run on Node 24, before Node 20 leaves the runners (#60).
- FastAPI startup logging moved from the deprecated
on_eventdecorator to a lifespan context manager (#77). - Dataset loading now fetches combined schema and column metadata in parallel with row data, reducing four sequential I/O operations to two concurrent requests (#75).
- FastAPI raised from 0.104.1 to 0.141.1, and the test suite moved from httpx to httpx2. The old FastAPI brought starlette 0.27, which passed an argument that httpx had deprecated, so the test instructions had to hold httpx below 0.28. Test runs are now free of deprecation warnings (#81).
- LanceDB 0.36.0 and PyArrow 25 are now supported and recommended. The
latest,stable, and app-version container tags now use this dependency set. - Uvicorn raised from 0.24.0 to 0.52.1 and python-multipart from 0.0.6 to 0.0.32.
- Python package builds now require setuptools 83 or newer and wheel 0.47 or newer.
- Frontend content is now built with safe DOM APIs instead of
innerHTML, preventing dataset-controlled column names from injecting markup through vector tooltips (#32). - Older dataset, metadata, and row responses no longer overwrite a newer selection when requests finish out of order (#79).
docker buildno longer fails with "the destination must be a directory and end with a /".COPY backend/*.py .needs a trailing slash when it copies more than one file. The classic builder rejected it, the BuildKit builder did not (#62).- CI publishes no image until the test job passes. The build job now depends on the test job, so a failing test stops the release (#66).
- CI and release builds preserve the legacy LanceDB 0.3.1, 0.3.4, and 0.5 variants by reusing their last published dependency layers. Their packages are no longer available from PyPI (#92).
- Maximum rows per page raised from 200 to 1000. The page-size dropdown gains 500 and 1000 options; the default stays at 50 (#58).
- README screenshot replaced with one showing vector columns: CLIP badges, per-row sparklines, and the highlighted vector field in the schema panel. The old screenshot only showed scalar columns.
- LanceDB 0.33.0 support with a matching container image tag. 0.33.0 is now the recommended version and carries the
latest,stable, andv{version}tags (#53). - API endpoint test suite (pytest + FastAPI TestClient) covering all six endpoints, pagination, column filtering, value serialization, and corrupted-dataset handling. The CI test job now runs it against every supported Lance version (#28).
- Frontend fetch calls now check
response.okbefore parsing JSON, so HTTP error responses surface as error states instead of being parsed as data (#27). /rowswith unknown column names and/vector/previewwith a missing or non-vector column now return 400 as intended; the error was previously masked as a generic 500 (#28)./datasetsuseslist_tables()on lancedb versions that have it, falling back to the deprecatedtable_names()on older ones (#54).
- README refresh: corrected the supported-data-types section (variable-length float vectors render fully since #14; no 2048-dimension limit), documented the release image tags from #46, added test suite instructions, and linked CONTRIBUTING.md and CHANGELOG.md (#51).
- LanceDB 0.29.2 support with a matching container image tag (#15).
- Rendering for
FixedSizeListvectors and nested Arrow schemas, plus a UI word-wrap toggle for long text columns (#14). - Configurable listening port via the
PORTenvironment variable (#36). VERSIONfile at repo root as the single source of truth for the app version, consumed bybackend/app.pyat import and by the Docker build viaAPP_VERSIONbuild-arg.v{version}GHCR tag on the canonical Lance variant when av*git tag is pushed, so users can pin to an app release without specifying a Lance version.
- Native LanceDB pagination replaces full-table loads, avoiding OOM on large datasets (#18).
- Binary fields are decoded as UTF-8 where possible before falling back to base64 (#16).
docker/entrypoint.shis now used as the image ENTRYPOINT soDATA_PATHvalidation runs before uvicorn starts (#35).- Version compatibility flags in
/healthzuse semantic comparison instead of string comparison (#34).
- README updated for 0.29.2 as the recommended tag, registry URL corrected, and
PORTdocumented (#37). - docker-compose example added to the README for pipeline integration (#38).
- CONTRIBUTING.md describing design philosophy and constraints.
- GitHub issue templates for bug reports and feature requests.
Initial release.