Skip to content

v1.0.1

Choose a tag to compare

@n-ae n-ae released this 18 Jul 02:11

Patch release implementing the v1.0.0 assessment's priority list
(docs/assessment-maintainable-architect-v4-v1.0.0.md, with
docs/direct-repository-assessment-v1.0.0-2026-07-17.md and an external
review of the tagged release as convergent inputs). No breaking changes;
module path unchanged.

Fixed:

  • The JSON/problem+json marshal-failure fallback is a complete
    reclassification to ErrCodeInternal. Its status now comes from the
    active mapping - a Renderer's StatusCodes override or the
    RegisterStatusCode registry - instead of a hard-coded 500, so a
    deployment that maps INTERNAL_ERROR to 503 gets 503 on fallback
    responses too. Headers derived from the original error's
    classification (Retry-After, an error-specific WWW-Authenticate
    challenge) no longer survive onto the fallback; the default challenge
    still applies when the mapped fallback status is 401, exactly as it
    would for a bare internal error under that mapping.
  • A caller-supplied json.Marshaler that panics (attached via
    SetPublicDetail) is recovered into a RenderErr plus the standard
    fallback body instead of escaping the response writers - the same
    containment policy safeLog already applies to panicking Loggers.

Changed:

  • A panic recovered after a successful Hijack is logged as its own
    variant ("Panic recovered in HTTP handler after connection was
    hijacked") with hijacked=true, and without the misleading
    response_committed_status=0 and http_status=0 fields. Behavior is
    otherwise unchanged: recovery still writes nothing to a hijacked
    connection and still does not close it - after Hijack the handler
    owns the connection.

Documentation:

  • Identity fixation is documented as by-reference, not deep copy: a
    mutable object passed to a constructor stays shared and later
    mutation is visible through Value() and Context(). This never affects
    wire output or logs (package doc, Value(), README).
  • The README recovery section documents hijacked-connection ownership
    and the defer conn.Close() pattern.
  • The README status-mapping link points at status.go (http.go was
    removed in the v0.11.0 split); remaining interface{} snippet
    spellings migrated to any; logger.go's nil-err example replaced with
    an actual call path.
  • zerologadapter's Log signature spells map[string]any (type-identical;
    no adapter release is required for it).

Test coverage: 100.0% (root module), 100.0% (zerologadapter).