Skip to content

chore(release): 0.4.0 - #59

Open
Kilerd wants to merge 1 commit into
mainfrom
release/0.4.0
Open

chore(release): 0.4.0#59
Kilerd wants to merge 1 commit into
mainfrom
release/0.4.0

Conversation

@Kilerd

@Kilerd Kilerd commented Aug 1, 2026

Copy link
Copy Markdown
Owner

Version bump for the 0.4.0 release: all three crates, the internal dependency ranges, the README, and the examples that pin a version.

What 0.4 contains

Tiers 0, 1 and 2 of the maturation roadmap (#41) are complete.

Documentation, made real (#71)

  • docs.rs now builds with all features. It previously built with defaults only (http1), so #[api], Schematic, Operable and the entire OpenAPI layer were invisible on docs.rs — the framework's headline capability didn't appear in its published docs at all.
  • Feature-gated items carry a "requires feature X" badge.
  • #![deny(missing_docs)], and the 64 public items that needed documenting.
  • The README is the crate documentation, so its examples are doctests and can't rot again ([docs] Re-enable doctests and fix rotted docs/README #28).

Configuration, redesigned (#60)

Feature flags, trimmed (#70)

  • message is gone — the message system is always available.
  • cors / static_files were broken, not redundant: tower-http was declared with both sub-features, so wanting CORS also compiled the whole static-file stack. Each now enables only its own half.
  • CI stopped testing the powerset: 127 jobs became 7.

Correctness / trust (Tier 0)

Framework identity (Tier 1)

OpenAPI (Tier 2)

Validation (Tier 3, landed early)

  • Valid<Json<T>> backed by the validator crate; rejects with 422 and readable messages
  • #[validate(..)] drives both the runtime check and the schema keywords — written once (builtin validator for json request #9)

Breaking changes since 0.3.0

  • Config files must be migrated: application keys move out of [application] to the top level, and [basic] becomes [server]. Nested env overrides use __ (APP_SERVER__PORT).
  • features = ["message"] should be dropped; the message system is always available.
  • Responsible for Result<T, E> now requires E: ErrorResponsible (blanket-implemented for E: Schematic and for (StatusCode, Json<E>))
  • Operable gained summary and security fields
  • GotchaRouter stores &'static Operable and builds Operations at assembly time
  • New default dependencies: validator, axum-extra (typed-header only); mofa 0.1 → 0.2

Verification

Locally: every feature combination builds and tests, gotcha_core and gotcha_macro suites, doctests (34), cargo clippy --all-features --workspace, cargo fmt --check, and a nightly --cfg docsrs doc build with no warnings.

Publishing (gotcha_macrogotcha_coregotcha) and the v0.4.0 tag happen after this merges.

🤖 Generated with Claude Code

@Kilerd
Kilerd force-pushed the release/0.4.0 branch 2 times, most recently from 58346ac to 658ae90 Compare August 1, 2026 12:51
Bumps all three crates and the internal dependency ranges to 0.4.0, plus the README and the
examples that pin a version.

0.4 completes Tiers 0-2 of the maturation roadmap (#41): the framework shell (config, errors,
state, tasks, messager) is trustworthy, and the OpenAPI output covers components/$ref, error
responses, spec customization, field metadata, validation-driven constraints and header/cookie
parameters.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant