Version 0.10.0 (2025-12-04)¶
Added¶
Added cache debugging headers to HTTP responses:
X-Cache: MISSheader on non-cached responsesX-Cache: HITheader on cached responsesAgeheader showing cache age in seconds for cached responses
Application dependency resolution with topological sorting to ensure correct initialization order
ApplicationSettingsMixin for standardized enable/disable functionality in application settings
autoload_dependenciesparameter forApplicationsRegistry.add()to automatically load declared dependencies--strictCLI flag for enforcing strict configuration validationWarning system for misconfigured applications (config exists for unloaded apps)
Two-pass configuration parsing to filter applications with
enabled: falseharp-proxy systemcommand group withconfigandservicessubcommands for system inspection:harp-proxy system configdisplays the compiled configuration (replacesharp-proxy config)harp-proxy system servicesshows all configured services with their dependencies, aliases, and configuration
Added normalized cache key generation for load balancing support:
Cache keys now exclude protocol, hostname, and port from URLs
Resources accessed via different backend servers share cache entries
Implemented via custom
AsyncCacheTransportthat normalizes URLsMaintains full HTTP RFC compliance including Vary header support
Added integration test suites for http_cache application:
harp_apps/http_client/tests/with_http_cache/- Integration tests verifying http_client with http_cache enabledharp_apps/proxy/tests/with_http_cache/- Integration tests verifying proxy with http_cache enabledTests verify proper cache behavior, backward compatibility, and isolation between endpoints
Added
harp.DEBUGflag for enabling debug information output. Set viaHARP_DEBUGorDEBUGenvironment variables. When enabled, error responses include full exception tracebacks. This should not be enabled in production environments as it may expose sensitive information.
Changed¶
BREAKING CHANGE: Removed
enable_uisetting from DashboardSettings. Useenabled: falseinstead to disable the dashboard application entirely. Theenabledfield fromApplicationSettingsMixinnow controls whether the dashboard app is loaded.BREAKING CHANGE: Renamed
harp-proxy configcommand toharp-proxy system configThe config command is now a subcommand under the
systemcommand groupUse
harp-proxy system configinstead ofharp-proxy configAll existing options (
--raw,--json,--unsecure) continue to work
BREAKING CHANGE: Migrated HTTP client caching from hishel 0.1.x to hishel 1.x with new architecture.
New ``http_cache`` application: Cache functionality has been moved to a dedicated
http_cacheapplication that depends onhttp_client. This provides better separation of concerns.Package restructuring: All cache-related code moved from
harp_apps.http_client.contrib.hishel.*toharp_apps.http_cache.*(flattened structure)Configuration changes: Cache configuration moved from
http_client.cache.*tohttp_cache.*Updated documentation examples to use new hishel 1.x configuration (
policyinstead ofcontroller)Cache policy now uses
hishel.SpecificationPolicywithCacheOptionsinstead ofhishel.ControllerThe following cache configuration parameters are no longer available:
allow_heuristics- Hishel 1.x strictly follows RFC 9111cacheable_status_codes- Determined by RFC 9111 compliancecacheable_methods→ Usehttp_cache.policyservice override with customCacheOptions.supported_methodsallow_stale→ Usehttp_cache.policyservice override with customCacheOptions.allow_stale
Cached data from hishel 0.1.x remains fully compatible and readable
Note: http_cache uses a temporary workaround in its
on_bindevent to configure http_client’s transport. This will be replaced with proper cross-app service overrides once issue #806 is implementedIf you’re using custom cache configuration, update your config:
Old (hishel 0.1.x with http_client.cache):
http_client: cache: enabled: true controller: type: hishel.Controller arguments: allow_stale: false cacheable_methods: [GET, HEAD]
New (hishel 1.x with http_cache app):
http_cache: enabled: true policy: type: hishel.SpecificationPolicy # Default CacheOptions are provided by services.yml # To customize, override the entire policy service
Cookiecutter template migrated from Poetry to UV (PEP 621, Python 3.13, hatchling), with enhanced Makefile, improved prompts, and automatic git initialization.
Removed¶
Removed the
telemetryapplication that was sending anonymous usage statistics every 24 hours. This reduces network overhead and eliminates potential privacy concerns for users in regulated environments.
Fixed¶
Fixed application filtering when
enabled: falseis specified using Pydantic model instances. Previously, the configuration builder only recognized disabled applications when configuration was provided as a dict, not when passed as instantiated settings objects. This caused disabled applications to still be loaded and their services to be registered.Fixed cache status tracking after hishel 1.x migration: proxy controller now reads
X-Cacheheader to determine if response was cached, and stores cache age fromAgeheader when available. Previously, cache status was never recorded because the oldfrom_cacheextension no longer exists in hishel 1.x.Fixed test discovery incorrectly including
misc/directory worktree applications intest_all_applications_settings.pyGenerated projects now properly isolate pytest tests and include correct startup instructions.