Releases: holoviz/panel
Version 1.4.0
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 forChatInterface
(#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 forChatFeed
(#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 toFlexBox
(#6354) - Set default
step
ofDatetimeRangeSlider
to 1 minute (#6373) - Add support for passing objects reference to
FlexBox
(#6387) - Allow editable sliders to be embedded (#6391)
- Add
message
intocss_classes
toChatMessage
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 forParamFunction
andParamMethod
(#6392) - Add ability to Skip
Param<Ref|Function|Method>
updates (#6396) - Add
Param<Ref|Method|Function>
andReactiveExpr
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 inFast
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 collapsedCard
(#6223) - Fix issues with
VTK
,VTKVolume
andVTKJS
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 respectDesign
(#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 ifstylesheets
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
onChatInterface
and mentionserialize
(#6452) - Ensure
Plotly
pane ren...
Version 1.3.8
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 resetsEvent
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
Version 1.3.7
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
toChatMessage.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
onChatFeed
(#6154) - Handle
Tabulator.title_formatter
if is typedict
(#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
- Upgrade Plotly.js to 2.25.3 to address CVE-2023-46308 (#6230)
Documentation
- Add
Design
andTheme
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
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 fromNone
to0
(#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
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
andGeoSeries
inDataFrame
pane (#6061) - Optimize rendering of
ChatMessage
(#6069) - Apply smaller optimizations for
Viewable
andChatMessage
(#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 onHoloViews
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
Version 1.3.4
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
andHTMLTemplateFormatter
onTabulator
(#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
Version 1.3.2
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 onChatMessage
andChatFeed
(#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 ifTabulator
is given Bokehformatter
(#5866) - Fix
FileDownload
embed=True
style forFast
design (#5875) - Enable
Tabulator
selection across pages withpagination="remote"
andselectable="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
andconfig
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
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 noid_token
is present in cookies (#5747) - Fix
Widget.from_param
type annotation (#5754) - Fix auto send for
ChatInterface
withTextAreaInput
(#5762) - Add support for iframe
srcdoc
onLocation
(#5774) - Ensure
Tabulator.style
applies correctly with changing data (#5757) - Ensure
panel convert
can correctly detecttransformers_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
Version 1.3.0
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
andChatInterface
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
onTextAreaInput
(#5592) - Add ability to redirect users from authorization callback (#5594)
- Add support for
Path
object inFileDownload
(#5607) - Add authorization_code and password based OAuth login handlers (#5547)
- Add format to
EditableFloatSlider
andEditableIntSlider
(#5631) - Add support for decorating async functions with
pn.io.cache
(#5649) - Map
param.Bytes
toFileInput
widget (#5665)
Bug fixes
- Fixes for
Column
invisiblescroll_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
andbrowser_info
are loaded whenHoloViews
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
Version 1.2.3
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)