0.6.0
What's Changed
Version 0.6.0 includes two big new features — first-class markdown support and token-authentication — and small quality of life improvements.
Highlights
marimo ❤️ markdown: marimo edit nb.md
. marimo now supports markdown as a first-class file format. This means that if you're working on notebook that's heavy on text, you can write your notebook in markdown using an editor of your choice (VSCode, vim — anything you like!). Save it as nb.md
, then fire up the marimo editor to interact with it — marimo edit nb.md
— or run it as an app with marimo run nb.md
.
When working with markdown, create a notebook cell using a special fenced code block that starts with {python}
(note the braces!).
```{python}
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4])
```
Here's a full example:
# Hello, world!
This is a markdown powered notebook.
```{python}
import random
random.randint(0, 1000)
```
```{python, hide_code=true}
import marimo as mo
```
The markdown file format is not meant as a replacement for the Python one, but it gives you the flexibility to choose the format that's best for your workflow. You can convert markdown notebooks to Python with
marimo convert nb.md > nb.py
and export Python to markdown with
marimo convert nb.py > nb.md
marimo export notebook.md > notebook.py
Check out our tutorial to learn more.
Huge shout out to @dmadisetti for contributing the markdown support! 💪🎉
Token-based authentication 🔑. marimo now runs with token-based authentication by default — this makes sure that only trusted parties can access the marimo server. Most users won't notice changes to their workflow. To learn more, check out the docs.
Export as ipynb
📝. Export marimo notebooks as Jupyter notebook files with marimo export ipynb nb.py -o nb.ipynb
.
Split cell hotkey ⌨️: Split cells with our new hotkey: Ctrl/Cmd-Shift-'
.
Breaking changes
mo.hstack
and mo.vstack
now require you to use keyword args (except for the list of items).
New Contributors
Welcome to the marimo family!
- @robmck1995 made their first contribution in #1381
- @hattajr made their first contribution in #1387
- @maks-ivanov made their first contribution in #1373
Full changelog
- fix: mo.lazy rendering by @mscolnick in #1355
- fix: cloning of forms in arrays/dicts by @akshayka in #1357
- fix: isolate modules in module watcher by @akshayka in #1358
- feat: basic-auth support and minimal login page by @mscolnick in #1363
- fix: readme images when displayed off github by @mscolnick in #1366
- fix: scroll to variable by @mscolnick in #1365
- fix: circular dep in wasm controller by @mscolnick in #1369
- improvement: wasm startup perf by @mscolnick in #1371
- improvement: seperate worker for saving by @mscolnick in #1375
- feat: marimo export ipynb by @akshayka in #1367
- Merge SetUIElementRequests on the backend by @akshayka in #1374
- fix: respect auto-instantiate while in wasm by @mscolnick in #1378
- fix: race-condition when connecting to websocket sometimes by @mscolnick in #1377
- refactor: lazy-load vega plugins by @mscolnick in #1376
- feat: Hotkey for splitting cells by @robmck1995 in #1381
- Update editor_features.md by @hattajr in #1387
- feat: marimo edit/run markdown.md by @dmadisetti in #1332
- Skip disabled cells in script by @maks-ivanov in #1373
- chore: skip test_run_disabled_cells for windows by @mscolnick in #1390
- chore: add pre-commit, migrate to biomejs by @mscolnick in #1389
- improvement: enable markdown support in the fe by default by @mscolnick in #1391
- improvement: add footer to sidebar and disbale some Html fluid apis (callout, batch) by @mscolnick in #1392
- fix: enable rpcs unnamed UI elems by @akshayka in #1393
- small playwright fix by @akshayka in #1394
- fix: cleanup of UIElements by @akshayka in #1395
- fix tutorial: hstack by @akshayka in #1399
- 0.6.0 by @akshayka in #1400
Full Changelog: 0.5.2...0.6.0