GitHub repository: onyxframework/http
Description: An opinionated framework for scalable web 🌎
Topics: crystal, framework, http-handler, modular, onyxframework, router, web, websockets

v0.9.0: tag_name: v0.9.0
body: ### Dependency Updates 📦
* 7b23271 ⚠️ **breaking** crystal → 0.30.1, http-params-serializable → 0.4.0

v0.8.2: tag_name: v0.8.2
body: ### Dependency Updates 📦
* 289ae6c crystal 0.28.0 → 0.29.0

v0.8.1: tag_name: v0.8.1
body: ### New Features ✨
* 873ae15 `preserve_body` option for `json` and `form` params **@** *Endpoint* (closes #77)
v0.8.0: tag_name: v0.8.0
body: ### New Features ✨
* bff044e ⚠️ **breaking** new API, add namespaces **@** *Router* (closes #71)

### Bug Fixes 🐛
* f43fb97 ⚠️ **breaking** new Crystal HTTP status syntax

### README 📝
* 387aa3b add versioning policy
v0.7.4: tag_name: v0.7.4
body: ### New Features ✨
* 70ed181 set status code to 500 on unhandled error **@** *Logger*

### Refactoring 📝
* 74d0f73 better Channel and websockets

### Chores 🔧
* b0ab474 change WS progress message to `…` **@** *Logger*
v0.7.3: tag_name: v0.7.3
body: ### Infrastructure 🏭
* 56779bc git commit is global env in dependant builds **@** *CI*

_I forgot to bump `version` in `shard.yml` in 0.7.2, so here we are with 0.7.3_ :sweat_smile: 
v0.7.2: tag_name: v0.7.2
body: ### New Features ✨
* 79da04e add HEAD verb **@** *Middleware::Router* (closes #70)

### Bug Fixes 🐛
* 9e60b18 properly handle inline blocks **@** *View* (fixes #74)

### Infrastructure 🏭
* 12e4d64 trigger dependant builds **@** *CI*

v0.7.1: tag_name: v0.7.1
body: ### New Features ✨
* f699d84 `.xml` macro to render XML views **@** *View* (closes #72)

### Infrastructure 🏭
* b7aec6d build API docs for release tags only **@** *CI*
v0.7.0: tag_name: v0.7.0
body: ## Overhaul 💥

### Notable changes ⚠️

* The shard is merged with `onyx-http`
* `Action` renamed to `Endpoint`
* Very much improved `Channel`
* Universal error renderer which respects "Accept" header
* Views have their own rendring logic, with macros relying on the "Accept" header as well

### Infrastructure 🏭
* (CI) 7241f8f use stable branch
v0.6.4: tag_name: v0.6.4
body: ### New Features ✨
* a6a7c98 add Channel (closes #62)
* (Params) c418990, cc10d71, 9b1bcf1 add `require` option to `form` and `json` params (closes #59)
* (Params) fd2763c allow nilable nested params (closes #55)

### Documentation 📚
* (Action) 699281e typo

### Refactoring 📝
* (Params) 066bea8 improve containers naming

### Patrons ❤️
* 20aac93 add Dainel Vera
v0.6.3: tag_name: v0.6.3
body: ### Documentation 📚
* b6a0a6c rearrange to fix little inconveniences
v0.6.2: tag_name: v0.6.2
body: ### Bug Fixes 🐛
* (Renderers::JSON) 0eace30 update "Content-Type" header only if error or view is present
* (Renderers::Text) d8b7d38 *ditto*
v0.6.1: tag_name: v0.6.1
body: ### Bug Fixes 🐛
* b3286d3 Onyx is a module

### Dependency Updates 📦
* 6226ac3 
  * `onyx-http` 0.1.0 → 0.1.1

### Documentation 📚
* (README) b054608 typo
v0.6.0: tag_name: v0.6.0
body: ### New features ✨

* a07e25cfb7cf8e259e6e8c80c5c2a0e1d5f2dbb0 ⚠️ **breaking** split HTTP and REST components

v0.5.0: tag_name: v0.5.0
body: ⚠️ **breaking** Prism has been renamed to `Onyx::REST` and is now a part of @onyxframework
v0.4.0: tag_name: v0.4.0
body: ### New Features
* d09b4f6 ⚠️ **breaking** `Action` and `Channel` are modules now (closes #23)
* 6c5ffa6 ⚠️ **breaking** params defined with `type name : Type` (closes #33)
* 6bb864f, 04c7584 ⚠️ **breaking** accept Null params (closes #40)
* bba4168, 55c2082 ⚠️ **breaking** versatile auth system with optional arguments
* 12e7b79 ⚠️ **breaking** external Callbacks module
* 7a3b149 ⚠️ **breaking** display value of invalid param instead of class
* fa4e507 versatile keys for params extraction (closes #35)
* a640570 support Bool as param type
* 1a8310c optionally preserve body upon params parsing
* a75e9b1 add `Action#header` method (closes #42)
* 1889c76 add `Action#redirect` method (closes #41)

### Bug Fixes
* dda3445 correct parsing UInt* params from JSON
* bd17b01 `Nil.from_param` works as expected
* e11a445 Union params parsing
* 4de4e3d `halt!` now throws internally
* a391a5d limit body size upon params parsing (closes #39)

### Optimizations
* 46e9ec7 ⚠️ **breaking** faster router (closes #45)

### Documentation
* 481332e optimize awesome badge
* ede7c9a improve introduction in README
* 48f9a6e add patreon-related information to README
* 606bba1 add "projects using" section to README
v0.3.0: tag_name: v0.3.0
body: ### New Features
* 3da5e22 ⚠️ **breaking** `Prism::Server` doesn't have `host` and `port` arguments anymore
* 17ed763 ⚠️ **breaking** use `gt`, `lt`, `gte` and `lte` in validations (closes #26)
* 6668a13 custom name for `Prism::Server` (closes #29)

### Optimizations
* 051d72d write JSON directly into response IO (closes #30)

### Dependency Updates
* d9eed4c Crystal -> 0.26

v0.2.1: tag_name: v0.2.1
body: ### Bug Fixes

* c154205c update `Prism::Server` to work with new `HTTP::Server`

### Chores

* 97a832b remove `Prism::VERSION` 
v0.2.0: tag_name: v0.2.0
body: **Notable features:**
- 51f6280a7d413bcad1861b9b7889716e9523a535 The project has been renamed to Prism
- c864494899224aefe84560effc2a0fec386574fb + a003fea981e59b6466c44dc5c7e03524b650be18 Renamed `WebsocketAction` to `Channel`, preserved `.call` for convenience
- 6c04bce3a445277387eed674f390cf3691a0ddaa Ruby-ish style callbacks (`before do` etc.)
- f8bd3d3cd0d30496b7ad76c51cefa804ff5f37bf Inline params processing
- b734566 Nested params
- 39b639a89c5377181ce10061c8b90692ae27b5b5 Router caching

And [more](https://github.com/vladfaust/prism/compare/v0.1.1...v0.2.0)!
v0.1.0: tag_name: v0.1.0
body: 🌝