Releases: marimo-team/marimo
0.11.2
What's Changed
- feat: add searchable dropdown functionality by @devin-ai-integration in #3723
- fix: update value when clearing chat messages by @devin-ai-integration in #3729
- fix: polars category filtering by @mscolnick in #3744
- fix: merge anywidget partial updates by @mscolnick in #3745
Full Changelog: 0.11.1...0.11.2
0.11.1
Bug fixes and improvements.
What's Changed
- fix: code scanning alerts by @dmadisetti in #3689
- fix: mo.ui.chat config casing by @mscolnick in #3690
- smoke-test: sqlmodel with psql by @mscolnick in #3693
- fix: include build_hook.py in source distribution by @devin-ai-integration in #3699
- feat: embed independent copies of app objects by @akshayka in #3695
- fix(router): Correct router name from "terminal" to "packages" by @metaboulie in #3697
- fix: per session app.embed() by @akshayka in #3694
- fix: use r-string when converting to markdown by @mscolnick in #3701
- compat: interrupt using KeyboardInterrupt by @akshayka in #3703
- fix: set select colour to blue in dark mode by @Light2Dark in #3707
- improvement: pretty gemini responses in output, streaming / non-streaming by @mscolnick in #3705
- docs: Update appropriate keyboard shortcut by @Haleshot in #3708
- examples: GPU notebooks with modal by @akshayka in #3711
- feat: (experimental) inline edits by @mscolnick in #2453
- improvement: click package icon to change the package manager by @mscolnick in #3691
- fix: apply borderless view in dark mode by @Light2Dark in #3716
- fix(deps): update codemirror dependencies by @renovate in #3717
- docs: play videos inline for mobile compat by @akshayka in #3720
- fix: anywidget partial updates by @mscolnick in #3721
- docs: convert to mp4 for webkit compatibility by @akshayka in #3730
- chore: minor updates for narwhals 1.26 by @MarcoGorelli in #3740
- fix: cache favicon requests by @mscolnick in #3736
- fix: add checks for code outside sql statement by @Light2Dark in #3742
Full Changelog: 0.11.0...0.11.1
0.11.0
Highlights ⭐
- SQL Engine Support. Connect to various databases like postgresql, mysql, snowflake and more, using your preferred SQL engine.
This release adds support for using for multiple SQL connection libraries, such as SQLModel and SQLAlchemy. You can now define SQL connections in your code like:
import sqlalchemy
import sqlmodel
import duckdb
# Create an in-memory SQLite database with SQLAlchemy
sqlite_engine = sqlachemy.create_engine("sqlite:///:memory:")
# Create a Postgres database with SQLModel
postgres_engine = sqlmodel.create_engine("postgresql://username:password@server:port/database")
# Create a DuckDB connection
duckdb_conn = duckdb.connect("file.db")
And then select which connection to use in the SQL cell.
h/t @Light2Dark
- Markdown file-format improvements - Markdown notebooks (i.e.
marimo edit notebook.md
) has an improved syntax format:python {.marimo}
. You can also use SQL cells in the markdown file-format, usingsql {.marimo}
. To learn more, runmarimo tutorial markdown-format
h/t @dmadisetti
-
Markdown syntax - Added support for details, admonitions, and emojis in markdown
-
Performance & Reliability - Lots of bug fixes for better resource cleanup and memory management, as well as disabling features not used in run-mode.
What's Changed
- feat: SQL engines by @mscolnick in #3563
- update: update code block to ```python {.marimo} by @dmadisetti in #3387
- chore: add hatch build hook to build marimo when installed from github by @mscolnick in #3639
- docs: typo by @mscolnick in #3641
- tests: add tests for try-format by @mscolnick in #3643
- fix: duckdb querying dataframes with engines by @mscolnick in #3642
- fix: show 'Clear Output' cell action when console has output by @Light2Dark in #3650
- fix(deps): update all npm non-major dependencies by @renovate in #3655
- improve: run mode performance for streams by @akshayka in #3648
- chore(deps): update dependency scikit-bio to >=0.6.3 by @renovate in #3647
- chore(deps): update dependency google-generativeai to v0.8.4 by @renovate in #3646
- fix: correctness of formatting by @mscolnick in #3644
- improvement: removed border and and fix tooltips when multi-column view by @Light2Dark in #3649
- fix: date range not defaulting to
start
andstop
by @Hofer-Julian in #3651 - chore: update year in copyright notice script by @akshayka in #3657
- perf: resource cleanup, don't start module reloader in run mode by @akshayka in #3656
- chore: add PERF ruff rules by @mscolnick in #3662
- chore: enable preview rules from ruff by @mscolnick in #3663
- fix: handle TOML parsing errors in config reader by @devin-ai-integration in #3671
- fix: differentiate methods and properties in dark theme by @devin-ai-integration in #3673
- docs: markdown extensions by @akshayka in #3658
- improvement: inline layouts when exported to wasm by @mscolnick in #3661
- flaky: add warning for flaky test opposed to failure by @dmadisetti in #3674
- fix: md format fix for columns and sql engine by @dmadisetti in #3664
- improvement: show engine's tables in the datasources panel by @mscolnick in #3665
- fix: filtering datasets based on variables by @mscolnick in #3676
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #3678
- improv: update the sql dropdown to a better design and show disconnected engine by @Light2Dark in #3682
- Add openai-whisper to module name list by @koaning in #3681
- chore(deps): update dependency vitest to v3.0.5 [security] by @renovate in #3684
- smoke test: docstring_to_markdown by @mscolnick in #3686
- fix: checks whether latestEngineSelected is in list of engines by @Light2Dark in #3685
- fix: sql dropdown when initialized by @mscolnick in #3687
New Contributors
- @Hofer-Julian made their first contribution in #3651
Full Changelog: 0.10.19...0.11.0
0.10.19
This release contains some important improvements to memory consumption.
What's Changed
- fix: kernel globals memory leak in run mode by @akshayka in #3634
- fix: improve memory usage on variable previews by @mscolnick in #3635
- perf: skip variable broadcast in run mode by @mscolnick in #3636
- fix: responsive Vega chart sizing with media queries by @mscolnick in #3637
Full Changelog: 0.10.18...0.10.19
0.10.18
Highlights ⭐
- 🐳 Added DeepSeek support and documentation for AI completions
- 🖥️ New
mo.ui.app_meta().request
API to access incoming request context (headers, query params, and user info) - 🐛 Various bug fixes to
mo.Thread
, Altair charts, and table formatting.
What's Changed
- fix: allow editable installs when devloping locally with sandbox by @mscolnick in #3568
- feat: add wasm watch and some docs on set up by @Light2Dark in #3572
- fix: support running in FIPS-enabled environments by @marcodlk in #3571
- chore: deflake tmpdir cleanup in tests by @akshayka in #3573
- docs: fix admonition rendering by @Haleshot in #3577
- chore(deps): update all storybook dependencies to ^8.5.1 by @renovate in #3582
- fix: lower timeout in version check by @mscolnick in #3585
- fix: handle timezone in samples by @mscolnick in #3584
- feat: add configurable width to mo.sidebar() (#3570) by @devin-ai-integration in #3591
- fix: support altair map selection when vconcat or hconcat by @mscolnick in #3590
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #3592
- fix: scope ag-grid styles to plugin to avoid style pollution by @mscolnick in #3601
- docs: add DeepSeek configuration to AI completion guide by @Haleshot in #3597
- Add DeepSeek chatbot example by @Haleshot in #3598
- fix: Simplify and resolve pandas snippet error by @Haleshot in #3605
- fix: persistent loader save path (+ feat: test tweaks / json loader for interpretability) by @dmadisetti in #3595
- example: nvidia nims endpoint by @mscolnick in #3608
- tidy: make tests stricter to better capture cache state invalidation by @dmadisetti in #3609
- fix: handle numeric formatting in table widgets by @devin-ai-integration in #3618
- fix: correct time formatting for minutes and seconds in cell status by @devin-ai-integration in #3621
- feat: add mo.ui.app_meta().request by @mscolnick in #3619
- fix: mo.Thread communication to output area by @akshayka in #3611
- fix: printing in mo.Threads by @akshayka in #3628
- added CLA notes to the CONTRIBUTING guide by @paddymul in #3633
New Contributors
Full Changelog: 0.10.17...0.10.18
0.10.17
What's Changed
Quality-of-life improvements:
- 🪟 Improvements to multi-column notebooks
- 🕐 A bug fix for timezone rendering in altair charts
- 💾 API improvements to persistent caching
All changes
- fix: column grouping by @mscolnick in #3547
- style: column background by @akshayka in #3544
- improvement: support data uris in table by @mscolnick in #3546
- chore(deps): update build tools by @renovate in #3542
- docs: document public folder by @mscolnick in #3548
- docs: fix some deprecated links, old components by @Light2Dark in #3552
- chore(deps): update dependency vite to ^5.4.12 by @renovate in #3551
- docs: render katex by @mscolnick in #3553
- chore(deps): update dependency vite to ^5.4.13 by @renovate in #3555
- chore: add experimental flags to 'marimo env' by @mscolnick in #3556
- fix: allow to replace with empty, and reset matches after replace by @Light2Dark in #3559
- feature: allow persistent_cache to be used as a decorator by @dmadisetti in #3550
- fix: transforms on dataframe to be reactive by @Light2Dark in #3566
- docs: update caching user guide by @akshayka in #3562
- fix: altair timezone rendering by @mscolnick in #3567
Full Changelog: 0.10.16...0.10.17
0.10.16
Highlights
📈 Tracing panel: This release includes a new helper panel for cell tracing and observability. This can be used for real-time tracking of slow cells, visualizing execution order, and monitoring of execution statuses. This feature was built by @Light2Dark.
videoo.mp4
What's Changed
- chore: add Japanese README file and update main README to link it by @kiwamizamurai in #3511
- fix: typo in readme japanese filename (broken link) by @akshayka in #3514
- feat: GA tracing panel by @mscolnick in #3515
- docs: fix notebook location docs by @mscolnick in #3516
- fix: update known ai models by @mscolnick in #3517
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #3520
- chore(deps): update dependency vitest to v3 by @renovate in #3519
- chore(deps): update testing dependencies by @renovate in #3518
- improvement: position hide code button above or below depending on outputArea by @Light2Dark in #3522
- chore: pyodide to 0.27.1 by @mscolnick in #3525
- fix: single line magic conversion by @akshayka in #3527
- add example notebook using columns by @akshayka in #3530
- fix: fallback to oringinal string when cannot parse formatted number by @mscolnick in #3529
- cache iteration: various fixes- will invalidate exisiting cache by @dmadisetti in #3480
- improvement: add details block to pymdown by @mscolnick in #3533
- improvement: add split cell to cell dropdown, command palette, and fix undo split cell by @mscolnick in #3534
- chore(deps): update dependency vite to v5.4.12 [security] by @renovate in #3535
- fix: add cell data-attributes in read/present by @mscolnick in #3538
New Contributors
- @kiwamizamurai made their first contribution in #3511
Full Changelog: 0.10.15...0.10.16
0.10.15
Highlights
mo.download
allows for (async) functions as that data
arg
# JSON download with lazy loading
async def get_json_data():
await asyncio.sleep(1)
_data = {"message": "Hello", "count": 42}
return json.dumps(_data).encode("utf-8")
download = mo.download(
data=get_json_data,
filename="data.json",
label="Download JSON",
)
download
What's Changed
- fix: overflow output in fullscreen by @Light2Dark in #3490
- docs: force trailing slash by @mscolnick in #3496
- Ensure return code non-zero on cli error by @hwine in #3499
- ci: ignore uv post cleanup errors on windows by @mscolnick in #3498
- fix(deps): update dependency katex to v0.16.21 [security] by @renovate in #3491
- fix: add data attributes for the cell to serve as selectors by @mscolnick in #3497
- docs: show CLA in governance.md by @mscolnick in #3495
- fix(vim): restore j/k cell navigation broken by #3395 by @metaboulie in #3505
- feat: add initial selection table by @Light2Dark in #3509
- improvement: lazy download and smarter downloads by @mscolnick in #3506
- Improve reporting of unparsable code by @pentlander in #3500
- improvement: use module mapping when running auto-install in micropip by @mscolnick in #3507
- load snippets location from config by @bennyweise in #3462
- fix: dont fail on socket.gethostbyname by @mscolnick in #3512
New Contributors
- @pentlander made their first contribution in #3500
- @bennyweise made their first contribution in #3462
Full Changelog: 0.10.14...0.10.15
0.10.14
What's Changed
Highlights
🪟 Lay out notebooks in columns! Thanks to work by @wasimsandhu, you can now arrange cells into multiple columns while editing — use your screen real-estate to the fullest! (Docs.)
📃 Edit notebooks using your own editor. Announcing initial support for one of our most asked-for features: you can now edit notebook files using your editor of choice (neovim, Cursor, VS Code, ...) and stream changes to a running edit session. To opt-in, start your edit session with --watch
:
marimo edit --watch my_notebook.py
When editing my_notebook.py
in your text editor, changes are sent to the browser on save.
Expect quality-of-life improvements to the external editor experience in the future.
🏃 Re-run all cells. A new command in the command palette lets you re-run all cells; you can assign a keyboard shortcut to this in the notebook settings.
All changes
- docs: add %pip usage instruction to Jupyter guide by @Haleshot in #3431
- fix: handle marimo[extras] in --sandbox and package installation by @mscolnick in #3425
- fix(deps): update ruff, mkdocs, pytest by @renovate in #3427
- fix(deps): update dependency @textea/json-viewer to v4 by @renovate in #3430
- Typo: pandas -> polars by @ushuz in #3434
- fix: use relative path in asgi redirect by @mscolnick in #3433
- feat: marimo edit --watch by @mscolnick in #3437
- improve: always add marimo in sandbox by @akshayka in #3439
- docs: update watching documentation by @akshayka in #3440
- docs: fix tiny typo by @akshayka in #3442
- Fix broken link by @hattajr in #3443
- fix: Add missing open bracket in docs/faq.md by @AVHopp in #3446
- fix: fallback on readText permisisons by @mscolnick in #3444
- feat: re-run all cells action (useful for external queries/dashboards) by @mscolnick in #3448
- docs: fix links, add ci by @mscolnick in #3450
- improvement: intelligently keep order of cells when running --watch by @mscolnick in #3451
- docs: add llm.txt file by @mscolnick in #3452
- fix: missing package detection by @akshayka in #3457
- improvement: multi-column in app view, docs, GA by @mscolnick in #3454
- fix: empty notebooks should have empty venvs in sandboxes by @akshayka in #3456
- fix: conversion of ipynb files with multiple definitions by @akshayka in #3458
- Update key_concepts.md by @XenoBytesX in #3463
- fix: rename llm.txt to llms.txt in workflow by @Haleshot in #3465
- fix: sandbox command construction by @akshayka in #3468
- feat(hotkeys): add configurable completion selection movement by @metaboulie in #3475
- fix: raise valueError for pageSize > 200 by @Light2Dark in #3472
- Fix #3441 - Primitive get_sample_values by @devin-ai-integration in #3467
- Add fallback parameter to QueryParams and CLIArgs .get() method by @devin-ai-integration in #3479
- ci: optimize workflow timeouts based on timing analysis by @devin-ai-integration in #3481
- docs: add glightbox by @mscolnick in #3483
- test: add pytest-timeout in cli test by @mscolnick in #3482
- chore: move more gh actions to uv by @mscolnick in #3487
- tests: fix flakey dataframe FilterTransform test by @mscolnick in #3488
- Support shells on windows (with extensions) by @hwine in #3459
- Improve Copilot Integration by @devin-ai-integration in #3484
- docs: convert gifs to webm for better performance by @mscolnick in #3478
New Contributors
- @ushuz made their first contribution in #3434
- @AVHopp made their first contribution in #3446
- @XenoBytesX made their first contribution in #3463
- @hwine made their first contribution in #3459
Full Changelog: 0.10.13...0.10.14
0.10.13
What's Changed
This release contains many quality of life improvements, including contributions from two new contributors! 🎉
- docs: open playground notebooks from GitHub URL by @akshayka in #3399
- fix: improve bookmarklet functionality for GitHub notebook URLs by @Haleshot in #3400
- fix: add vega-datasets package to framework examples by @RaulPL in #3405
- fix: better chatbot input & bubble by @Light2Dark in #3404
- improvement: toast a link to documenation for magic command replacements by @mscolnick in #3408
- docs: more slash redirects by @mscolnick in #3410
- wasm: save notebook for when exporting as html by @mscolnick in #3413
- improvement: hide_code for markdown when converting from ipynb by @mscolnick in #3417
- fix: remove toast for notebook saved by @mscolnick in #3418
- improvement: improve blur for stale cell outputs by @Light2Dark in #3423
- docs: overview page on sharing notebooks from github by @akshayka in #3422
- docs: module autoreloading by @akshayka in #3420
- docs: open in marimo badge by @akshayka in #3419
- docs: fix broken links in html by @jannisko in #3424
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #3416
- fix(deps): update dependency ruff to ~=0.9.1 by @renovate in #3426
- fix(deps): update dnd-kit monorepo (major) by @renovate in #3429
- fix(deps): update dependency react-error-boundary to v5 by @renovate in #3428
New Contributors
Full Changelog: 0.10.12...0.10.13