Skip to content

Releases: limehee/hookrouter

v0.4.0

23 Feb 07:21

Choose a tag to compare

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

  • WebhookConfigProperties defaults were adjusted for retry/timeout/rate-limiter/bulkhead behavior.
  • additional-spring-configuration-metadata.json was updated so IDE inspections do not force invalid fixed values.
  • Documentation was refreshed in:
    • docs/configuration-reference.md
    • docs/dead-letter-guide.md
    • docs/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

23 Feb 05:26

Choose a tag to compare

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-mappings exists but resolves to zero valid targets (enabled + valid endpoint), routing now falls back to category-mappings.
    • If category-mappings also resolves to zero valid targets, routing falls back to default-mappings.
  • Expanded auto-configuration activation condition
    • Previously centered on default-mappings.
    • Auto-configuration now activates when any of the following is configured:
      • hookrouter.type-mappings
      • hookrouter.category-mappings
      • hookrouter.default-mappings
  • 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 PropertySource implementations.

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 check passed
  • ./scripts/verify-consumer-smoke.sh passed
  • ./gradlew apiCompat -PapiBaselineVersion=0.2.0 passed

Included Commits

  • ed5fce7 Fix mapping activation and routing fallback semantics
  • 5e2c28d Support bracket-style mapping keys in activation condition
  • fa46c89 Handle non-enumerable property sources for mapping activation
  • f724f1c chore(release): bump version to 0.3.0

v0.2.0

18 Feb 15:53

Choose a tag to compare

Highlights

  • Improved runtime stability across retry/timeout/rate-limiter/bulkhead/dead-letter paths.
  • Added async saturation visibility with new metric for CallerRunsPolicy fallback.
  • 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

  • WebhookMetrics now includes recordAsyncCallerRuns().
    • If you provide a custom WebhookMetrics implementation, add this method to remain compatible.

Full Changelog

v0.1.1

18 Feb 10:47

Choose a tag to compare

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

Full Changelog: v0.1.0...v0.1.1

v0.1.0

18 Feb 10:52

Choose a tag to compare

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 contracts
    • hookrouter-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

Full Changelog: https://github.com/limehee/hookrouter/commits/v0.1.0