⭐ Highlights
* ⌨️ Keyboard shortcuts for buttons: `mo.ui.button(keyboard_shortcut="Cmd-l")`
* 📊 HoloViews support
* 📦 New API: `mo.app_meta().mode` to determine if running as `"edit", "run", "script"`
What's Changed
* feat(image): add caption support to mo.image by metaboulie in https://github.com/marimo-team/marimo/pull/2817
* feat: add keyboard shortcut to buttons by Light2Dark in https://github.com/marimo-team/marimo/pull/2819
* improvement: allow taking control of an existing session if in edit mode by mscolnick in https://github.com/marimo-team/marimo/pull/2810
* docs: replace index.md with readme by akshayka in https://github.com/marimo-team/marimo/pull/2830
* AI Completion: Send api-key header for OpenAI endpoints by cmarqu in https://github.com/marimo-team/marimo/pull/2832
* docs: light-theme sidebar color by akshayka in https://github.com/marimo-team/marimo/pull/2831
* docs: update docs to show app view is in bottom right by Light2Dark in https://github.com/marimo-team/marimo/pull/2834
* Ensure binary messages are serialized to base64 in Panel Comm layer by philippjfr in https://github.com/marimo-team/marimo/pull/2835
* feat(runtime): add mode property to AppMeta by metaboulie in https://github.com/marimo-team/marimo/pull/2829
* fix: open-api schema drift by mscolnick in https://github.com/marimo-team/marimo/pull/2836
* docs: update calendar links to include full URLs by Haleshot in https://github.com/marimo-team/marimo/pull/2840
* docs: improve AppMeta documentation by metaboulie in https://github.com/marimo-team/marimo/pull/2838
* docs: add docs for specifying python version while using --sandbox by mscolnick in https://github.com/marimo-team/marimo/pull/2837
* improvement: prefer _repr_ methods on list/dicts/tuple by mscolnick in https://github.com/marimo-team/marimo/pull/2842
* improvement: add download to File Explorer by mscolnick in https://github.com/marimo-team/marimo/pull/2843
* chore(deps): update google-github-actions/upload-cloud-storage action to v2 by renovate in https://github.com/marimo-team/marimo/pull/2847
* docs: app.embed() usage by akshayka in https://github.com/marimo-team/marimo/pull/2849
* improvement: Extract and lift inline script metadata in `marimo convert` by manzt in https://github.com/marimo-team/marimo/pull/2850
* tests: snapshot ipynb convert tests, add juv test by mscolnick in https://github.com/marimo-team/marimo/pull/2851
* improvement: better leafmap formatters by mscolnick in https://github.com/marimo-team/marimo/pull/2852
* fix: devtools package resolution by mscolnick in https://github.com/marimo-team/marimo/pull/2854
* fix: package installation for conflicting names, fix for names with brackets by mscolnick in https://github.com/marimo-team/marimo/pull/2855
* Fix: expose port via os to allow mpl to work in docker by maxtheman in https://github.com/marimo-team/marimo/pull/2853
New Contributors
* cmarqu made their first contribution in https://github.com/marimo-team/marimo/pull/2832
* maxtheman made their first contribution in https://github.com/marimo-team/marimo/pull/2853
**Full Changelog**: https://github.com/marimo-team/marimo/compare/0.9.17...0.9.18