Releases: holoviz/panel
Version 0.14.4
This release is a small bug fix release preceding the upcoming major release of Panel 1.0. Many thanks to the contributors to this release which include @MarcSkovMadsen, @maximlt, @hoxbro and @philippjfr.
Bugs
- Fix
Tabulator
client-side string filters by not parsing them as regex (4423) - Fix the RGGPlot pane (#4380)
- Fix
panel examples
command by ensuring examples are correctly packaged (#4484) - Fix event generation by considering NaNs as equal when comparing Numpy arrays (#4481)
- Use cache from previous sessions when using
to_disk
(#4481) - Fix relative imports when running inside Jupyter Kernel (#4489)
- Do not re-create
Vega.selections
object unless selections changed (#4497)
Enhancements
- Add support for altair and vega-lite v5 (#4488)
Misc
- Use latest react-grid from CDN (#4461)
Version 0.14.3
This release introduces a large number of bug fixes and minor enhancements. Due to the upcoming release of Panel 1.0 we have also made the unconventional decision to issue new deprecation in a micro release. Specifically the IDOM
pane and Viewable.app
and Viewable.pprint
methods have been scheduled for deprecation. Many thanks to the contributors to this release which include @wendrul, @droumis and the core team @MarcSkovMadsen, @maximlt, @hoxbro and @philippjfr.
Bugs
Tabulator
- Ensure streamed rows on
Tabulator
can be edited (#4292) - Ensure changes on
Tabulator
formatter
andeditor
models are reflected in frontend (#4296) - Ensure cancelling edit does not clear cell on
Tabulator
(#4343) - Ensure inserting empty data on numeric column in
Tabulator
does not error (#4343)
Notebook
- Fix issues rendering components as ipywidgets for some versions of ipykernel (#4289)
- Add warning if custom resources could not be loaded in notebook (#4329)
- Ensure notifications are enabled even if
hv.extension
has been loaded (#4330) - Ensure global notification object can be used inside notebook callbacks (#4331)
Type definitions
- Fix return type of
Widget.from_param
(#4335) - Ensure type annotation allows
str
andPathLike
objects onpanel.serve
(#4336) - Fix type annotations on
panel.io.convert.convert_app
(s) (#4342)
Misc
- Ensure markdown links render correctly in template sidebar (#4222)
- Improve .applies for
ECharts
andDeckGL
(#4224) - Fix specifying custom
--index
with relative path (#4288) - Skip
on_load
callbacks in liveness check (#4302) - Ensure re-rendered
FileDownload
still fetches live data (#4328) - Fix handling of
panel.cache
on undecoratedParameterized
method (#4332) - Ensure user provided
hash_funcs
are applied inpanel.cache
(#4334) - Fix plotly eventdata undefined val (#4355)
- Ensure
panel convert
respectspanel.config
options (#4359) - Propagate options from HoloViews and Bokeh plots to enclosing Pane (#4360)
- Propagate options from dynamic components such as ParamMethod and Interactive to enclosing layout (#4360)
Minor enhancements
- Allow to set the log level of the Admin logger (#3495)
- Make
refresh_token
available in Auth (#4227) - Simplify determining whether script is executed as application with
pn.state.served
property (#4252) - Add
loading_indicator
to globalconfig
(#4259) - IPython
display
compatibility in pyodide builds (#4270) - Split
PanelJupyterExecutor
into separate module (#4276) - Allow dynamic loading of javascript modules in
ReactiveHTML
(#4319) - Add
Plotly.link_figure
parameter (#4333) - Ensure
CrossSelector
filters apply on each keystroke (#4339) - Improve startup, error handling and shutdown of Jupyter kernels in
jupyter_server_extension
(#4364)
Compatibility and Version Updates
- Upgrade plotly.js to 2.10.1 (#4320)
- Upgrade to pyodide 0.22.1 in
panel convert
(#4334) - Upgrade to pyscript 2022.12.01 in
panel convert
(#4334) - Fix compatibility of Perspective pane with Numpy 1.24 (#4362)
Deprecations
- Add deprecation warning to
IDOM
pane (#4293) - Add deprecation warning for
Viewable.app
andViewable.pprint
methods (#4293, #4347)
Documentation
Version 0.14.2
This release primarily focuses on bug fixes. In particular it resolves various issues with support for rendering ipywidgets
(particularly in ipywidgets>=8.0
) and also fixes a number of issues with the Jupyter Server previews. Many thanks for @govinda18, @joelostblom, @banesullivan, @xeldnahcram, @geronimogoemon, @minasouliman, @peterfpeterson, @jlstevens and the core maintainers @maximlt, @hoxbro, @MarcSkovMadsen and @philippjfr for their contributions to this release.
Enhancements
- Add support for
Tqdm.process_map
(#4093) - Support non-vtkPolyData types in vtk synchronizer (#4124)
- Allow invoking
convert
functions from pyodide (#4135) - Support
step
format in date sliders (#4152) - Add a
Reacton
component to simplify rendering (#4190)
Bugs
- Ensure Jupyter server extension serves resources, extensions and paths correctly (#4083, #4133, #4202)
- Ensure
IPyWidget
comm does not break when new widget is rendered (#4091) - Improving detection of comms in VSCode and Google Colab (#4115)
- Ensure
.js
mimetype is served correctly on Windows (#4118) - Ensure unhiding
Tabulator
columns renders cells correctly (#4119) - Ensure embedded
Slider
widgets initialize with correct default (#4121) - Handle missing event loop in thread gracefully (#4123)
- Ensure
Matplotlib
pane handles explicitwidth
/height
settings correctly (#4128) - Allow
Viewer
to render servable but non-viewable objects (#4131) - Fix regression in tracking sessions in admin interface (#4132)
- Ensure
Tabs
headers do not scroll unncessarily (#4146) - Ensure
Location
model reports as idle (#4159) - Fix auth error template rendering (#4162)
- Fix issues with value on
EditableSlider
when it is outsidefixed_start
/fixed_end
range (#4169) - Ensure
ipywidgets
events are handled the same way as regular events (#4171) - Don't raise
TypeError
for class which contains__panel__
(#4174) - Do not dispatch events if bokeh
Document
is set to hold events (#4178) - Execute
onload
callbacks immediately in pyodide app (#4191) - Improve
IPyWidget
kernel handling in server contexts (#4195) - Fix rendering of
IPyWidget
with child views in the notebook (#4197)
Docs
Version 0.14.1
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
Version 0.14.0
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
andDatetimeRangePicker
(#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
orloading
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 defaultparam.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)
Tabulator
- Do not re-render
Tabulator
oncss_classes
orbackground
change (#3598) - Ensure expand icon updates on
Tabulator.expanded
change (#3703) - Update
page
Parameter when pagination is 'local' (#3704) - Do not apply
sorters
onTabulator
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](https:...
Version 0.13.1
This release is primarily a bug fix release but also includes a number of enhancements. Many thanks to @hoxbro, @joelostblom, @raybellwaves, @pdrok, @tlvu, @govinda18, @MridulS and the core maintainers @MarcSkovMadsen, @maximlt and @philippjfr for contributing to this release.
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 onTextEditor
(#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 inReactiveHTML
(#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
andon_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
widgetsorters
parameter with bokeh model (#3527) - Ensure that HoloViews callback events are not auto-dispatched (#3528)
- Ensure non-updateable
Pane
can be updated insideTabs
(#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
Version 0.13.0
Blog post: https://blog.holoviz.org/panel_0.13.0.html
Features
- Add support for scheduling global callbacks (#2661)
- MathJax now supported in
Markdown
andHTML
(#2847) - Improved support for async (e.g. in ParamMethod/ParamFunction, bind, onload etc.) (#2964, #3264, #2737)
- Support rendering Panel objects in Jupyterlite and Pyodide (#3252, #3361, #3381)
- Add
JSONEditor
widget (#1974) - Add quill.js based
TextEditor
widget (#2875) - Add
GenericLoginHandler
for custom OAuth (#2873, #2960) - Implement
Notifications
API for templates (#3093) - Implement built-in threading (#2597, #2632, #3081)
- Implement profiling page for Panel (#2645, #2664, #2667, #2707, #2905)
- Implement support for
Vega
events (#2592) - Implement
ArrayInput
widget (#2047) - Add
Debugger
widget (#2548) - Add LinearGauge indicator (#3222)
- Add
ComponentResourceHandler
to server (#3284, #3289, #3303)
Enhancements
Components
- Editable sliders
name
can be changed (#2678) - Make
Plotly
pane resize when window resizes (#2704) Viewer
objects can now be used withpn.serve
(#2769)VTK
improvement for NaN handling (#2826)- Add support for configuring
Vega
output (#2846) - Add a
groups
parameter toSelect
widget (#2876) - Add
Card.hide_header
option (#2947) - Support bytes and pathlib.Path objects on Image (#2963, #3294)
- Add programmatic control over Player widget (#2970, #2994)
- Add alphabetical and custom sort to
Param
(#2986) - Add
autoplay
andmuted
toAudio
andVideo
(#3053) - Add a
disabled_options
parameter to a custom Select widget (#3067) - Expose the
orientation
parameter of the button group widgets (#3083) - Add support for rendering pandas styler objects (#3152)
Viewer
now better at working withdepends
functions (#3159)- Improve support for jinja2 loops in
ReactiveHTML
(#3236) - Add ability to require explicit load of ReactiveHTML extension (#3254)
- Improve datetime handling of sliders (#3276)
- Add support for multiple files in
FileInput.save
(#3300) - Add improved Tabs model that resolves sizing and hover issues (#3301, #3321, #3329)
Tabulator
- Add support to expand rows in
Tabulator
(#2762, #2837, #3010, #3163) - Implement client-side filtering on
Tabulator
(#2815, #3298) - Add
Tabulator.header_align
parameter (#2861) - Implement
Tabulator.on_edit
callbacks (#2887, #3209, #2958) - Implement DateEditor and DatetimeEditor for
Tabulator
(#2899, #3008) - Implement
Tabulator.buttons
(#3111) - Redesign
Tabulator.styles
handling (#3175) - Set default alignment for
Tabulator
(#3194) - Bidirectionally sync
Tabulator.sorters
(#3217) - Add support for setting percentage widths on
Tabulator
columns (#3239) - Add
Tabulator.on_click
callback (#3245) - Restore
Tabulator
scroll position after patch (#3273) - Enable max row limits for
Tabulator
(#3306)
Notebook
- Add basic JupyterLab theme support (#2848)
- Support jupyter server
root_dir
with lab extension (#3172) - Avoid multiple extension execution in the notebook (#3266)
- Added fullpath to
jupyter_server_extension
(#3270)
General improvements
- Warn users if extension is not loaded before server page is rendered (#2766)
- Sync URL location hash interactively (#2982)
- Change accent and header background color for Fast Templates (#2984)
- Add thread safety and TTL to
pn.state.as_cached
(#3198) - Add py.typed file to support mypy (#3055)
- Handle authentification errors (#3096)
- Support saving png to file-like objects (#3155)
- Check if there are any query parameters in
baseurl
and adds it tolocation.search
if possible (#3214) - Improve handling of
--index
CLI argument (#3221) - Fix event dispatch (#3231)
- Add azure oauth v2.0 endpoint support (#3224)
- Ensure
gc.collect
is not excessively called (#3259) - Added
panel.reactive
andpanel.viewable
to namespace (#3157) - Consistent handling of page title (#3290)
Bugs
Components
- Fix warnings in
ReactiveHTML
regex (#2786) - Fixed UTF-8 decoding in Terminal widget (#2880)
- Allow a
param.Selector
with no objects to be casted toAutocompleteInput
(#2966) - Update
ButtonGroup
value when changing options (#2999) - Fix
TQDM
style color reset (#3040) - Fix align-items on
Flexbox
(#3122) - Fix issue serializing
Spinner
with negative value (#3154) - Fixes for jslinking
HoloViews
components (#3165) BooleanStatus
andLoadingSpinner
now update when changing color (#3191)- Fix
Widget.from_param
when precedence is negative (#3199) - Ensure
DiscreteSlider
label is updated (#3278) - Ensure
ReactiveHTML
template variables only escapes exact matches (#3279) - Fix handling of single and empty options on
DiscreteSlider
(#3297) - Ensure
Progress
correctly initializes as indeterminate (#3307) - Always resolve DOM nodes in ReactiveHTML._scripts ([#3311](https://githu...
Version 0.12.7
The 0.12.7 release primarily fixes an incompatibility with the new jinja2 3.1.0 release. Many thanks to @maartenbreddels, @govinda18, @raybellwaves and the maintainers @maximlt and @philippjfr for contributing further fixes to this release.
Bug fixes:
- Wrong offset when memoryview format is non-byte (#3206)
- Support jupyter server root_dir with lab extension (#3172)
Docs:
- add note on enabling panel widget on Jupyter Lab (#3029)
- Remove redundant and confusing JupyterLab install instructions (#3037)
Compatibility:
- Fix jinja2 imports (#3258)
Version 0.12.6
The 0.12.6 release fixes a major regression introduced in the last release along with a small number of pre-existing bugs.
Regressions:
- Always load imported bokeh extensions (#2957)
- Fix regression rendering
HoloViews
plotly backend (#2961)
Bug fixes:
- Do not run
Ace
import on initialization (#2959) - Improve handling of
ReactiveHTML
cleanup (#2974, #2993) - Ensure empty
Str
has same height as non-empty (#2981) - Ensure
Tabulator
supports grouping on numeric columns (#2987) - Fix
Tabulator
with multi-index and pagination (#2989) - Allow index as column name in table widgets (#2990)
- Ensure TemplateActions component does not have height (#2997)
Version 0.12.5
The 0.12.5 release contains a larger number of bug fixes and minor enhancements. Many thanks to @pmav99, @samuelyeewl, @xavArtley, @L8Y, @Prashant0kgp, @t-houssian, @kristw, @jlstevens and the maintainers @maximlt, @MarcSkovMadsen and @philippjfr for their contributions to this release.
Compatibility:
- Ensure ipywidget rendering is compatible with ipykernel>6 and bokeh>2.4 (#2798)
- Build panel.js against bokeh.js 2.4.2 (#2945)
Enhancements:
- Add 'light' to list of button types ([#2814, #2816)
- Make OAuth cookie expiry configurable (#2724)
- Run
onload
callbacks with--warm
option (#2844) - Improve Plotly responsive sizing behavior (#2838)
- Adds escape parameter to
DataFrame
pane to enable using html markup (#2893) - Allow to update the completions options from a parameter (#2895)
Tabs
cache dynamic contents (#2909)- Allow setting a maximum height for the loading indicator (#2910)
- Ensure loading of MathJax bundle is optional (#2919)
Bug fixes:
- Resolve issues with inline resources on save (#2794)
- Restore ability to set a maximum number of selectable rows on
Tabulator
(#2791) - Fixed bug where Tabulator with remote pagination would modify the wrong rows (#2801)
- Ensure non-exported requirejs modules do not error (#2808)
- Ensure
Tabulator
checkbox selection only happens in checkbox column (#2812) Vtkvolume
correction of dimensions order (#2818)- Allow data item to miss optional field in
Vega
pane (#2853) - Allow to set
AutoCompleteInput
in a Param pane (#2874) - Fix
Terminal
keystroke and size handling (#2878) - Fix
Tabulator
styles on scroll (#2881) - Do not sync
Indicator
properties from frontend to avoid errors (#2886) - Fix roundtrip of datetimes on
ReactiveData
components (#2888) - Fix handling of
Plotly
pane inTabs
(#2890) - Fix bokeh colorbar background for dark theme (#2897)
- Fix issues when streaming or patching
ReactiveData
(#2900) - Ensure stream and patch events do not boomerang (#2902)
- Fixes for
Card
rendering inMaterialTemplate
(#2911, #2912) - Ensure
HoloViews
matplotlib output uses tight layout (#2920) - Fix decoding of single quoted strings in url parameters (#2925)
- Fix
Tabulator
checkbox selection (#2931) - Fix
Vega
pane sizing issues (#2933) - Ensure toggled
Accordion
only triggers one event on change of active Card (#2934) - Ensure
LiteralInput
JS deserializer does not insert extra spaces (#2935) - Fix issue in detecting script data assignment in
ReactiveHTML
(#2939) - Ensure
Card
collapsible icon offset is computed robustly (#2940) - Ensure
--autoreload
does not reload panel modules (#2941) - Ensure
pn.state.curdoc
is available to async callbacks (#2942)
Documentation:
- Fix default values of
panels.io.server.serve()
(#2799) - Update docs about
pn.serve
per user state (#2849) - Added FastApi in the user guide for embedding apps (#2870)
- Simplify homepage (#2850)
CVEs:
- Update jQuery to remediate CVEs (#2885)