Releases: athena-framework/framework
v0.19.2
Added
- Add
ATH.run_console
as 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::Method
now requires anArray(String)
as opposed to anyEnumerable(String)
(#431) (@Blacksmoke16) - Update minimum
crystal
version to~> 1.13.0
(#433) (@Blacksmoke16) - Updates usages of
UTF-8
in response headers toutf-8
as preferred by the RFC (#417) (@Blacksmoke16)
Fixed
- Fix the content negotiation implementation not working (#431) (@Blacksmoke16)
v0.19.1
Fixed
- Fix
framework
component docs landing on an empty page (#399) (@Blacksmoke16) - Fix
Athena::Clock
not being aliased to the interface correctly (#400) (@Blacksmoke16) - Fix
ATHA::View
annotation being defined in incorrect namespace (#403) (@Blacksmoke16) - Fix
ATH::ErrorRenderer
not 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
crystal
version to~> 1.11.0
(#270) (@Blacksmoke16) - Integrate website into monorepo (#365) (@Blacksmoke16)
Added
- Support for Windows OS (#270) (@Blacksmoke16)
- Add
ATH::RequestMatcher
as a generic way of matching anATH::Request
given 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_terminate
method (#394) (@Blacksmoke16)
Fixed
- Fix macro splat deprecation (#330) (@Blacksmoke16)
- Normalize
ATH::Request#method
to 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
GET
andHEAD
requests 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::Clock
component (#318) (@Blacksmoke16) - Add additional
ATH::Spec::APITestCase
request 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-length
header 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::ParamConverter
concept 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::AbstractBrowser
to be aclass
(#249) (@Blacksmoke16) - Breaking: upgrade Athena::Validator to 0.3.x (#250) (@Blacksmoke16)
- Improve service
ATH::Controller
s to not need thepublic: true
ADI::Register
field (#213) (@Blacksmoke16) - Update minimum
crystal
version to~> 1.6.0
(#205) (@Blacksmoke16)
Added
- Add trace logging to
ATH::Listeners::CORS
to aid in debugging (#265) (@Blacksmoke16) - Introduce new
framework.debug
parameter that istrue
if the binary was not built with the--release
flag (#249) (@Blacksmoke16) - Add built-in HTTP Expectation methods to
ATH::Spec::WebTestCase
(#249) (@Blacksmoke16) - Add
#response
and#request
methods toATH::Spec::AbstractBrowser
types (#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-length
based on the response content's size (#267) (@Blacksmoke16) - Prevent wildcard CORS
expose_headers
value whenallow_credentials
istrue
(#264) (@Blacksmoke16) - Correctly handle
JSON::Serializable
values withinHash
/NamedTuple
controller action return types (#253) (@Blacksmoke16) - Fix ATH::ParameterBag#get? not returning
nil
if it could not convert the value to the desired type (#243) (@Blacksmoke16)
v0.17.1
Changed
- Breaking: ensure parameter names defined on interfaces match the implementation (#188) (@Blacksmoke16)
v0.17.0
Checkout this forum thread for an overview of changes within the ecosystem.
Added
- Add
pcre2
library dependency toshard.yml
(#159) (@Blacksmoke16) - Add ATH::Arguments::Resolvers::Enum to allow resolving
Enum
members directly to controller actions (#173) (@Blacksmoke16) - Add ATH::Arguments::Resolvers::UUID to allow resolving
UUID
s directly to controller actions by (#176) (@Blacksmoke16) - Add ATH::ParameterBag#has(name, type) that checks if a parameter with the provided name exists, and that is of the provided type (#176) (@Blacksmoke16)
- Add ATH::Arguments::Resolvers::DefaultValue to allow resolving an action parameter's default value if no other value was provided (#177) (@Blacksmoke16)
Changed
- Breaking: rename
ATH::Arguments::Resolvers::ArgumentValueResolverInterface
toATH::Arguments::Resolvers::Interface
(#176) (@Blacksmoke16) - Breaking: bump
athena-framework/serializer
to~> 0.3.0
(#181) (@Blacksmoke16) - Breaking: bump
athena-framework/validator
to~> 0.2.0
(#181) (@Blacksmoke16) - Expose the default value of an ATH::Arguments::ArgumentMetadata (#176) (@Blacksmoke16)
- Update minimum
crystal
version to~> 1.4.0
(#169) (@Blacksmoke16)
Fixed
- Fix error when two controller share a common action name (#146) (@Blacksmoke16)
- Fix release badge to use correct repo (#161) (@Blacksmoke16)
- Fix query/request param docs to use new error responses (#167) (@Blacksmoke16)
- Fix incorrect
Athena::Framework
Log
name (#175) (@Blacksmoke16)
Routing Component Integration
New Dependencies
Removed Dependencies
- Athena no longer depends on/requires https://github.com/amberframework/amber-router
Additions
- Allow prepending HTTP::Handlers to the Athena server by @Blacksmoke16 in athena-framework/athena#133
- Add additional ATH::Spec::APITestCase methods for common REST methods (get, post, put, delete) by @Blacksmoke16 in athena-framework/athena#134
- Add an overload of ATH::Spec::APITestCase#request that accepts a request object, either HTTP::Request or ATH::Request by @Blacksmoke16 in athena-framework/athena#134
- Allow passing an OpenSSL::SSL::Context::Server to ATH.run to run an HTTPS server by @Blacksmoke16 in athena-framework/athena#135
- Add ATH::ParameterBag#set(hash) that allows setting a hash of key/value pairs by @Blacksmoke16 in athena-framework/athena#141
Changes
- (breaking-change) Integrate the Athena::Routing component by @Blacksmoke16 in athena-framework/athena#141
-
@[ATHA::Prefix(prefix: "/foo")]
=>@[ARTA::Route(path: "/foo")]
- Prefixes no longer check parent types. Define a single
ARTA::Route
with the prefix on each controller
- Prefixes no longer check parent types. Define a single
-
ATHA::*
routing annotations have been replaced withARTA::*
routing annotations -
The route path now takes trailing slashes into consideration
/foo
is a diff route when compared to/foo/
-
The parameter syntax now uses
{}
"/foo/:id/bar"
=>"/foo/{id}/bar"
-
The
constraints
route annotation field is now calledrequirements
-
The
method
route annotation field is now calledmethods
-
The default scheme when generating routes is now
http
when no base_uri is set -
ATH::Exceptions::MethodNotAllowed now requires an array of valid methods as its first argument
-
Route duplication detection now solely takes the controller action name into consideration
-
Subclassing
ATH::Request
is no longer supported -
(breaking-change) Remove
#name
,#path
,#method
, and#constraints
from ATH::Action
-
Fixes
- Use
https
in startup log message when SSL context is set by @Blacksmoke16 in athena-framework/athena#136