Releases: holoviz/panel
Version 1.5.3
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 whenmax_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
Version 1.5.2
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
Version 1.5.1
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
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 whenpagination='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
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
andReactComponent
(#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
andMarkdown
panes (#7125) - Show
Player
interval value on click (#7064) - Expose
Player
options to scale and hide buttons (#7065) - Add
on_keyup
andvalue_input
forCodeEditor
(#6919) - Detect WebGL support on
BrowserInfo
(#6931) - Tweak
ChatMessage
layout (#7209, #7266) - Add nested editor to
Tabulator
(#7251) - Support anchor links in
HTML
andMarkdown
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
Version 1.4.5
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 withsizing_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
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 usingembed_content
withrow_content
(#6881) - Ensure
ParamRef
,ParamFunction
andParamMethod
resolve synchronous generators asynchronously (#6885) - Ensure periodic callback cleanup does not error on session warmup (#6886)
Documentation
Version 1.4.3
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 utilizingpn.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
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
Version 1.4.1
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
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...