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 renders and hides correctly inCard
(#6468) - Fix issues rendering widget components with
Fast
design (#6474) - Fix binary serialization from JS -> Pyodide (#6490)
- Avoid overeager garbage collection (#6518)
- Fix floating point error in
IntRangeSlider
(#6516) - Load JS modules from relative path (#6526)
- Ensure no events are dispatched before the websocket is open (#6528)
- Ensure
Markdown
parsing does not choke on partial links (#6535) - Fixes to ensure larger
PDF
s can be rendered (#6538) - Ensure
IPywidget
comms are only opened once (#6542) - Fixes for message handling in Jupyter Preview context (#6547)
- Fix unnecessary loading of
ReactiveHTML
resources (#6552) - Ensure
Template.raw_css
has higher precedence than default template CSS (#6554) - Avoid asyncio event loop startup issues in some contexts (#6555)
- Ensure column subset is retained on
Tabulator.style
(#6560) - Ensure bokeh mathjax bundle when mathjax extension is loaded in notebook (#6564)
Chat Components
- Fix
ChatInterface
stop
button for synchronous functions (#6312) - Include
stylesheets
downstream, including layouts in ChatMessage (#6405) - Ensure ChatInterface supports chat input without
value_input
parameter (#6505) - Ensure word breaks to avoid overflow in
ChatMessage
(#6187, #6509) - Ensure nested disabled state stays disabled on
ChatFeed
(#6507) - Allow streaming
None
as the initialChatMessage
value (#6522)
Documentation
- Add Roadmap to documentation (#5443)
- Refactor
ReactiveHTML
docs (#5448, #6358) - Improve
HoloViews
reference guide (#6065) - Improve the user experience for resetting Jupyterlite (#6198)
- Add explanation docs about APIs (#6289, #6469)
- Add section headers to Chat reference documentation (#6370)
- Migrate gallery to new Anaconda DSP instance (#6413)
- Improve home page (#6422)
- Adding AWS deployment to documentation (#6434)
- Update Streamlit comparison (#6467)
- Add logging how-to guide (#6511)
- Document pygments dependency for code syntax highlighting (#6519)
- Add how-to guide on configuring PyCharm (#6525)
Deprecations & Removals
- Remove
Ace
alias forCodeEditor
- Remove
ChatBox
which has been replaced bypanel.chat
components - Remove
HTML.style
which is now replaced withHTML.styles
- Remove
Trend.title
which is now replaced byTrend.name
- Remove
Viewable.app
which is now replaced withpn.io.notebook.show_server
- Remove
Viewable.background
which is now replaced withViewable(styles={'background': ...})
- Remove
Viewable.pprint
which is now replaced withprint(Viewable(...))