- GraphiQL2 is now default API explorer.
- Added `explorer` option to ASGI and WSGI `GraphQL` applications that enables API explorer customization.
- Added `ExplorerHttp405` API explorer that returns `405 Method Not Allowed` for GET HTTP requests.
- Added implementations for GraphiQL2, GraphQL-Playground and Apollo Sandbox explorers.
- Added `convert_names_case` option to `make_executable_schema` to convert all names in schema to Python case using default or custom strategy.
- Added support for `Path`-like objects to `load_schema_from_path`.
- Changed `logger` option to also support `Logger` and `LoggerAdapter` instance in addition to `str` with logger name.
- Added support for `tag` directive used by Apollo Federation.
- Moved project configuration from `setup.py` to `pyproject.toml`.
- Changed `context_value` option in ASGI and WSGI applications for callables to take query data as second argument.
- Changed `root_value` option in ASGI and WSGI applications for callables to take operation and and variables in addition to context and parsed query.
- Added `execution_context_class` option to ASGI and WSGI applications.
- Added `query_parser` option to ASGI and WSGI `GraphQL` applications that enables query parsing customization.
- Changed `middleware` option to work with callable or list of middlewares instead of `MiddlewareManager` instance.
- Added `middleware_manager_class` option to ASGI and WSGI applications.
- Added `handle_request` and `handle_websocket` methods to `ASGI` application that takes Starlette/FastAPI `Request` and `Websocket` objects.
- Fixed type annotations for middlewares.
- Added docstrings to members of public API.