New features and enhancements
- Introduce
ui.popup, a menu on desktop and a dialog on small screens (#1125, #2149, #5613 by @DelScipio, @adosikas, @evnchn, @phifuh, @falkoschindler) - Make the start method of the
run.cpu_boundprocess pool configurable viarun.process_pool_start_method(#6117 by @evnchn, @NiklasNeugebauer, @falkoschindler) - Speed up binding cleanup with a reverse index (#6135, #6150 by @ftilde, @jwinpbe, @evnchn, @falkoschindler)
- Speed up observable change handlers by resolving
expects_argumentsonce at registration (#6098, #6108 by @maybites, @evnchn, @falkoschindler) - Add element identity to the "parent slot has been deleted" error (#6153 by @pascalzauberzeug, @evnchn, @falkoschindler)
Bugfixes
-
Fix
ObservableCollectionleaking change handlers and keeping discarded containers alive (#6139, #6140 by @falkoschindler, @evnchn) -
Raise
KeyErrorfromObservableDict.pop()for a missing key, likedict.pop(#6163, #6164 by @evnchn, @falkoschindler)Breaking change:
app.storage.general,.user,.taband.clientareObservableDicts, sostorage.pop('missing')now raises aKeyErrorinstead of returningNone. Pass an explicit default to keep the previous behavior:storage.pop('missing', None). -
Skip change events for no-op mutations of observable collections (#6169, #6171 by @falkoschindler, @evnchn)
-
Fix
ui.page_title,ui.add_head_html,ui.add_body_htmlandui.add_cssbeing lost in asyncui.sub_pagesbuilders (#6058, #6147, #6148, #6168 by @cervelas, @evnchn, @falkoschindler) -
Fix
run.cpu_boundhanging with theforkserverstart method, e.g. on Python 3.14 + Linux (#6166, #6167 by @evnchn, @falkoschindler) -
Fix
PermissionErroron Windows when clearing storage while a backup is in flight (#6158, #6159, #6173, #6174 by @Jepson2k, @evnchn, @falkoschindler) -
Fix sporadic HTTP 500 when user storage is pruned during an in-flight request (#6145, #6146 by @evnchn, @falkoschindler)
-
Fix
TypeErrorinui.input's shadow text when the autocomplete list is absent (#6161, #6162 by @Jepson2k, @evnchn, @falkoschindler) -
Fix placement and order of
ui.fab_actions underdir="rtl"(#6165, #6172 by @roximn148, @evnchn, @falkoschindler) -
Fix crash when loading an STL model into
ui.scenewithwireframe=True(#5989, #6118, #6137 by @fabian0702, @Jepson2k, @evnchn, @falkoschindler) -
Close streamed media file handles synchronously on teardown (#6149 by @evnchn, @falkoschindler)
Documentation
- Add an accessibility heading tree to the homepage (#6155 by @evnchn, @falkoschindler)
Testing
- Make CPython-only-semantics tests PyPy-compatible (#6157 by @evnchn, @falkoschindler)
Dependencies
- Update nicegui-highcharts to 3.3, fixing dynamic adding and removing of chart series (#6138 by @falkoschindler, @evnchn)
Infrastructure
- Run
examples/pytestsin CI so bundled example tests can't silently rot (#6141, #6144 by @falkoschindler, @evnchn)
Special thanks to our top sponsors DiscoLike Inc. and Lechler GmbH ✨
and all our other sponsors and contributors for supporting this project!
🙏 Want to support this project? Check out our GitHub Sponsors page to help us keep building amazing features!