Releases: holoviz/panel
Version 1.8.3
This patch release brings targeted UI fixes, improves Python and Django compatibility, and enhances the developer and contributor experience. It also includes fixes for Tabulator, Pyodide, templates, and app interactivity, along with several documentation and robustness improvements. Many thanks to @ahuang11, @hoxbro, @maximlt, @MarcSkovMadsen, @Coderambling and @philippjfr for their contributions to this release.
✨ Enhancements
- Align CSS variables between default and dark themes (#8248)
- Ensure behavior of dynamically served apps is aligned with file based apps (#8249)
- Add
export()method toVegapane (#8266) - Add official support for Python 3.14 (#8241)
- Add
render_policy="manual"option forJSComponent(#8285) - Disable text selection when editing in
EditableTemplate(#8286) - Prevent full text selection when replacing input values on
CodeEditor(#8262)
🐛 Bug Fixes
- Fix FastAPI bug where
pn.state.locationwasn’t retained (#8283) - Fix Tabulator popup container rendering issues (#8247)
- Resolve issues with pipeline
next/previousbuttons (#8273) - Ensure ESM compilation uses
_esmpath (#8245) - Fix CORS issue with
turbinedata URL in Pyodide (#8272) - Ensure
ParamRef,ParamFunction, andParamMethoddo not override styling (#8264) - Fix toggle behavior in
BootstrapTemplatesidebar (#8268) - Minor robustness improvements for Bokeh model interop (#8270)
📚 Documentation
- Minor enhancements to the Panel Gallery deployment (#8240)
- Update Django integration docs (#8252)
- Clarify setup instructions (#8255)
- Fix typo and layout issue in
README.md(#8287) - Fix unclosed code block in
convert.md(#8280)
🧪 Infrastructure & Developer Experience
Version 1.8.2
This patch release focuses on polishing the user experience, fixing regressions, and improving documentation, particularly around app deployment and Tabulator interactivity. It includes several frontend and CSS tweaks, pyodide compatibility fixes, and two new deployment guides for Anaconda Notebooks and PythonAnywhere. Thanks to @philippjfr, @maximlt, @etihwo, @MarcSkovMadsen, and @Coderambling for their contributions to this release.
✨ Enhancements
- Allow custom control over Tabulator editable rows using
JSCode(#8204) - Improve UI discoverability on
EditableTemplate(#8206) - Set pointer cursor on "Connection Lost" toast notification (#8209)
- Serve
index.htmlautomatically when serving a static directory (#8222)
🐛 Bug Fixes
- Ensure Tabulator does not break if other components don't correctly initialize (#8212)
- Fix Pyodide
jsnullvalue conversion in Bokeh JSON patches (#8217) - Fix regression causing column headers not to stretch properly across layout (#8219)
- Ensure
config.npm_cdnis respected (#8233) - Ensure bundled pyodide resources use correct path separator (#8230)
- Ensure pyodide resource bundle is only generated if necessary (#8234)
- Ensure pyodide session is registered as loaded (#8235)
📚 Documentation
- Add how-to guide on deploying Panel apps on Anaconda Notebooks (#8207)
- Add how-to guide on deploying Panel apps on PythonAnywhere (#8216)
- Update
Plotly.ipynbto reflect current Plotly version and correct doc URLs (#8214, #8203) - Add missing Anaconda logo to documentation (#8208)
- Add how-to guide on using
uvto distribute Panel apps and dependencies (#8205)
Version 1.8.1
Many thanks to @ATL2001 (first contribution), @Coderambling, @philippjfr, and @hoxbro for their contributions.
Enhancements
- Add configuration to disable container popup (#8200)
Bug Fixes
- Ensure Tabulator empty column has no width (#8193)
- Add UTC timezone to default time for croniter (#8199)
Documentation
- Update indicators_performance.md to fix typo (#8192)
Version 1.8.0
This release brings a wide range of new features, enhancements, and compatibility improvements. Highlights include support for JSCode in ECharts and Tabulator, reworked WebSocket reconnection, and the ability to bundle resources into WASM apps, and numerous bug fixes to improve stability across components and templates. It also includes compatibility updates for Bokeh 3.8 and several improvements for use in Pyodide, JupyterLite, and authentication-based deployments. Many thanks to our returning contributors @dalthviz and @etihwo, a very warm welcome to our new contributors @c-meier and @flxmr and as usual many thanks to our core team including @maximlt, @hoxbro, @ahuang11, @MarcSkovMadsen and @philippjfr.
🚀 Features
- Support for inline JavaScript functions in
EChartsandTabulatorviaJSCodewrapper (#8162) - Add support for reconnecting to a session after network disruption (#8120)
- Add support for
AVIFimages (#8164) - Add support for bundling local resources into WASM apps (#8181)
✨ Enhancements
- Improve
.from_param()behavior and error messages (#8047, #8079) - Add
--reuse-sessions warmoption to reduce session cold starts (#8087) - Enable event dispatch immediately after WebSocket connect (#8101)
- Improve error message display in
LiteralInput(#8102) - Allow
holdusage from a thread (#8113) - Improve uniformity and consistency in
Tabulatorcolumn configuration (#8127) - Trigger
param.Eventcorrectly on value change (#8148) - Allow registering external
extension_cdnfor JS resources (#8175) - Allow overriding the
default_widgetsonHoloViewspane (#8186)
🐛 Bug Fixes
- Ensure
Terminalresizes correctly (#8109) - Bundle correct
AceEditorversion (#8111) - Remove
bokeh-sampledatadependency from Pyodide builds (#8138) - Correct resource handling when resources are symlinked (#8143)
- Correct behavior when
FileDownloadresets cursor before reading (#8154) - Fix handling of
NaTvalues (#8156) - Apply template design after rendering template (#8155)
- Prevent
select-allcheckbox from being hidden in Material theme (#8147) - Fix handling of exclusive bounds in
Paramwidgets (#8165) - Fix layout of
Cardheaders withrowflex mode (#8166) - Uncap height of children in scrollable
Columnlayouts (#8167) - Fix errors in
EChartswhen chart has already been destroyed (#8168) - Fix
Tabulatorfilter behavior with list-based filters (#8169) - Allow
Cardto overflow container (#8170) - Fix
pyodidemodel syncing (#8174)
⚠️ Deprecations
- Removed
panel.io.model.hold(was moved topanel.io.document.holdin 1.6.0) (#8188) - Deprecated
panel.chat.langchain.PanelCallbackHandler(to be removed in 1.9.0) (#8188)
📦 Compatibility & Infrastructure
- Update component versions (#7447)
DeckGLversion from 9.0.20 to 9.1.14EChartsversion from 5.6.0 to 6.0.0KaTeXversion from 0.6.0 to 0.16.22Perspectiveversion from 3.6.1 to 3.8.0Plotlyversion from 3.0.1 to 3.1.0Vegaversion from 5 to 6.1.2 and vega-lite dependency from 5 to 6.3.0Vizzuversion from 0.15 to 0.17.1
- Drop support for Bokeh 3.5 and 3.6 (#8116)
- Full compatibility with Bokeh 3.8 (#8160)
📚 Documentation
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 warmoption 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_throttledhandling in Param panes (#8057) - Prevent
AutocompleteInputfrom resetting whenrestrict=False(#8056) - Fix callback cleanup for
--reuse_sessionsmode (#8052) - Reset
param.Eventstate on ESM components (#8054) - Allow
Playercomponents to start upon initialization (#8058) - Fix modal dialog stacking and focus behavior in VanillaTemplate (#8059, #8060)
- Avoid errors in
Tabulatorwhen editing DataFrames withpd.NAvalues (#8068) - Add guard for undefined
urlinImportedStyleSheet(#8071) - Ensure session token payload is correctly updated when reusing sessions (#8072)
- Ensure
--reuse-sessionscaches the--indexapp correctly (#8073) - Add debounce logic to
ModelChangedevents in Pyodide to improve performance and prevent redundant updates (#8077) - Ensure
Layoutableparams propagate to HoloViews plots (#8078) - Fix regression in handling
param.Actionin.from_param()utility (#8079) - Ensure
LoadingSpinner.visiblecorrectly hides the component (#8081) - Ensure
JSONEditortriggers on re-ordering of nodes (#8086) - Fix
JSONEditormenu 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
bytesinput to thePDFpane (#8044) - Add
logout_urlfor 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
Tabulatormulti-index columns (#8008) - Improve feedback in
panel compileand reactive ESM workflows (#8012, #8010) - Ensure exceptions are printed to the command line in development mode (#8022)
Bug Fixes
- Guard against race conditions in
DeckGLduring resize (#8031) - Prevent errors when
client_commis undefined in some JS execution contexts (#8030, #8033) - Fix dark theme background issue in
MultiChoicewidget (#8014) - Avoid rendering Plotly components if container is not yet defined and prevent layout boomeranging (#8021)
- Ensure React
useStatecallbacks are registered only once (#8023) - Support
Pathobjects 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
bytesandBytesIOobjects toAudioandVideopanes (#7963) - Add header tooltips to
Tabulator(#7988) - Optimize layout calculations for ESM components (#7989)
- Allow nested
ReactComponents to bypass Shadow DOM (#7991) - Support
--ico-pathCLI 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
Tabulatorfast 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
Paramwidgets (#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-titleshelp string typo fix and don't calltitleon 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.allowInputoption (#7886) - Add
Markdown.disable_anchorsoption (#7902) - Add
config.cache_pathvariable to configure default location for diskcache (#7903) - Support custom cookie path (#7911)
- Allow customizing index page titles with
--index-titlesCLI option (#7916) - Add
Image.targetoption 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
CodeEditorversion 1.40.1 and add themes (#7874) - Bump pyodide version to 0.27.5 (#7905)
- Bump
EChartsversion to 5.6.0 (#7905) - Bump
JSONEditorversion to 10.2.0 (#7905) - Bump
Perspectiveversion to 3.6.1 (#7919)
Bug fixes
- Deduplicate components before compiling (#7887)
- Avoid boomeranging of events after
holdis applied (#7892) - Handle .ico image base64 mime-type correctly (#7894)
- Ensure
FileDropperheight is not limited (#7898) - Ensure correct stylesheet cache is used by theme hooks when component is shared between sessions (#7896)
- Reset
BaseTemplate._documentscorrectly on autoreload (#7897) - Ensure widget CSS is loaded correctly when server path is prefixed (#7900)
- Correct display
Tabulatorwith multi index and multi index column (#7907) - Ensure stretch and scale sizing_mode does not cause overflow in container (#7928)