#<Sawyer::Resource:0x00007fbd82367850> v0.14.0 Release Notes

  • Date: 2022-09-30

    ๐Ÿš€ This release focuses on three main themes:

    • ๐Ÿ‘Œ Support for running Panel apps entirely in the browser using WebAssembly (via Pyodide and PyScript)
    • ๐Ÿ‘Œ Improvements in the app-user experience by making it easier to build responsive and performant applications
    • ๐Ÿ‘Œ Improvements in the developer experience through static typing and docstrings.

    ๐Ÿš€ Many, many thanks to everyone who filed issues or contributed to this release. In particular we would like to thank @janimo, @xavArtley, @thuydotm, @jmosbacher, @dmarx, @2WoLpH, @ipopa144, @sdc50 for contributions and @philippjfr, @Hoxbro, @maximlt, and @MarcSkovMadsen for ongoing maintenance and development.

    ๐Ÿ”‹ Features

    • โž• Add support for converting Panel apps to pyscript/pyodide (#3817, #3830, #3851, #3856, #3857, #3858, #3860, #3861, #3863, #3864, #3868, #3878)
    • ๐ŸŽ Manage our own CDN to improve performance and reliability for delivering JS payloads (#3867, #3870)
    • โž• Add ability to defer_load of components (#3882)
    • โž• Add pn.widget helper function (#1826, #3589)
    • โž• Add config.exception_handler to easily capture, log and notify users about errors (#3893)
    • ๐Ÿ‘ Implement pn.cache function for memoization support (#2411)
    • ๐Ÿš€ Rewrite server extension to run Panel applications in kernels so that previews run in the same environment as the deployed app (#3763)
    • โž• Add ability to define authorization callback (#3777)
    • ๐Ÿ‘Œ Support memray profiler (#3509)
    • โž• Add liveness endpoint (#3832)
    • โž• Add ability to configure exception handler (#3896)

    โœจ Enhancements

    • Ensure OAuth redirects to requested app and retains query arguments (#3555)
    • โž• Add extension entry point (#3738)
    • โšก๏ธ Update Admin Logs page to use Tabulator (#3694)
    • Ensure location.unsync unsets query params (#3806)
    • ๐Ÿ‘ Allow None value on numeric sliders and LiteralInput (#3174)
    • ๐Ÿ‘ Allow serving admin panel with pn.serve (#3798)
    • ๐Ÿ‘Œ Improve ReactiveHTML loop support and validation (#3813)
    • ๐Ÿ‘Œ Support declaring Perspective.plugin_config pane (#3814)
    • Do not flicker busy indicator during --autoreload check (#3804)
    • ๐Ÿ‘Œ Improve robustness of state.curdoc in threaded and async contexts (#3776, #3810, #3834)
    • ๐Ÿ‘Œ Support datetime bounds for DatetimePicker and DatetimeRangePicker (#3788)
    • ๐Ÿ‘ Allow setting the Oauth provider using environment variables (#3698)
    • Implement Player.value_throttled (#3756)
    • Ensure that URL query parameters are preserved during OAuth (#3656)
    • ๐Ÿ‘Œ Improve Markdown code syntax highlighting (#3758)
    • Ensure components do not re-render if background or loading parameters change (#3599)
    • โž• Add ability to define admin dashboard plugins (#3668)
    • Do not calculate embed state for disabled widgets (#3757)
    • โž• Add hard bounds to editable sliders (#3739)
    • โž• Add bundling of shared resources (#3894)
    • โž• Add Tabulator as default param.DataFrame widget (#3912)

    ๐Ÿ“š Documentation

    • ๐Ÿ“š Overhaul documentation (#3568)
    • ๐Ÿ‘Œ Improve Fast Template docstrings (#3570)
    • ๐Ÿ“„ Reorganize docs and convert static notebooks to Markdown (#3875, #3833)
    • โž• Add DevelopingCustomModels to the webpage (#3710)
    • ๐Ÿ‘Œ Improve typing (#3561, #3562, #3592, #3604, #3714, #3729)

    โšก๏ธ Compatibility & Version updates

    • ๐Ÿ‘Œ Support ipywidgets>=8.0 (#3782)
    • โฌ†๏ธ Bump jsoneditor package (#3838)
    • โฌ†๏ธ Upgrade to Tabulator 5.3.2 (#3784)
    • ๐Ÿ‘Œ Improve Django compatibility (#3843, #3835)
    • โœ‚ Remove all usage of deprecated Pane

    ๐Ÿ› Bugs

    Server

    • Ensure closed websocket does not cause errors
    • ๐Ÿ– Handle session and websocket close cleanly (#3769)
    • ๐Ÿ›  Fix prefix handling for admin page (#3809)
    • ๐Ÿ‘Œ Support admin dashboard in multi-process deployments (#3812)
    • ๐Ÿ‘Œ Improve document cleanup when not invoked using server_destroy (#3842)
    • Ensure pn.state.execute dispatches immediately if possible (#3859)
    • ๐Ÿ›  Ensure autoload.js resources are appropriately prefixed (#3873)

    Notebook

    • ๐Ÿ›  Fix support for copying cells and creating new views in JupyterLab (#3652)
    • โœ… Ensure output renders in VSCode notebook with latest ipywidgets (#3765)
    • ๐Ÿ Resolve issues with Jupyter slowdown due to event_loop patching on Windows (#3770)
      • Ensure old comm managers do not raise errors in notebook (#3853)
      • Simplify rendering of ipywidget (#3937)

    Tabulator

    • Do not re-render Tabulator on css_classes or background change (#3598)
    • โšก๏ธ Ensure expand icon updates on Tabulator.expanded change (#3703)
    • โšก๏ธ Update page Parameter when pagination is 'local' (#3704)
    • Do not apply sorters on Tabulator cell edits (#3744)
    • Ensure Tabulator.controls renders (#3768)
    • Ensure correctness of event row and selection indices in Tabulator (#3771, #3841)
    • ๐Ÿ›  Fix issues with frontend and backend sorters being out of sync in Tabulator (#3825, #3839)
    • ๐Ÿ›  Fix default values of a list header filter in Tabulator (#3826)
    • ๐Ÿ›  Fix the edit event with a python filter in Tabulator (#3829)
    • Disable client-side date filtering on Tabulator (#3849)
    • ๐Ÿ‘Œ Support editing of pandas masked array dtypes in Tabulator (#3850)
    • ๐Ÿ›  Fix issues editing a cell when client-side filtering applied (#3852)
    • Do not recompute data when local pagination is enabled (#3854)
    • Don't skip filtering when the column name is undefined (#3862)

    Misc

    • ๐Ÿ›  Fix FileInput.save (#3579)
    • ๐Ÿ›  Fix issues with Matplotlib.high_dpi option (#3591, #3594)
    • Ensure layout recomputes on HTML/Markdown re-rerender (#3616)
    • ๐Ÿ‘ Allow overriding all widget parameters on Param pane (#3754)
    • Ensure DatePicker start/end are transformed when jslinked (#3759)
    • Ensure notifications can be enabled without a template (#3820)
    • Ensure ReactiveHTML inline callbacks on loop variables return correct node (#3840)
    • Ensure that Perspective does not take precedence on empty dict (#3936)
    • ๐Ÿ‘Œ Improve sizing_mode behavior when width/height are specified (#3955)
    • Do not load notyf resources unless notifications are enabled (#3958)