0.22.0 - 2026-04-19
- Breaking: Store
ATH::ActionwithinATH::Request#attributesinstead of within an ivar (#636) (George Dietrich) - Breaking: Extract out HTTP related
frameworktypes into the newhttpcomponent (#640) (George Dietrich) - Breaking: Extract out Request/Response handling related
frameworktypes into the newhttp_kernelcomponent (#657) (George Dietrich) - Breaking: Refactor how annotations are fetched off an action/parameter (#655) (George Dietrich)
- Fix CORS error when using HTTP/2 but providing uppercase header names (#670) (George Dietrich)
- Fix compile time error when inadvertently using a type name that conflicts with an internal component type (#678) (George Dietrich)
0.21.1 - 2025-10-04
- Fix improper handling of optional file uploads (#595) (George Dietrich)
0.21.0 - 2025-09-04
- Breaking: Leverage
ATH::AbstractFilewithinATH::BinaryFileResponse(#563) (George Dietrich) - Leverage
mimecomponent withinATH::BinaryFileResponse(#545) (George Dietrich) - Setter methods on
ATH::Responseand subclasses now returnselfto better support method chaining (#563) (George Dietrich)
- Add support for Athena Contract component types (#544) (George Dietrich)
- Add native file upload support (#559) (George Dietrich)
- Correctly apply
emit_nilvalue fromATHA::View(#526) (George Dietrich)
0.20.1 - 2025-02-08
- Fix
ATH::ViewHandlerbundle configuration values not being correctly set (#520) (George Dietrich)
0.20.0 - 2025-01-26
- Breaking: Normalize exception types (#428) (George Dietrich)
- Breaking: The
ATHR::Interface.configurationmacro is no longer scoped to the resolver namespace (#425) (George Dietrich) - Breaking: Rename
ATHR::RequestBody::ExtracttoATHA::MapRequestBody(#425) (George Dietrich) - Breaking: Rename
ATHR::Time::FormattoATHA::MapTime(#425) (George Dietrich) - Update minimum
crystalversion to~> 1.14.0(#433) (George Dietrich) - Refactor auto redirection logic to be more robust (#436, #480) (George Dietrich)
- Refactor
ATHR::RequestBodyto raise more accurate deserialization errors (#490) (George Dietrich)
- Add support for Proxies & Load Balancers (#440, #444) (George Dietrich)
- Add new
trusted_hostbundle scheme property to allow setting trusted hostnames (#474) (George Dietrich) - Add support for deserializing
application/x-www-form-urlencodedbodies viaATHA::MapRequestBody(#477) (George Dietrich) - Add
ATHA::MapQueryStringto map a request's query string into a DTO type (#477) (George Dietrich) - Add
ATH::Exception.from_statushelper method (#426) (George Dietrich) - Add
ATHA::MapQueryParameterfor handling query parameters (#426) (George Dietrich) - Add
#validation_groupsand#accept_formatsannotation properties toATHA::MapRequestBody(#486) (George Dietrich) - Add
#validation_groupsannotation property toATHA::MapQueryString(#486) (George Dietrich) - Add
ATH::Request#portandATH::Response#redirect?methods (#436) (George Dietrich) - Add
#host,#scheme,#secure?, and#from_trusted_proxy?methods toATH::Request(#440) (George Dietrich) - Add
ATH::Request#content_type_formatto return the request format's name from itscontent-typeheader (#477) (George Dietrich) - Add
ATH::IPUtilsmodule (#440) (George Dietrich) - Add
.unquote,.split, and.combinemethodsATH::HeaderUtils(#440) (George Dietrich) - Add request matchers for headers and query parameters (#491) (George Dietrich)
- Breaking: Remove
ATHA::QueryParam(#426) (George Dietrich) - Breaking: Remove
ATHA::RequestParam(#426) (George Dietrich) - Breaking: Remove
ATH::Exception::InvalidParameter(#426) (George Dietrich) - Breaking: Remove everything within
ATH::Paramsnamespace (#426) (George Dietrich) - Breaking: Remove
ATH::Action#params(#426) (George Dietrich) - Breaking: Remove
ATH::Listeners::ParamFetcher(#426) (George Dietrich)
- Fix query parameters being dropped when redirecting to a trailing/non-trailing slash endpoint (#436) (George Dietrich)
- Fix auto redirection with non-standard ports (#480) (George Dietrich)
- Fix
multipart/form-datanot being mapped to theformformat (#441) (George Dietrich) - Fix being unable to provide the path of an
ARTA::Routeannotation on a class as a positional argument (#482) (George Dietrich) - Fix error when attempting to use
ATH::Controller#redirect_viewandATH::Controller#route_redirect_view(#498) (George Dietrich) - Fix error when attempting to use
ATH::Spec::APITestCase#unlink(#498) (George Dietrich)
0.19.2 - 2024-07-31
- Add
ATH.run_consoleas an easier entrypoint into the console application (#413) (George Dietrich) - Add support for additional boolean conversion values from request attributes (#422) (George Dietrich)
- Breaking:
ATH::RequestMatcher::Methodnow requires anArray(String)as opposed to anyEnumerable(String)(#431) (George Dietrich) - Update minimum
crystalversion to~> 1.13.0(#433) (George Dietrich) - Updates usages of
UTF-8in response headers toutf-8as preferred by the RFC (#417) (George Dietrich)
- Fix the content negotiation implementation not working (#431) (George Dietrich)
0.19.1 - 2024-04-27
- Fix
frameworkcomponent docs landing on an empty page (#399) (George Dietrich) - Fix
Athena::Clocknot being aliased to the interface correctly (#400) (George Dietrich) - Fix
ATHA::Viewannotation being defined in incorrect namespace (#403) (George Dietrich) - Fix
ATH::ErrorRenderernot being aliased to the interface correctly (#404) (George Dietrich)
0.19.0 - 2024-04-09
- Breaking: change how framework features are configured (#337, #374, #383) (George Dietrich)
- Update minimum
crystalversion to~> 1.11.0(#270) (George Dietrich) - Integrate website into monorepo (#365) (George Dietrich)
- Support for Windows OS (#270) (George Dietrich)
- Add
ATH::RequestMatcheras a generic way of matching anATH::Requestgiven a set of rules (#338) (George Dietrich) - Raise an exception if a controller's return value fails to serialize instead of just returning
nil(#357) (George Dietrich) - Add support for new Crystal 1.12
Process.on_terminatemethod (#394) (George Dietrich)
- Fix macro splat deprecation (#330) (George Dietrich)
- Normalize
ATH::Request#methodto always be uppercase (#338) (George Dietrich) - Fixed not being able to use top level configuration annotations on controller action parameters (#356) (George Dietrich)
0.18.2 - 2023-10-09
- Change routing logic to redirect
GETandHEADrequests with a trailing slash to the route without one if it exists, and vice versa (#307) (George Dietrich)
- Add native tab completion support to the built-in
ATH::Commands(#296) (George Dietrich) - Add support for defining multiple route annotations on a single controller action method (#315) (George Dietrich)
- Require the new
Athena::Clockcomponent (#318) (George Dietrich) - Add additional
ATH::Spec::APITestCaserequest helper methods (#312, #313) (George Dietrich)
- Fix incorrectly generated route paths with a controller level prefix and no action level
/prefix (#308) (George Dietrich)
0.18.1 - 2023-05-29
- Add support for serializing arbitrarily nested controller action return types (#273) (George Dietrich)
- Allow using constants for controller action's
path(#279) (George Dietrich)
- Fix incorrect
content-lengthheader value when returning multi-byte strings (#288) (George Dietrich)
0.18.0 - 2023-02-20
- Breaking: upgrade Athena::EventDispatcher to 0.2.x (#205) (George Dietrich)
- Breaking: deprecate the
ATH::ParamConverterconcept in favor of Value Resolvers (#243) (George Dietrich) - Breaking: rename various types/methods to better adhere to crystal-lang/crystal#10374 (#243) (George Dietrich)
- Breaking: Change
ATH::Spec::AbstractBrowserto be aclass(#249) (George Dietrich) - Breaking: upgrade Athena::Validator to 0.3.x (#250) (George Dietrich)
- Improve service
ATH::Controllers to not need thepublic: trueADI::Registerfield (#213) (George Dietrich) - Update minimum
crystalversion to~> 1.6.0(#205) (George Dietrich)
- Add trace logging to
ATH::Listeners::CORSto aid in debugging (#265) (George Dietrich) - Introduce new
framework.debugparameter that istrueif the binary was not built with the--releaseflag (#249) (George Dietrich) - Add built-in HTTP Expectation methods to
ATH::Spec::WebTestCase(#249) (George Dietrich) - Add
#responseand#requestmethods toATH::Spec::AbstractBrowsertypes (#249) (George Dietrich) - Add ATHR alias to make using value resolver annotations easier (#243) (George Dietrich)
- Add ATH::Commands::Commands::DebugEventDispatcher framework CLI command to aid in debugging the event dispatcher (#241) (George Dietrich)
- Add ATH::Commands::Commands::DebugRouter and ATH::Commands::Commands::DebugRouterMatch framework CLI commands to aid in debugging the router (#224) (George Dietrich)
- Add integration for the Athena::Console component (#218) (George Dietrich)
- Correctly populate
content-lengthbased on the response content's size (#267) (George Dietrich) - Prevent wildcard CORS
expose_headersvalue whenallow_credentialsistrue(#264) (George Dietrich) - Correctly handle
JSON::Serializablevalues withinHash/NamedTuplecontroller action return types (#253) (George Dietrich) - Fix ATH::ParameterBag#get? not returning
nilif it could not convert the value to the desired type (#243) (George Dietrich)
0.17.1 - 2022-09-05
- Breaking: ensure parameter names defined on interfaces match the implementation (#188) (George Dietrich)
0.17.0 - 2022-05-14
Checkout this forum thread for an overview of changes within the ecosystem.
- Add
pcre2library dependency toshard.yml(#159) (George Dietrich) - Add ATH::Arguments::Resolvers::Enum to allow resolving
Enummembers directly to controller actions (#173) (George Dietrich) - Add ATH::Arguments::Resolvers::UUID to allow resolving
UUIDs directly to controller actions by (#176) (George Dietrich) - Add ATH::ParameterBag#has(name, type) that checks if a parameter with the provided name exists, and that is of the provided type (#176) (George Dietrich)
- Add ATH::Arguments::Resolvers::DefaultValue to allow resolving an action parameter's default value if no other value was provided (#177) (George Dietrich)
- Breaking: rename
ATH::Arguments::Resolvers::ArgumentValueResolverInterfacetoATH::Arguments::Resolvers::Interface(#176) (George Dietrich) - Breaking: bump
athena-framework/serializerto~> 0.3.0(#181) (George Dietrich) - Breaking: bump
athena-framework/validatorto~> 0.2.0(#181) (George Dietrich) - Expose the default value of an ATH::Arguments::ArgumentMetadata (#176) (George Dietrich)
- Update minimum
crystalversion to~> 1.4.0(#169) (George Dietrich)
- Fix error when two controller share a common action name (#146) (George Dietrich)
- Fix release badge to use correct repo (#161) (George Dietrich)
- Fix query/request param docs to use new error responses (#167) (George Dietrich)
- Fix incorrect
Athena::FrameworkLogname (#175) (George Dietrich)
0.16.0 - 2022-01-22
First release in the athena-framework/framework repo, post monorepo.
- Add dependency on
athena-framework/routing(#141) (George Dietrich) - Allow prepending HTTP::Handlers to the Athena server (#133) (George Dietrich)
- Add common HTTP methods (get, post, put, delete) to ATH::Spec::APITestCase (#134) (George Dietrich)
- Add overload of ATH::Spec::APITestCase#request that accepts an ATH::Request or HTTP::Request (#134) (George Dietrich)
- Allow running an HTTPS server via passing an OpenSSL::SSL::Context::Server to
ATH.run(#135, #136) (George Dietrich) - Add ATH::ParameterBag#set(hash) that allows setting a hash of key/value pairs (#141) (George Dietrich)
- Breaking: integrate the Athena::Routing component (#141) (George Dietrich)
- Breaking: remove dependency on amberframework/amber-router (#141) (George Dietrich)
0.15.1 - 2021-12-13
- Include error list in
ATH::Exception::InvalidParameter(#124) (George Dietrich) - Set the base path of parameter errors to the name of the parameter (#124) (George Dietrich)
0.15.0 - 2021-10-30
Last release in the athena-framework/athena repo, pre monorepo.
- Expose the raw HTTP::Request method from an
ATH::Request(#115) (George Dietrich) - Add built in ATH::RequestBodyConverter param converter (#116) (George Dietrich)
- Add
VERSIONconstant toAthena::Frameworknamespace (#120) (George Dietrich)