What's Changed
This release rides on the coattails of the [uv package manager](https://github.com/astral-sh/uv) to introduce exciting new features related to package reproducibility!
With this release, it's now possible to create standalone notebook files that have package requirements embedded in them as a comment, using [PEP 723's inline metadata](https://peps.python.org/pep-0723/)! marimo can generate these requirements for you and even start notebooks in isolated virtual environments.
These features are only possible because unlike Jupyter notebooks, marimo notebooks are stored as pure Python files, letting them take advantage of the exciting new developments in the Python ecosystem such as `uv` and PEP 723.
Highlights
**📦 Automatic tracking of packages used by notebooks.** marimo can now automatically serialize package dependencies in notebook files as inline script metadata, generating a comment header that looks something like this:
python
/// script
requires-python = ">=3.11"
dependencies = [
"pandas",
"altair",
]
///
This lets you create standalone notebook files that have their package requirements serialized in them.
Enable package tracking in the notebook settings:
![image](https://github.com/user-attachments/assets/05d3eb38-88c6-48d8-b639-5bedf9906891)
_Note: This feature requires `uv`_.
**🚀 Run marimo notebooks in package sandboxes.** Use
bash
marimo edit --sandbox notebook.py
to edit a Python notebook in a completely isolated virtual environment! This increases reproducibility and helps prevent environment pollution. If your notebook has inline script metadata, marimo will automatically install the enumerated packages before running the notebook; if it doesn't, marimo will prompt you to install the missing packages on notebook startup.
This exciting new workflow is only made possible thanks to `uv`, which is blazingly fast.
Other improvements
- You can now [customize marimo CSS](https://docs.marimo.io/guides/theming.html); customization is limited today but will grow over time.
- Dataframe rows are now paginated server-side, improving performance of notebooks that output alrge dataframes.
- ANSI color support is now available in stderr.
- A dedicated "stop" button has been added to the marimo editor, making interrupting cell execution more reliable (no more accidentally running a cell after interrupting it).
All changes
* improve: Enable ANSI support in stderr by wasimsandhu in https://github.com/marimo-team/marimo/pull/2110
* fix: publish docker containers for arm64 (mac compat) by mscolnick in https://github.com/marimo-team/marimo/pull/2111
* chore: add biome-lint to remove unused imports by mscolnick in https://github.com/marimo-team/marimo/pull/2116
* chore: enable more biome rules by mscolnick in https://github.com/marimo-team/marimo/pull/2117
* improvement: paginate mo.ui.table rows (server-side rows) by mscolnick in https://github.com/marimo-team/marimo/pull/2115
* docs: pre-built containers by mscolnick in https://github.com/marimo-team/marimo/pull/2118
* improvement: split run and stop buttons by akshayka in https://github.com/marimo-team/marimo/pull/2119
* [pre-commit.ci] pre-commit autoupdate by pre-commit-ci in https://github.com/marimo-team/marimo/pull/2121
* feat(mo.ui.table): Freeze table columns by wasimsandhu in https://github.com/marimo-team/marimo/pull/2122
* fix: Show outputs below in HTML export if configured by mscolnick in https://github.com/marimo-team/marimo/pull/2129
* fix: add bokeh theme color to iframe background by mscolnick in https://github.com/marimo-team/marimo/pull/2128
* feat: custom css by mscolnick in https://github.com/marimo-team/marimo/pull/2120
* fix: catch/log oserror by akshayka in https://github.com/marimo-team/marimo/pull/2131
* fix: consolidate shadows to be easily overriden by mscolnick in https://github.com/marimo-team/marimo/pull/2130
* feat: configure auto-add script metadata to notebook file, when using uv by mscolnick in https://github.com/marimo-team/marimo/pull/2102
* feat: marimo edit --sandbox nb.py by mscolnick in https://github.com/marimo-team/marimo/pull/2134
* docs: --sandbox by mscolnick in https://github.com/marimo-team/marimo/pull/2136
* docs: add package management to toc by akshayka in https://github.com/marimo-team/marimo/pull/2135
* smoke-tests: for theming different libraries by mscolnick in https://github.com/marimo-team/marimo/pull/2145
* 0.8.4 by akshayka in https://github.com/marimo-team/marimo/pull/2149
**Full Changelog**: https://github.com/marimo-team/marimo/compare/0.8.3...0.8.4