Releases: holoviz/panel
Version 1.7.5
This patch release brings a number of important bug fixes and refinements, including improved modal behavior, Param integration fixes for ESM, and security hardening of authentication templates. Thanks to @harmvanderheijden, @MarcSkovMadsen, @maximlt, and @philippjfr for their contributions.
Enhancements
- Improve
.from_param()
error messages (#8047) - Add
--reuse-sessions warm
option to preload and cache apps before first use (#8087)
Security
- Fix XSS vulnerabilities in login and OAuth error templates by escaping user-controlled input (#8049)
Bug Fixes
- Fix
value_throttled
handling in Param panes (#8057) - Prevent
AutocompleteInput
from resetting whenrestrict=False
(#8056) - Fix callback cleanup for
--reuse_sessions
mode (#8052) - Reset
param.Event
state on ESM components (#8054) - Allow
Player
components to start upon initialization (#8058) - Fix modal dialog stacking and focus behavior in VanillaTemplate (#8059, #8060)
- Avoid errors in
Tabulator
when editing DataFrames withpd.NA
values (#8068) - Add guard for undefined
url
inImportedStyleSheet
(#8071) - Ensure session token payload is correctly updated when reusing sessions (#8072)
- Ensure
--reuse-sessions
caches the--index
app correctly (#8073) - Add debounce logic to
ModelChanged
events in Pyodide to improve performance and prevent redundant updates (#8077) - Ensure
Layoutable
params propagate to HoloViews plots (#8078) - Fix regression in handling
param.Action
in.from_param()
utility (#8079) - Ensure
LoadingSpinner.visible
correctly hides the component (#8081) - Ensure
JSONEditor
triggers on re-ordering of nodes (#8086) - Fix
JSONEditor
menu option to improve usability (#8085)
Documentation
- Add websocket communication how-to guide to documentation (#7952)
- Add note about increasing proxy buffer size for OAuth behind reverse proxies (#8084)
Maintenance
- Fix gallery deployment automation (#8055)
Version 1.7.4
This patch release introduces small but impactful security, compatibility, and usability improvements. It enhances OAuth behavior, adds byte support for the PDF pane, and fixes several rendering and import issues across backends and components. Thanks to @ahuang11, @dalthviz, @MarcSkovMadsen, and @philippjfr for their contributions.
Enhancements
- Add support for
bytes
input to thePDF
pane (#8044) - Add
logout_url
for Auth0 to OAuth error page template (#8036)
Security
- Add authentication to files served from
--static-dirs
(#8042) - Escape error messages shown on the OAuth error page fixing XSS vulnerability (#8043)
Bug Fixes
Version 1.7.3
This patch release includes several critical stability improvements, JavaScript race condition fixes, and developer experience enhancements. It also introduces small but helpful UI features such as exception copying and better error feedback in CLI and ESM workflows. Many thanks to contributors @etihwo, @bsdz, @Coderambling, @hoxbro, @philippjfr, and @MarcSkovMadsen.
Enhancements
- Add “Copy to Clipboard” button for exceptions in the UI (#8034)
- Enable MathJax rendering if the extension is available (#8004)
- Allow setting a custom title for
Tabulator
multi-index columns (#8008) - Improve feedback in
panel compile
and reactive ESM workflows (#8012, #8010) - Ensure exceptions are printed to the command line in development mode (#8022)
Bug Fixes
- Guard against race conditions in
DeckGL
during resize (#8031) - Prevent errors when
client_comm
is undefined in some JS execution contexts (#8030, #8033) - Fix dark theme background issue in
MultiChoice
widget (#8014) - Avoid rendering Plotly components if container is not yet defined and prevent layout boomeranging (#8021)
- Ensure React
useState
callbacks are registered only once (#8023) - Support
Path
objects in stylesheet definition (#8026)
Version 1.7.2
This patch release includes a number of important bug fixes, optimizations, and compatibility updates, particularly for React and ESM-based components. It also includes enhancements to the Tabulator table and more robust support for Audio/Video panes. Many thanks to @etihwo for his continued contributions and the maintainer team @hoxbro and @philippjfr.
Enhancements
- Support for passing
bytes
andBytesIO
objects toAudio
andVideo
panes (#7963) - Add header tooltips to
Tabulator
(#7988) - Optimize layout calculations for ESM components (#7989)
- Allow nested
ReactComponent
s to bypass Shadow DOM (#7991) - Support
--ico-path
CLI option to support explicit .ico path specification (#7992) - Loosen parameter type for
ReactiveExpr.widget_layout
(#7964) - Automatically unblock Comm on WebSocket re-connect (#7986)
Bug Fixes
- Fix
Tabulator
fast design and fix styling issues (#7956) - Keep reference state consistent after Pyodide syncing (#7966)
- Ensure correct model is used when determining if a link is set up (#7968)
- Do not dispatch events on hold/unhold when the document is uninitialized (#7972)
- Ensure theming does not error on
PyComponent
(#7975) - Prevent stylesheet patch from dispatching during initial load (#7978)
- Fix caching issue for ESM render modules (#7990)
- Correct initialization behavior of
ReactComponent
(#7996) - Fix threading race condition when applying consecutive updates to
Param
widgets (#8003)
Version 1.7.1
This patch release adds a new option to disable FileDropper
previews and fixes a regression when updating Column
children in Bokeh<3.7. Additionally, it includes a number of documentation improvements.
Many thanks to our returning contributors @dalthviz, @emmanuel-ferdman, @MarcSkovMadsen, and @hoxbro
Enhancements
- Add option to disable FileDropper previews (#7944)
--index-titles
help string typo fix and don't calltitle
on user input (#7935)
Bug fixes
Documentation
- Fix image links in Azure documentation (#7938)
Version 1.7.0
This minor release is not as jam-packed as previous minor releases but adds a number of quality of life improvements, bug fixes and features along with version and compatibility updates for a number of JS dependencies. Many thanks to some of our more frequent contributors @dalthviz, @etihwo, our new contributor @emmanuel-ferdman and our maintainers @hoxbro, @MarcSkovMadsen and @philippjfr.
Features
- Add a secondary (right) sidebar to the
FastListTemplate
(#7774) - Add
Date(Time)Picker.allowInput
option (#7886) - Add
Markdown.disable_anchors
option (#7902) - Add
config.cache_path
variable to configure default location for diskcache (#7903) - Support custom cookie path (#7911)
- Allow customizing index page titles with
--index-titles
CLI option (#7916) - Add
Image.target
option to configure where to openlink_url
(#7924)
Enhancements
- Display parameter name in error messages (#7879)
- Improve Material design styling (#7891, #7917)
- Improve logic for computing Tabulator page size automatically (#7915)
Versions and Compatibility
- Bump Ace
CodeEditor
version 1.40.1 and add themes (#7874) - Bump pyodide version to 0.27.5 (#7905)
- Bump
ECharts
version to 5.6.0 (#7905) - Bump
JSONEditor
version to 10.2.0 (#7905) - Bump
Perspective
version to 3.6.1 (#7919)
Bug fixes
- Deduplicate components before compiling (#7887)
- Avoid boomeranging of events after
hold
is applied (#7892) - Handle .ico image base64 mime-type correctly (#7894)
- Ensure
FileDropper
height is not limited (#7898) - Ensure correct stylesheet cache is used by theme hooks when component is shared between sessions (#7896)
- Reset
BaseTemplate._documents
correctly on autoreload (#7897) - Ensure widget CSS is loaded correctly when server path is prefixed (#7900)
- Correct display
Tabulator
with multi index and multi index column (#7907) - Ensure stretch and scale sizing_mode does not cause overflow in container (#7928)
Documentation
Version 1.6.3
This release introduces a number of performance improvements related to rendering of children in layouts and ESM components, a number of bug fixes and a number of documentation improvements. We are pleased to welcome @malemburg as a new contributor and want to thank @s-alexey, @Coderambling, @etihwo and our core maintainer team including @hoxbro, @ahuang11, @MarcSkovMadsen and @philippjfr for their contributions to this release.
Enhancements
- Implement smarter
Column
child rendering #7846 - Optimize
ReactComponent
child renders #7828 - Add
indent
andsoft_tabs
options toCodeEditor
#7831 - Allow creating
Param.widget
without instantiating object, speeding upWidget.from_param
#7867
Bug fixes
- Fix handling of React based
AnyWidgetComponent
types #7820 - Cache ESM render modules #7827
- Check for
None
inselect
function forPyComponent
#7837 - Fix for
AttributeError
inauth.py:CodeChallenge
OAuth login #7844 - Fix error when
old_objects
is empty in_get_objects()
#7842 - Ensure
ReactiveESM
renders elements #7853 - Ensure ESM shared resources are watched properly #7856
- Fix Material design
Tabulator
header color #7855 - Ensure current view and selection lookups on
Tabulator
handleNone
case #7858 - Ensure
Modal
events are targeted to correct model #7860 - Ensure
ChatFeed
has inherent height #7861 - Ensure
Markdown
code blocks are always left aligned #7862 - Gracefully handle
ECharts
delayed rendering #7869
Documentation
Version 1.6.2
This release primarily introduces improvements for ESM and React components and refactoring to make it easy to subclass existing components. This is an effort to make it easier to provide alternative implementations for Panel components. Additionally this release includes compatibility for Bokeh 3.7, bug fixes for TextEditor
and a variety of other bug fixes. Many thanks to our new contributor @s-alexey, our returning contributors @Coderambling and the core maintainer team including @hoxbro, @ahuang11 and @philippjfr.
Enhancements
- Make it easier to subclass components (#7730, #7744, #7785)
- Allow
model.useState
inReactComponent
s to reference nested parameter values (#7743) - Allow providing shared ESM modules (#7757)
- Allow defining root node for
ReactComponent
(#7787) - Improve pretty printing in
HoloViews
pane (#7775) - Allow serializing joint dict/Parameterized types on
DataModel
(#7789) - Improve ListLike and NamedListLike to better match Python list behavior (#7794)
- Improve rendering of ReactComponent children (#7802)
- Allow overriding Param input widgets (#7813)
Performance
Bug fixes
- Correctly handle empty source files (#7732)
- Add extra guard around
get_ipython
check (#7734) - Ensure
ReactComponent
children are sized correctly (#7741) - Ensure
ChatStep
does not toggle from failed to success (#7742) - Ensure
Feed
and scrollable layout children heights are not fixed (#7747) - Declare more
Child
parameters on various components (#7749) - Do not sync parameters mapped to None on on ESM components (#7750, #7753)
- Always include esm.css for ESM components (#7752)
- Do not duplicate stylesheets (d133eb9)
- Ensure
ChatStep
text does not overflow container (#7770) - Refactor
ChatFeed
post hook ensuring it processes correct message (#7722) - Ensure hooks are applied to root components with
Fast
design (#7777) - Ensure resource mode is set in notebooks (#7776)
- Clear state cookie if OAuth access token expired and can't be refreshed (#7780)
- Fix formatting in
TextEditor
widget (#7739) - Use Ace version with no require.js dependency (#7781)
- Ensure multiple sequential notifications render (#7790)
- Style correct column when frozen
Tabulator
column is an index (#7792) - Ensure IconButton tooltip timer is cleared on multiple mouseenter events (#7798)
- Ensure pre-processors are applied to ESM children (#7799)
- Ensure outputs are laid out correctly after initial render of
EditableTemplate
(#7816) - Fix regressiong related to providing Path to ESM component stylesheets (#7809)
Compatibility
- Compatibility with Bokeh 3.7 (#7724, #7815)
- Update
TextEditor
widget to Quill.js 2.0.2 (#7739) - Update
Plotly
pane to Plotly.js 3.0.1 (#7731)
Documentation
Version 1.6.1
This patch release primarily addresses issues running Panel behind a reverse proxy, improves the developer experience of working with custom ESM bundles and adds compatibility for Plotly 6.0. Congratulations to @fabiovincenzi and @pankajp for their first contribution fixing inlining of stylesheets. Many thanks to to our returning contributors @ceball, @Azaya89 and @Coderambling as well as our core developer team including @ahuang11, @maximlt, @hoxbro and @philippjfr for contributing to this release.
Enhancements
- Add
ChatFeed.scroll_to
method (#7671) - Implement watch feature for
panel compile
command (#7683) - Allow ESM components to load CSS bundles (#7685, #7691)
- Generalize
ReactiveESM.select
so children are automatically detected (#7699)
Bug fixes
- Ensure errors in sync periodic callbacks are logged (#7665)
- Reset
visible_range
whenFeed.objects
are updated (#7673) - Ensure ESM bundles correctly resolve component implementations (#7684, #7698)
- Fix default avatar in send/stream (#7677)
- Ensure index redirects are relative to fix index page behind a reverse proxy (#7704)
- Ensure root_url is correctly determined during auth (#7680)
- Ensure the modal is on top in EditableTemplate (#7710)
- Ensure Tabulator selection is recalculated after filtering (#7712)
- Fix custom login endpoints (#7714)
- Ensure type checkers can correctly infer extension argument types (#7709)
- Ensure custom components and extensions respect resource mode in notebooks (#7701, #7716)
- Ensure in process events are cleaned up after they are applied (#7717)
Compatibility
- Compatibility with Plotly 6.0 (#7681, #7682)
- Bump pyodide version to 0.27.2 and PyScript version to 2025.2.1 (#7718)
Docs
Version 1.6.0
This release adds a number of features including a standalone Modal
component, the ability to infer widget parameters from values, and the ability to easily edit a ChatMessage
. Additionally it includes a number of enhancements for styling, particularly in dark themes, other enhancements for chat components and a large number of bug fixes. Many thanks for our returning contributor @kdheepak, our new contributors @pgierz, @jonatantreijs and @etihwo, and of course the whole maintainer team including @ahuang11, @MarcSkovMadsen @hoxbro, @maximlt and @philippjfr.
Features
- Add PAM authentication support (#6861)
- Add
Widget.from_values
method (#7033) - Add a standalone
Modal
layout (#7083) - Introduces
ChatMessage
andChatFeed
edit functionality (#7559)
Enhancements
- Allow
ChatFeed.callback_exception
to accept a callable and 'traceback' (alias for verbose) (#7558) - Fix Accordion active_header_background in dark theme (#7576)
- Increase default max character limit on
ChatAreaInput
(#7562) - Fix chat message alignment issues (#7563)
- Make
Markdown
pane line breaking behavior configurable (#7582) - Improve styling of chat components in dark theme (#7601, #7602)
- Automatically scroll when streaming to
ChatFeed
andChatStep
(#7608) - Add support for remote filesystems on
FileSelector
(#7618) - Add support for
FigureWidget
events onPlotly
pane (#7654, #7662)
Bug fixes
- Fix Azure Oauth issues (#7587)
- Correctly display file not found paths in
panel convert
(#7589) - Fix
Tabulator.patch
when table is filtered (#7621) - Ensure
esbuild
can be detected on windows duringpanel compile
(#7625) - Fix various issues styling
Tabulator
when it is wider than the viewport (#7626) - Fix resource loading when serving Panel app on nested FastAPI endpoint (#7627)
- Fix
panel oauth-secret
command (#7628) - Ensure fonts are applied to
NotificationArea
(#7633) - Handle session context where session is not defined (#7634)
- Ensure
CompositeWidget
can be populated in callback (#7636) - Correctly identify skimage and PIL packages when converting to pyodide (#7637)
- Ensure we use CDN resources in pyodide (#7638)
- Consistently apply sizing_mode to
FileSelector
components (#7640) - Ensure tasks are cancelled correctly (#7641)
- Ensure
NotificationArea
stylesheet loads in panel-preview (#7643) - Ensure
NestedSelect
updates whenoptions
are changed (#7649) - Ensure
ButtonIcon
displays an icon during click (#7650)
Compatibility and Updates
- Update
panel convert
to latest versions of pyodide and pyscript (#7584) - Bump plotly.js version to 2.35.3 (#7657)
- Bump tabulator.js version to 6.3.1 (#7656)