All Versions
59
Latest Version
Avg Release Cycle
20 days
Latest Release
50 days ago

Changelog History
Page 2

  • v1.8.4 Changes

    December 02, 2025

    πŸš€ Panel 1.8.4 includes key bug fixes and behavior improvements around event ordering, Tabulator interop, and Jupyter/Notebook usage. It also improves support for async usage, validation, and app routingβ€”plus quality-of-life enhancements for both developers and users. Thanks to @philippjfr, @hoxbro, @maximlt, @ahuang11, @MarcSkovMadsen, @TheoMathurin, @ruoyu0088, and @dieterweber for your contributions to this release!

    ✨ Enhancements

    • βž• Add config toggle to disable Bokeh validation (#8294)
    • πŸ‘ Allow Tabulator.row_content to be an async function (#8309)
    • πŸ‘Œ Improve documentation and validation of patch_value (#8312)
    • Propagate layout-related parameters to NestedSelect (#8317)

    πŸ›  πŸ› Bug Fixes

    • πŸ›  Fix crash when emptying a DataFrame (#8256)
    • Ensure new Panel instance is always loaded (#8293)
    • πŸ‘Œ Improve robustness of Bokeh/Panel notebook integration (#8289)
    • πŸ›  Fix notebook reading errors by explicitly using UTF-8 encoding (#8304)
    • Ensure param.Action only triggers one event (#8305)
    • πŸ›  Fix conflict when using both ipywidgets and Tabulator extensions (#8308)
    • ⏱ Ensure discrete events (e.g. button clicks) are scheduled after change events (#8311, #8319)
    • 0️⃣ Reinstate application name as default index page title (#8313)
    • πŸ›  Redirect requests to the prefixed root when --prefix is set (#8321)
    • Ensure non-active Tabs are not clickable (#8324)

    🚧 πŸ§ͺ Maintenance & Infrastructure

    • ⚑️ Update Python/JS dependencies (#8318)
    • πŸ›  Fix type checking errors (#8314)
    • πŸ“Œ Pin jupyterlite-core temporarily (#8315)
    • Clean up pixi.toml project config (#8303)
  • v1.8.3 Changes

    November 10, 2025

    πŸ“š 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

    • 0️⃣ 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 to Vega pane (#8266)
    • Add official support for Python 3.14 (#8241)
    • βž• Add render_policy="manual" option for JSComponent (#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.location wasn’t retained (#8283)
    • πŸ›  Fix Tabulator popup container rendering issues (#8247)
    • Resolve issues with pipeline next/previous buttons (#8273)
    • Ensure ESM compilation uses _esm path (#8245)
    • πŸ›  Fix CORS issue with turbine data URL in Pyodide (#8272)
    • Ensure ParamRef, ParamFunction, and ParamMethod do not override styling (#8264)
    • πŸ›  Fix toggle behavior in BootstrapTemplate sidebar (#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

    • βœ‚ Remove Bokeh metadata workaround related to Tornado (#8243)

    • ⬆️ Bump Django versions in example apps:

    • βž• Add setup-dev command for easier local development (#8277)

    • πŸ‘Œ Improve internal _descendents resolution for parameterized classes (#8284)

    • Add __panel__ stub method to PyComponent (#8271)

  • v1.8.2 Changes

    October 07, 2025

    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.html automatically when serving a static directory (#8222)

    πŸ›  πŸ› Bug Fixes

    • Ensure Tabulator does not break if other components don't correctly initialize (#8212)
    • πŸ›  Fix Pyodide jsnull value conversion in Bokeh JSON patches (#8217)
    • πŸ›  Fix regression causing column headers not to stretch properly across layout (#8219)
    • Ensure config.npm_cdn is 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.ipynb to reflect current Plotly version and correct doc URLs (#8214, #8203)
    • βž• Add missing Anaconda logo to documentation (#8208)
    • βž• Add how-to guide on using uv to distribute Panel apps and dependencies (#8205)
  • v1.8.1 Changes

    September 16, 2025

    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)
  • v1.8.0 Changes

    September 09, 2025

    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 ECharts and Tabulator via JSCode wrapper (#8162)
    • βž• Add support for reconnecting to a session after network disruption (#8120)
    • βž• Add support for AVIF images (#8164)
    • βž• Add support for bundling local resources into WASM apps (#8181)

    ✨ Enhancements

    • πŸ‘Œ Improve .from_param() behavior and error messages (#8047, #8079)
    • βž• Add --reuse-sessions warm option to reduce session cold starts (#8087)
    • Enable event dispatch immediately after WebSocket connect (#8101)
    • πŸ‘Œ Improve error message display in LiteralInput (#8102)
    • πŸ‘ Allow hold usage from a thread (#8113)
    • πŸ‘Œ Improve uniformity and consistency in Tabulator column configuration (#8127)
    • Trigger param.Event correctly on value change (#8148)
    • πŸ‘ Allow registering external extension_cdn for JS resources (#8175)
    • πŸ‘ Allow overriding the default_widgets on HoloViews pane (#8186)

    πŸ›  πŸ› Bug Fixes

    • Ensure Terminal resizes correctly (#8109)
    • Bundle correct AceEditor version (#8111)
    • βœ‚ Remove bokeh-sampledata dependency from Pyodide builds (#8138)
    • Correct resource handling when resources are symlinked (#8143)
    • Correct behavior when FileDownload resets cursor before reading (#8154)
    • πŸ›  Fix handling of NaT values (#8156)
    • Apply template design after rendering template (#8155)
    • Prevent select-all checkbox from being hidden in Material theme (#8147)
    • πŸ›  Fix handling of exclusive bounds in Param widgets (#8165)
    • πŸ›  Fix layout of Card headers with row flex mode (#8166)
    • Uncap height of children in scrollable Column layouts (#8167)
    • πŸ›  Fix errors in ECharts when chart has already been destroyed (#8168)
    • πŸ›  Fix Tabulator filter behavior with list-based filters (#8169)
    • πŸ‘ Allow Card to overflow container (#8170)
    • πŸ›  Fix pyodide model syncing (#8174)

    πŸ—„ ⚠️ Deprecations

    • βœ‚ Removed panel.io.model.hold (was moved to panel.io.document.hold in 1.6.0) (#8188)
    • 🚚 Deprecated panel.chat.langchain.PanelCallbackHandler (to be removed in 1.9.0) (#8188)

    πŸ“¦ Compatibility & Infrastructure

    • ⚑️ Update component versions (#7447)

      • DeckGL version from 9.0.20 to 9.1.14
      • ECharts version from 5.6.0 to 6.0.0
      • KaTeX version from 0.6.0 to 0.16.22
      • Perspective version from 3.6.1 to 3.8.0
      • Plotly version from 3.0.1 to 3.1.0
      • Vega version from 5 to 6.1.2 and vega-lite dependency from 5 to 6.3.0
      • Vizzu version 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

    • βž• Add guide for using WebSocket comms (#7952)
    • ⚑️ Update links for Tabulator (#8126)
    • πŸ“š Align component parameter reference documentation (#8152)
  • v1.7.5 Changes

    July 22, 2025

    πŸš€ 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)
  • v1.7.4 Changes

    July 15, 2025

    πŸš€ 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 (bokehjsdir β†’ bokehjs_path) (#8040)
    • ⚑️ Update Bokeh/FastAPI extra dependency pin to ensure compatibility (#8039)
  • v0.14.1 Changes

    Date: 2022-10-28

    πŸš€ This release primarily addresses regressions introduced in 0.14.0 and various long standing bugs. Many thanks to external contributors @liu-kan and @KedoKudo and the maintainers @Hoxbro, @maximlt and @philippjfr for contributing a number of fixes.

    Minor enhancements

    • πŸ‘Œ Improve support for requests in pyodide (#3973)
    • βž• Add option to clear value of DatetimePicker (#3990)
    • βž• Add support for hashing dates in pn.cache (#4004)
    • ⚠ Silence EMPTY_LAYOUT warnings (#4056)

    Compatibility

    • πŸ›  Fix Jupyterlite and latest PyScript compatibility (#4040)

    πŸ› Bugs

    Webassembly conversion
    • Correctly handle resource mode in when converting to WebAssembly (#3967)

    Jupyter and Server

    • Correctly handle future exceptions on threads (#3977)
    • πŸ›  Fix panel serve index template (#3980)
    • Do not error if curdoc has been destroyed (#3994)
    • Ensure extensions loaded in jupyter kernel are served by StaticHandler (#4000)
    • πŸ›  Various fixes for OAuth handling with pn.serve (#4006)
    • πŸ›  Fix bug in on_load callback exception handling (#4007)
    • Ensure periodic callbacks are only started on main thread (#4011)
    • Ensure jupyter server extension handles explicit root_dir (#4029)
    • Ensure futures are correctly awaited when executed on thread (#4031)
    Components
    • Ensure Tabulator handles filtering on edited values correctly if show_index=False (#3988, #4016)
    • Ensure Tabulator declares numeric sorter for numeric dtypes (#3999)
    • πŸ›  Fix regression initializing DiscreteSlider with non-integer value (#4009)
    • Ensure that template.config.raw_css is correctly applied (#4018)
    • πŸ›  Fix handling MenuButton clicks when split=True (#4021)
    • Ensure styling on Tabulator with empty DataFrame does not error (#4028)
    • πŸ‘ Allow changing level on Debugger widget (#4057
  • v0.14.0 Changes

    Date: 2022-09-30

    πŸš€ This release focuses on three main themes:

    • πŸ‘Œ Support for running Panel apps entirely in the browser using WebAssembly (via Pyodide and PyScript)
    • πŸ‘Œ Improvements in the app-user experience by making it easier to build responsive and performant applications
    • πŸ‘Œ Improvements in the developer experience through static typing and docstrings.

    πŸš€ Many, many thanks to everyone who filed issues or contributed to this release. In particular we would like to thank @janimo, @xavArtley, @thuydotm, @jmosbacher, @dmarx, @2WoLpH, @ipopa144, @sdc50 for contributions and @philippjfr, @Hoxbro, @maximlt, and @MarcSkovMadsen for ongoing maintenance and development.

    πŸ”‹ Features

    • βž• Add support for converting Panel apps to pyscript/pyodide (#3817, #3830, #3851, #3856, #3857, #3858, #3860, #3861, #3863, #3864, #3868, #3878)
    • 🐎 Manage our own CDN to improve performance and reliability for delivering JS payloads (#3867, #3870)
    • βž• Add ability to defer_load of components (#3882)
    • βž• Add pn.widget helper function (#1826, #3589)
    • βž• Add config.exception_handler to easily capture, log and notify users about errors (#3893)
    • πŸ‘ Implement pn.cache function for memoization support (#2411)
    • πŸš€ Rewrite server extension to run Panel applications in kernels so that previews run in the same environment as the deployed app (#3763)
    • βž• Add ability to define authorization callback (#3777)
    • πŸ‘Œ Support memray profiler (#3509)
    • βž• Add liveness endpoint (#3832)
    • βž• Add ability to configure exception handler (#3896)

    ✨ Enhancements

    • Ensure OAuth redirects to requested app and retains query arguments (#3555)
    • βž• Add extension entry point (#3738)
    • ⚑️ Update Admin Logs page to use Tabulator (#3694)
    • Ensure location.unsync unsets query params (#3806)
    • πŸ‘ Allow None value on numeric sliders and LiteralInput (#3174)
    • πŸ‘ Allow serving admin panel with pn.serve (#3798)
    • πŸ‘Œ Improve ReactiveHTML loop support and validation (#3813)
    • πŸ‘Œ Support declaring Perspective.plugin_config pane (#3814)
    • Do not flicker busy indicator during --autoreload check (#3804)
    • πŸ‘Œ Improve robustness of state.curdoc in threaded and async contexts (#3776, #3810, #3834)
    • πŸ‘Œ Support datetime bounds for DatetimePicker and DatetimeRangePicker (#3788)
    • πŸ‘ Allow setting the Oauth provider using environment variables (#3698)
    • Implement Player.value_throttled (#3756)
    • Ensure that URL query parameters are preserved during OAuth (#3656)
    • πŸ‘Œ Improve Markdown code syntax highlighting (#3758)
    • Ensure components do not re-render if background or loading parameters change (#3599)
    • βž• Add ability to define admin dashboard plugins (#3668)
    • Do not calculate embed state for disabled widgets (#3757)
    • βž• Add hard bounds to editable sliders (#3739)
    • βž• Add bundling of shared resources (#3894)
    • βž• Add Tabulator as default param.DataFrame widget (#3912)

    πŸ“š Documentation

    • πŸ“š Overhaul documentation (#3568)
    • πŸ‘Œ Improve Fast Template docstrings (#3570)
    • πŸ“„ Reorganize docs and convert static notebooks to Markdown (#3875, #3833)
    • βž• Add DevelopingCustomModels to the webpage (#3710)
    • πŸ‘Œ Improve typing (#3561, #3562, #3592, #3604, #3714, #3729)

    ⚑️ Compatibility & Version updates

    • πŸ‘Œ Support ipywidgets>=8.0 (#3782)
    • ⬆️ Bump jsoneditor package (#3838)
    • ⬆️ Upgrade to Tabulator 5.3.2 (#3784)
    • πŸ‘Œ Improve Django compatibility (#3843, #3835)
    • βœ‚ Remove all usage of deprecated Pane

    πŸ› Bugs

    Server
    • Ensure closed websocket does not cause errors
    • πŸ– Handle session and websocket close cleanly (#3769)
    • πŸ›  Fix prefix handling for admin page (#3809)
    • πŸ‘Œ Support admin dashboard in multi-process deployments (#3812)
    • πŸ‘Œ Improve document cleanup when not invoked using server_destroy (#3842)
    • Ensure pn.state.execute dispatches immediately if possible (#3859)
    • πŸ›  Ensure autoload.js resources are appropriately prefixed (#3873)
    Notebook
    • πŸ›  Fix support for copying cells and creating new views in JupyterLab (#3652)
    • βœ… Ensure output renders in VSCode notebook with latest ipywidgets (#3765)
    • 🏁 Resolve issues with Jupyter slowdown due to event_loop patching on Windows (#3770)
      • Ensure old comm managers do not raise errors in notebook (#3853)
      • Simplify rendering of ipywidget (#3937)
    Tabulator
    • Do not re-render Tabulator on css_classes or background change (#3598)
    • ⚑️ Ensure expand icon updates on Tabulator.expanded change (#3703)
    • ⚑️ Update page Parameter when pagination is 'local' (#3704)
    • Do not apply sorters on Tabulator cell edits (#3744)
    • Ensure Tabulator.controls renders (#3768)
    • Ensure correctness of event row and selection indices in Tabulator (#3771, #3841)
    • πŸ›  Fix issues with frontend and backend sorters being out of sync in Tabulator (#3825, #3839)
    • πŸ›  Fix default values of a list header filter in Tabulator (#3826)
    • πŸ›  Fix the edit event with a python filter in Tabulator (#3829)
    • Disable client-side date filtering on Tabulator (#3849)
    • πŸ‘Œ Support editing of pandas masked array dtypes in Tabulator (#3850)
    • πŸ›  Fix issues editing a cell when client-side filtering applied (#3852)
    • Do not recompute data when local pagination is enabled (#3854)
    • Don't skip filtering when the column name is undefined (#3862)
    Misc
    • πŸ›  Fix FileInput.save (#3579)
    • πŸ›  Fix issues with Matplotlib.high_dpi option (#3591, #3594)
    • Ensure layout recomputes on HTML/Markdown re-rerender (#3616)
    • πŸ‘ Allow overriding all widget parameters on Param pane (#3754)
    • Ensure DatePicker start/end are transformed when jslinked (#3759)
    • Ensure notifications can be enabled without a template (#3820)
    • Ensure ReactiveHTML inline callbacks on loop variables return correct node (#3840)
    • Ensure that Perspective does not take precedence on empty dict (#3936)
    • πŸ‘Œ Improve sizing_mode behavior when width/height are specified (#3955)
    • Do not load notyf resources unless notifications are enabled (#3958)
  • v0.13.1 Changes

    Date: 2022-05-20

    ✨ Enhancements

    • βž• Add repr to cell and edit events (#3434)
    • πŸ‘Œ Improvements for pyodide handling (#3444, #3508, #3511)
    • βž• Add support for Plotly animation frames (#3449)
    • Implement single and multi-selection in Vega pane (#3470, #3499, #3505)
    • βž• Add typehints to help developers and users (#3476)
    • βž• Add pn.state.execute method to run callbacks in the right context (#3550)
    • Add support for asynchronous on_edit/on_click Tabulator callbacks (#3550)
    • βž• Add DatetimeRangeSlider widget (#3548)

    πŸ› Bug fixes

    • πŸ›  Fix pyodide array buffer conversion (#3409)
    • πŸ‘ Allow placeholder to be updated on TextEditor (#3427)
    • πŸ›  Fix issues editing data in sorted columns (#3431)
    • Ensure bokeh correctly detects whether HTML/Markdown contains latex (#3438)
    • Ensure notifications work on server created with pn.serve and .show (#3445)
    • Replace slickgrid background image in custom FastTemplate CSS (#3461)
    • πŸ”€ Ensure param.Array is synced correctly in ReactiveHTML (#3456)
    • Ensure selection on filtered Tabulator does not raise out-of-bounds error (#3462)
    • ⚑️ Ensure updating Tabulator does not reset scroll position (#3450)
    • πŸ›  Various fixes for FastTemplate CSS (#3464)
    • Ensure Tabulator on_click and on_edit events return correct row when paginated (#3410)
    • πŸ›  Fix broken JupyterLab preview (#3469)
    • Skip Tabulator row selection when clicking on expand button (#3474)
    • Ensure overflow in MaterialTemplate is not clipped (#3492)
    • πŸ‘ Allow providing --index for directory style apps (#3493)
    • Ensure Tabulator expanded rows are sized correctly after re-render (#3507)
    • πŸ‘‰ Make CodeHandler robust to document that has been destroyed (#3510)
    • πŸ”€ Do not sync DataFrame widget sorters parameter with bokeh model (#3527)
    • Ensure that HoloViews callback events are not auto-dispatched (#3528)
    • ⚑️ Ensure non-updateable Pane can be updated inside Tabs (#3532)
    • πŸ›  Fix slowdown of JupyterLab on Windows (#3531)
    • πŸ›  Fix issue with inverted data when editing a cell in a sorted Tabulator column (#3531)
    • Ensure Tabulator has correct layout after re-render (#3536)
    • 🌲 Do not log events generated by admin page on the admin page (#3539)
    • πŸ›  Fix Tabulator events when the original column is not a string (#3541)

    πŸ“š Documentation

    • βž• Adds docstrings to layouts (#3417)
    • πŸ‘‰ Show how to filter categorical and temporal data from Altair/VegaLite (#3401)
    • Document how to make a Tabulator column non-editable (#3489)