New features and enhancements
- Make [JavaScript](https://nicegui.io/documentation#run_javascript) calls optionally awaitable (1471, 1709, 1797 by falkoschindler)
- Introduce [react-like `ui.state`](https://nicegui.io/documentation/refreshable#refreshable_ui_with_reactive_state) to be used with `ui.refreshable` (1410, 1438, 1447, 1489 by qingant, falkoschindler)
- Move [Highcharts](https://nicegui.io/documentation/highcharts) dependency into a separate [nicegui-highcharts](https://github.com/zauberzeug/nicegui-highcharts) package to avoid the need for a license for commercial projects (#1850, 1863 by rodja, falkoschindler)
- Refactor `globals` module (1708, 1847 by falkoschindler)
- Use FastAPI's new `lifespan` API (1849 by rj-vera, rodja, falkoschindler)
- Use flex layout per default for layout elements (1614, 1796 by youyou015, natankeddem, falkoschindler)
- Replace netifaces with much simpler (and better) ifaddr (1856 by retsyo, rodja)
- Convert [`ui.timer`](https://nicegui.io/documentation/timer) into an element (#1710, 1829 by falkoschindler)
- Update httpx dependency (1820 by tscheburaschka, falkoschindler)
- Consistently mark methods private if not part of the public API (1326 by falkoschindler)
- Remove deprecated APIs (1711 by falkoschindler)
Bugfixes
- Fix [AG Grid](https://nicegui.io/documentation/aggrid) bug with hidden cells by upgrading to new version (#1860 by rhkarls, natankeddem, falkoschindler)
Documentation
- Add LangChain handler to the ["Chat with AI" example](https://github.com/zauberzeug/nicegui/blob/main/examples/chat_with_ai/main.py) (#1832 by cam-barts)
Breaking changes and migration guide
No need to await JavaScript calls
When using `run_javascript`, `run_method`, `call_api_method` and `call_column_api_method`,
you can decide whether the client should respond with a return value or not by awaiting the method call or not.
The method will automatically inform the client.
The `respond` parameter of `run_javascript` is not used anymore. See https://nicegui.io/documentation/run_javascript
`ui.chart` is now `ui.highchart` and requires the package "nicegui-highchart"
[Highcharts](https://nicegui.io/documentation/highcharts) requires you to buy a license for commercial products if the code is installed on your machine.
That's why we made it an optional package.
Install with `pip install nicegui[highcharts]`.
The `globals` module is gone
We removed the ugly `globals` module, which was never intended to be public API,
but might have been used nonetheless.
- If you need the app configuration, use `app.config` instead (using `from nicegui import app` to get the app object).
- If you need the current client or slot, use the `context` module instead.
- If you need the client dictionary, use `Client.instances` instead.
FastAPI's new lifespan API
Since FastAPI's `on_event("startup")` and `on_event("shutdown")` are deprecated,
NiceGUI switched to the new lifespan API.
You can still use `app.on_startup()` and `app.on_shutdown()`.
Layout elements use flex layout by default
Before you needed to use `ui.column` inside, e.g., `ui.tab_panel` and other elements to get proper alignment, padding and spacing.
Now most UI elements provide reasonable default so that the content looks like in a `ui.row` or `ui.column`.
Upgraded third-party dependencies
- vue: 3.3.4 → 3.3.6
- quasar: 2.12.2 → 2.13.0
- tailwindcss: 3.3.2 (unchanged)
- socket.io: 4.7.1 → 4.7.2
- es-module-shims: 1.7.3 → 1.8.0
- aggrid: 30.0.3 → 30.2.0
- echarts: 5.4.3 (unchanged)
- mermaid: 10.2.4 → 10.5.1
- nipplejs: 0.10.1 (unchanged)
- plotly: 2.24.3 → 2.27.0
- three: 0.154.0 → 0.157.0
- tween: 21.0.0 (unchanged)
- vanilla-jsoneditor: 0.18.0 → 0.18.10