This release, while technically a minor release hugely expands the scope of what is possible in Panel. In particular the introduction of the new panel.custom module makes it trivially easy to create new JS and React based components using modern tooling, a first-class developer experience and support for compilation and bundling. We are incredibly excited to see which new components you build using this approach. This release also includes native integration with FastAPI, such that you can now run Panel apps natively on an existing FastAPI server. We also introduce a number of new components, improved the developer experience, and squashed a huge number of bugs, particularly for the Tabulator component.
We really appreciate all the work that went into this release from 21 separate contributors. In particular we would like to welcome our new contributors @twobitunicorn, @justinwiley, @dwr-psandhu, @jordansamuels, @gandhis1, @jeffrey-hicks, @kdheepak, @sjdemartini, @alfredocarella and @pmeier. Next we want to recognize our returning contributors @cdeil, @Coderambling, @jrycw and @TBym, and finally the dedicated crew of core contributors which includes @hoxbro, @MarcSkovMadsen, @ahuang11, @maximlt, @mattpap, @jbednar and @philippjfr.
Features
- Allow building custom ESM based
JSComponentandReactComponent(#5593) - Add
Placeholderpane (#6790) - Add
FileDropperwidget (#6826) - Add
ChatStepcomponent to show/hide intermediate steps (#6617) - Add
TimePickerwidget (#7013) - Add
PyComponentbaseclass (#7051) - Add native support for running Panel on FastAPI server (#7205)
Enhancements
- Allow callbacks after append and stream (#6805)
- Enable directory uploads with
FileInput(#6808) - Make
autoreloadrobust to syntax errors and empty apps (#7028) - Add support for automatically determining optimal
Tabulator.page_size(#6978) - Various typing improvements (#7081, #7092, #7094, #7132)
- Display value for player (#7060)
- Optimize rendering and scrolling behavior of
Feed(#7101) - Implement support for multi-index columns in
Tabulator(#7108) - Add placeholder while loading to
ChatFeed(#7042) - Allow streaming chunks to
HTMLandMarkdownpanes (#7125) - Show
Playerinterval value on click (#7064) - Expose
Playeroptions to scale and hide buttons (#7065) - Add
on_keyupandvalue_inputforCodeEditor(#6919) - Detect WebGL support on
BrowserInfo(#6931) - Tweak
ChatMessagelayout (#7209, #7266) - Add nested editor to
Tabulator(#7251) - Support anchor links in
HTMLandMarkdownpanes (#7258, #7263)
Bug fixes
- Ensure
Gaugeis responsively sized (#7034) - Ensure
Tabulatorsortersare correctly synced (#7036) - Ensure
Tabulatorselectionis consistent across paginated, sorted and filtered states (#7058) - Do not propagate clicks on input elements in
Cardheader (#7057) - Ensure
Tabulatorrange selection applies to current view (#7063) - Ensure
Tabulator.selectionis updated when indexes change (#7066) - Ensure
Tabulatorcan be updated with None value (#7067) - Fix issues with PYTHONPATH in Jupyter Preview (#7059)
- Ensure
Tabulatorstyling is correctly applied on multi-index (#7075) - Fix various scrolling related Tabulator issues (#7076)
- Ensure
Tabulatordata is updated after filters are changed (#7074) - Allow controlling
DataFramepane header and cell alignment (#7082) - Highlight active page in
Tabulatorusing Fast Design (#7085) - Ensure follow behavior works when streaming to paginated
Tabulator(#7084) - Avoid events boomeranging from frontend (#7093)
- Correctly map
Tabulatorexpanded indexes when paginated, filtered and sorted (#7103) - Ensure custom
HoloViewsbackends do not error out (#7114) - Ensure events are always dispatched sequentially (#7128)
- Ensure
'multiselect'Tabulator.header_filteruses 'in' filter function (#7111) - Ensure no content warning is not displayed when template is added (#7164)
- Make it easy to prompt user for input in
ChatFeed(#7148) - Fix
LaTeXpane MathJax rendering (#7188) - Ensure OAuth expiry is numeric and can be compared (#7191)
- Correctly detect max depth of
NestedSelectif level is empty (#7194) - Make
--setup/--autoreload/--warmwork with--num-procs(#6913) - Ensure error rendering application does not crash server (#7223)
- Refactor
state.notificationsto fix pyodide (#7235) - Handle setting None value on
DateRangePicker(#7240) - Add header_tooltips parameter to
Tabulator(#7241) - Fix issue using
Tabulator.header_filterwith recent Pandas versions (#7242) - Fix setting of
Dialbackground (#7261) - Fix issues when loading multiple times in a Jupyter(Lab) session (#7269)
Compatibility and Updates
- Update to Bokeh 3.5.x
- Update
Tabulatorto 6.2.1 (#6840) - Update to latest Pyscript (2024.08.01) and Pyodide (0.26.2) (#7016)
- Add compatibility for latest
Textual(#7130)
Documentation
- Update Tabulator.ipynb to show correct version number of
Tabulator(#7053) - Update jupyterlite version (#7129)
- Describe usage of pyscript editor (#7017)
- Add pycafe deployment guide (#7183)
- Add WebLLM example to gallery (#7265)