All Versions
Latest Version
Avg Release Cycle
69 days
Latest Release
419 days ago

Changelog History
Page 1

  • v0.27.0 Changes

    November 28, 2020
    • ๐Ÿฑ Crystal 0.35.x support ๐ŸŽ‰ Thanks @bcardiff ๐Ÿ™
    • ๐Ÿ›  Fix issues with responding with long strings #576. Thanks @mamantoha ๐Ÿ™
    • ๐Ÿ›  Fix broken WebSocket support in 0.35.0 #577. Thanks @mamantoha ๐Ÿ™
    • ๐Ÿ‘ Allow to set optional response body on redirects #561. Thanks @mamantoha ๐Ÿ™
  • v0.26.1 Changes

    December 01, 2019
    • ๐Ÿ›  Fix process request when a response already closed #550. Thanks @mamantoha ๐Ÿ™
    • ๐Ÿฑ Switch to new Ameba repository #549. Thanks @mamantoha ๐Ÿ™
    • ๐Ÿฑ Check for KEMAL_ENV variable already in Config#initialize#552. Thanks @Sija ๐Ÿ™
    • ๐Ÿฑ Cleanup Ameba warnings #551. Thanks @Sija ๐Ÿ™
    • ๐Ÿฑ Flush io buffer after each write to log #554. Thanks @mang ๐Ÿ™
  • v0.26.0 Changes

    August 05, 2019
  • v0.25.2 Changes

    February 08, 2019

    ๐Ÿฑ Crystal 0.27.2 support ๐ŸŽ‰

    โž• Add option to config to parse or not command line parameters #483. Thanks @diegogub ๐Ÿ™

    ๐Ÿ‘ Allow to set filename for send_file #512. Thanks @mamantoha ๐Ÿ™

    send\_file env, "./asset/image.jpeg", filename: "image.jpg"

    ๐Ÿฑ Set status_code before response #513. Thanks @mamantohoa ๐Ÿ™

    ๐Ÿฑ Use Crystal MIME registry. #516 Thanks @Sija ๐Ÿ™

  • v0.25.1 Changes

    November 05, 2018
    • ๐Ÿ›  Fix params.files memoization #503. Thanks @mamantoha ๐Ÿ™
  • v0.25.0 Changes

    November 04, 2018

    ๐Ÿ‘ Crystal 0.27.0 support.

    [breaking change] Added back env.params.files.

    Here's a fully working sample for reading a image file upload image1 and saving it under public/uploads.

    post "/upload" do |env| file = env.params.files["image1"].tmpfile file\_path = ::File.join [Kemal.config.public\_folder, "uploads/", file.filename]\_path, "w") do |f| IO.copy(file, f)end"Upload ok"end

    โœ… To test

    curl -F "[email protected]/Users/serdar/Downloads/kemal.png" http://localhost:3000/upload

    • ๐ŸŽ Cache HTTP routes to increase performance ๐Ÿš€ #493
  • v0.24.0 Changes

    August 14, 2018

    ๐Ÿ‘ Crystal 0.26.0 support

    [breaking change] Removed env.params.files. You can use Crystal's built-in HTTP::FormData.parse instead

    post "/upload" do |env| HTTP::FormData.parse(env.request) do |upload| filename = file.filename if !\_a?(String) "No filename included in upload"else file\_path = ::File.join [Kemal.config.public\_folder, "uploads/", filename]\_path, "w") do |f| IO.copy(file.tmpfile, f) end"Upload OK"endend
    • [breaking change] From now on to access dynamic url params in a WebSocket route you have to use:

      ws "/:id" do |socket, context| id = context.ws_route_lookup.params["id"]end

    [breaking change] Removed _method magic param.

    โž• Added new exception page #466. Thanks @mamantoha ๐Ÿ™

    ๐Ÿ‘Œ Support custom port binding. Thanks @straight-shoota ๐Ÿ™ do |config| server = config.server.not\_nil! server.bind\_tcp "", 3000, reuse\_port: true server.bind\_tcp "", 3001, reuse\_port: trueend
  • v0.23.0 Changes

    June 17, 2018
    • ๐Ÿฑ Crystal 0.25.0 support ๐ŸŽ‰
    • โž• Add Kemal::Context.get? to safely access context storage ๐Ÿ˜Ž
    • ๐Ÿ”’ [Security] Don't serve 404 image dynamically ๐Ÿ‘
    • ๐Ÿฑ Disable X-Powered-By header #449. Thanks @Blacksmoke16 ๐Ÿ™
  • v0.22.0 Changes

    December 29, 2017
    • ๐Ÿฑ Crystal 0.24.1 support ๐ŸŽ‰
    • ๐Ÿฑ Only return string from route.#408 thanks @crisward ๐Ÿ™
    • ๐Ÿš€ Don't crash on empty path when compiled in --release. #407 thanks @crisward ๐Ÿ™
    • ๐Ÿ“‡ Rename Kemal::CommonLogHandler to Kemal::LogHandler and Kemal::CommonExceptionHandler to Kemal::ExceptionHandler.
    • ๐Ÿ‘ Allow videos to be opened with correct mime type. #406 thanks @crisward ๐Ÿ™
    • โž• Add webm mime type.#413 thanks @reindeer-cafe ๐Ÿ™
  • v0.21.0 Changes

    September 05, 2017
    • ๐Ÿฑ Dynamically insert handlers ๐Ÿ’ช Fixes #376.
    • โž• Add context to WebSocket. This allows one to use HTTP::Server::Context in ws declarations ๐Ÿ˜ Fixes #349.

      ws "/:room_name" do |socket, env| env.params.url["room_name"]end

    • โž• Add support for customizing the headers of built-in Kemal::StaticFileHandler ๐Ÿ”จ Useful for supporting CORS for single page applications ๐Ÿ‘

      static_headers do |response, filepath, filestat| if filepath =~ /.html$/ response.headers.add("Access-Control-Allow-Origin", "*") end response.headers.add("Content-Size", filestat.size.to_s) endend

    ๐Ÿ‘ Allow %w in Handler macros #385. Thanks @will ๐Ÿ™

    ๐Ÿ”’ Security: X-Content-Type-Options: nosniff for static files. Fixes #379. Thanks @crisward ๐Ÿ™

    ๐ŸŽ Performance: Remove tempfile management to OS. This brings %10 - 15 performance boost to Kemal ๐Ÿš€