Releases: limehee/hookrouter
Releases · limehee/hookrouter
v0.4.0
Highlights
- Tuned runtime resilience defaults to be more production-ready across local and production environments.
- Removed overly restrictive IDE value hints from Spring configuration metadata.
- Updated docs to align runtime defaults, IDE metadata behavior, and dead-letter guidance.
Changes
WebhookConfigPropertiesdefaults were adjusted for retry/timeout/rate-limiter/bulkhead behavior.additional-spring-configuration-metadata.jsonwas updated so IDE inspections do not force invalid fixed values.- Documentation was refreshed in:
docs/configuration-reference.mddocs/dead-letter-guide.mddocs/spring-boot-guide.md
Compatibility
- API compatibility was checked against
v0.3.0.
Verification
./gradlew check./scripts/verify-consumer-smoke.sh./gradlew apiCompat -PapiBaselineVersion=0.3.0
v0.3.0
Summary
v0.3.0 improves routing fallback behavior and Spring auto-configuration activation conditions. This release makes type-mappings/category-mappings based setups more predictable in production.
Highlights
- Improved routing fallback behavior
- If
type-mappingsexists but resolves to zero valid targets (enabled + valid endpoint), routing now falls back tocategory-mappings. - If
category-mappingsalso resolves to zero valid targets, routing falls back todefault-mappings.
- If
- Expanded auto-configuration activation condition
- Previously centered on
default-mappings. - Auto-configuration now activates when any of the following is configured:
hookrouter.type-mappingshookrouter.category-mappingshookrouter.default-mappings
- Previously centered on
- Stronger activation condition handling
- Supports bracket-style keys (for example,
hookrouter.type-mappings[order.failed][0].platform=...). - Properly detects mapping configuration from map-backed non-enumerable
PropertySourceimplementations.
- Supports bracket-style keys (for example,
Behavior Change
- Previous behavior: if a higher-priority mapping list existed, fallback was blocked even when it produced zero targets.
- New behavior: a higher-priority mapping is selected only when it resolves at least one valid target; otherwise routing proceeds to the next priority level.
Validation
./gradlew checkpassed./scripts/verify-consumer-smoke.shpassed./gradlew apiCompat -PapiBaselineVersion=0.2.0passed
Included Commits
ed5fce7Fix mapping activation and routing fallback semantics5e2c28dSupport bracket-style mapping keys in activation conditionfa46c89Handle non-enumerable property sources for mapping activationf724f1cchore(release): bump version to 0.3.0
v0.2.0
Highlights
- Improved runtime stability across retry/timeout/rate-limiter/bulkhead/dead-letter paths.
- Added async saturation visibility with new metric for
CallerRunsPolicyfallback. - Strengthened configuration safety with stricter cross-configuration validation and metadata consistency tests.
- Expanded test coverage across unit/integration/e2e scenarios and CI publish verification.
Fixes and Reliability
- Prevented task loss under async executor saturation.
- Corrected retry attempt semantics and listener lifecycle behavior.
- Improved rate limiter cooldown behavior and resilience resource key namespacing.
- Corrected dead-letter reprocess success criteria and error surfacing during scheduled processing.
- Improved routing/listener error handling and resilience-flow logging consistency.
Docs and DX
- Updated configuration/docs to align with runtime behavior and IDE metadata.
- Refreshed release and troubleshooting guidance.
Upgrade Notes
WebhookMetricsnow includesrecordAsyncCallerRuns().- If you provide a custom
WebhookMetricsimplementation, add this method to remain compatible.
- If you provide a custom
Full Changelog
- Compare: v0.1.1...v0.2.0
v0.1.1
Overview
hookrouter 0.1.1 is a compatibility and release-readiness update focused on lowering the Java baseline and improving release/documentation quality.
What's Changed
- Lowered minimum Java baseline from 21 to 17 while keeping Spring Boot 4.0.2
- Added runtime-safe async executor behavior for environments without virtual thread support
- Refactored repeated clamp logic into shared utility (
ClampUtils) for maintainability - Updated release and security documentation for public-library workflows
- Added Kotlin DSL dependency snippets in setup docs
- Updated CI/publish setup and smoke verification around the Java 17 baseline
- Added project license file
Compatibility
- Java: 17+
- Spring Boot baseline: 4.0.2
Upgrade Notes from 0.1.0
- Rebuild with JDK 17+ (JDK 21 still supported)
- Replace dependency versions with
0.1.1
Documentation
- README: https://github.com/limehee/hookrouter/blob/v0.1.1/README.md
- Docs index: https://github.com/limehee/hookrouter/blob/v0.1.1/docs/index.md
- Security policy: https://github.com/limehee/hookrouter/blob/v0.1.1/SECURITY.md
Full Changelog: v0.1.0...v0.1.1
v0.1.0
Overview
hookrouter 0.1.0 is the initial public release of a modular webhook routing library for Java with optional Spring Boot integration.
Highlights
- Introduced modular architecture:
hookrouter-core: notification domain model, registries, extension contractshookrouter-spring: Spring runtime pipeline, routing, resilience, dead-letter, metrics
- Implemented deterministic routing priority:
type-mappings->category-mappings->default-mappings
- Added resilience pipeline via Resilience4j:
- retry, timeout, circuit breaker, rate limiter, bulkhead
- Added dead-letter handling and reprocessing support
- Added Micrometer metrics and Actuator health integration
- Added sample projects for Spring mapping, pure Java usage, and adapter extension
Compatibility
- Java: 21+
- Spring Boot baseline: 4.0.2
Installation
<dependency>
<groupId>io.github.limehee</groupId>
<artifactId>hookrouter-spring</artifactId>
<version>0.1.0</version>
</dependency>Documentation
- README: https://github.com/limehee/hookrouter/blob/v0.1.0/README.md
- Docs index: https://github.com/limehee/hookrouter/blob/v0.1.0/docs/index.md
Full Changelog: https://github.com/limehee/hookrouter/commits/v0.1.0