Releases: athena-framework/framework
Releases · athena-framework/framework
v0.21.1
Immutable
release. Only release title and notes can be modified.
Fixed
- Fix improper handling of optional file uploads (#595) (@Blacksmoke16)
v0.21.0
Changed
- Breaking: Leverage
ATH::AbstractFilewithinATH::BinaryFileResponse(#563) (@Blacksmoke16) - Leverage
mimecomponent withinATH::BinaryFileResponse(#545) (@Blacksmoke16) - Setter methods on
ATH::Responseand subclasses now returnselfto better support method chaining (#563) (@Blacksmoke16)
Added
- Add support for Athena Contract component types (#544) (@Blacksmoke16)
- Add native file upload support (#559) (@Blacksmoke16)
Fixed
- Correctly apply
emit_nilvalue fromATHA::View(#526) (@Blacksmoke16)
v0.20.1
Fixed
- Fix
ATH::ViewHandlerbundle configuration values not being correctly set (#520) (@Blacksmoke16)
v0.20.0
Changed
- Breaking: Normalize exception types (#428) (@Blacksmoke16)
- Breaking: The
ATHR::Interface.configurationmacro is no longer scoped to the resolver namespace (#425) (@Blacksmoke16) - Breaking: Rename
ATHR::RequestBody::ExtracttoATHA::MapRequestBody(#425) (@Blacksmoke16) - Breaking: Rename
ATHR::Time::FormattoATHA::MapTime(#425) (@Blacksmoke16) - Update minimum
crystalversion to~> 1.14.0(#433) (@Blacksmoke16) - Refactor auto redirection logic to be more robust (#436, #480) (@Blacksmoke16)
- Refactor
ATHR::RequestBodyto raise more accurate deserialization errors (#490) (@Blacksmoke16)
Added
- Add support for Proxies & Load Balancers (#440, #444) (@Blacksmoke16)
- Add new
trusted_hostbundle scheme property to allow setting trusted hostnames (#474) (@Blacksmoke16) - Add support for deserializing
application/x-www-form-urlencodedbodies viaATHA::MapRequestBody(#477) (@Blacksmoke16) - Add
ATHA::MapQueryStringto map a request's query string into a DTO type (#477) (@Blacksmoke16) - Add
ATH::Exception.from_statushelper method (#426) (@Blacksmoke16) - Add
ATHA::MapQueryParameterfor handling query parameters (#426) (@Blacksmoke16) - Add
#validation_groupsand#accept_formatsannotation properties toATHA::MapRequestBody(#486) (@Blacksmoke16) - Add
#validation_groupsannotation property toATHA::MapQueryString(#486) (@Blacksmoke16) - Add
ATH::Request#portandATH::Response#redirect?methods (#436) (@Blacksmoke16) - Add
#host,#scheme,#secure?, and#from_trusted_proxy?methods toATH::Request(#440) (@Blacksmoke16) - Add
ATH::Request#content_type_formatto return the request format's name from itscontent-typeheader (#477) (@Blacksmoke16) - Add
ATH::IPUtilsmodule (#440) (@Blacksmoke16) - Add
.unquote,.split, and.combinemethodsATH::HeaderUtils(#440) (@Blacksmoke16) - Add request matchers for headers and query parameters (#491) (@Blacksmoke16)
Removed
- Breaking: Remove
ATHA::QueryParam(#426) (@Blacksmoke16) - Breaking: Remove
ATHA::RequestParam(#426) (@Blacksmoke16) - Breaking: Remove
ATH::Exception::InvalidParameter(#426) (@Blacksmoke16) - Breaking: Remove everything within
ATH::Paramsnamespace (#426) (@Blacksmoke16) - Breaking: Remove
ATH::Action#params(#426) (@Blacksmoke16) - Breaking: Remove
ATH::Listeners::ParamFetcher(#426) (@Blacksmoke16)
Fixed
- Fix query parameters being dropped when redirecting to a trailing/non-trailing slash endpoint (#436) (@Blacksmoke16)
- Fix auto redirection with non-standard ports (#480) (@Blacksmoke16)
- Fix
multipart/form-datanot being mapped to theformformat (#441) (@Blacksmoke16) - Fix being unable to provide the path of an
ARTA::Routeannotation on a class as a positional argument (#482) (@Blacksmoke16) - Fix error when attempting to use
ATH::Controller#redirect_viewandATH::Controller#route_redirect_view(#498) (@Blacksmoke16) - Fix error when attempting to use
ATH::Spec::APITestCase#unlink(#498) (@Blacksmoke16)
v0.19.2
Added
- Add
ATH.run_consoleas an easier entrypoint into the console application (#413) (@Blacksmoke16) - Add support for additional boolean conversion values from request attributes (#422) (@Blacksmoke16)
Changed
- Breaking:
ATH::RequestMatcher::Methodnow requires anArray(String)as opposed to anyEnumerable(String)(#431) (@Blacksmoke16) - Update minimum
crystalversion to~> 1.13.0(#433) (@Blacksmoke16) - Updates usages of
UTF-8in response headers toutf-8as preferred by the RFC (#417) (@Blacksmoke16)
Fixed
- Fix the content negotiation implementation not working (#431) (@Blacksmoke16)
v0.19.1
Fixed
- Fix
frameworkcomponent docs landing on an empty page (#399) (@Blacksmoke16) - Fix
Athena::Clocknot being aliased to the interface correctly (#400) (@Blacksmoke16) - Fix
ATHA::Viewannotation being defined in incorrect namespace (#403) (@Blacksmoke16) - Fix
ATH::ErrorRenderernot being aliased to the interface correctly (#404) (@Blacksmoke16)
v0.19.0
Changed
- Breaking: change how framework features are configured (#337, #374, #383) (@Blacksmoke16)
- Update minimum
crystalversion to~> 1.11.0(#270) (@Blacksmoke16) - Integrate website into monorepo (#365) (@Blacksmoke16)
Added
- Support for Windows OS (#270) (@Blacksmoke16)
- Add
ATH::RequestMatcheras a generic way of matching anATH::Requestgiven a set of rules (#338) (@Blacksmoke16) - Raise an exception if a controller's return value fails to serialize instead of just returning
nil(#357) (@Blacksmoke16) - Add support for new Crystal 1.12
Process.on_terminatemethod (#394) (@Blacksmoke16)
Fixed
- Fix macro splat deprecation (#330) (@Blacksmoke16)
- Normalize
ATH::Request#methodto always be uppercase (#338) (@Blacksmoke16) - Fixed not being able to use top level configuration annotations on controller action parameters (#356) (@Blacksmoke16)
v0.18.2
Changed
- Change routing logic to redirect
GETandHEADrequests with a trailing slash to the route without one if it exists, and vice versa (#307) (@Blacksmoke16)
Added
- Add native tab completion support to the built-in
ATH::Commands(#296) (@Blacksmoke16) - Add support for defining multiple route annotations on a single controller action method (#315) (@Blacksmoke16)
- Require the new
Athena::Clockcomponent (#318) (@Blacksmoke16) - Add additional
ATH::Spec::APITestCaserequest helper methods (#312, #313) (@Blacksmoke16)
Fixed
- Fix incorrectly generated route paths with a controller level prefix and no action level
/prefix (#308) (@Blacksmoke16)
v0.18.1
Added
- Add support for serializing arbitrarily nested controller action return types (#273) (@Blacksmoke16)
- Allow using constants for controller action's
path(#279) (@Blacksmoke16)
Fixed
- Fix incorrect
content-lengthheader value when returning multi-byte strings (#288) (@Blacksmoke16)
v0.18.0
Changed
- Breaking: upgrade Athena::EventDispatcher to 0.2.x (#205) (@Blacksmoke16)
- Breaking: deprecate the
ATH::ParamConverterconcept in favor of Value Resolvers (#243) (@Blacksmoke16) - Breaking: rename various types/methods to better adhere to crystal-lang/crystal#10374 (#243) (@Blacksmoke16)
- Breaking: Change
ATH::Spec::AbstractBrowserto be aclass(#249) (@Blacksmoke16) - Breaking: upgrade Athena::Validator to 0.3.x (#250) (@Blacksmoke16)
- Improve service
ATH::Controllers to not need thepublic: trueADI::Registerfield (#213) (@Blacksmoke16) - Update minimum
crystalversion to~> 1.6.0(#205) (@Blacksmoke16)
Added
- Add trace logging to
ATH::Listeners::CORSto aid in debugging (#265) (@Blacksmoke16) - Introduce new
framework.debugparameter that istrueif the binary was not built with the--releaseflag (#249) (@Blacksmoke16) - Add built-in HTTP Expectation methods to
ATH::Spec::WebTestCase(#249) (@Blacksmoke16) - Add
#responseand#requestmethods toATH::Spec::AbstractBrowsertypes (#249) (@Blacksmoke16) - Add ATHR alias to make using value resolver annotations easier (#243) (@Blacksmoke16)
- Add ATH::Commands::Commands::DebugEventDispatcher framework CLI command to aid in debugging the event dispatcher (#241) (@Blacksmoke16)
- Add ATH::Commands::Commands::DebugRouter and ATH::Commands::Commands::DebugRouterMatch framework CLI commands to aid in debugging the router (#224) (@Blacksmoke16)
- Add integration for the Athena::Console component (#218) (@Blacksmoke16)
Fixed
- Correctly populate
content-lengthbased on the response content's size (#267) (@Blacksmoke16) - Prevent wildcard CORS
expose_headersvalue whenallow_credentialsistrue(#264) (@Blacksmoke16) - Correctly handle
JSON::Serializablevalues withinHash/NamedTuplecontroller action return types (#253) (@Blacksmoke16) - Fix ATH::ParameterBag#get? not returning
nilif it could not convert the value to the desired type (#243) (@Blacksmoke16)