Skip to content

Releases: holoviz/panel

Version 1.4.0

27 Mar 15:58
Compare
Choose a tag to compare

This minor release packs a punch both in terms of features, the number of enhancements and bug fixes and perhaps most importantly the addition of a set of tutorials that aim to get novices up-to-speed. The main new feature is a so called EditableTemplate which allows arranging dashboards using a drag-and-drop interface and also has strong integration with JupyterLab previews to go from a notebook to a deployed app without having to worry about writing layout code. Next, this release includes a number of new widgets (NestedSelect, DateRangePicker, ButtonIcon), layouts (Feed) and panes (Textual, WebP), and overhauls the autoreload feature with faster and more robust support for reloading entire modules. Lastly this release, along with Param 2.1.0, continues to build on the new reactive expression API making it easy to write reactive expressions and pipelines including support for streaming data with generators. We really appreciate all the work that went into this release and especially want to call out @MarcSkovMadsen's effort in putting together the new tutorial materials. There's more work to do but it's a huge step forward and we're excited to hear your feedback. We want to extend a special thanks to our amazing new crop of new contributors including @atisor73, @OSuwaidi, @suryako, @Davide-sd, @doraaki, @mayonnaisecolouredbenz7, @CTPassion, @j01024, @l3ender and @Coderambling. Next we want to recognize our returning contributors @vaniisgh, @cdeil, @limx0m, and @TheoMaturin, and finally the dedicated crew of core contributors which include @maximlt, @hoxbro, @MarcSkovMadsen, @ahuang11, @mattpap and @philippjfr.

Features

  • Add EditableTemplate to support dashboard builder UI in Jupyter (#5802)
  • Add ChatAreaInput as default text input widget for ChatInterface (#6379)
  • Add NestedSelect widget (#5791, #6011)
  • Add Panel tutorials (#5525, #6208, #6212, #6388, #6425, #6466, #6491)
  • Add DateRangePicker widget (#6027)
  • Add Feed layout and use it as layout for ChatFeed (#6031, #6296)
  • Add WebP pane (#6035)
  • Add ButtonIcon (#6138)
  • Add Textual pane (#6181)

Enhancements

  • Improve --autoreload by using watchfiles and selectively reloading packages (#5894, #6459)
    Load loading indicator from file instead of inlining (#6112)
  • Allow providing additional stylesheets in card_params (#6242)
  • Add scroll options to permanently toggle on layouts (#6266)
  • Allow choosing position of frozen columns on Tabulator (#6309)
  • Add help message on ChatFeed (#6311)
  • Ensure CSS can be applied to every aspect of ChatMessage (#6346)
  • Add HoloViz logos as ChatMessage avatars (#6348)
  • Add gap parameter to FlexBox (#6354)
  • Set default step of DatetimeRangeSlider to 1 minute (#6373)
  • Add support for passing objects reference to FlexBox (#6387)
  • Allow editable sliders to be embedded (#6391)
  • Add message into css_classes to ChatMessage markup (#6407)
  • Allow appending objects to the ChatMessage header & footer (#6410)
  • Add ability to declare icon label (#6411)
  • Add title and settings and fix datetime to Perspective (#6482)
  • Warn user if loading extension in VSCode or Colab without jupyter_bokeh (#6485)
  • Throttle updates to Boolean indicators (#6481)
  • Add ParamRef baseclass for ParamFunction and ParamMethod (#6392)
  • Add ability to Skip Param<Ref|Function|Method> updates (#6396)
  • Add Param<Ref|Method|Function> and ReactiveExpr to panes module (#6432)
  • Set up param.rx display accessor on import (#6470)
  • Allow using Carto tiles in DeckGL (#6531)
  • Improve VTKJS binary serialization (#6559)
  • Ensure component CSS is pre-loaded if possible, avoiding flicker on load (#6563)

Styling

  • Ensure navbar toggle icon is correct color in BootstrapTemplate (#6111)
  • Change loading background filters to work better in dark themes (#6112)
  • Improve styling of FileInput widget (#6479)
  • Improve Jupyter Preview error handling and error template (#6496)
  • Add scale animation to icons on hover and click (#6376)
  • Redesign index pages (#6497)
  • Improve Tabulator editor text color in Fast design (#6512)
  • Ensure BootstrapTemplate hamburger icon is white (#6562)

Compatibility & Version Updates

  • Bump Perspective version to 2.9.0 (#5722)
  • Upgrade to Bokeh 3.4.x (#6072)
  • Upgrade Vizzu to 0.9.3 (#6476)
  • Bump JSONEditor version to 10.0.1 (#6477)
  • Upgrade to PyScript Next and Pyodide 0.25.0 in panel convert (#6490)
  • Bump vtk.js version to 30.1.0 (#6559)

Bug fixes

  • Add resize handler for FloatPanel (#6201)
  • Fix serving of global template in notebook (#6210)
  • Ensure Tabulator renders in collapsed Card (#6223)
  • Fix issues with VTK, VTKVolume and VTKJS due to webgpu renderer (#6244)
  • Ensure ChatInterface respect supplied default user (#6290)
  • Ensure HTML and other markup panes can be emptied (#6303)
  • Ensure ChatMessage internals correctly respect Design (#6304)
  • Ensure collapsed Card does not cause stretching (#6305)
  • Ensure notebook preview always uses server resources (#6317)
  • Remove animation from loading spinner without spin (#6324)
  • Ensure model is only added/removed from Document once (#6342)
  • Ensure loading_indicator resets when configured with context manager (#6343)
  • Fix modal overflow and resizing issues (#6355)
  • Ensure that ripple matches notification size (#6360)
  • Fully re-render CodeEditor on render calls ensuring it displays correctly (#6361)
  • Ensure FileDownload button has correct height (#6362)
  • Ensure HTML model is redrawn if stylesheets is emptied (#6365)
  • Allow providing custom template (#6383)
  • Ensure Debugger renders without error (#6423)
  • Ensure ChatMessage header updates dynamically (#6441)
  • Ensure pending writes are dispatched in order and only from correct thread (#6443)
  • Ensure layout reuses model if available (#6446)
  • Improved exception handler in unlocked message dispatch (#6447)
  • Fix display of interactive Matplotlib (#6450)
  • Ensure streaming ChatMessage on ChatInterface and mention serialize (#6452)
  • Ensure Plotly pane ren...
Read more

Version 1.3.8

24 Jan 17:32
Compare
Choose a tag to compare

This patch release fixes an important regression in the 1.3.6 release that resulted in global state to be incorrectly resolved in certain cases. Many thanks to our new contributor @fohrloop and our maintainers @ahuang11, @hoxbro and @philippjfr for contributing to this release.

Bug fixes

  • Ensure ReactiveHTML correctly resets Event parameters (#6247)
  • Fix ChatFeed / ChatInterface tests and async generator placeholders (#6245)
  • Fix logic when looking up pn.state.curdoc (#6254)
  • Handle margin=None in layout sizing mode computation (#6267)

Compatibility

  • Updates for compatibility with pandas 2.2 (#6259)

Documentation

  • Fix typos and add a cross-reference in docs (User Profiling) (#6263)
  • Improve documentation on TextAreaInput (#6264)

Version 1.3.7

19 Jan 16:58
Compare
Choose a tag to compare

This patch release focuses on a number of fixes and minor enhancements for the chat components and various other smaller improvements and fixes including docs improvements. In particular we want to highlight the new Ploomber deployment guide contributed by @neelash23. Next we want to welcome @jz314, @fayssalelmofatiche and @neelasha23 as new contributors and welcome back @SultanOrazbayev as a returning contributor. Lastly we want to thank the core contributor team, including @MarcSkovMadsen, @ahuang11, @maximlt, @hoxbro and @philippjfr for their continued efforts maintaining Panel.

Enhancements

  • Add filter_by to ChatMessage.serialize (#6090)
  • Support using an SVG for ToggleIcon (#6127)
  • Add resizable param to TextAreaInput (#6126)
  • Improve date and datetime picker functionality (#6152)
  • Add activity indicator to ChatMessage (#6153)
  • Lazily import bleach HTML sanitizer (#6179)

Bug fixes

  • Fix alignment issues in chat components (#6104, #6135)
  • Fix generator placeholder and optimize updates in Chat components (#6105)
  • Fix issue with callback future handling on Chat components (#6120)
  • Fix bug in Chat interfaces related to pn.state.browser_info (#6122)
  • Allow instantiating empty Matplotlib pane (#6128)
  • Ensure icon displays inline with text on FileDownload (#6133)
  • Fix styling of links in Tabulator fast theme (#6146)
  • Fix passing of card_params on ChatFeed (#6154)
  • Handle Tabulator.title_formatter if is type dict (#6166)
  • Fix per_session caching (#6169)
  • Correctly reshape nd-arrays in Plotly pane (#6174)
  • Handle NaT values on Perspective pane (#6176)
  • Do not rerender output if ReplacementPane object identity is unchanged (#6183)
  • Tabulator: fix valuesLookup set up for older list-like editors (#6192)
  • Fix pyodide loading message styling issues (#6194)
  • More complete patch for the TextEditor to support being rendered in the Shadow DOM (#6222)
  • Add guard to Tabulator ensuring that it does not error when it is not rendered (#6223)
  • Fix race conditions when instantiating Comm in Jupyter causing notifications to break (#6229, #6234)
  • Handle duplicate attempts at refreshing auth tokens (#6233)

Compatibility & Security

Documentation

  • Add Design and Theme explanation documentation (#4741)
  • Fix pyodide execution in documentation
  • Fix wrong and broken link (#5988, #6132)
  • Use GoatCounter for website analytics (#6117)
  • Add Dask How to guide (#4234)
  • Fix Material template notebook .show() call (#6137)
  • Add missing item in docstring (#6167)
  • Ploomber Cloud deployment documentation (#6182)
  • Correct duplicate wording (#6188)
  • Update JupyterLite Altair example to latest API (#6226)

Version 1.3.6

20 Dec 18:14
Compare
Choose a tag to compare

This patch release addresses a major regression in server performance introduced in 1.3.5 along with some additional minor fixes. We want to welcome @nenb as a new contributor and want to thank the maintainers @ahuang11, @maximlt and @philippjfr for their contributions to this release.

Enhancements

  • Add explicit size option to ToggleIcon (#6092)

Bug fixes

  • Fix execution of OAuth of callback to refresh access_token (#6084)
  • Fix ChatReactionIcons alignment and trigger reactions correctly (#6086)
  • Change Column scroll_position default value from None to 0 (#6082)
  • Fix issue with accumulating callbacks on server (#6091)
  • Ensure ReactiveExpr renders in pyodide (#6097)
  • Ensure TooltipIcon description can be updated (#6099)
  • Fix IPyWidgets rendering in BootstrapTemplate (#6100)
  • Fix padding and alignment of FileDownload (#6101)

Version 1.3.5

18 Dec 17:23
Compare
Choose a tag to compare

This micro-release fixes a large number of issues, applies some performance optimizations and resolves some regressions introduced in previous micro-releases. The main regressions that were addressed include rendering of ChatMessage reaction icons, the ability to obtain an OAuth access_token if it is not a valid JWT token, and issues with async callbacks. We are very pleased to welcome new contributors @mitulb, @fazledyn-or, @benbarn313 and @vaniisgh and want to thank them for their contributions. We also want to thank @cdeil for continuing to contribute and the maintainer team including @MarcSkovMadsen, @hoxbro, @maximlt, @ahuang11, @droumis and @philippjfr for their continued efforts.

Enhancements

  • Add support for timestamp timezones for ChatMessage (#5961)
  • Replace whitelist blacklist with allowlist denylist (#5975)
  • Allow stopping respond callbacks midway on ChatInterface (#5962)
  • Add support for Image.caption (#6003)
  • Improvements for Fast template styling (#6023)
  • Replace Player widget unicode icons with SVG for more consistency (#6030)
  • Elaborate on ChatInterface callback exception summary (#6046)
  • Add ToggleIcon widget (#6034)
  • Use minified Tabulator.js ([#6060]#6060))
  • Support rendering GeoDataFrame and GeoSeries in DataFrame pane (#6061)
  • Optimize rendering of ChatMessage (#6069)
  • Apply smaller optimizations for Viewable and ChatMessage (#6074)
  • Add bottom padding to MaterialTemplate (#6075)
  • Update mapbox-gl version for DeckGL pane (#6077)

Bug fixes

  • Remove duplicate property definition of VizzuChart.config (#5947)
  • Remove stray print in Tabulator styler handling (#5944)
  • Fix bug when clearing pn.cache before anything has been cached (#5981)
  • Fix obj.save() when threading is enabled (#5993)
  • Fix Matplotlib responsiveness and improve reference notebook (#5973)
  • Gracefully handle non-decodable access_token (#5994)
  • Ensure onload callbacks scheduled during or after load are still executed (#6005)
  • Don't attempt to set Tabulator text_align on Bokeh formatters that don't support it (#6010)
  • Correctly set error page to be rendered on auth failure (#6014)
  • Fix ChatInterface post callback for default (#5998)
  • Ensure matplotlib backend is set correctly in pyodide worker (#6029)
  • Synchronously create Document patch message to avoid race conditions (#6028)
  • Do not inline CSS if it can be loaded from CDN (#6039)
  • Fix ChatMessage reactions icon rendering (#6034)
  • Fix issues with ChatInterface stop ensuring send button is re-enabled and placeholder removed (#6033)
  • Ensure that Design does not override properties on HoloViews pane (#6051)
  • Ensure async callbacks correctly dispatch events when Websocket is locked (#6052)
  • Fix state.add_periodic_callback when callback is async (#6053)
  • Do no update objects inplace unless explicitly requested fixing issues with non-updating components (#6055)
  • Update sizing of Panel models dynamically (#6054)
  • Make panel.chat.langchain import lazy improving import time (#6056)
  • Change prominence of TooltipIcon (#6057)

Documentation

  • Improve reactive expression notebook (#5960)
  • Document requirement to install pyviz_comms in same env as Jupyter (#5980)
  • Update documentation's pyodide version to use version from panel.io.convert (#5996)

Version 1.3.4

29 Nov 18:24
Compare
Choose a tag to compare

This micro-release primarily addresses two important regressions related to the Tabulator text_align option and OAuth failing if the id_token does not contain the required user information. We are very excited to welcome @TBym to the growing list of contributors and thank the core maintainers @hoxbro, @ahuang11, @MarcSkovMadsen and @philippjfr for their contributions to this release.

Enhancements

  • Allow passing partial function to tabulator filter (#5912)
  • Allow defining custom callbacks for ChatInterface buttons (#5839)

Bug fixes

  • Fix regression when setting text_align and HTMLTemplateFormatter on Tabulator (#5922)
  • Ensure notifications are correctly destroyed (#5924)
  • Fix header overflow issues in FastGridTemplate (#5935)
  • Ensure Audio model respects sizing (#5936)
  • Persist Tabulator selection across pages when pagination='remote' for all selection modes (#5929)
  • Ensure Tabulator styler subset logic is not lost (#5938)
  • Fix regression in OAuth when id_token does not contain user key (#5939)
  • Ensure Vega/Altair plot with responsive width/height respects fixed width/height value when set (#5940)
  • Ensure BrowserInfo is imported by default (#5942)

Documentation

  • Restore plot styling guides in how-to guide (#5919)
  • Document support for emojis on Button labels (#5926)
  • Update and improve SVG pane reference docs (#5934)

Version 1.3.2

22 Nov 15:11
Compare
Choose a tag to compare

This micro-release focuses on a number of performance improvements, speeding up the initial rendering of simple apps by 2x in many cases. In addition it includes a number of smaller enhancements for various widgets, better support for async and threading and a number of bug fixes related to authentication, the Tabulator widget and a few other items. We are very pleased to welcome @isumitjha and @fohria as new contributors and want to thank our core team including @maximlt, @hoxbro, @MarcSkovMadsen, @ahuang11 and @philippjfr for their continuing contributions.

Performance

  • Speed up Pane.clone (#5848)
  • Speed up config attribute access (#5851)
  • Cache templates loaded from string (#5854)
  • Only load extension entrypoints once (#5855)
  • Do not freeze document models unless needed (#5864)

Enhancements

  • Use the compiled version of Pyodide by default (#5808)
  • Add support for AutocompleteInput.search_strategy parameter (#5832)
  • Use stdlib_module_names when determining pyodide dependencies (#5818)
  • Add Tabulator.sortable parameter (#5827)
  • Add delay for tooltip to show up for buttons (#5860)
  • Add serialize method on ChatMessage and ChatFeed (#5764)
  • Allow running onload and defer_load tasks on threads (#5865)
  • Allow Image panes for ChatMessage.avatar (#5870)
  • Allow async callbacks on FileDownload (#5878)
  • Allow running scheduled tasks on threads (#5879)

Bug fixes

  • Fix Google OAuth default scopes (#5823)
  • Fix logic for cleaning up OAuth user (#5824)
  • Set text_align correctly if Tabulator is given Bokeh formatter (#5866)
  • Fix FileDownload embed=True style for Fast design (#5875)
  • Enable Tabulator selection across pages with pagination="remote" and selectable="checkbox" (#5889)
  • Fix rendering of VTK colorbar (#5902)
  • Ensure HoloViews DynamicMap updates when widget dimension has unit (#5904)
  • Add space between MaterialTemplate app and site title separator (#5905)
  • Consistently handle errors during authentication (#5909)

Compatibility

  • Updates for Numpy 2.0 compatibility (#5817)
  • Improve notebook handling when loading bokeh dev versions (#5820)
  • Support for rendering into DOM from PyScript Next worker (#5820)

Documentation

  • Enhance extension and config docs (#5790)
  • Document setting a multiselect header filter on Tabulator (#5825)
  • Add missing GridSpec docs (#5840)
  • Fix for getting_started widgets example (#5859)
  • Add more references to Panel Chat Examples (#5881)
  • Document Tabulator fontawesome css (#5892)
  • Fix broken link to panel tagged items in holoviz blog (#5903)
  • MenuButton docs improvements (#5907)

Version 1.3.1

31 Oct 16:50
Compare
Choose a tag to compare

This micro-release primarily ships a variety of bug and regression fixes focusing on auth, the chat components, and WASM (i.e. PyScript and Pyodide) support. It also adds an enhancement to the auth components that now makes it possible to let users access applications as a guest. Many thanks to
our new contributors @art3xa, @polivbr and @tupui as well as our core development team including @MarcSkovMadsen, @maximlt, @ahuang11 and @philippjfr.

Enhancements

  • Add support for authenticating as guest using OAuth and basic auth components (#5743)

Bug fixes

  • Ensure ColorMap widget correctly handles shared layout and display parameters (#5732)
  • Fix accessing refreshed access_token (#5734)
  • Ensure Markdown code blocks always wrap (#5738)
  • Fix returning state.user_info if no id_token is present in cookies (#5747)
  • Fix Widget.from_param type annotation (#5754)
  • Fix auto send for ChatInterface with TextAreaInput (#5762)
  • Add support for iframe srcdoc on Location (#5774)
  • Ensure Tabulator.style applies correctly with changing data (#5757)
  • Ensure panel convert can correctly detect transformers_js import (#5772)
  • Adjust ReactiveHTML css resources for relative paths (#5779)
  • Ensure invalid query parameters warn instead of erroring (#5781)
  • Apply pyscript CSS by default without the splashscreen (#5784)
  • Ensure components which require DOM element to be attached can be rendered in Card (#5786)

Documentation

  • Fix typo in examples/reference/widgets/StaticText.ipynb (#5739)
  • Add ReactiveExpr reference docs and change default widget location (#5755, #5760)
  • Fix pyscript WASM example (#5771)
  • Improve documentation for deep linking docs (#5752)

Version 1.3.0

24 Oct 08:01
Compare
Choose a tag to compare

This minor release packs many exciting new features, specifically a new panel.chat subpackage containing components with powerful capabilities for interacting with LLM whether local or remote. Secondly this release adds compatibility with Param 2.0 bringing powerful new features including the ability to leverage reactive expressions using the rx wrapper and deeper support for reactively linking parameters, expressions and bound functions on Panel components. Lastly we overhauled the OAuth implementations adding support for code authorization and password based OAuth grant workflows and automatically refreshing the access_token when it expires. Beyond that this release includes many enhancements and numerous bug fixes. Special thanks to our first time contributors @aktech and @monodera and returning contributors @cdeil, @pierrotsmnrd and @theomartin. We also want to highlight the contribution of our new core contributor @ahuang11 for developing the chat components and recognize @MarcSkovMadsen and @philippjfr for their efforts on testing and improving these new components. Finally we thank the entire core team @hoxbro, @MarcSkovMadsen, @maximlt, @ahuang11 and @philippjfr for their continued efforts.

Feature

  • Integrate support for param reactive expressions and expose pn.rx (#5138, #5582)
  • Implement ChatMessage, ChatFeed and ChatInterface components (#5333)
  • Unify OAuth implementations and refresh access_token (#5627)
  • Add ColorMap widget (#5647)

Enhancement

  • Add unit to widget in HoloViews pane if provided (#5535)
  • Allow registering global on_session_destroyed callback (#5585)
  • Implement auto_grow on TextAreaInput (#5592)
  • Add ability to redirect users from authorization callback (#5594)
  • Add support for Path object in FileDownload (#5607)
  • Add authorization_code and password based OAuth login handlers (#5547)
  • Add format to EditableFloatSlider and EditableIntSlider (#5631)
  • Add support for decorating async functions with pn.io.cache (#5649)
  • Map param.Bytes to FileInput widget (#5665)

Bug fixes

  • Fixes for Column invisible scroll_button taking space (#5532)
  • Guard undefined values from being set on BrowserInfo (#5588)
  • Fix thumbnails and use Panel design on index page (#5595)
  • Fix regressions in TextEditor caused by migration to shadow DOM (#5609)
  • Sync location state from request (#5581)
  • Fix Select widget label offset in Material Design (#5639)
  • Override token contents when reusing sessions (#5640)
  • Fix patching a table with a DataFrame with a custom index (#5645)
  • Set FloatPanel status correctly on initialization (#5651)
  • Fix patching table with pd.Timestamp values (#5650)
  • Ensure notifications and browser_info are loaded when HoloViews is loaded (#5657)
  • Gracefully handle resolution of invalid paths in _stylesheets (#5666)
  • Handle patching tables with NaT values (#5675)

Compatibility

  • Add support for Python 3.12 and drop Python 3.8 support
  • Upgrade to Param 2.0 as minimum required version
  • Compatibility with Bokeh 3.3.0

Documentation

  • Improved docs on deploying with GCP (#5531)
  • Add Streamlit migration guide for chat components (#5670)

Version 1.2.3

18 Sep 09:39
Compare
Choose a tag to compare

This micro-release primarily fixes some critical regressions that were introduced in the 1.2.2 release, along with some other minor bug fixes. Many thanks for our users for reporting these issues so quickly and @monodera, @ndmlny-qs, @ahuang11, @mattpap, @hoxbro and @philippjfr for their contributions to the release.

Enhancements

  • Add ability to change admin page endpoint (#5447)
  • Authentication /logout endpoint now serves configurable template (#5514)
  • Add options to sanitize HTML panes (#5516)

Bug fixes

  • Fix regression introduced in 1.2.2 causing issues with periodic callbacks and --autoreload (#5490)
  • Fix regression introduced in 1.2.2 causing issues with authorization callbacks (#5504)
  • Fix regression introduced in 1.2.2 related to logout redirects (#5484)
  • Fix extracting panel convert requirements from requirements.txt (#5509)
  • Ensure visibility is applied correctly for all components when initialized as False (#5508)
  • Fix rendering of backticks in ReactiveHTML (#5512)
  • Ensure Quill TextEditor correctly detects selections and renders HTML (#5511)
  • Fix Markdown rendering with the MyST parser (#5497)
  • Fix OAuth login endpoint when --prefix is set (#5492)

Documentation

  • Update outdated DateRangeSlider.step documentation (#5510)