Change8

v1.9.0

Breaking Changes
📦 panelView on GitHub →
2 breaking7 features🐛 10 fixes2 deprecations🔧 14 symbols

Summary

Panel 1.9.0 introduces full typing compatibility with Param 2.4.0 and adds support for wildcard routing in `pn.serve`. This release also modernizes the widget API by canonicalizing the label parameter and renaming button style attributes.

⚠️ Breaking Changes

  • Support for Bokeh 3.7 has been dropped. Users must upgrade to a newer version of Bokeh.
  • The parameter `button_type` on buttons has been renamed to `color`. Update code referencing `button_type` to use `color` instead.

Migration Steps

  1. If you were using `widget.name`, change it to `widget.label`.
  2. If you were using `button.button_type`, rename it to `button.color`.
  3. If you were using `button.button_style`, rename it to `button.variant`.
  4. Ensure your Bokeh dependency is greater than 3.7.

✨ New Features

  • Full typing compatibility with Param 2.4.0 is now implemented.
  • Support for wildcard routes in `pn.serve` has been added, enabling dynamic routing.
  • Introduced `Widget.label` as the canonical display label parameter for widgets.
  • Renamed `button_type` to `color` and `button_style` to `variant` for better alignment with `panel-material-ui`.
  • Made `Feed` type configurable on `ChatFeed`.
  • Added `selection` and `value_input` properties to the `TextEditor` widget.
  • Added dark theme support for the `JSONEditor` widget.

🐛 Bug Fixes

  • Fixed `widget.disabled` getting stuck after rapid toggling.
  • Fixed `Trend` indicator not working correctly with `date_range` x-axis.
  • Fixed `ReactComponent` initialization issues.
  • Fixed `DataFrame` comparison logic in `Tabulator.from_param`.
  • Fixed `Tabulator` scroll position resetting incorrectly when filtering on patch updates.
  • Prevented `Tabulator` from overwriting scroll position during style updates.
  • Fixed `Gauge`/`ECharts` crashing if the ECharts library was not yet loaded.
  • Made OAuth token refreshes more robust.
  • Sanitized JavaScript string replacement tokens in Python code to prevent injection.
  • Fixed string formatting in `NotImplementedError` messages.

Affected Symbols

⚡ Deprecations

  • `Widget.name` is deprecated; use `Widget.label` instead.
  • `Button.button_style` is deprecated; use `Button.variant` instead.