Changelog
What changed, and what you need to do about it.
Notable changes to LensHub, newest first. Entries that require action when upgrading are marked.
Self-hosted: read Upgrades before pulling new images. Database migrations are applied before starting new containers, not after.
Managed: upgrades happen for you. Entries marked action required generally do not apply.
Unreleased
- Deploying apps in steps.
build: falsestages files over several calls and builds once, for agents that write the app in their replies;merge: truechanges only the files sent;validate_only: truechecks a deploy in a second without building; every deploy reports what arrived and what changed;lenshub_app_filesreads a release's files back. Failed builds name the step that failed. Requests an app sends the egress proxy for its own localhost are answered with the fix instead of counted as refusals. Upload links now require the archive's sha256. Migration 057 (additive); appd needs the new image. - App source uploads.
lenshub_app_upload_urlgives an agent a one-time link to PUT a.tar.gz/.zipfrom its shell instead of inlining every file; the API-key deploy routes accept archives too. Every deploy now returns a manifest of what arrived (file count, bytes, sha256 per file). Migration 056 (additive). - Documentation site. These docs, generated in part from the source so the reference tier cannot drift from what the code does.
September 2026 — platform hardening
Action required (self-hosted): back up first. Migrations 052–055 are applied
by the new migrate service on docker compose up; outside the bundled compose
file, run migrate.sh --apply before starting the new api and worker, and start
both together — 055 removes a column an older worker still writes. See
Upgrades.
- Migrations before start. A
migrateservice runs pending migrations and exits; the api and worker wait for it. - Backups.
scripts/backup.sh, a scheduledbackupservice andscripts/restore.sh, with checksums and a tested round trip. - Retention. Old jobs, logs, sessions and audit entries are deleted after
14–365 days (
RETENTION_*_DAYS). The audit log was previously kept forever. - Metrics. Prometheus on the API, worker and appd.
- Job retries. Failed jobs retry with backoff; code files that keep failing are marked failed and shown on the Embeddings tab.
- Search. Faster, keeps working when the embedder is down, and searches no
longer wait behind bulk indexing. The
RRF_ENABLED,SEARCH_FEDERATIONandRRF_MULTILANEswitches are gone. - Apps. Builds can install dependencies from public hosts through the egress
proxy (
APPD_BUILD_NETWORK=proxy). CGNAT and other non-public addresses need an internal approval. Optional TLS / mutual TLS between the API and appd. - Audit. Sign-ins through an agent's OAuth page are recorded.
- Plane connector.
Entries are added as releases are cut. For the exact contents of the version you are running, see the build identity in Settings → About.