All Versions
14
Latest Version
Avg Release Cycle
50 days
Latest Release
131 days ago

Changelog History
Page 1

  • v0.11.0

    October 17, 2020

    ๐Ÿ†• New Dependencies

    โž• Additions

    • โ†” integrates Athena::Validator into Athena
      • Provides a robust and flexible validation framework
      • See the API Docs for more information
    • ๐Ÿ‘Œ Support user defined annotation configurations
      • Allows applying/accessing custom annotations to controllers and/or action methods
      • See ART::Events::RequestAware for more information
    • โž• Adds a new ART::Events::Action event that is emitted after the Request event, but before the action is executed
      • Useful for listeners that require information about the resolved route, such as reading custom annotation configurations
    • โž• Adds a setter for the action_result property within the ART::Events::View event
      • Allows listeners to override the return value of the related controller action, such as for pagination
    • โž• Adds a wiki
      • Contains a cookbook that includes various types, such as event listeners, param converters, and exclusion strategies that may be useful to your project, but are too specific to be included in Athena itself

    ๐Ÿ”„ Changes

    • (breaking) Rename HTTP::Request#route to HTTP::Request#action
  • v0.10.0

    July 06, 2020

    ๐Ÿ†• New Dependencies

    โฌ†๏ธ Dependency Upgrades

    โž• Additions

    • โž• Add a startup log message
      • Includes the host and port the server will be listening on
    • โž• Add a POST endpoint example to the Getting Started documentation
    • โ†” Integrates Athena::Serializer into Athena
      • Supports enhanced (de)serialization features while retaining backwards compatibility with JSON::Serializable
      • See the API Docs for more information
    • โž• Adds support for Link, Unlink, and Custom HTTP verbs
    • โž• Adds ART::View annotation to configures how the endpoint should be rendered, such as:
      • The HTTP::Status response code
      • The serialization groups to use for this route as part of the Group serializer exclusion strategy
      • If nil values should be serialized or not

    ๐Ÿ”„ Changes

    • ๐Ÿ“‡ Renames ART::Route to ART::Action and ART::Action to ART::ActionBase
    • (breaking-change) Refactors the previous ART::View type to be an implementation detail
      • The controller action result within ART::Events::View is now accessed via .action_result instead of .view.data
  • v0.9.1

    June 16, 2020

    ๐Ÿ›  Fixes

    • Reinitialize the container on each request to ensure it is unique, even if the fiber is reused on keep-alive connections
  • v0.9.0

    June 10, 2020

    ๐Ÿ“š This release focuses on refining the foundational concepts of Athena as well as some QoL improvements and bug fixes along the way. See the linked sections in the API documentation for more details/examples.

    โฌ†๏ธ Dependency Upgrades

    โž• Additions

    • โž• Add NotImplemented and BadGateway exception classes
    • ๐Ÿ‘ Allow layouts to be used with ECR (#52)
    • Introduce concept of ART::Response::Writer to control how the response content is written to the response IO
      • By default it is written directly, but can be changed to enable compression for example
    • ๐ŸŒฒ Implement logging based on the new Log module
      • Logs matched routes are logged with the route, method, and path/query arguments via the RoutingListener
      • Logs any exceptions that happen via the ErrorListener
    • Introduce concept of Arguments::Resolvers::ArgumentValueResolverInterface
      • Handle resolving the arguments for a controller action from a request, or other source.
    • Introduce route collision detection
      • A compile time error is raised if two routes share the same path; either statically, or with path arguments in the same locations.
    • โž• Add a built in ART::TimeConverter that converts a date(time) string into a Time instance

    ๐Ÿ”„ Changes

    • โ™ป๏ธ Refactor ART::Response to allow writing directly to the response IO
    • (breaking-change) Change ART::Exceptions::HTTPException order
      • Makes message required and first
    • (breaking-change) Updates for the new Athena::DependencyInjection version
      • include ADI::Service is no longer required within custom listeners
      • Arguments are now resolved automatically
      • See the DI changelog for more details
    • Manually defines initializers for child HTTPException types
      • Makes it easier to extend non ART::Exceptions::HTTPExceptions for custom exception types
    • (breaking-change) Changed the implementation of HTTP::Request#attributes monkey patch to use ART::ParameterBag
      • The parameter bag is more flexible, allowing the storage of arbitrary data, not restricted to the union of the hash
      • An optional type can be provided when setting a value to get type safety on the value
    • (breaking-change) Refactored how ART::ParamConverterInterface work
      • Param converters no longer return the converted value
      • It should most commonly be stored within the request's ART::ParameterBag
      • An additional ART::ParamConverterInterface::ConfigurationInterface argument is also provided to support variable configuration on a per converter basis
      • Param converters are now services and can now use other services as dependencies

    Removals

    • (breaking-change) Removed HTTP::Request#path_params monkey-patch
      • This data is now stored within the the request's ART::ParameterBag
    • (breaking-change) The ADI::Injectable module is now removed in favor of directly registering controllers as services in order to use other service dependencies
      • Allows making use of more advanced DI features
      • Controllers MUST be declared as public services, e.x. @[ADI::Register(public: true)]
      • A compile time error is raised if they are not
    • (breaking-change) Removed the ssl option from ART.run
      • Would be better to have nginx, or something similar, sitting in front of the server
      • Could be reimplemented in the future if so desired

    ๐Ÿ›  Fixes

    • Correctly return a 405 if the route exists but not for the used HTTP method
    • ๐Ÿ‘‰ Use HTTP::Headers#[]= versus #add to avoid creating an array of the same header
    • ๐Ÿ‘‰ Use correct #to_json overload for ART::Exceptions::HTTPException
  • v0.8.0

    February 07, 2020

    After nearly a year, a rewrite, and a lot of thinking/planning; I'm happy to introduce the rebirth of Athena, aka version 0.8.0

    TODO Create the changelog

  • v0.7.0

    June 09, 2019

    ๐Ÿ†• New Features

    Global

    • Dependency Injection/Service Layer module.
      • See the docs for additional information.
    • ๐ŸŒฒ Implemented Crylog as the logging framework for Athena.
      • Logs matched routes, validation/parse errors, and 500 errors by default.
      • See the docs for additional information.

    ๐Ÿ”„ Changes

    Routing

    • ๐Ÿ’ฅ breaking Param converters' convert methods are now instance methods. Also removed the ctx from the method signature.
    • ๐Ÿ’ฅ breaking The handle_exception method now requires a third location parameter
    • ๐Ÿ’ฅ breaking The structure of athena.yml has changed to support environment specific configuration.
      • See the docs for additional information.
    • ๐Ÿ’ฅ breaking The current request/response/action is now accessed from RequestStack via DI as opposed to get_request/get_response.
      • See the docs for additional information.
  • v0.6.2

    May 22, 2019

    ๐Ÿ†• New Features

    Routing

    • The reuse_port option can now be used on Athena::Routing.run.
  • v0.6.1

    April 23, 2019

    ๐Ÿ› Bug Fixes

    Routing

    • Only set response status to 204 no content if the response status was not changed within the action.
    • Raise a 404 not found error if the granite model was deleted.
    • ๐Ÿ›  Fix issue with action handler not running when using CORS (#21)
  • v0.6.0

    April 20, 2019

    ๐Ÿ†• New Features

    Global

    • ๐Ÿ‘ Crystal 0.28.0 support.

    Routing

    • Multiple ParamConverter can now be used on a route.

    ๐Ÿ”„ Changes

    Routing

    • Route actions with a return type of Nil will return as a 204 No Content.
  • v0.5.0

    April 16, 2019

    ๐Ÿ†• New Features

    Global

    • ๐Ÿ”ง YAML based config file. Currently only used for CORS, but future configuration would live within it
    • ๐Ÿ“„ The athena executable will be added to the project's bin/ directory on install

    Routing

    CLI

    • Commands are grouped based on the first part of the command name, separated by :
    • The -e NAME or --explain NAME can be used to get more detailed information about a given command

    ๐Ÿ”„ Changes

    Routing

    • ๐Ÿ’ฅ Breaking Controllers now are class based
    • ๐Ÿ’ฅ Breaking Route actions are now instance methods

    ๐Ÿ› Bug Fixes

    Routing

    • ๐Ÿ›  Controller prefixes were not inherited #5
    • Leaking request/response when dealing with concurrent requests using fibers #15