This release includes 3 breaking changes for platform teams planning a safe upgrade.
Published 26d
MCP Developer Tools
✓ No known CVEs patched
✓ No known CVEs patched in this version
Topics
agentic-ai
ai
analytics-engineering
database
harness
mcp
+1 more
self-hosted
Affected surfaces
deps
breaking_upgrade
Summary
AI summaryUpdates Upgrade notes for admins, 0.4.23 — 2026-06-30, and https://docs.astral.sh/uv/ across a mixed release.
Full changelog
0.4.23 — 2026-06-30
Upgrade notes for admins
- Rebuild images after pulling:
docker compose up -d --build. The backend image
now installs Python dependencies with uv from the committeduv.lock
instead ofpip; a normal rebuild picks this up. No migrations, no new runtime
env vars. - Contributors: local setup is now
uv sync --all-extras(install
uv first) rather thanpip install -e ".[…]",
and checks run viauv run …. See.github/CONTRIBUTING.md.
Changed
- Adopted uv as the project's package manager so the backend has the same
lockfile guarantee the frontend already has with npm:pyproject.toml+
uv.lock+ a lockfile-enforced install. The Docker build and every CI job now
install viauv sync --locked(thenpm cianalogue — the build fails if
uv.lockhas drifted frompyproject.toml), and the lint job runs an explicit
uv lock --checkdrift gate. - Pre-commit now runs the backend Python hooks (ruff, mypy, pyrefly, pytest)
throughuv run --no-syncagainst the locked.venv, replacing the
separately-pinnedruff-pre-commitrepo and the bare.venv/bin/pyrefly
entries. Pre-commit and CI therefore use the exact same lockfile-resolved tool
versions (no ruff version drift between local commits and CI). - Moved
devdependencies from[project.optional-dependencies]to PEP 735
[dependency-groups]: installed by default withuv sync, excluded from the
production image viauv sync --no-dev(mirrors npmdevDependencies). - Rewrote the backend
Dockerfileto copy uv from the official pinned image and
do a cached two-phase sync (deps without the project, then the project), with
the synced/app/.venvonPATH. - CI now provisions Python via
astral-sh/setup-uv(pinned uv 0.9.28) on Python
3.12 — matching the runtime image — and runs the tools throughuv run. - Updated contributor/setup docs (
.github/CONTRIBUTING.md, projectCLAUDE.md)
from pip to uv, and fixed a staleweb/→backend/path in the checks list.
Fixed
- Regenerated
uv.lock, which was incomplete (missingfreezegun,
model-bakery,pytest-django,pytest-mock) because nothing had ever
installed from it. It is now the enforced source of truth.
Breaking Changes
- Backend Python dependencies now installed with uv from `uv.lock` instead of pip; rebuilds required via `docker compose up -d --build`.
- Local contributor setup changed to `uv sync --all-extras` (install uv first) and CI jobs use `astral-sh/setup-uv` provisioning Python 3.12 with uv 0.9.28.
- Pre‑commit hooks run through `uv run --no-sync` against the locked `.venv`, replacing previous pip‑based configurations.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About TetherDust
All releases →Related context
Related tools
Beta — feedback welcome: [email protected]