Skip to content

Releases: holoviz/panel

Version 1.9.4

Choose a tag to compare

@philippjfr philippjfr released this 17 Aug 12:33

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 Tabulator columns (#8685)

🎨 UI Improvements

  • Align loading spinner with panel-material-ui (#8686)

🐛 Bug Fixes

  • Report the pre-edit value on Tabulator value events (#8714)
  • Raise a clear type error for unsupported Perspective objects (#8720)
  • Fix Tabulator starts and ends header 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 Tabulator row_content in panel-material-ui dynamic Tabs (#8697)
  • Claim the Document thread before running app code (#8693)
  • Ensure explicitly set sizing options are respected (#8687)
  • Fix Feed rendering all objects at once (#8667)
  • Fix repeated Location sync mappings (#8660)
  • Fix Tabulator page size handling (#8657)
  • Fix Fast theme Progress indicator height (#8652)
  • Return a clean 403 for unauthenticated WebSocket connections (#8639)
  • Set Cache-Control: no-store on the Bokeh document page (#8636)
  • Forward additional oauth_extra_params to the OAuth authorization endpoint (#8635)
  • Ensure Pipeline ready parameter and next button stay in sync after using the previous button (#8633)
  • Ensure Pipeline previous button sets the correct stage in the graph (#8630)

📚 Documentation

  • Add panel-live-server to docs Extensions gallery (#8703)
  • Clarify FileDropper upload progress indicator documentation (#8684)
  • Fix reactive row count in interactivity tutorial (#8683)
  • Expand layout sizing controls documentation (#8682)
  • Add Spacer reference 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

Choose a tag to compare

@github-actions github-actions released this 01 Jun 19:25

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 hold context manager in threaded mode (#8619)
  • Ensure pyodide pyrender function does not use globals() as context potentially breaking itself during execution (#8620)
  • Clean up dangling write tasks on session destroy (#8621)

📚 Documentation

  • Add links to related API docs and include pn.rx in Functions vs. Classes guide (#8592)
  • Enable edit button in docs (#8612)

Version 1.9.2

Choose a tag to compare

@philippjfr philippjfr released this 27 May 12:58

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

  • Ensure ESM components mark view as finished (#8606)
  • Ensure state._views does not leak memory (#8607)

Version 1.9.1

Choose a tag to compare

@philippjfr philippjfr released this 23 May 11:05

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 Button color not being respected (#8600)
  • Fix ESM component ready and has_finished compliance (#8602)
  • Improve ReactComponent ready promise handling (#8603)
  • Avoid hacky IconMixin rename override (#8604)

📚 Documentation

  • Update gallery environment (#8601)

Version 1.9.0

Choose a tag to compare

@philippjfr philippjfr released this 21 May 12:02

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

  • Add type compatibility for param 2.4.0 (#8573)
  • Add support for wildcard route handling (#8588)

✨ Enhancements

  • Introduce Widget.label parameter and treat name as an alias (#8328)
  • Rename button_type -> color and button_style -> variant (#8577)
  • Make Feed type configurable on ChatFeed (#8582)
  • Add selection and value_input to TextEditor widget (#8560)
  • Add dark theme support for JSONEditor widget (#8444)

🐛 Bug Fixes

  • Fix widget.disabled getting stuck after rapid toggling (#8507)
  • Fix Trend indicator not working with date_range x-axis (#8509)
  • Fix ReactComponent initialization issues (#8552)
  • Fix DataFrame comparison in Tabulator.from_param (#8539)
  • Fix Tabulator scroll reset when filtering on patch (#8531)
  • Prevent Tabulator from overwriting scroll position on style update (#8420)
  • Fix Gauge/ECharts crash 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 NotImplementedError message (#8536)

🎨 UI Improvements

  • Update Tabulator to version 6.4 (#8568)
  • Optimize Tabulator resize events (#8528)
  • Improve Pyodide badge appearance (#8519)
  • General rendering and performance optimizations (#8547)

⚠️ Deprecations

  • Widget.name was renamed to Widget.label
  • Button.button_type was renamed to Button.color
  • Button.button_style was renamed to Button.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_busy in the busy indicator how-to guide (#8564)

🔒 Security

  • Switch HTML sanitization from bleach to nh3 (#8503)
  • Add zizmor for GitHub Actions security scanning (#8584)
  • Validate next_url for basic auth and raise an error if invalid (#8575)

Version 1.8.10

Choose a tag to compare

@philippjfr philippjfr released this 16 Mar 12:48

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.busy logic 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 Card header inputs from toggling collapse (#8442)
  • Fix DateRangeSlider incorrectly modifying both values with timezone-aware timestamps (#8455)
  • Preserve slider bar color when Accordion panels are collapsed or expanded (#8460)
  • Fix datetime axis type mismatch in link_axes after scroll and plot update (#8468)
  • Fix JSON serialization errors in Tabulator when using mixed NaT datetime columns (#8491)
  • Fix Param widget values not updating when changed inside their own callback (#8492)
  • Fix missing validation in _imgshape for 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 ReactiveESM children render correctly (#8473)
  • Ensure CodeEditor annotations are not overridden (#8505)
  • Fix Modal objects update rendering inline instead of in dialog (#8508)
  • Prevent ValueError when EditableFloatSlider input 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=True in the bind_component guide (#8479)

🧪 Tests & Maintenance

  • Improve test robustness (#8502)
  • Fix JupyterLite CI workflow (#8494, #8496)

Version 1.8.9

Choose a tag to compare

@hoxbro hoxbro released this 03 Mar 17:51
v1.8.9
fb924e0

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

Choose a tag to compare

@philippjfr philippjfr released this 02 Mar 13:22

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 freeze support in hold()
    Add a freeze=True option 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 ReactComponent children render even when view initialization is slow (#8406)
  • Fix CDN resolution issues in server mode for loading.css and es-module-shims (#8408)
  • Fix LaTeX rendering in Markdown pane under Pyodide (#8424)
  • Fix resource resolution when pathname changes (#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 Video pane rejecting URLs with query parameters (#8440)
  • Fix Number and String indicators defaulting to black in dark theme (#8441)
  • Ensure embedding works correctly with .from_param() (#8445)

📦 Dependency Updates

  • Bump pyodide to 0.29.3 (#8446)

📚 Documentation

  • Update ChatFeed OpenAI examples to SDK v1.0+ format (#8426)
  • Documentation link updates (croniter README) (#8401)

🧪 Tests & Maintenance

  • Use direct html.escape import for clarity (#8409)
  • Add tests for Button on_click parameter (#8435)

Version 1.8.7

Choose a tag to compare

@philippjfr philippjfr released this 28 Jan 16:51

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

  • Ensure edit_readonly resets both class- and instance-level parameters (#8371)
  • Validate ReactiveHTML missing id errors (#8382)

Version 1.8.6

Choose a tag to compare

@philippjfr philippjfr released this 26 Jan 17:20

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 placeholder parameter on FloatInput and IntInput (#8360)
  • Support for file extensions in FileDropper.accepted_filetypes (#8380)
  • Accept 2D arrays for stereo Audio (#8381)

🐛 Bug Fixes

  • Ensure collapsed Card still renders components to avoid child render issues (#8274)
  • ESM & React Components:
    • Fix errors when renamed parameters are linked on ESM components (#8357)
    • Fix rel_path resolution in ESM components (#8375)
    • Fix autoreload watcher setup for ESM apps (#8361)
    • Delay removal of ReactComponent children until new ones are mounted (#8358)
  • Ensure PathLike is accepted for requirements in pyodide conversion calls (#8366)
  • Ensure edit_readonly resets both class- and instance-level parameters (#8371)
  • Fix guest endpoint 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.design value is respected by Template (#8388)
  • Improve robustness of Tabulator.page_size inference (#8390)

⚠️ Compatibility & Deprecations

  • Added compatibility for pandas 3.0 (#8385)

📚 Documentation

  • Update Plotly example to prevent flicker on load (#8362)

🧪 Maintenance

  • Bump bokeh to 3.8.2 in Django example app (#8376)
  • Bump preact to 10.26.10 (#8367)
  • Update pre-commit hooks (#8363)