pypi marimo 0.23.16

21 hours ago

What's changed

🛢️ Quickly add discovered data sources to your notebook

marimo can now discover data sources configured on your machine. The backend scans environment variables for available connections across Postgres, MySQL, Trino, AWS, PyIceberg, and PySpark, and surfaces them in a new quick-add UI in the editor.

image

📣 Callout glow-up

mo.callout now accepts an optional title argument, rendered with a matching icon:

mo.md("It's dangerous to go alone!").callout(kind="warn", title="Warning")
image

Callouts and Markdown admonitions also share a new, unified look inspired by GitHub's admonitions, so they flow more naturally in the body of your notebook and keep text legible.

Slides improvements.

Overflowing slides now show a "scroll for more" hints, and slide container styling is simplified (#10363).

image

✨ Other enhancements

  • minor add db dialog UI cleanup (#10398)
  • Backend data source discovery (#10408)
  • Store JSON credentials as secrets or file paths (#10379)
  • Keep the reader banner visible while scrolling (#10390)
  • simplify slide container styles, and add docs (#10363)
  • Treat downstream mo.stop as scratchpad success (#10369)
  • Update LLM model catalog (#10240)
  • Container credentials and allow_http for S3 stores (#10356)
  • Upgrade codemirror-sql (#10350)
  • Make copy line up/down hotkeys editable (#10241)
  • "Scroll for more" hint on overflowing slides (#10305)
  • Bound file previews and offer download for unpreviewable files (#10277)
  • Add callout titles, unify callout and admonition styling (#10312)

🐛 Bug fixes

  • Prevent duplicate row header columns (#10412)
  • Do not echo kernel-pushed anywidget state back on save_changes (#10410)
  • Correct MCP streamable_http_client import name (#10388)
  • Use load_catalog for pyiceberg when no catalog options set (#10409)
  • Validate named DuckDB connections (#10400)
  • Raise viewer banner above the app header (#10411)
  • fix typing-extensions import error on 3.11 (#10406)
  • Stop terminal Ctrl-C from killing the kernel on Windows (#10370)
  • Detect marketplace-installed pair skills (#10385)
  • Restore scratchpad editor after panel hide (#10384)
  • Upgrade codemirror-languageserver to v2 (#10355)
  • Use --file path instead of --session for pair prompt (#10367)
  • cap mcp to 2.0 (#10373)
  • Scroll horizontally when navigating to an off-screen column (#10354)
  • fix column summary chart warnings and edge cases for null cols (#10317)
  • Respect actual schema/catalog when dropping in-memory SQL tables (#10357)
  • Wrap long code lines in WebPDF export (#10295)
  • Quote DuckDB identifiers when dropping in-memory tables (#10341)
  • Load Optional Dependencies settings on the home page (#10351)
  • Ignore inactive session messages (#10330)
  • Strip display.custom_css from notebook script metadata (#10323)
  • Sanitize non-BCP-47 browser locales that crash the frontend (#10318)

📚 Documentation

  • Build llms.txt locally as a compact index instead of crawling the site (#10383)
  • Sync Traditional Chinese README with English (#10364)
  • Link to marimo.io/pair, not github (#10311)

📝 Other changes

  • Add code lens linking datasources, buckets, and caches to panels (#10161) (254ee01)
  • Preview SVG and text-based media in file sidebar (#10187) (4eda78b)
  • Stop scratchpad console cross-delivery between concurrent executes (#10036) (bbed512)
  • Relax pymdown-extensions upper bound to allow 11.x (#10332)
  • Fix typo in matrix.py documentation (#10337)
  • Unify Ctrl+Enter, Shift+Enter and Submit button behavior (#8324) (#9836) (bc203a4)
  • Update dependency postcss to v8.5.12 [security] (#10310)

Contributors

Thanks to all our community and contributors who made this release possible: @Abdulrehman-PIAIC80387, @akshayka, @app/github-actions, @app/renovate, @Dhruv-kys, @gsmith-alvarez, @kirangadhave, @koaning, @Light2Dark, @manzt, @mscolnick, @peter-gy, @Ploruto, @thliang01, @tschm

And especially to our new contributors:

Full Changelog: 0.23.15...0.23.16

Don't miss a new marimo release

NewReleases is sending notifications on new releases.