Skip to content

Releases: holoviz/panel

Version 1.5.3

23 Oct 10:53
Compare
Choose a tag to compare

This release fixes a number of smaller regressions related to Tabulator row_content, ensures --dev/--autoreload picks up on external modules correctly and resolves OAuth guest endpoints correctly. Additionally it introduces some enhancements and bug fixes for custom components, such as adding support for loading custom components ESM Javascript bundles from the inbuilt endpoint ensuring that the bundle can be cached by the browser. Many thanks and welcome to our new contributors @chryshumble and @haojungc, our returning contributors @TheoMathurin, @aktech and @Coderambling and the core maintainer team @hoxbro, @ahuang11, @MarcSkovMadsen and @philippjfr for their contributions to this release.

Enhancements

  • Sync dark mode on browser_info object (#7382)
  • Allow loading custom component ESM bundles from URL (#7410, #7412)

Bug fixes

  • Address issues with Tabulator embed_content and optimize row expansion (#7364)
  • Prevent pipeline network plot from linking with other plots (#7372)
  • Various fixes for custom component compilation (#7381)
  • Fix OAuth guest endpoint (#7385)
  • Fix ReactiveESM._importmap typing (#7392)
  • Ensure that autoreload records modules to watch before startup (#7399)
  • Prevent Tabulator from overlapping when max_height is set (#7403)
  • Do not mutate layout Children inplace (#7417)
  • Set Tabulator null formatter to empty string (#7421)
  • Ensure Tabulator table content does not overflow (#7425)

Compatibility

  • Upgraded Tabulator version to 6.3 (#7419)

Documentation

  • Update components_overview.md with text fixes (#7335)
  • Corrected styles in doc (#7371)
  • Fix typo in panel.io.server docstring (#7405)

Version 1.5.2

03 Oct 21:43
Compare
Choose a tag to compare

This release is a small patch release primarily addressing a regression handling selections on multi-indexed data on the Tabulator widget along with a number of documentation improvements. Many thanks to @jrycw along with @MarcSkovMadsen, @hoxbro and @philippjfr for their contributions to this release.

Bug fixes

  • Fix regression handling selection on multi-indexed Tabulator data (#7336)
  • Fix Fast template theme toggle color (#7341)

Documentation

  • Fix typo for FastListTemplate reference example (#7339)
  • Fix custom component docstrings (#7342)
  • Improve plotly style guide (#7346)
  • Ensure sidebar toggle patch is loaded correctly (#7349)
  • Fix and update WebLLM example (#7351)
  • Correctly document step unit on DateSlider (#7353)

Version 1.5.1

30 Sep 10:39
Compare
Choose a tag to compare

This release primarily focuses on a number of tweaks and enhancements for the documentation and also resolves a number of bugs related to Tabulator rendering and the new FastAPI integration. As always, many thanks to our contributors including our new contributors @dennisjlee and @alexcjohnson, our returning contributors @thuydotm and @jbednar and the core maintainer team @hoxbro, @maximlt, @ahuang11, @MarcSkovMadsen and @philippjfr.

Enhancements

  • Add mapboxgl CSS to Plotly (#7320)
  • Tweak margins of icons in ChatMessage (#7310)

Bug fixes

  • Fix langchain import in panel.chat.langchain (#7297)
  • Ensure Tabulator is consistently redrawn after render and resize (#7305)
  • Filter out empty plotly_selected events (#7312)
  • Improve parameter validation on Timepicker (#7308)
  • Ensure Tabulator.selection consistency when pagination='local' (#7304)
  • Correctly handle ipv6 localhost URI in Location (#7316)
  • Ensure resource URLs are handled correctly in all server implementations (#7318)
  • Ensure Plotly datetime are correctly converted from timestamp to date string (#7319)

Regressions

  • Only postpone --setup script until after server startup if --num-procs is greater than 1 (#7289)

Compatibility

  • Support for Bokeh 3.6.x releases (#7322)

Documentation

  • Fix and improve JupyterLite pyodide distribution (#7286)
  • Document how to apply gradient styling o Tabulator cells (#7291)
  • Clarified wording in best practices docs (#7290)
  • Minor tweaks for the FileDropper (#7307)
  • Ensure docs consistently recommend --dev over --autoreload (#7285)
  • Tweaks for Tabulator docs (#7315)
  • Improve fastapi docs (#7317)
  • Add note about Tabulator font-size (#7321)
  • Tweak best practices (#7301)
  • Fix typo in JPG component docs (#7323)

Version 1.5.0

16 Sep 13:17
Compare
Choose a tag to compare

This release, while technically a minor release hugely expands the scope of what is possible in Panel. In particular the introduction of the new panel.custom module makes it trivially easy to create new JS and React based components using modern tooling, a first-class developer experience and support for compilation and bundling. We are incredibly excited to see which new components you build using this approach. This release also includes native integration with FastAPI, such that you can now run Panel apps natively on an existing FastAPI server. We also introduce a number of new components, improved the developer experience, and squashed a huge number of bugs, particularly for the Tabulator component.

We really appreciate all the work that went into this release from 21 separate contributors. In particular we would like to welcome our new contributors @twobitunicorn, @justinwiley, @dwr-psandhu, @jordansamuels, @gandhis1, @jeffrey-hicks, @kdheepak, @sjdemartini, @alfredocarella and @pmeier. Next we want to recognize our returning contributors @cdeil, @Coderambling, @jrycw and @TBym, and finally the dedicated crew of core contributors which includes @hoxbro, @MarcSkovMadsen, @ahuang11, @maximlt, @mattpap, @jbednar and @philippjfr.

Features

  • Allow building custom ESM based JSComponent and ReactComponent (#5593)
  • Add Placeholder pane (#6790)
  • Add FileDropper widget (#6826)
  • Add ChatStep component to show/hide intermediate steps (#6617)
  • Add TimePicker widget (#7013)
  • Add PyComponent baseclass (#7051)
  • Add native support for running Panel on FastAPI server (#7205)

Enhancements

  • Allow callbacks after append and stream (#6805)
  • Enable directory uploads with FileInput (#6808)
  • Make autoreload robust to syntax errors and empty apps (#7028)
  • Add support for automatically determining optimal Tabulator.page_size (#6978)
  • Various typing improvements (#7081, #7092, #7094, #7132)
  • Display value for player (#7060)
  • Optimize rendering and scrolling behavior of Feed (#7101)
  • Implement support for multi-index columns in Tabulator (#7108)
  • Add placeholder while loading to ChatFeed (#7042)
  • Allow streaming chunks to HTML and Markdown panes (#7125)
  • Show Player interval value on click (#7064)
  • Expose Player options to scale and hide buttons (#7065)
  • Add on_keyup and value_input for CodeEditor (#6919)
  • Detect WebGL support on BrowserInfo (#6931)
  • Tweak ChatMessage layout (#7209, #7266)
  • Add nested editor to Tabulator (#7251)
  • Support anchor links in HTML and Markdown panes (#7258, #7263)

Bug fixes

  • Ensure Gauge is responsively sized (#7034)
  • Ensure Tabulator sorters are correctly synced (#7036)
  • Ensure Tabulator selection is consistent across paginated, sorted and filtered states (#7058)
  • Do not propagate clicks on input elements in Card header (#7057)
  • Ensure Tabulator range selection applies to current view (#7063)
  • Ensure Tabulator.selection is updated when indexes change (#7066)
  • Ensure Tabulator can be updated with None value (#7067)
  • Fix issues with PYTHONPATH in Jupyter Preview (#7059)
  • Ensure Tabulator styling is correctly applied on multi-index (#7075)
  • Fix various scrolling related Tabulator issues (#7076)
  • Ensure Tabulator data is updated after filters are changed (#7074)
  • Allow controlling DataFrame pane header and cell alignment (#7082)
  • Highlight active page in Tabulator using Fast Design (#7085)
  • Ensure follow behavior works when streaming to paginated Tabulator (#7084)
  • Avoid events boomeranging from frontend (#7093)
  • Correctly map Tabulator expanded indexes when paginated, filtered and sorted (#7103)
  • Ensure custom HoloViews backends do not error out (#7114)
  • Ensure events are always dispatched sequentially (#7128)
  • Ensure 'multiselect' Tabulator.header_filter uses 'in' filter function (#7111)
  • Ensure no content warning is not displayed when template is added (#7164)
  • Make it easy to prompt user for input in ChatFeed (#7148)
  • Fix LaTeX pane MathJax rendering (#7188)
  • Ensure OAuth expiry is numeric and can be compared (#7191)
  • Correctly detect max depth of NestedSelect if level is empty (#7194)
  • Make --setup/--autoreload/--warm work with --num-procs (#6913)
  • Ensure error rendering application does not crash server (#7223)
  • Refactor state.notifications to fix pyodide (#7235)
  • Handle setting None value on DateRangePicker (#7240)
  • Add header_tooltips parameter to Tabulator (#7241)
  • Fix issue using Tabulator.header_filter with recent Pandas versions (#7242)
  • Fix setting of Dial background (#7261)
  • Fix issues when loading multiple times in a Jupyter(Lab) session (#7269)

Compatibility and Updates

  • Update to Bokeh 3.5.x
  • Update Tabulator to 6.2.1 (#6840)
  • Update to latest Pyscript (2024.08.01) and Pyodide (0.26.2) (#7016)
  • Add compatibility for latest Textual (#7130)

Documentation

  • Update Tabulator.ipynb to show correct version number of Tabulator (#7053)
  • Update jupyterlite version (#7129)
  • Describe usage of pyscript editor (#7017)
  • Add pycafe deployment guide (#7183)
  • Add WebLLM example to gallery (#7265)

Deprecation and API Warnings

  • PasswordInput and TextAreaInput no longer inherit directly from TextInput (#6593)
  • Remove deprecated panel.depends.param_value_if_widget function (#7202)

Version 1.4.5

02 Aug 09:03
Compare
Choose a tag to compare

This release addresses includes a wide range of bug fixes and some minor enhancements primarily aimed at performance. Many thanks to @Coderambling as a returning contributor, and the core developer team including @hoxbro, @MarcSkovMadsen, @maximlt and @philippjfr for contributing to this release.

Enhancements

  • Ensure Design is applied globally when using global templates (#6992)
  • Do not re-render all children when expanding Tabulator row (#7008)
  • Allow providing DataFrame as part of vega(-lite) spec (#6979, #7024)
  • Make autoreload robust to syntax errors and empty apps (#7028)

Bug fixes

  • Clear selection if value change from pagination=remote (#6008, #6968)
  • Ensure user cookie can be unencoded (#6937)
  • Do not trigger ScrollButton event unless clicked (#6938)
  • Do not error on autoreload shutdown (#6940)
  • Ensure hooks such as plot linking are applied across roots in a template (#6975)
  • Ensure Feed maintains scroll position (#6984)
  • Ensure correct Document is set after liveness session cleanup (#6988)
  • Fix issue detecting PyScript worker (#6998)
  • Fix FileDownload icon alignment (#6981)
  • Ensure redraw does not error out if Tabulator is undefined (#6930)
  • Guard auth against user being removed (#6908)
  • Fix empty Vega pane with sizing_mode exception (#7020)
  • Ensure Gauge is responsively sized (#7034)
  • Ensure Tabulator sorters are correctly synced (#7036)
  • Improve font-size and alignment in Bootstrap Card header (#7037)
  • Do not sync StaticText.value with the frontend (#7038)

Documentation

  • Add crossfiltering dashboard tutorial (#6630)
  • Add server video stream tutorial (#6727)
  • Improve Param pane docstring (#6989)
  • Fix streamz reference notebook (#6980)
  • Document that Image pane is a wrapper around PNG, JPEG, PDF etc. panes (#7004)
  • Fix missing scrollbar in Fast template docs (#7026
  • Improve server video tutorial (#7027)

Version 1.4.4

31 May 17:32
Compare
Choose a tag to compare

This release primarily addresses a critical regression in notebook comm channel handling introduced in 1.4.3 and includes a few minor fixes for Tabulator and documentation related issues. Many thanks to @justinwiley for his first contribution to Panel, @twobitunicorn as a returning contributor and the core contributors @maximlt and @philippjfr for their continued work.

Bug fixes

  • Fix notebook CommManager extraction of buffers (#6880)
  • Fix issue when editing timezone-aware datetime column Tabulator (#6879)
  • Ensure Tabulator does not rebuild children when using embed_content with row_content (#6881)
  • Ensure ParamRef, ParamFunction and ParamMethod resolve synchronous generators asynchronously (#6885)
  • Ensure periodic callback cleanup does not error on session warmup (#6886)

Documentation

  • Update OAuth documentation to correctly reference auth_code provider (#6875)
  • Fix CheckBoxGroup value type annotation in reference docs (#6877)

Version 1.4.3

23 May 12:06
Compare
Choose a tag to compare

This patch release is likely the last in the 1.4.x series. The most important fixes in this release are fixes to ensure keyboard shortcuts do not get triggered inside Panel components for for recent versions of JupyterLab, fixes for OAuth token refreshes, and various documentation fixes. The release also includes a small number of enhancements, including improved UX for the FileSelector. Many thanks to the many contributors to this release including @jrycw, @Coderambling, @cdeil, @twobitunicorn, and the maintainers @hoxbro, @MarcSkovMadsen, @ahuang11, @maximlt and @philippjfr.

Enhancements

  • Add CSS on mouse interaction with Card (#6636)
  • Make ChatMessage.reaction_icons reactive (#6807)
  • Allow external library to define additional socket handler (#6820)
  • Allow navigating FileSelector with double click (#6843)

Bug fixes

  • Ensure reference is resolved when passing options to from_param (#6762)
  • Ensure token refresh is always scheduled (#6802)
  • Fix small memory leak when caching Design modifiers (#4978)
  • Ensure refreshed tokens can be accessed across processes (#6817)
  • Ensure binary buffers are correctly extracted in notebook CommManager (#6818)
  • Make Tabulator resize handling more robust (#6821)
  • Fix links in panel convert index (#6828)
  • Suppress keyboard shortcuts in notebook output (#6825)
  • Ensure we don't error out when FastDesignProvider is undefined (#6832)
  • Ensure model changes are applied while session is starting (#6835)

Documentation

  • Refactor the hvplot.interactive tutorial utilizing pn.rx (#6700)
  • Update styling after upgrade to latest pydata-sphinx-theme (#6823)
  • Fix bug in Reset Jupyterlite script (#6834)
  • Fix gallery deployment URL (#6831)
  • Add redirects for old documentation pages (#6833)
  • Remove Google Analytics (#6836)
  • Various documentation fixes (#6829)
  • Fix link in gallery index (#6858)

Version 1.4.2

23 Apr 09:10
Compare
Choose a tag to compare

This micro-release fixes a number of smaller regressions and bugs including parsing of notebooks. Many thanks to our new contributor @bkreider, our returning contributors, @jrycw and @ea42gh, and our dedicated team of maintainers including @ahuang11, @MarcSkovMadsen and @philippjfr.

Enhancements

  • Allow toggling CTRL+Enter vs Enter to send ChatAreaInput (#6592)
  • Allow adding JS callbacks in ChatInterface.button_properties (#6706)

Bug fixes

  • Fix regression in parsing notebooks served as apps (#6736)
  • Do not include placeholder in ChatInterface.serialize and properly replace placeholder for streams (#6734)
  • Remove Perspective.toggle_config which was erroneously reintroduced in 1.4.1 (#6721)
  • Fix dynamically setting ChatMessage footer_objects/header_objects (#6705)
  • Allow Location.sync of DataFrame parameters (#6745)
  • Fix and improve Plotly event handling (#6753)
  • Fix issue when converting templated apps to Pyodide/PyScript (#6756)
  • Fix styling of loading indicator in Fast design (#6761)
  • Ensure VTK nan, above and below colors are serialized (#6763)
  • Fix issues with Perspective theme and persist config when switching plugins (#6764)
  • Do not restore unmodified parameters in config.set triggering undesirable side-effects (#6772)
  • Make autoreload module cleanup more robust (#6771)
  • Ensure that cache .clear() clears the correct function (#6781)

Documentation

  • Various fixes and cleanup of documentation (#6704, #6707, #6710, #6755,)
  • Document how display full html document in iframe (#6740)
  • Improve Plotly reference documentation (#6751, #6760)

Version 1.4.1

09 Apr 10:46
Compare
Choose a tag to compare

This micro-release fixes a number of regressions and other bugs introduced in recent releases and further improves the dashboard builder UI. Additionally it includes some tweaks and polish for the new tutorial material. Many thanks to our new contributor @jrycw, our returning contributors @cdeil and @TheoMathurin and our maintainers @ahuang11, @MarcSkovMadsen, @hoxbro and @philippjfr for their contributions to this release.

Enhancements

  • Allow rendering raw IPython.display output in dashboard builder (#6657)
  • Improve snapping behavior and add undo functionality in dashboard builder UI (#6687))

Bug Fixes

  • Fix layout persistence issues in dashboard builder (#6602)
  • Ensure Perspective loads in notebooks and docs (#6626)
  • Allow full reset of dashboard builder layout (#6625)
  • Fix issues with VTK colormap serialization (#6651)
  • Allow Tabulator HTMLTemplateFormatter to reference multiple columns (#6663)
  • Fix loading spinner in converted app without template (#6665)
  • Avoid unnecessary rescroll on Column (#6666)
  • Fix dynamically updating description tooltips (#6676)
  • Ensure Perspective is fully loaded before attempting render (#6689)
  • Ensure busy indicators are always reset (#6698)

Styling

  • Only apply styling to Bootstrap buttons (#6610)
  • Change into a slicker Card button icon (#6638)
  • Fix card header margins (#6639)
  • Ensure Perspective renders correctly in all browsers (#6664)

Documentation

  • Improve layout builder docs (#6601)
  • Various Tutorial fixes (#6614, #6669, #6670, #6679)
  • Ensure all docs pages are indexed (#6615)
  • Document Flexbox.gap parameter (#6616)
  • Improve custom template documentation (#6618)
  • Improve Layout Builder Docs (#6619)
  • Improve PyCharm and Colab notebook documentation (#6599)
  • Update gallery endpoint in docs (#6645)
  • Various smaller documentation fixes and improvements (#6682, #6690)

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