Skip to content

chore(master): release servicewright 0.15.0 - #96

Closed
github-actions[bot] wants to merge 1 commit into
masterfrom
release-please--branches--master--components--servicewright
Closed

github-actions[bot] wants to merge 1 commit into
masterfrom
release-please--branches--master--components--servicewright

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

🤖 I have created a release beep boop

0.15.0 (2026-10-17)

⚠ BREAKING CHANGES

  • a ServiceError with kind=ErrorKind.PRECONDITION_FAILED now answers HTTP 400 instead of 412 (gRPC stays FAILED_PRECONDITION). Clients that branch on 412 should branch on the error code in the problem document. To keep 412 while they migrate, pass a renderer that sets status_override=412 for that kind; the errors page has a five-line example.
  • MetricsSettings(port=0) now raises ValidationError; pass allow_ephemeral_port=True (or METRICS__ALLOW_EPHEMERAL_PORT=true) to bind an ephemeral exposition port on purpose.
  • MetricsSink.gauge() is abstract — a third-party metrics backend must implement it (set / inc / dec) or fail at construction.

Features

  • add Masker seam with ValueRedactor, ChainRedactor, per-surface redactors and span-attribute redaction (47e40e8)
  • add run_sync() with event loop selection and a uvloop extra (#20) (c070211), closes #19
  • AppSpec.drain_delay_seconds keeps the listeners open after readiness goes red (#47) (42c46c4), closes #46
  • fastapi: pass instrumentations through to Instrumentator.add() (#29) (1b48f25), closes #28
  • GrpcConfig.from_settings builds the config from a grpc-server-kit settings object (599021b), closes #58
  • HttpServerSettings builds the FastAPI entrypoint's config from environment settings (9c3e23e), closes #61
  • initial release of servicewright (005b9b6)
  • let the framework's DI integration own the HTTP request scope (#5) (2674140), closes #4
  • MetricsSettings rejects port=0 unless allow_ephemeral_port=True (7d51a43)
  • observability: let KeyRedactor exempt exact field names with safe_keys (#14) (a1b7ecf), closes #11
  • observability: make the concrete sinks importable from servicewright.adapters.observability (#17) (0a04252), closes #16
  • observability: pass sentry_sdk.init options through SentryErrorTrackingSink (#12) (b434a21), closes #9
  • record scheduled-job runs and add a gauge instrument to the metrics seam (#26) (92d45cf), closes #25
  • ship the settings contract as pydantic-settings models (#23) (55a62db)

Bug Fixes

  • an unhandled exception over gRPC is masked instead of sent as UNKNOWN plus its repr (#52) (85218f1)
  • core: make the observability section protocols read-only so narrowed settings satisfy them (#13) (ebc2c05), closes #8
  • drain_grace_seconds bounds a serve() that is still running after stop (#91) (b861756), closes #88
  • ErrorKind.PRECONDITION_FAILED renders as HTTP 400, not 412 (#94) (abd565f)
  • four defects the agents page turned up (#44) (dc08d1f)
  • grpc: mask a failed outbound RPC instead of re-raising it (#86) (2b456d3)
  • importing the FastAPI adapter without its extra names the extra, not starlette (#54) (af1e0e1)
  • observability: keep stdlib extra fields in the structlog sink (#10) (ae85ffb)
  • servicewright[grpc] accepts grpc-server-kit 0.2 (5cb4e8d), closes #66

This PR was generated with Release Please. See documentation.

@AlexeyShalaev

Copy link
Copy Markdown
Member

Stale: generated against the history before the 0.14.0 tag moved.

@AlexeyShalaev
AlexeyShalaev deleted the release-please--branches--master--components--servicewright branch October 17, 2026 20:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment