Skip to content

Releases: holoviz/panel

Version 1.7.5

22 Jul 12:43
Compare
Choose a tag to compare

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 when restrict=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 with pd.NA values (#8068)
  • Add guard for undefined url in ImportedStyleSheet (#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

15 Jul 14:00
Compare
Choose a tag to compare

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 the PDF 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

  • Ensure ReactComponent forces a re-render after render step (#8037)
  • Fix this.mouse bug in ECharts implementation (#8041)
  • Fix incorrect import path in Django integration docs (bokehjsdirbokehjs_path) (#8040)
  • Update Bokeh/FastAPI extra dependency pin to ensure compatibility (#8039)

Version 1.7.3

09 Jul 09:24
Compare
Choose a tag to compare

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

26 Jun 17:36
Compare
Choose a tag to compare

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 and BytesIO objects to Audio and Video panes (#7963)
  • Add header tooltips to Tabulator (#7988)
  • Optimize layout calculations for ESM components (#7989)
  • Allow nested ReactComponents 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

28 May 10:03
v1.7.1
85150c6
Compare
Choose a tag to compare

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 call title on user input (#7935)

Bug fixes

  • Migrate to correct logger interface (#7931)
  • Column updates not working for Bokeh<3.7 (#7948)

Documentation

  • Fix image links in Azure documentation (#7938)

Version 1.7.0

16 May 12:11
Compare
Choose a tag to compare

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 open link_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

  • Document caching of dependencies by combining cache with depends (#7876)
  • Remove deprecated keyword in doc for DateRangeSlider and DateTimeRangSlider (#7893)
  • Add guidance on troubleshooting OAuth issues (#7921)

Version 1.6.3

23 Apr 18:02
Compare
Choose a tag to compare

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 and soft_tabs options to CodeEditor #7831
  • Allow creating Param.widget without instantiating object, speeding up Widget.from_param #7867

Bug fixes

  • Fix handling of React based AnyWidgetComponent types #7820
  • Cache ESM render modules #7827
  • Check for None in select function for PyComponent #7837
  • Fix for AttributeError in auth.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 handle None 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

  • List version agnostic wheel URLs in WASM standalone docs #7857
  • Correct ClassSelector keyword in build_todo.md #7819
  • Fix documentation of --oauth-extra-params #7865
  • Fix minor issues in FastAPI docs #7866
  • Clarify OAuth redirect uri #7868
  • Add section in load balancing about Bokeh extensions (#7832)

Version 1.6.2

28 Mar 13:17
Compare
Choose a tag to compare

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 in ReactComponents 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

  • Avoid redundant list operations in ListLike (#7764)
  • Optimize ipywidget reference transform (#7778)

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

14 Feb 14:42
Compare
Choose a tag to compare

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 when Feed.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

  • Add links to other HoloViz libraries to the sidebar (#7674)
  • Minor documentation fixes (#7664, #7668, #7692)

Version 1.6.0

23 Jan 16:24
Compare
Choose a tag to compare

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 and ChatFeed 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 and ChatStep (#7608)
  • Add support for remote filesystems on FileSelector (#7618)
  • Add support for FigureWidget events on Plotly 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 during panel 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 when options 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)

Documentation

  • Ensure Open in JupyterLite links work (#7622)
  • Add admonitions for outdated guides and minor corrections (#7635)
  • Add form tutorial (#7568)
  • Fix and reorganize API docs (#7659)