0.19.8
This release introduces notebook galleries with OpenGraph previews, along with anywidget improvements, AI enhancements, and many bug fixes.
⭐️ Highlights
Serve a gallery of notebooks
You can now serve multiple marimo notebooks as a gallery using marimo run with folders or multiple files. This is useful for showcasing collections of notebooks, tutorials, or dashboards in a single browsable interface.
# Serve all notebooks in a folder
marimo run my_notebooks/
# Serve multiple folders and files
marimo run tutorials/ examples/ standalone.py
# Run with sandboxed environments per notebook
marimo run my_notebooks/ --sandbox
Rich gallery previews with OpenGraph metadata
Gallery cards can be customized with OpenGraph metadata. Define metadata in your notebook's PEP 723 script block to control how each notebook appears in the gallery:
[tool.marimo.opengraph]
title = "My Analysis"
description = "Exploratory data analysis of Q4 results"
image = "https://example.com/thumbnail.png"
For dynamic metadata, define a generator function that computes OpenGraph fields at runtime.
You can also auto-generate thumbnail images for your notebooks using marimo export thumbnail:
# Generate thumbnails (code-only, no execution)
marimo export thumbnail my_notebooks/
# Generate thumbnails with notebook execution for richer previews
marimo export thumbnail my_notebooks/ --execute --sandbox
Thumbnails are stored in the __marimo__/ directory alongside your notebooks and served automatically in gallery mode.
Attach images to "Generate with AI"
You can now attach images when using "Generate with AI" to provide visual context for code generation. This is useful for sharing mockups, charts, or screenshots that help the AI understand what you're trying to build.
✨ Enhancements
- Add attachments for 'Generate with AI' & ensure UI consistency (#7996)
- Update models.yml for Opus 4.6 (#8142)
- Add proxy_path support for ClickHouse Connections (#8128)
- Require playwright installation for pdf export (#8121)
- Improve design of chat mode selector (#8114)
- Set markdown to hide after conversion for consistency (#8117)
- Anywidget dynamic imports in static notebooks (#8110)
- Rich notebook previews through OpenGraph metadata (#8097)
- Graduate performant table charts and chat modes from experimental ()
🐛 Bug fixes
- Fix spurious "truth value of UIElement" warning for anywidgets (#8148)
- Decouple anywidget model and view (#8124)
- Support pandas 3.0 str col (#8146)
- Follow ruff rules for formatting trailing space after imports/ functions (#8086)
- Search functionality for DataFrames with index columns (#8136)
- Support multiple vfile registries with shared inmemorystorage (#8145)
- Don't error when writing UI elements values that already exist (#8147)
- Avoid unnecessary throwing error in delete cell (#8134)
- Remove some deprecation warnings ()
📚 Documentation
- Clarify markdown section in Jupyter users tutorial (#8092)
📝 Other changes
- Update all biome dependencies to v2.3.13 (#8044)
- Upgrade pytest plugins, upperbound sqlglot (#8077)
- Update WebSocket URL generation for agents to work on remote deployments (#8065)
- Update all npm non-major dependencies (#8085)
- Add missing type field to control requests (#8071)
Contributors
Thanks to all our community and contributors who made this release possible: @dmadisetti, @gvwilson, @koaning, @Light2Dark, @lucharo, @manzt, @maruthgoyal, @mscolnick, @peter-gy, @marcodlk
New Contributors
- @bxff made their first contribution in https://github.com/marimo-team/marimo/pull/8083
- @gvwilson made their first contribution in https://github.com/marimo-team/marimo/pull/8087
- @maruthgoyal made their first contribution in https://github.com/marimo-team/marimo/pull/8128
- @Deufel made their first contribution in https://github.com/marimo-team/marimo/pull/7681
Full Changelog: https://github.com/marimo-team/marimo/compare/0.19.7...0.19.8