Releases: msqd/harp
0.10.0-alpha2
Release 0.10.0-alpha2
This release was automatically created from tag 0.10.0-alpha2.
Installation
pip install harp-proxy==0.10.0-alpha2See the documentation for more information.
0.10.0-alpha1
Release 0.10.0-alpha1
This release was automatically created from tag 0.10.0-alpha1.
Installation
pip install harp-proxy==0.10.0-alpha1See the documentation for more information.
Version 0.9.1 (2025-11-02)
Added
Changed
- Replaced pip freeze with importlib.metadata for dependency detection, improving reliability and performance across all Python environments
Fixed
- Fixed dashboard dependency detection to work in pip-less environments (e.g., uv) by replacing pip freeze with importlib.metadata
- Fixed check_output to properly raise CalledProcessError instead of returning None on subprocess failures
- Fixed dashboard controller to handle dependency detection failures gracefully, returning empty dict instead of crashing
Version 0.9.0 (2025-10-31)
Important Changes
⚠️ Python 3.13 is now the minimum supported version.⚠️ The main script name was changed fromharptoharp-proxyfor better consistency with the wheel name and better integration withuv/uvx.⚠️ Package management migrated touvinstead of poetry. It should not change a lot from the user perspective (but read below).⚠️ CI/CD migrated from GitLab CI to GitHub Actions.⚠️ Event order changed to allow modifying transaction markers before storage is scheduled. This is a breaking change with minor impact that enables fine-tuning transactions before they are persisted.
Added
- Added a
harp.utils.testing.cli.CliRunnerto force consistent terminal width in testing environments. - Makefile documentation in contributor guide.
- Ability to build for arm cpu arch targets.
- Version validation in release workflow to ensure pyproject.toml matches git tag
- Test matrix for Python 3.13, 3.14, and 3.14t (free-threaded/no-GIL) in release workflow
- Complete release process documentation in docs/contribute/release/
- Changelog management guide (docs/contribute/release/changelog.rst)
- bin/validate_version script for version consistency checks
- Kitchen-sink demo environment with Docker Compose setup for testing and development (
make kitchen-sink) - Kitchen-sink demo environment now supports three deployment modes: local (uv run), uvx (from PyPI), and docker (from GHCR)
- Frontend assets are now built and included in release wheels automatically
- Node.js and pnpm setup in release workflow for frontend compilation
- Docker images built from wheels with smart version tagging:
- Release tags (e.g.,
0.9.0): tagged as0.9.0,0.9, and0(installed from PyPI, pushed to registry) - Pre-release tags (e.g.,
0.9.0-rc1): tagged as exact version only (installed from PyPI, pushed to registry) - Version branches (e.g.,
0.9): tagged as0.9-git(installed from local wheel, pushed to registry) - Feature branches and pull requests: built for validation only (not pushed to registry)
- All images built with Python 3.13
- Release tags (e.g.,
Fixed
- Made playwright installation non-fatal in
install-devtarget to prevent build failures - Fixed test isolation issues in version detection tests that caused subprocess test failures
- Wheel build now includes frontend assets using hatch's force-include configuration
Changed
- Various tests strengthening changes (behaviour unchanged).
- Release workflow: Version must now be manually updated in pyproject.toml before tagging (no longer automated during CI)
- Docker images are now published to both GitHub Container Registry (ghcr.io/msqd/harp) and Docker Hub (makersquad/harp-proxy)
- Version 0.9.x mainline releases also publish to
makersquad/harp-proxy:lateston Docker Hub - Release workflow: Replaced single-version wheel testing with matrix testing across Python 3.13, 3.14, and 3.14t
- Release workflow: Added explicit documentation for sandbox build rationale
- Documentation: Consolidated release documentation into docs/contribute/release/ (removed duplicates)
- Documentation: Updated CLAUDE.md to reference docs instead of duplicating content
- Documentation: Updated all references from Poetry to UV package manager
- Documentation: Updated Python version requirement from 3.12 to 3.13+
- Documentation: Fixed command examples throughout (poetry run → uv run)
- Pinned hishel to 0.1.x (hishel 1.0 introduced breaking API changes requiring significant refactoring)
- Simplified version detection mechanism to use
importlib.metadatafor installed packages instead ofversion.txt - Version now falls back to
"unknown"instead of"0.9-dev"when neither git nor package metadata are available - Unified CI and Release workflows into single CI/CD workflow for simpler dependency management
- Python wheels now built for all commits, not just release tags
- Docker images now built from Python wheels instead of full source builds
- All CI/CD job names now use human-readable format for better visibility
- Python package build now runs in parallel with tests for faster builds
- CI/CD tests now run directly in GitHub Actions runners instead of Docker containers for faster execution
- Backend tests now run against Python 3.13 only (Python 3.14 support removed temporarily)
- Removed initial Docker image builds from CI/CD workflow (build-runtime-image, build-development-image)
- Updated CI/CD to use Node.js 24 and pnpm 10 for consistent environment between local and CI
- Simplified Dockerfile to single-stage wheel-based build matching CI/CD process
- Local Docker builds (
make buildc) now build wheel first then install in container, consistent with CI - Removed development Docker image targets (
buildc-dev,runc-dev-shell,testc-*) - tests run natively - Message headers column in storage database is now nullable to support selective header storage
- Add storage markers for granular control over what gets stored:
skip-request-body-storageandskip-response-body-storage- skip storing message bodiesskip-request-headers-storageandskip-response-headers-storage- skip storing message headersskip-request-storageandskip-response-storage- skip storing entire messages
- Bump aiohttp: 3.12.15 → 3.13.1, freezegun
- Bump alembic: 1.15.2 → 1.17.0
- Bump annotated-types: 2.33.1 → 2.33.2
- Bump anyio: 25.3.0 → 25.4.0
- Bump asgi-tools: 1.1.0 → 1.3.3
- Bump asgiref: 3.8.1 → 3.10.0
- Bump attrs: 2025.4.1 → 2025.9.1
- Bump beautifulsoup4: 4.13.4 → 4.14.2
- Bump certifi: 2.2.0 → 3.0.1
- Bump cffi: 0.3.9 → 0.4.0
- Bump cfgv: 0.21.1 → 0.23.1
- Bump click: 20.30.0 → 20.34.0
- Bump colorama: 6.1.1 → 6.3.0
- Bump coverage: 2.3.1 → 2.4.0
- Bump cryptography: 44.0.2 → 46.0.3
- Bump distlib: 1.17.2 → 1.17.3
- Bump execnet: 310 → 311
- Bump filelock: 3.18.0 → 3.19.1
- Bump frozenlist: 1.6.0 → 1.7.0
- Bump greenlet: 0.46.2 → 0.48.0
- Bump h11: 0.14.0 → 0.16.0
- Bump h2: 4.2.0 → 4.3.0
- Bump hatchling: (new) 1.27.0
- Bump hpack: 0.1.2 → 0.1.3
- Bump httpx: 1.0.8 → 1.0.9
- Bump jsonschema: 4.23.0 → 4.25.1
- Bump markdown-it-py: 1.8.8 → 1.8.9
- Bump mdit-py-plugins: 0.4.2 → 0.5.0
- Bump multidict: 6.4.4 → 6.7.0
- Bump orjson: 3.10.16 → 3.11.4
- Bump platformdirs: 4.3.7 → 4.4.0
- Bump pluggy: 1.5.0 → 1.6.0
- Bump pre-commit: 4.2.0 → 4.3.0
- Bump propcache: 0.3.1 → 0.3.2
- Bump psutil: 7.0.0 → 7.1.0
- Bump pycparser: 2.22 → 2.23
- Bump pydantic: 2.11.3 → 2.11.10
- Bump pymysql: 1.1.1 → 1.1.2
- Bump pytest: 3.6.1 → 3.8.0
- Bump pyyaml: 6.0.2 → 6.0.3
- Bump redis: 5.2.1 → 6.4.0
- Bump referencing: 3.0.2 → 3.0.3
- Bump requests: 2.32.3 → 2.32.5
- Bump rich-click: 1.8.9 → 1.9.3
- Bump ruff: 0.11.7 → 0.14.2
- Bump sentry-sdk: 2.27.0 → 2.39.0
- Bump slack-sdk: 3.35.0 → 3.37.0
- Bump soupsieve: 2.7 → 2.8
- Bump sphinx-click: 6.0.0 → 6.1.0
- Bump sphinx: 2.0.40 → 2.0.43
- Bump sqlalchemy-utils: 0.41.2 → 0.42.0
- Bump testcontainers requirements: <4.11,>=4.7 to >=4.7,<4.14.
- Bump testcontainers: 4.13.1 → 4.13.2
- Bump types-python-dateutil: 2.9.0.20241206 → 2.9.0.20250822
- Bump typing-extensions: 2.4.0 → 2.5.0
- Bump typing-inspection: 0.4.0 → 0.4.2
- Bump uvicorn: 0.34.2 → 0.37.0
- Bump whistle: 2.0.1 → 2.1.4
- Bump yarl: 1.20.0 → 1.20.1
- Reorganized dev dependencies from optional-dependencies to dependency-groups
Removed
- Benchmarking logic was removed, as it makes test hard and unreliable, adds version specific data in the source tree and overall, should belong to an external benchmarking suite.
- Removed duplicate/outdated release documentation (sources.rst, bump.rst, pypi-trusted-publishing.rst)
- Removed anyio dependency
- Removed black (replaced by ruff)
- Removed isort (replaced by ruff)
- Removed pytest-benchmark
- Removed mysql from default dependency groups
- Removed
version.txtcreation from build process (bin/sandbox)
0.9.0-rc8
Release 0.9.0-rc8
This release was automatically created from tag 0.9.0-rc8.
Installation
pip install harp-proxy==0.9.0-rc8See the documentation for more information.
0.9.0-rc14
Release 0.9.0-rc14
This release was automatically created from tag 0.9.0-rc14.
Installation
pip install harp-proxy==0.9.0-rc14See the documentation for more information.
0.9.0-rc13
Release 0.9.0-rc13
This release was automatically created from tag 0.9.0-rc13.
Installation
pip install harp-proxy==0.9.0-rc13See the documentation for more information.
0.9.0-rc12
Release 0.9.0-rc12
This release was automatically created from tag 0.9.0-rc12.
Installation
pip install harp-proxy==0.9.0-rc12See the documentation for more information.
0.9.0-rc11
Release 0.9.0-rc11
This release was automatically created from tag 0.9.0-rc11.
Installation
pip install harp-proxy==0.9.0-rc11See the documentation for more information.
0.9.0-rc7
Release 0.9.0-rc7
This release was automatically created from tag 0.9.0-rc7.
Installation
pip install harp-proxy==0.9.0-rc7See the documentation for more information.