github holoviz/panel v1.0.0
Version 1.0.0

latest releases: v1.5.4a1, v1.5.3, v1.5.3b1...
18 months ago

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:

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 and encoding 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.

Deprecations & API changes

Compatibility

Deprecations

  • Deprecate IDOM pane ([#4293](#4293), #4323)
  • Deprecate Viewable.app ([#4293](#4293))
  • Deprecate Viewable.pprint (#4347)
  • Deprecate and remove RGGPlot
  • Rename Ace to CodeEditor (#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 the frozen_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)
  • Add pn.state.served to simplify determining whether script is executed as an application or in an interactive session (#4252)
  • Add pn.config.loading_indicator to determine whether to show loading indicator by default (#4259)

Jupyter

  • Improve startup, error handling and shutdown of Jupyter kernels (#4364)
  • Log errors in JupyterLab preview to server logs (#4773)
  • Support binary JS -> Python communication in notebooks (#4635)
  • Modify sys.path when running inside Jupyter Kernel (#4489)

Pyodide

  • IPython display compatibility in pyodide builds (#4270)
  • Ensure panel convert respects pn.config (#4359)
  • Fix notification support in Pyodide (#4387)

Miscelleanous

  • Handle cancelling and empty value edit events on Tabulator (#4343)
  • Add favicon to base template (#4626)
  • Ensure CrossSelector filters apply on each keystroke (#4339)
  • Do not re-create Vega.selections object unless selections changed (#4497)
  • Standardize parameter mapping APIs (#4386)
  • Add Plotly.link_figure parameter (#4333)
  • Add support for .JPEG file extension in the JPG pane (#4532)
  • Make periodic callback counter a parameter (#4134)
  • Add Echarts events (#2174)
  • Additional cache support (#4663, #4667)

Bug fixes

  • Fix caching on undecorated Parameterized method (#4332)
  • Ensure that global notification object can be used inside notebook callbacks (#4331)
  • Ensure hash_funcs are applied recursively in cache (#4334)
  • Fix cache FIFO policy bug (#4789)
  • Fix specifying custom index with relative path (#4288)
  • Fix issue reusing FileDownload model (#4328)
  • Fix DeckGL tooltip handling (#4628)
  • Fix NumPy integer/floating checks on Perspective (#4366)
  • Ensure memray profiler temporary file is flushed (#4666)
  • Fix mimetype issue on windows (#4738)
  • Fix Plotly undefined value errors for eventdata (#4355)

Tabulator

  • Ensure updates to Tabulator formatter or editor updates model (#4296, #4781)
  • Ensure Tabulator internal _index_mapping is updated on stream (#4292)
  • Ensure Tabulator header filters aren't treated as regex (#4423)
  • Ensure Tabulator styles are re-applied when local pagination changes (#4795)

Jupyter

  • Ensure JupyterLab preview works on Windows (#4819)
  • Ensure notifications are enabled even if hv.extension has been loaded (#4330)

Don't miss a new panel release

NewReleases is sending notifications on new releases.