What's new in PyWebIO 1.1
==========================

2021 2/7
----------

It's been a whole year since the first line of PyWebIO code was written. 🎂 There have been too many things in 2020, but it has a special meaning to me. In 2021, we will continue to work hard to make PyWebIO better and better.

Highlights
^^^^^^^^^^^
* Security support: `put_html() <pywebio.output.put_html>`, `put_markdown() <pywebio.output.put_markdown>` can use ``sanitize`` parameter to prevent XSS attack.
* UI internationalization support
* SEO support: Set SEO info through `pywebio.platform.seo()` or function docstring
* CDN support, more convenient to web framework integration
* Application access speed is improved, and no probe requests are used to determine the communication protocol

Backwards-incompatible changes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Remove `disable_asyncio` parameter of `start_server()` in django and flask.
* Deprecated `pywebio.session.data()`, use `pywebio.session.local` instead
* Application integrated into the web framework, the access address changes, see :ref:`Web framework integration<integration_web_framework>`
* Remove `max_height` parameter of `put_scrollable() <pywebio.output.put_scrollable>`, use `height` instead

Detailed changes
^^^^^^^^^^^^^^^^^
* `put_code() <pywebio.output.put_code>` add `rows` parameter to limit the maximum number of displayed lines
* `put_scrollable() <pywebio.output.put_scrollable>` add `keep_bottom` parameter
* `put_markdown() <pywebio.output.put_markdown>` add ``options`` to config Markdown parsing options.
* Add html escaping for parameters of `put_code() <pywebio.output.put_code>`, `put_image() <pywebio.output.put_image>`, `put_link() <pywebio.output.put_link>`, `put_row() <pywebio.output.put_row>`, `put_grid() <pywebio.output.put_grid>`
* Methods ``reset()``, ``append()``, ``insert()`` of `output()  <pywebio.output.output>`  accept string content
* Fix: Parsing error in `max_size` and `max_total_size` parameters of `file_upload() <pywebio.input.file_upload>`
* Fix: Auto open browser failed in python 3.6