Releases: holoviz/panel
Version 1.0.3
Another micro-release in the 1.0.x series with a number of smaller bug fixes. Most importantly this resolves issues with loading indicators and with apps converted to the pyodide-worker
target. Many thanks to @n3011, @hoxbro and @philippjfr for contributing to this release.
- Resolve
_repr_jpeg_
methods correctly (#4904) - Fix handling of queued events in pyodide worker (#4913)
- Various fixes for loading indicator (#4915)
- Allow
-1
inTabs.active
and allow recovering from closed tabs (#4920) - Ensure
HoloViews
layout is correctly initialized whencenter
is set (#4921) - Ensure VSCode editor does not apply white background to Panel output (#4923)
- Do not error on deserialization errors in notebooks (#4927)
- Ensure basic auth provider works when dynamically starting server (#4926)
- Ensure
Param
panename
is updated when object changes (#4928) - Align functionality and styling of
FileDownload
withButton
(#4929) - Fix equality comparisons of parameter values when updating a
Pane
(#4934) - Warn about ignored widget parameters on
Param
pane (#4934)
Version 1.0.2
A micro-release in the 1.0.x series with a number of bug fixes and documentation tweaks. Many thanks to @jbednar and @philippjfr for contributing to this release.
Bug fixes
- Ensure
Design
stylesheets are not replaced when updating component stylesheets (#4883) - Ensure tooltips are rendered correctly as HTML (#4887)
- Fix loading of index page resources (#4891)
- Ensure
FloatPanel
can be rendered in classic notebooks (#4892) - Attempt rendering output in notebooks even if not all resources have been initialized (#4893)
- Do not load large bokeh-mathjax bundle in notebooks by default (#4895)
- Make Fast template sidebar opening transition smoother (#4898)
- Ensure new items added to
Card
layout are rendered (#4899) - Fix logo rendering in BasicAuth template (#4900)
Documentation
Version 1.0.1
A micro-release fixing some small issues discovered in Panel 1.0. Thank you to @droumis, @hoxbro and @philippjfr for contributing fixes.
Bug fixes
- Ensure
Reactive
objects wrapped in reactive are re-rendered correctly (#4868) - Tweaks for Material
Design
component inset label styling (#4877) - Ensure
SlidesTemplate
slides changes trigger updates in thepn.state.location.hash
(#4878)
Documentation
Version 1.0.0
The Panel 1.0 release is finally here and it brings a huge number of improvements. The largest improvements in this release come from an upgrade from Bokeh 2.x to Bokeh 3.x. Bokeh overhauled its internal layout engine and stylesheet handling, making applications significantly more performant and customizable going forward.
This release marks a huge step forward in the usability of Panel but is also just a first step in leveraging many of the new capabilities that the updated layout engine and design system affords. In the coming months we will continue to improve and polish the UI and UX and make it easier for you to extend Panel as needed.
For now we want to thank the many people that contributed to this release either by contributing directly or by testing and providing feedback. Many thanks to the core contributors @MarcSkovMadsen, @hoxbro, @maximlt, @jbednar, @droumis and @philippjfr and the outside contributors @ahuang11, @cdeil, @MridulS, @AndrewMaged814, @Midnighter, @wendrul and @lukfal94.
Major Features
The three main features we want to highlight as part of this release are:
- Add new and highly performant layout engine, addressing many performance and layout issues (#4326, #4463, #4491, #4503, #4522, #4690)
- Add unified Design and Theme system (#4413, #4475, #4466, #4540, #4548, #4770, #4792, #4793, #4801)
- Implement support for passing parameters, widgets and bound functions by reference for simple and powerful reactivity (#4495, #4505, #4603, #4606)
Some of the changes related to the new layout engine and design system will require small updates to your existing applications. To make this transition as smooth as possible we have provided an upgrade/migration guide.
New Components
This release also adds a number of exciting new components you can leverage in your applications:
- Add
Swipe
layout (#3007) - Add
Switch
widget ([#4130](#4130)) - Add
Vizzu
pane (#4226, #4739) - Add
BrowserInfo
model to expose browser window and navigator APIs (#4533) - Add
BasicAuth
provider for quick password based auth (#4684) - Add
FloatPanel
layout (#4707, #4711) - Add a
SlidesTemplate
based on reveal.js to create interactive presentations (#4798)
Major enhancements
There are also a number of major enhancements in this release that we are very excited about:
- Improved Markdown rendering (#4688)
- Add support for tooltips on widgets ([#4130](#4130), #4621, #4643)
- Ensure
.ipynb
and.md
based apps can be used as--index
(#4432) - Add support for selecting
format
andencoding
for Matplotlib image output and implemented responsive Image sizing (#4514) - Add support for icons on
Button
(#4797) - Add generic
Image
pane that auto-detects the image filetype (#4551) - Add support for writing applications in Markdown (#4602)
- Improve support for inline resources for Jupyter (#3013, #4787)
- Add ability to reuse sessions to speed up rendering (#3679, #4658)
- Improve notebook resource and extension loading (#4752)
- Add ability to add global loading spinner to application(s) (#4659)
Documentation
The last major change we want to highlight is a complete overhaul of the documentation, moving from long and difficult-to-navigate user guides to distinct easily applied how-to guides along with separate, longer explanation sections. We also put in significant effort to ensure that most of our documentation can be run interactively in Pyodide or JupyterLite.
- Modernize documentation by using latest pydata-sphinx-theme (#4609, #4701)
- Add upgrade/migration guide (#4693)
- Add Explanation section (#2797, #3168, #4664)
- Migrate user guide to how-to guides (#4244, #4251, #4267, #4290, #4412, #4422, #4759, #4774)
- Completely overhaul App Gallery (#4047, #4565, #4574, #4598, #4683)
- Use pyodide rendering throughout documentation and add JupyterLite links (#4751)
Deprecations & API changes
Compatibility
- Bokeh 3 compatibility (#4098, #4117, #4129, #4140, #4150, #4275, #4467, #4435, #4441, #4449, #4448, #4508)
- Upgrade plotly.js to 2.18.0 (#4320)
- Upgrade Tabulator to 5.4 and optimize rendering ([#4482](#4482))
- Upgrade Echarts to 5.4.1 (#4538)
- Upgrade pyodide (0.23.1) and pyscript versions (#4344)
- Add support for altair and vega-lite v5 (#4488)
- Add support for latest versions of ipywidgets (#4716, #4766, #4779)
Deprecations
- Deprecate
IDOM
pane ([#4293](#4293), #4323) - Deprecate
Viewable.app
([#4293](#4293)) - Deprecate
Viewable.pprint
(#4347) - Deprecate and remove
RGGPlot
- Rename
Ace
toCodeEditor
(#4627)
API changes & Backward Compatibility
- Pandas is now only a (lazy) runtime dependency (#4411)
Tabulator.frozen_rows
now respects the order of rows in the data instead of the order in which thefrozen_rows
were defined ([#4482](#4482))- Make
margin
defaults consistent across widgets and panes (#4528) - Extension calls must specify all required extensions (#4562)
- The
.embed
method now returns a Mimebundle object for rendering (#4791) - Remove
panel examples
CLI command and pyct dependency (#4691) - Expose all layout components in top-level API (#4696)
Other Enhancements
Configuration
- Allow to set the log level of the Admin logger ([#3495](https://github.com/holovi...
Version 0.14.4
This release is a small bug fix release preceding the upcoming major release of Panel 1.0. Many thanks to the contributors to this release which include @MarcSkovMadsen, @maximlt, @hoxbro and @philippjfr.
Bugs
- Fix
Tabulator
client-side string filters by not parsing them as regex (4423) - Fix the RGGPlot pane (#4380)
- Fix
panel examples
command by ensuring examples are correctly packaged (#4484) - Fix event generation by considering NaNs as equal when comparing Numpy arrays (#4481)
- Use cache from previous sessions when using
to_disk
(#4481) - Fix relative imports when running inside Jupyter Kernel (#4489)
- Do not re-create
Vega.selections
object unless selections changed (#4497)
Enhancements
- Add support for altair and vega-lite v5 (#4488)
Misc
- Use latest react-grid from CDN (#4461)
Version 0.14.3
This release introduces a large number of bug fixes and minor enhancements. Due to the upcoming release of Panel 1.0 we have also made the unconventional decision to issue new deprecation in a micro release. Specifically the IDOM
pane and Viewable.app
and Viewable.pprint
methods have been scheduled for deprecation. Many thanks to the contributors to this release which include @wendrul, @droumis and the core team @MarcSkovMadsen, @maximlt, @hoxbro and @philippjfr.
Bugs
Tabulator
- Ensure streamed rows on
Tabulator
can be edited (#4292) - Ensure changes on
Tabulator
formatter
andeditor
models are reflected in frontend (#4296) - Ensure cancelling edit does not clear cell on
Tabulator
(#4343) - Ensure inserting empty data on numeric column in
Tabulator
does not error (#4343)
Notebook
- Fix issues rendering components as ipywidgets for some versions of ipykernel (#4289)
- Add warning if custom resources could not be loaded in notebook (#4329)
- Ensure notifications are enabled even if
hv.extension
has been loaded (#4330) - Ensure global notification object can be used inside notebook callbacks (#4331)
Type definitions
- Fix return type of
Widget.from_param
(#4335) - Ensure type annotation allows
str
andPathLike
objects onpanel.serve
(#4336) - Fix type annotations on
panel.io.convert.convert_app
(s) (#4342)
Misc
- Ensure markdown links render correctly in template sidebar (#4222)
- Improve .applies for
ECharts
andDeckGL
(#4224) - Fix specifying custom
--index
with relative path (#4288) - Skip
on_load
callbacks in liveness check (#4302) - Ensure re-rendered
FileDownload
still fetches live data (#4328) - Fix handling of
panel.cache
on undecoratedParameterized
method (#4332) - Ensure user provided
hash_funcs
are applied inpanel.cache
(#4334) - Fix plotly eventdata undefined val (#4355)
- Ensure
panel convert
respectspanel.config
options (#4359) - Propagate options from HoloViews and Bokeh plots to enclosing Pane (#4360)
- Propagate options from dynamic components such as ParamMethod and Interactive to enclosing layout (#4360)
Minor enhancements
- Allow to set the log level of the Admin logger (#3495)
- Make
refresh_token
available in Auth (#4227) - Simplify determining whether script is executed as application with
pn.state.served
property (#4252) - Add
loading_indicator
to globalconfig
(#4259) - IPython
display
compatibility in pyodide builds (#4270) - Split
PanelJupyterExecutor
into separate module (#4276) - Allow dynamic loading of javascript modules in
ReactiveHTML
(#4319) - Add
Plotly.link_figure
parameter (#4333) - Ensure
CrossSelector
filters apply on each keystroke (#4339) - Improve startup, error handling and shutdown of Jupyter kernels in
jupyter_server_extension
(#4364)
Compatibility and Version Updates
- Upgrade plotly.js to 2.10.1 (#4320)
- Upgrade to pyodide 0.22.1 in
panel convert
(#4334) - Upgrade to pyscript 2022.12.01 in
panel convert
(#4334) - Fix compatibility of Perspective pane with Numpy 1.24 (#4362)
Deprecations
- Add deprecation warning to
IDOM
pane (#4293) - Add deprecation warning for
Viewable.app
andViewable.pprint
methods (#4293, #4347)
Documentation
Version 0.14.2
This release primarily focuses on bug fixes. In particular it resolves various issues with support for rendering ipywidgets
(particularly in ipywidgets>=8.0
) and also fixes a number of issues with the Jupyter Server previews. Many thanks for @govinda18, @joelostblom, @banesullivan, @xeldnahcram, @geronimogoemon, @minasouliman, @peterfpeterson, @jlstevens and the core maintainers @maximlt, @hoxbro, @MarcSkovMadsen and @philippjfr for their contributions to this release.
Enhancements
- Add support for
Tqdm.process_map
(#4093) - Support non-vtkPolyData types in vtk synchronizer (#4124)
- Allow invoking
convert
functions from pyodide (#4135) - Support
step
format in date sliders (#4152) - Add a
Reacton
component to simplify rendering (#4190)
Bugs
- Ensure Jupyter server extension serves resources, extensions and paths correctly (#4083, #4133, #4202)
- Ensure
IPyWidget
comm does not break when new widget is rendered (#4091) - Improving detection of comms in VSCode and Google Colab (#4115)
- Ensure
.js
mimetype is served correctly on Windows (#4118) - Ensure unhiding
Tabulator
columns renders cells correctly (#4119) - Ensure embedded
Slider
widgets initialize with correct default (#4121) - Handle missing event loop in thread gracefully (#4123)
- Ensure
Matplotlib
pane handles explicitwidth
/height
settings correctly (#4128) - Allow
Viewer
to render servable but non-viewable objects (#4131) - Fix regression in tracking sessions in admin interface (#4132)
- Ensure
Tabs
headers do not scroll unncessarily (#4146) - Ensure
Location
model reports as idle (#4159) - Fix auth error template rendering (#4162)
- Fix issues with value on
EditableSlider
when it is outsidefixed_start
/fixed_end
range (#4169) - Ensure
ipywidgets
events are handled the same way as regular events (#4171) - Don't raise
TypeError
for class which contains__panel__
(#4174) - Do not dispatch events if bokeh
Document
is set to hold events (#4178) - Execute
onload
callbacks immediately in pyodide app (#4191) - Improve
IPyWidget
kernel handling in server contexts (#4195) - Fix rendering of
IPyWidget
with child views in the notebook (#4197)
Docs
Version 0.14.1
This release primarily addresses regressions introduced in 0.14.0 and various long standing bugs. Many thanks to external contributors @liu-kan and @KedoKudo and the maintainers @hoxbro, @maximlt and @philippjfr for contributing a number of fixes.
### Minor enhancements
- Improve support for requests
in pyodide (#3973)
- Add option to clear value of DatetimePicker (#3990)
- Add support for hashing dates in pn.cache (#4004)
- Silence EMPTY_LAYOUT
warnings (#4056)
### Compatibility
- Fix Jupyterlite and latest PyScript compatibility (#4040)
### Bugs
#### Webassembly conversion
- Correctly handle resource mode in when converting to WebAssembly (#3967)
### Jupyter and Server
- Correctly handle future exceptions on threads (#3977)
- Fix panel serve
index template (#3980)
- Do not error if curdoc
has been destroyed (#3994)
- Ensure extensions loaded in jupyter kernel are served by StaticHandler (#4000)
- Various fixes for OAuth handling with pn.serve
(#4006)
- Fix bug in on_load
callback exception handling (#4007)
- Ensure periodic callbacks are only started on main thread (#4011)
- Ensure jupyter server extension handles explicit root_dir
(#4029)
- Ensure futures are correctly awaited when executed on thread (#4031)
#### Components
- Ensure Tabulator
handles filtering on edited values correctly if show_index=False
(#3988, #4016)
- Ensure Tabulator
declares numeric sorter for numeric dtypes (#3999)
- Fix regression initializing DiscreteSlider
with non-integer value (#4009)
- Ensure that template.config.raw_css is correctly applied (#4018)
- Fix handling MenuButton
clicks when split=True
(#4021)
- Ensure styling on Tabulator
with empty DataFrame does not error (#4028)
- Allow changing level
on Debugger
widget (#4057
Version 0.14.0
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
andDatetimeRangePicker
(#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
orloading
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 defaultparam.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)
Tabulator
- Do not re-render
Tabulator
oncss_classes
orbackground
change (#3598) - Ensure expand icon updates on
Tabulator.expanded
change (#3703) - Update
page
Parameter when pagination is 'local' (#3704) - Do not apply
sorters
onTabulator
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](https:...
Version 0.13.1
This release is primarily a bug fix release but also includes a number of enhancements. Many thanks to @hoxbro, @joelostblom, @raybellwaves, @pdrok, @tlvu, @govinda18, @MridulS and the core maintainers @MarcSkovMadsen, @maximlt and @philippjfr for contributing to this release.
Enhancements
- Add repr to cell and edit events (#3434)
- Improvements for pyodide handling (#3444, #3508, #3511)
- Add support for
Plotly
animation frames (#3449) - Implement single and multi-selection in Vega pane (#3470, #3499, #3505)
- Add typehints to help developers and users (#3476)
- Add
pn.state.execute
method to run callbacks in the right context (#3550) - Add support for asynchronous
on_edit
/on_click
Tabulator callbacks (#3550) - Add
DatetimeRangeSlider
widget (#3548)
Bug fixes
- Fix pyodide array buffer conversion (#3409)
- Allow
placeholder
to be updated onTextEditor
(#3427) - Fix issues editing data in sorted columns (#3431)
- Ensure bokeh correctly detects whether
HTML
/Markdown
contains latex (#3438) - Ensure notifications work on server created with
pn.serve
and.show
(#3445) - Replace slickgrid background image in custom
FastTemplate
CSS (#3461) - Ensure
param.Array
is synced correctly inReactiveHTML
(#3456) - Ensure selection on filtered
Tabulator
does not raise out-of-bounds error (#3462) - Ensure updating
Tabulator
does not reset scroll position (#3450) - Various fixes for
FastTemplate
CSS (#3464) - Ensure
Tabulator
on_click
andon_edit
events return correct row when paginated (#3410) - Fix broken JupyterLab preview (#3469)
- Skip
Tabulator
row selection when clicking on expand button (#3474) - Ensure overflow in
MaterialTemplate
is not clipped (#3492) - Allow providing
--index
for directory style apps (#3493) - Ensure Tabulator expanded rows are sized correctly after re-render (#3507)
- Make CodeHandler robust to document that has been destroyed (#3510)
- Do not sync
DataFrame
widgetsorters
parameter with bokeh model (#3527) - Ensure that HoloViews callback events are not auto-dispatched (#3528)
- Ensure non-updateable
Pane
can be updated insideTabs
(#3532) - Fix slowdown of JupyterLab on Windows (#3531)
- Fix issue with inverted data when editing a cell in a sorted Tabulator column (#3531)
- Ensure
Tabulator
has correct layout after re-render (#3536) - Do not log events generated by admin page on the admin page (#3539)
- Fix Tabulator events when the original column is not a string (#3541)