Releases: zauberzeug/nicegui
v2.19.0
New features and enhancements
- Speed-up page load by skipping ES module shim for modern browsers (#4761, #4801 by @evnchn)
- Speed-up page load by deferring non-critical JavaScript (#4798 by @evnchn)
- Make
ui.aggrid
fully configurable (getters, setters,from_pandas()
,from_polars()
) (#4782, #4784 by @TeeFiX42, @evnchn, @falkoschindler) - Warn if
ui.download.from_url
is called with an absolute URL which can cause problems (#4723, #4779 by @morrowrasmus, @evnchn, @falkoschindler)
Bugfixes
- Allow overwriting PyWebView's
storage_path
andprivate_mode
(#4805, #4811 by @nachobacanful, @evnchn, @falkoschindler) - Fix syntax highlighting for
ui.markdown
by includingcodehilite.css
more robustly (#4774, #4778 by @platinops, @evnchn, @falkoschindler)
Documentation
- Ensure every demo subpage is accessible even when hosting on multiple servers (#4728, #4790, #4799 by @evnchn, @rodja, @falkoschindler)
- Update links to the PyWebview documentation (#4829 by @NiklasNeugebauer, @falkoschindler)
- Fix link to JavaScript's History API (#4807 by @Igor-san, @falkoschindler)
- Cache
search_index.json
more aggressively to reduce bandwidth (#4794, #4795 by @falkoschindler, @evnchn) - Fix wide sections not wrapping on mobile (#4791 by @Iremlap, @falkoschindler)
- Fix a glitch in the docstring for generic event registrations (#4789 by @Igor-san)
Infrastructure
- Add flake8-quotes information to pyproject.toml (#4783, #4787, #4788 by @EmberLightVFX, @evnchn, @falkoschindler)
Special thanks to all our sponsors and contributors! ✨
🙏 Want to support this project? Check out our GitHub Sponsors page to help us keep building amazing features!
v2.18.0
New features and enhancements
- Allow combining Python
handler
withjs_handler
for filtering event arguments (#4577, #4611, #4618, #4689 by @bin-san, @yihuang, @evnchn, @falkoschindler) - Allow passing
classes
,style
, andprops
toui.log.push
(#2508, #4750 by @whoenig, @falkoschindler, @golgitab, @evnchn) - Improve cache invalidation using last-modified timestamps (#4532, #4539 by @evnchn, @falkoschindler)
Bugfixes
- Let
ui.table.from_pandas
handle dataframes with lists or intervals (#2697, #2744, #4775 by @rohitsathish, @petergaultney, @burnpanck, @lij55, @evnchn, @xaptronic, @falkoschindler) - Fix timing issue when initializing
ui.leaflet
(#4753, #4754 by @evnchn)
Documentation
- Show the documentation hierarchy in the sidebar (#2976, #4732 by @v479038280, @evnchn, @falkoschindler)
Testing
- Document use of user fixture with
ui.select
, including a bugfix when closing the popup (#4737, #4757 by @barrywhart, @evnchn, @rodja)
Infrastructure
- Remove Prometheus tracking (#4746, #4766 by @paketb0te, @rodja, @falkoschindler)
- Use Plausible Analytics on nicegui.io (#4769 by @rodja, @evnchn)
Special thanks to all our sponsors and contributors! ✨
🙏 Want to support this project? Check out our GitHub Sponsors page to help us keep building amazing features!
v2.17.0
New features and enhancements
- Allow adding SVG layers to
ui.interactive_image
(#4712 by @falkoschindler, @evnchn, @codingpaula) - Introduce image overlays and video overlays for
ui.leaflet
(#4686, #4707 by @jurstu, @falkoschindler, @evnchn) - Add HTTPS protocol support to
ui.run
(#4679 by @thetableman, @evnchn, @falkoschindler) - Gain basic Android compatibility with a little refactoring (#578, #4683 by @bobwatcherx, @jeff-dh, @evnchn, @rodja)
Bugfixes
- Fix
ui.codemirror
not applying changes after inserting emojies (#4575, #4678 by @gbrault, @evnchn, @falkoschindler) - Fix Mermaid diagrams via
ui.markdown
orui.mermaid
rendering incorrectly withinui.dialog
(#4502, #4518, #4692, #4722 by @ntmarkus, @falkoschindler, @evnchn) - Fix
ui.refreshable
updating wrong target when usingui.state
(#3392, #4690, #4691 by @kleynjan, @python-and-novella, @falkoschindler, @evnchn) - Avoid KeyErrors caused by late
ui.run_javascript
responses (#4725 by @falkoschindler) - Improve On Air reconnect behavior (#4724 by @falkoschindler)
Documentation
- Reduce latency and bandwidth of search function (#4731 by @evnchn)
- Introduce a json containing all documentation for better AI support. (#3412, #4688 by @cleesmith, @ruiheng, @evnchn, @falkoschindler)
- Add demo about transformation functions for binding properties (#4726 by @Youssof-lab, @evnchn, @falkoschindler)
- Add demo about Mermaid diagrams inside
ui.markdown
(#4170 by @Alyxion, @falkoschindler, @evnchn) - Add missing version information for download functions (#4727 by @evnchn)
Testing
- Add context manager to the user fixture to allow simpler use of
ElementFilter
(#4667, #4682 by @barrywhart, @rodja, @evnchn, @falkoschindler)
Infrastructure
- Fix npm.py for Windows (#4656, #4733 by @evnchn, @falkoschindler)
Special thanks to all our sponsors and contributors! ✨
🙏 Want to support this project? Check out our GitHub Sponsors page to help us keep building amazing features!
v2.16.1
Bugfix
- Fix multi-cursor updates in
ui.codemirror
(#4701, #4702 by @evnchn, @falkoschindler)
Documentation
- Add demo about
ui.context_menu
with dynamic content (#4695, #4696 by @Anindya088, @evnchn, @falkoschindler) - Add demo about styling HTML elements inside
ui.markdown
(#4403 by @Lester1989, @NiklasNeugebauer, @evnchn, @falkoschindler)
v2.16.0
New features and enhancements
- Introduce
@background_tasks.await_on_shutdown
to allow properly awaiting background tasks on shutdown, fixes app reset and RuntimeWarnings in pytests (#4312, #4592, #4608, #4641 by @evnchn, @ReubenVandezande, @rodja, @falkoschindler) - Introduce
element.html_id
property (#4633, #4672 by @evnchn, @falkoschindler) - Simplify change set processing for
ui.codemirror
(#4676 by @falkoschindler, @evnchn)
Bugfixes
- Fix
ui.codemirror
not updating when value changes programmatically (#3337, #4586, #4635 by @zkx06111, @python-and-novella, @zak-45, @cipologic, @evnchn, @falkoschindler) - Get rid of "leaked semaphore object" warnings (#4129, #4131, #4132, #4653 by @ChipsAHoai, @MaxRev-Dev, @devturner, @TomFreudenberg, @rodja)
- Improve efficiency of binding propagation by correctly keeping track of visited nodes* (#4626, #4628 by @sfeltman, @evnchn, @falkoschindler)
- Fix import and initialization of Mermaid in
ui.mardown
(#4620, #4623, #4625 by @yihuang, @evnchn, @falkoschindler) - Fix
getElement
when called with anHTMLElement
(#4674, #4675 by @evnchn)
Documentation
- Added documentation on how native app settings are ignored when using a main guard (#4319, #4627, #4658 by @J3ronimo, @evnchn, @civilwargeeky, @falkoschindler)
- Add demo about HTML in
ui.table
cells (#4605, #4646 by @rafaelrdealmeida, @evnchn, @falkoschindler) - Update documentation on
ui.upload
after a breaking change in Starlette 0.46.0 (#4640 by @yudelevi, @evnchn) - Use a custom reST element for documentation to fix a layout glitch (#4647, #4648 by @kj4tmp, @evnchn, @falkoschindler)
* Note about binding propagation: NiceGUI 2.16.0 improved efficiency of binding propagation by strictly adhering to a Depth-First-Search approach, updating every affected node once and executing the transformation function once. If you are migrating from NiceGUI 2.15.0 or older, there may be extra runs on transformation functions, especially ones in the opposite direction to the current propagation direction, which are no-longer ran in NiceGUI 2.16.0. As a result, you would need to change your code appropriately. We would also like to mention that, for the most stable behaviour across releases, it is best-practice that transform functions have no side-effects and do basic transform operations only. This way, it will not matter how NiceGUI chooses to call them in what order and by how many times.
Special thanks to all our sponsors and contributors! ✨
🙏 Want to support this project? Check out our GitHub Sponsors page to help us keep building amazing features!
v2.15.0
New features and enhancements
- Add theme support to
ui.echart
(#4596 by @thetableman, @evnchn, @falkoschindler) - Avoid flash of unstyled text (FOUT) for icons and symbols (#4477, #4481 by @evnchn, @falkoschindler)
Bugfixes
- Fix a memory leak and a possible RuntimeError in the binding module (#4419, #4617, #4619 by @chriswi93, @x2a-packet, @evnchn, @polyipseity, @falkoschindler, @rodja)
Testing
- Fix unexpected logs in pytest when working with the user fixture (#4607, #4608 by @pmeising)
Dependencies
- Bump python-engineio to 4.12.0 to avoid pointless messages parsing attempts (#4602 by @rodja, @falkoschindler, @evnchn)
Special thanks to all our sponsors and contributors! ✨
🙏 Want to support this project? Check out our GitHub Sponsors page to help us keep building amazing features!
v2.14.1
v2.14.0
New features and enhancements
- Preload scripts for faster page load (#4505, #4507 by @daya0576, @falkoschindler, @evnchn)
- Introduce more explicit
ui.download
functions (#4104, #4564 by @marcuslimdw, @falkoschindler, @evnchn) - Introduce
LabelElement
mixin to add bindablelabel
property to various elements (#4529 by @weinibuliu, @evnchn, @falkoschindler) - Introduce new
on_begin_upload
event handler forui.upload
(#4541, #4543 by @jpruente92, @falkoschindler, @evnchn) - Let
ui.add_css
,ui.add_scss
andui.add_sass
setshared=True
(#4537 by @evnchn, @falkoschindler) - Allow simulating
ui.run_javascript
in pytests using theUser
fixture (#4508, #4512 by @chriswi93, @rodja, @falkoschindler) - Provide better warning if On Air service is not reachable (#4582 by @rodja)
- Chunk large HTTP responses when relayed through On Air service (#4555 by @rodja)
- Show On Air connection errors with message from server (#4553 by @rodja)
Bugfixes
- 🚨🚨🚨 WARNING: The bugfix "Avoid RuntimeError while iterating over bindable properties (#4419, #4550 by @chriswi93, @falkoschindler)" lead to possible app freezes. Please Use 2.14.1 instead.
- Avoid
ui.echart
from initially rendering twice (#4501, #4535, #4584 by @depley, @evnchn, @falkoschindler) - Fix
ui.scene.clear()
if it containsgroup
scene objects (#4560 by @NiklasNeugebauer, @evnchn, @falkoschindler) - Use
background_tasks.create
to avoid destroying pending tasks (#4500, #4551 by @JudeMcbeath, @evnchn, @zbxiany, @chriswi93, @jpentland-jrw, @falkoschindler) - Fix typing for
ui.refreshable
andui.refreshable_method
(#4510 by @drkspace)
Documentation
- Fix bug in interactive styling demo (#4576 by @hwtam, @evnchn, @falkoschindler)
- Fix a demo for
ui.aggrid
which requires a@ui.page
function (#4570, #4572 by @CodeCubeNeo, @evnchn) - Improve cover image in README.md for dark mode (#4544 by @evnchn)
- Fix tests folder structure in for modular projects (#4522 by @aleksandr-vin)
Dependencies
- Bump typing-extensions from 4.12.2 to 4.13.1 (#4562 by @dependabot)
- Bump ruff from 0.9.9 to 0.11.2 (#4545 by @dependabot)
Special thanks to all our sponsors and contributors! ✨
🙏 Want to support this project? Check out our GitHub Sponsors page to help us keep building amazing features!
v2.13.0
New features and enhancements
- Improve efficiency of async page functions (#4450, #4461, #4462, #4466 by @evnchn, @falkoschindler)
- Improve efficiency of UI updates (#4457, #4463 by @evnchn, @falkoschindler)
- Introduce
ui.navigate.history
to update URL in browser (#4382 by @platinops, @rodja, @falkoschindler) - Add
timeout
property forui.notification
(#4437, #4444 by @weinibuliu, @falkoschindler) - Support
ui.select
with multiple values and dictionaries in user test fixture (#4449 by @Daemo00, @rodja, @falkoschindler) - Introduce Cursor rules to improve quality of AI code generation (#4445 by @rodja)
Bugfixes
- Avoid duplicate updates of UI elements (#4344, #4470 by @roblight, @falkoschindler)
- Fix parsing of URL parameters in props (#4453 by @pimswr, @falkoschindler)
- Fix potential conflicts of "select" and "change" events in
ui.json_editor
(#4397, #4458 by @natankeddem, @falkoschindler) - Avoid overwriting original list when setting
ui.table.columns
(#4418, #4428 by @weinibuliu, @falkoschindler) - Ensure valid host when opening native window (#4438, #4443 by @natankeddem, @rodja)
- Fix displayed list of IP addresses on startup (#4425 by @zak-45, @rodja, @falkoschindler)
- Define Starlette version for Python 3.8 to avoid static resources not being found (#4255 by @KimigaiiWuyi, @arlowhite, @guyingbo, @fm-andres-rangel, @AERCR3, @Kludex, @sonman, @falkoschindler)
Documentation
- Add Google OAuth2 example (#4361, #4371 by @frankvp11, @@rodja, @falkoschindler)
- Add Google One Tap authentication example (#3243, #3244 by @bin-san, @rodja, @falkoschindler)
Special thanks to all our sponsors and contributors! ✨
🙏 Want to support this project? Check out our GitHub Sponsors page to help us keep building amazing features!
v2.12.1
Bugfix
- Fix inconsistency between supported language codes and defined translations (#4417 by @hyoshida-jr, @falkoschindler)