Releases: holoviz/panel
Release list
Version 1.9.4
Panel 1.9.4 is a patch release focused on rendering robustness for ESM/React components, several Tabulator and Pipeline fixes, OAuth hardening, and stylesheet/loading reliability improvements. It also adds support for movable Tabulator columns. Many thanks to @TheoMathurin, @rimsha152007-dotcom, @ebarkhordar, @SimonHeybrock, @ahuang11, @Kkkakania, @EltonChang1, @hoxbro, @MarcSkovMadsen, @Coderambling, @SuMayaBee, @youdie006, @kyo5uke, @ghostiee-11 and @philippjfr for contributing to this release.
🚀 Features
- Support movable
Tabulatorcolumns (#8685)
🎨 UI Improvements
- Align loading spinner with
panel-material-ui(#8686)
🐛 Bug Fixes
- Report the pre-edit value on
Tabulatorvalue events (#8714) - Raise a clear type error for unsupported
Perspectiveobjects (#8720) - Fix
Tabulatorstartsandendsheader filters (#8719) - Ensure ESM component child views aren't created concurrently (#8713)
- Inline versioned stylesheets on the notebook update path (#8708)
- Resolve invisible slider title font color in Fast theme's light mode (#8704)
- Various ESM component robustness fixes (#8702)
- Reveal markup panes when their stylesheets fail to load or are replaced (#8700)
- Drain held events once connected (#8698)
- Fix
Tabulatorrow_contentinpanel-material-uidynamicTabs(#8697) - Claim the Document thread before running app code (#8693)
- Ensure explicitly set sizing options are respected (#8687)
- Fix
Feedrendering all objects at once (#8667) - Fix repeated
Locationsync mappings (#8660) - Fix
Tabulatorpage size handling (#8657) - Fix Fast theme
Progressindicator height (#8652) - Return a clean 403 for unauthenticated WebSocket connections (#8639)
- Set
Cache-Control: no-storeon the Bokeh document page (#8636) - Forward additional
oauth_extra_paramsto the OAuth authorization endpoint (#8635) - Ensure
Pipelinereadyparameter and next button stay in sync after using the previous button (#8633) - Ensure
Pipelineprevious button sets the correct stage in the graph (#8630)
📚 Documentation
- Add
panel-live-serverto docs Extensions gallery (#8703) - Clarify
FileDropperupload progress indicator documentation (#8684) - Fix reactive row count in interactivity tutorial (#8683)
- Expand layout sizing controls documentation (#8682)
- Add
Spacerreference notebook (#8681) - Add ESM components card to explanation Components section (#8673)
- Fix typo and optimize phrasing (#8665)
- Fix the "Could not open websocket" / multiple-accounts OAuth troubleshooting guide (#8637)
- Document that JSON embed files must be served over HTTP (#8632)
Version 1.9.3
Panel 1.9.3 is a patch release addressing several bug fixes for ReactiveESM components, OAuth handling, and dev mode document cleanup. Many thanks to @Coderambling, @hoxbro and @philippjfr for contributing to this release.
🐛 Bug Fixes
- Ensure property changes do not boomerang on
ReactiveESM(#8617) - Fix regression when cleaning up documents in dev mode (#8616)
- Ensure OAuth expiry value is cast to number (#8611)
- Ensure ESM components only check rendered children for readiness (#8609)
- Fix
holdcontext manager in threaded mode (#8619) - Ensure pyodide
pyrenderfunction does not useglobals()as context potentially breaking itself during execution (#8620) - Clean up dangling write tasks on session destroy (#8621)
📚 Documentation
Version 1.9.2
Version 1.9.2
A patch release addressing a small regression on ReactComponent causing the Document never to register as idle. Also fixes a memory leak related to tracking components in non-server contexts. Thank you to @philippjfr for his contributions to this release.
🐛 Bug Fixes
Version 1.9.1
A quick patch release addressing regressions in 1.9.0, fixing Button color styling and resolves several issues with ESM and React component lifecycle handling. Many thanks to @philippjfr and @hoxbro for their contributions to this release.
🐛 Bug Fixes
- Fix
Buttoncolor not being respected (#8600) - Fix ESM component
readyandhas_finishedcompliance (#8602) - Improve
ReactComponentready promise handling (#8603) - Avoid hacky
IconMixinrename override (#8604)
📚 Documentation
- Update gallery environment (#8601)
Version 1.9.0
Panel 1.9.0 delivers full typing compatibility with Param 2.4.0, finally ensuring that all parameters are fully typed. Additionally this release makes it possible to provide wildcard routes to pn.serve making it possible to support dynamic routing. It also includes a significant modernization of the widget API, introducing Widget.label as the canonical display label parameter and renaming button_type/button_style to color/variant for better alignment with panel-material-ui, which will be integrated within Panel in upcoming releases. The release also includes a range of Tabulator improvements, chat enhancements, security updates, and numerous bug fixes. Lastly, this release drops support for Bokeh 3.7.
Many thanks to the contributors to this release including: @philippjfr, @hoxbro, @ghostiee-11, @ahuang11, @AtharvaJaiswal005, @SKlerk, @TheoMathurin, @chucklay, @zhangdomi, @mvanhorn, @SuMayaBee, @forman, and @omyaaa1.
🚀 Features
✨ Enhancements
- Introduce
Widget.labelparameter and treatnameas an alias (#8328) - Rename
button_type->colorandbutton_style->variant(#8577) - Make
Feedtype configurable onChatFeed(#8582) - Add
selectionandvalue_inputtoTextEditorwidget (#8560) - Add dark theme support for
JSONEditorwidget (#8444)
🐛 Bug Fixes
- Fix
widget.disabledgetting stuck after rapid toggling (#8507) - Fix
Trendindicator not working withdate_rangex-axis (#8509) - Fix
ReactComponentinitialization issues (#8552) - Fix
DataFramecomparison inTabulator.from_param(#8539) - Fix
Tabulatorscroll reset when filtering on patch (#8531) - Prevent
Tabulatorfrom overwriting scroll position on style update (#8420) - Fix
Gauge/EChartscrash when the ECharts library is not yet loaded (#8515) - Make OAuth token refreshes more robust (#8518)
- Sanitize JavaScript string replacement tokens in Python code (#8566)
- Fix string formatting in
NotImplementedErrormessage (#8536)
🎨 UI Improvements
- Update Tabulator to version 6.4 (#8568)
- Optimize
Tabulatorresize events (#8528) - Improve Pyodide badge appearance (#8519)
- General rendering and performance optimizations (#8547)
⚠️ Deprecations
Widget.namewas renamed toWidget.labelButton.button_typewas renamed toButton.colorButton.button_stylewas renamed toButton.variant- Dropped support for Bokeh 3.7
📚 Documentation
- Update reference gallery to use
panel-material-ui(#8596) - Add Outerbounds deployment guide (#8587)
- Add Functions vs Classes explanation (#8581)
- Add Panel extensions documentation page (#8529)
- Document
pn.state.sync_busyin the busy indicator how-to guide (#8564)
🔒 Security
Version 1.8.10
Panel 1.8.10 focuses on stability improvements across widgets, plotting integrations, and server behavior. It includes fixes for Tabulator serialization, Param widget updates, Plotly and Vega regressions, and several UI issues. This release also improves compatibility with Bokeh 3.9, enhances error reporting when serving apps, and addresses a security issue in panel.js.
Many thanks to the contributors to this release including:
@philippjfr, @SuMayaBee, @AtharvaJaiswal005, @hoxbro, @ghostiee-11, and @tmoulignier.
✨ Enhancements
- Improve Python error messages displayed when serving apps (#8478)
- Improve
state.busylogic to avoid mismatches in busy state tracking (#8498) - Allow configuring the Panel CDN with the PANEL_CDN_ROOT environment variable or
pn.config.cdn_root(#8512)
🐛 Bug Fixes
- Prevent spacebar in
Cardheader inputs from toggling collapse (#8442) - Fix
DateRangeSliderincorrectly modifying both values with timezone-aware timestamps (#8455) - Preserve slider bar color when
Accordionpanels are collapsed or expanded (#8460) - Fix datetime axis type mismatch in
link_axesafter scroll and plot update (#8468) - Fix JSON serialization errors in
Tabulatorwhen using mixedNaTdatetime columns (#8491) - Fix Param widget values not updating when changed inside their own callback (#8492)
- Fix missing validation in
_imgshapefor image panes (#8485) - Fix Vega pane not updating when using inline data (#8495)
- Fix Plotly regressions introduced in earlier 1.8 releases (#8471, #8476)
- Ensure all
ReactiveESMchildren render correctly (#8473) - Ensure
CodeEditorannotations are not overridden (#8505) - Fix Modal objects update rendering inline instead of in dialog (#8508)
- Prevent ValueError when
EditableFloatSliderinput is cleared (#8511)
🔒 Security
- Address XSS and prototype overwrite issues in
panel.js(#8501)
📦 Compatibility & Dependency Updates
- Add compatibility with Bokeh 3.9 (#8475)
📚 Documentation
- Recommend using bound function references instead of
watch=Truein thebind_componentguide (#8479)
🧪 Tests & Maintenance
Version 1.8.9
Many thanks to @philippjfr and @hoxbro for their contributions.
🐛 Bug Fixes
- Only serialize ESM model definition if session is already loaded (#8462)
⚙️ Compatibility
- Compatibility with VTK 9.6.0 (#8464)
Version 1.8.8
Panel 1.8.8 focuses on stability, event handling correctness, Pyodide improvements, ESM robustness, and multiple UI fixes. It also introduces a new experimental freeze option for hold() to improve performance during batch updates. Many thanks to @AR21SM (first contribution), @AtharvaJaiswal005 (first contribution), @danielalanbates (first contribution), @DevilSpecial (first contribution), @emunsing (first contribution), @nojaf (first contribution), @SimonHeybrock (first contribution), @SuMayaBee (first contribution), @ahuang11, @Coderambling, @philippjfr, and @hoxbro for their contributions.
✨ Enhancements
- Allow list handling improvements (#8405)
- Add additional safety guards to custom models (#8410)
- Experimental
freezesupport inhold()
Add afreeze=Trueoption to defer expensive Bokeh model graph recomputation until the hold context exits. This can significantly improve performance when batch-updating many models.
(Marked experimental.) (#8417) - Add missing
Callback.unwatch()method with tests (#8453) - Ensure ESM model definitions can be loaded dynamically (#8432)
- Improve
widget.link()to properly support HoloViews streams (#8450)
🐛 Bug Fixes
- Ensure
ReactComponentchildren render even when view initialization is slow (#8406) - Fix CDN resolution issues in server mode for
loading.cssandes-module-shims(#8408) - Fix
LaTeXrendering inMarkdownpane under Pyodide (#8424) - Fix resource resolution when
pathnamechanges (#8433) - Ensure only param value events are deduplicated (#8436)
- Fix OAuth user data being overwritten during updates (#8447)
- Fix pipeline "Next" button disabled state when navigating back (#8443)
- Fix
Videopane rejecting URLs with query parameters (#8440) - Fix
NumberandStringindicators defaulting to black in dark theme (#8441) - Ensure embedding works correctly with
.from_param()(#8445)
📦 Dependency Updates
- Bump
pyodideto 0.29.3 (#8446)
📚 Documentation
- Update ChatFeed OpenAI examples to SDK v1.0+ format (#8426)
- Documentation link updates (croniter README) (#8401)
🧪 Tests & Maintenance
Version 1.8.7
This patch release reverts two changes that were made in 1.8.6 that turned out to be more disruptive than expected. Additionally it ensures that Tabulator automatically recalculates page sizes on resize and resolves issues with patched versions of Plotly.
🐛 Bug fixes
- Rerun Tabulator page size calculation on resize (#8395)
- Fix issues with monkey-patched versions of Plotly (#8397)
⏪ Reverted
Version 1.8.6
This patch release includes several ESM and React-related fixes, UI behavior improvements, and enhanced robustness in form inputs and file handling. It also bumps key dependencies and improves support for custom deployments. Thanks to @philippjfr, @maximlt, @emunsing, @TheoMathurin, @dalthviz and @hoxbro for their contributions to this release!
✨ Enhancements
- Add
placeholderparameter onFloatInputandIntInput(#8360) - Support for file extensions in
FileDropper.accepted_filetypes(#8380) - Accept 2D arrays for stereo
Audio(#8381)
🐛 Bug Fixes
- Ensure collapsed
Cardstill renders components to avoid child render issues (#8274) - ESM & React Components:
- Ensure
PathLikeis accepted forrequirementsin pyodide conversion calls (#8366) - Ensure
edit_readonlyresets both class- and instance-level parameters (#8371) - Fix
guestendpoint validation at root path (#8370) - Don't attempt to refresh access token if there is no active user session (#8384)
- Ensure OAuth state for user is reset after failing to refresh access token (#8389)
- Ensure
config.designvalue is respected byTemplate(#8388) - Improve robustness of
Tabulator.page_sizeinference (#8390)
⚠️ Compatibility & Deprecations
- Added compatibility for pandas 3.0 (#8385)
📚 Documentation
- Update
Plotlyexample to prevent flicker on load (#8362)