Releases: marimo-team/marimo
0.13.10
What's Changed
- fix: default to syntax highlighting in markdown when Editor is not ready by @mscolnick in #4929
- fix: checkbox width by @mscolnick in #4932
- fix: show update when error decorations change by @mscolnick in #4930
- docs: Add link to vim keybindings section in overview.md by @AH-Merii in #4940
- fix: json renderer for edge case matching by @mscolnick in #4938
- fix: checkbox width fix: altair timestamp on pandas by @mscolnick in #4933
- Update faq.md; Functions/classes now importable by @cannin in #4941
- fix: column resize handler not always showing up by @Light2Dark in #4935
- fix: max_columns in tables by @Light2Dark in #4945
- fix: ignore click 8.2.0 by @mscolnick in #4948
New Contributors
Full Changelog: 0.13.9...0.13.10
0.13.9
What's Changed
- feat: added disabled prop to number field by @bjoaquinc in #4919
- improvement: add tiered cache store by @mscolnick in #4918
- fix: cell language metadata initialization when converting python to markdown/sql by @mscolnick in #4921
- CI build improvements by @schlich in #4913
- fix: Fix execution hash regression by @dmadisetti in #4920
Full Changelog: 0.13.8...0.13.9
0.13.8
What's Changed
- feat:
mo.watch.{file, directory}: reactively watch changes to files and directory structures, letting you write notebooks that automatically update when files on disk update. Learn more at our docs: https://docs.marimo.io/api/watch/.
- feat: added disabled prop to slider by @bjoaquinc in #4890
- improvement: add stop button in chat sidebar by @mscolnick in #4893
- fix: patch polars write_json in wasm with write_csv by @mscolnick in #4895
- fix: prevent selecting undefined when deselect (multiselect plugin) by @Light2Dark in #4896
- fix: resolve relateive paths in uv.sources by @mscolnick in #4894
- tests: cleanup sys.modules patches by @mscolnick in #4897
- improvement: add runtime.default_sql_output by @mscolnick in #4891
- fix: scroll to bottom on createNewCell by @Light2Dark in #4903
- fix: row viewer panel for many columns by @Light2Dark in #4899
- feat: add binning to charts by @Light2Dark in #4898
- fix: to_json for pandas uuid by @mscolnick in #4904
- fix: prompt pandas installation instead of polars when duckdb parsing fails by @Light2Dark in #4905
- feat: mo.watch.{file, directory} by @dmadisetti in #4884
- fix: support links.marimo.app by @mscolnick in #4910
- fix: code output in markdown by @mscolnick in #4911
- improve: instant slide swipes by @akshayka in #4912
- fix: missing skip by @dmadisetti in #4916
- fix: potential rtc deadlock by @mscolnick in #4908
- fix: gate loro < 3.11 by @dmadisetti in #4917
- fix: put Inspector in typecheck by @mscolnick in #4915
- improvement: style consistently by @mscolnick in #4909
Full Changelog: 0.13.7...0.13.8
0.13.7
Highlights ⭐
- 📊 Table Enhancements - Added row expanded view for table data
- 🧵 Thread and asyncio Management - Improved
mo.threadlifecycle management and better handling of asyncio background tasks. - 🐛 Improved Debuggability - Added post-mortem debugging for failures, fixed PDB interactions to prevent hanging, and implemented restart cell functionality within debugging sessions for smoother troubleshooting.
What's Changed
- feat: Post mortem for debugging failures by @dmadisetti in #4816
- docs: correct on_change desc in
mo.ui.form.formby @AH-Merii in #4829 - fix: File level cache settings are not passed to store by @dmadisetti in #4832
- feat: add both left and right resize handlers to a column. by @Light2Dark in #4820
- feat: refresh db connections by @Light2Dark in #4834
- feat: row expanded view for table data by @Light2Dark in #4787
- fix: update common llm models by @mscolnick in #4838
- improvement: [rtc] migrate y-js to Loro by @mscolnick in #4831
- [rtc] awareness by @mscolnick in #4839
- chore: refactor markdown file, pull out completions by @mscolnick in #4844
- fix: support mairmo edit on marimo.app by @mscolnick in #4840
- chore: make LanguageAdapters stateless, store metadata in EditorState by @mscolnick in #4845
- chore: refactor cm language files by @mscolnick in #4846
- fix: ibis data types, from upgrade by @mscolnick in #4847
- fix: Issue side effects to invalidate cache blocks by @dmadisetti in #4848
- fix: only show one stdin by @mscolnick in #4853
- fix: brittle code extraction broken with live marimo.app/e?slug=xxxx by @dmadisetti in #4851
- fix: [rtc] sync language metadata by @mscolnick in #4850
- fix: prevent hanging PDB on interact by @dmadisetti in #4852
- improvement: show toast for waiting on stdin by @mscolnick in #4854
- fix: uv, start tutorial by @ZacHooper in #4856
- fix: Restart cell in pdb by @dmadisetti in #4855
- docs: add relevant video for
mo.output.replaceby @Haleshot in #4857 - fix: don't block on background tasks created in cells by @mscolnick in #4858
- fix: narwhals.pyarrow does not support mean/quantile by @mscolnick in #4860
- fix: align font size for line numbers with the code editor by @yjoer in #4862
- fix: doc errors by @dmadisetti in #4865
- feat: mo.thread lifecycle by @akshayka in #4782
- feat: added input field to ui slider by @bjoaquinc in #4870
- Support system message for Gemini by @guyrosin in #4869
- fix: [rtc] edge cases for auto-run and focus by @mscolnick in #4861
- feat: updates to row viewer panel by @Light2Dark in #4866
- Format signatures in LSP hover and completion documentation by @krassowski in #4864
- fix: drop internal row id in
table.valueby @mscolnick in #4873 - fix: don't fail if url does not have port by @mscolnick in #4872
- fix: add rtc feature-flag in Labs UI by @mscolnick in #4867
- fix:
typosfailing on pre-commit CI by @krassowski in #4874 - chore: test snapshots by @mscolnick in #4879
- fix: use keys in fe storage api by @mscolnick in #4881
- chore: charts tab name & refactor by @Light2Dark in #4841
- fix: start charts tab open if any configured for table by @mscolnick in #4882
New Contributors
- @ZacHooper made their first contribution in #4856
- @yjoer made their first contribution in #4862
- @guyrosin made their first contribution in #4869
Full Changelog: 0.13.6...0.13.7
0.13.5
What's Changed
- fix: pyspark schema and add example by @Light2Dark in #4781
- feat: added collapseAll function to CollapsibleTree to handle collapsing of all nested expanded nodes in one call by @bjoaquinc in #4780
- improvement: add css underline to traceback links by @mscolnick in #4778
- feat: gpu stats in footer by @mscolnick in #4777
- feat: highlight lines when cell has a traceback by @mscolnick in #4779
- Fix weakvaluedict issue by @brenoca in #4788
- chore: cleanup executor, prefer composition by @mscolnick in #4783
- improvement: refactor cache Store, add RESTStore by @mscolnick in #4789
- feat: added expandAllCells in cells.ts by @bjoaquinc in #4791
- fix: Do not construct a full app just to check parsing by @dmadisetti in #4790
- fix: broken ci on windows by @dmadisetti in #4793
- feat: add 'Insert breakpoint' in traceback by @mscolnick in #4795
- feat: added collapseAllCells() to cells.ts and tests by @bjoaquinc in #4799
- fix: tracing panel ordering, step height by @Light2Dark in #4808
- feat: updated useSectionCollapse methods by @bjoaquinc in #4807
- fix: logging and gracefully handle bad cache stores by @mscolnick in #4810
- fix: recovery with setup cell by @dmadisetti in #4804
- fix: use Path in test_files.py by @mscolnick in #4811
- improvement: support more parameter descriptions, e.g. in
polarsby @krassowski in #4786 - improvement: use script metadata for config and deps in pyodide by @mscolnick in #4806
- fix: fix micropip patch by @mscolnick in #4812
- lint: unspecified encoding in text file operations by @leventov in #4202
- internal: add entrypoints registries by @mscolnick in #4815
- feat: added collapseAll and expandAll hotkeys by @bjoaquinc in #4814
- fix: mo.cache args for docs by @dmadisetti in #4818
- fix: default to medium width for columns by @Light2Dark in #4822
New Contributors
Full Changelog: 0.13.4...0.13.5
0.13.4
What's Changed
- docs: question format fix by @dmadisetti in #4753
- fix: invalid f-string in markdown mode breaks by @dmadisetti in #4739
- docs: touch up file format / watching guide by @akshayka in #4757
- fix: per-block reference resolution by @akshayka in #4743
- fix: remove old vega css for forcing full width by @mscolnick in #4755
- fix: more md conversion edge cases by @mscolnick in #4764
- chore(deps): update dependency clickhouse-connect to >=0.8.17 by @renovate in #4759
- chore(deps): update dependency google-generativeai to v0.8.5 by @renovate in #4760
- fix: json encode memory view, and anywidget partial updates by @mscolnick in #4752
- feat: added expandAll function to CollapsibleTree to handle expansion of all nested nodes by @bjoaquinc in #4758
- tests: add cleanup to iceberg tests by @mscolnick in #4767
- fix(deps): update all npm non-major dependencies by @renovate in #4766
- docs: update markdown docs for f-strings by @akshayka in #4769
- improvement: documentation of parameters as show in the completion box by @krassowski in #4673
- feat: expand tqdm support by @brenoca in #4765
- fix(deps): update all npm non-major dependencies by @renovate in #4771
- docs: fix broken link in reusing_functions.md by @AH-Merii in #4773
- feat: support ipython display update by @brenoca in #4772
- fix: leading whitespace by @dmadisetti in #4774
- fix: cleanup ipython display updates by @mscolnick in #4776
Full Changelog: 0.13.3...0.13.4
0.13.3
Highlights ⭐
📝 Enhanced Markdown Experience: Seamlessly toggle between markdown string formats (r-string, f-string). Directly edit f-string markdown in the markdown editor, with Python autocompletion support inside { } brackets.
🖥️ Resizable Notebook Columns: Effortlessly resize columns when editing multi-column notebooks.
🧊 PyIceberg Integration: Connect seamlessly to your Iceberg tables via REST, Glue, and more, with automatic table population in the Datasources panel.
🗃️ Expanded Ibis, PySpark, Datafusion, and MotherDuck Support: Ibis connections now automatically populate databases and schemas in the Datasources panel. Additionally, easily connect to PySpark, Datafusion, and MotherDuck directly from the "Add Connection" UI.
🏖️ Sandbox Support for Markdown Format: Now you can use marimo edit --sandbox mynotebook.md to edit markdown notebooks in sandbox mode, automatically tracking and recording dependencies.
📝 Quarto Integration: Open .qmd files, export to multiple formats, or embed reactive marimo notebooks directly into your Quarto site using our Quarto extension.
📖 MkDocs Documentation: Enhanced documentation on how to embed interactive marimo notebooks and playgrounds directly into your MkDocs site using our MkDocs plugin.
💻 Nested Python Autocompletion in SQL: Enjoy Python autocompletion when parameterizing SQL queries using { } brackets.
📊 Improved Table and Chart Loading: Enhanced performance and faster loading times for tables and visualizations.
🐞 Bug Fixes & Stability Improvements: Resolved issues related to date rendering and enhanced compatibility for Windows users.
What's Changed
- improve: scratchpad hint on multiple definition error by @akshayka in #4647
- fix: max width on md admonition, details by @akshayka in #4659
- tweak: settings menu section titles by @akshayka in #4661
- Allow other "globals" to be caught for builtins by @dmadisetti in #4662
- chore: upgrade pnpm and pre-commit by @Light2Dark in #4652
- fix(deps): update all radix dependencies by @renovate in #4663
- fix: code editor refresh with new state by @Light2Dark in #4666
- feat: toggle between markdown formats and set r-string as default by @Light2Dark in #4648
- improvement: add python variable completions inside SQL {} by @mscolnick in #4657
- chore: upgrade react-compiler by @mscolnick in #4664
- docs: update README_Japanese.md with improved links and content clarity by @kiwamizamurai in #4606
- fix: don't autorun markdown on f-string. use jedi for python completion by @mscolnick in #4672
- fix: only bold on selection by @mscolnick in #4674
- docs: publish to cloudflare workers by @mscolnick in #4676
- docs: fix close admonition by @akshayka in #4678
- tidy: break up the sandbox api for use in quarto by @dmadisetti in #4679
- fix: return 'False' to let normal error handling occur by @dmadisetti in #4686
- fix: date rendering resulting in 'Invalid Date' by @mscolnick in #4697
- test: fix snapshots for tests by @Light2Dark in #4702
- fix: handle list when filtering rows with dates by @Light2Dark in #4700
- chore(deps): update all storybook dependencies to ^8.6.12 by @renovate in #4684
- fix(deps): update all radix dependencies by @renovate in #4677
- [FEAT:DEV] Adding
pixito manage developer system deps by @lucharo in #4406 - improvement: better formats for table and charts. avoid additional round trip by @mscolnick in #4670
- fix: use proxy scheme instead of server by @mscolnick in #4707
- fix: Template snaps by @dmadisetti in #4710
- example: databricks connect, add support for mo.ui.table.lazy by @mscolnick in #4711
- feat: pyiceberg catalog support by @mscolnick in #4715
- feat: enables sandboxing for markdown files by @dmadisetti in #4685
- chore: cleanup proxy-middleware cleanup logic by @mscolnick in #4717
- feat: Ibis SQL engine by @zilto in #4683
- docs: fix typo by @greenpine82 in #4724
- fix lsp server not work on windows by @CyberQin in #4718
- Ensure terminal uses monospace font by @koaning in #4727
- improvement: configurable toggle-line-comment by @mscolnick in #4728
- feat: add pyspark, datafusion and some fixes for db by @Light2Dark in #4719
- feat: resizable columns in notebook by @Light2Dark in #4698
- improvement: make ruff optional, fallback to global ruff, prompt to install by @mscolnick in #4731
- fix: handle more duckdb data types by @mscolnick in #4732
- improvement: configurable max-size for mo.ui.file() upload by @mscolnick in #4733
- example: make quak compatible with wasm/cors by @mscolnick in #4734
- feat: Exposes types if they are explicitly declared by the user by @dmadisetti in #4720
- fix: esc should always propagate in vim by @akshayka in #4735
- feat: added a transformAll function to id-tree.tsx by @bjoaquinc in #4738
- fix: MARIMO_NO_JS is more agressive about formatters by @dmadisetti in #4737
- improvement: add motherduck to database modal by @mscolnick in #4740
- docs: add ibis backend and list of supported db's by @Light2Dark in #4741
- style: adds left handle & style fixes for resizable component by @Light2Dark in #4745
- chore: upgrade codemirror by @mscolnick in #4748
- docs: document markdown format and add quarto/ mkdocs plugins by @dmadisetti in #4736
New Contributors
- @zilto made their first contribution in #4683
- @greenpine82 made their first contribution in #4724
- @CyberQin made their first contribution in #4718
Full Changelog: 0.13.2...0.13.3
0.13.2
What's Changed
- fix: export to html when using arrow files by @mscolnick in #4645
- feat: add --include-cloudflare for easy deployment of wasm to cloudflare workers by @mscolnick in #4643
- fix: remove additional lsp feature-flag check by @mscolnick in #4654
Full Changelog: 0.13.1...0.13.2
0.13.1
Highlights ⭐
- 🔍 Column filtering - You can now filter columns by their top most common values for improved data exploration and faster insights (#4531)
- ⚡ PySpark formatters - Seamlessly visualize PySpark DataFrames with our rich DataFrame viewer (#4615)
- 🔧 SQL formatting button - One-click SQL beautification right in your notebook cells, enhancing code readability and maintaining consistent query styling (#4640)
What's Changed
- docs: changelog by @akshayka in #4592
- chore: add setup_cell to released experiments by @akshayka in #4593
- docs: Update README_Chinese.md by @metaboulie in #4595
- improve: add --compile and --compile-bytecode flags to uv by @Light2Dark in #4578
- fix: improve graceful shutdown when running under uv by @akshayka in #4596
- Fix: typo in authentication.md by @AH-Merii in #4597
- fix: add warning about vegafusion not working with chart selection by @mscolnick in #4609
- fix: json parse nan/inf for altair charts by @Light2Dark in #4582
- feat: add col filtering by @Light2Dark in #4531
- fix: add mathjax ignore so code does not get malformed by @mscolnick in #4610
- fix: Filter by values styling and selection by @mscolnick in #4611
- docs(guides)📚: Add section on specifying alternative package indexes by @ericmjl in #4612
- fix: tuples in dataclasses were not picked up for json encoding by @dmadisetti in #4613
- feat: pyspark formatters by @mscolnick in #4615
- nit: account for empty slots by @dmadisetti in #4618
- example: pyiceberg connection by @mscolnick in #4617
- fix: block should ad marimo last if there is a setup cell by @dmadisetti in #4621
- fix: prevent double trigger for column filtering by @Light2Dark in #4625
- feat: extend support to tqdm update() by @brenoca in #4623
- fix: add more markdown css rules to clamp at desired max-width by @mscolnick in #4626
- improvement: support mark_text for altair selection by @mscolnick in #4630
- fix: cell actions and notebook settings scroll by @mscolnick in #4634
- chore(deps): update build tools by @renovate in #4633
- improvement: let single table expand to full contents by @mscolnick in #4628
- typechecking: fix ci by @dmadisetti in #4639
- feat: charts addition by @Light2Dark in #4608
- feat: add sql formatting button to sql cells by @mscolnick in #4640
- fix: show start to end for datetimes in col summary by @Light2Dark in #4637
- fix: sandbox alerts to stderr by @dmadisetti in #4635
New Contributors
- @AH-Merii made their first contribution in #4597
- @ericmjl made their first contribution in #4612
- @brenoca made their first contribution in #4623
Full Changelog: 0.13.0...0.13.1
0.13.0
What's Changed
Release 0.13.0 introduces includes a big new feature: it's now possible to import functions and classes from marimo notebooks, as long as they meet certain criteria. This lets you write code like:
from my_notebook import my_function, my_classThis feature, contributed by @dmadisetti, is yet another way that marimo's pure Python format makes your notebook code reusable.
Reusable functions and classes
Starting with 0.13.0, you can import top-level functions and classes defined in a marimo notebook into other Python scripts or notebooks using normal Python syntax, as long as your definitions satisfy the following criteria:
- The cell must define just a single function or class.
- The defined function or class can only refer to symbols defined in the setup cell, or to other top-level symbols.
The setup cell is a new addition to marimo: it is an optional cell in which you can include modules used by functions and classes you'd like your notebook to expose.
When you create a cell containing just a single function or class, marimo will provide hints in the bottom-right that tell you if the criteria are met ...
... or if not what needs to be done to meet the criteria:
To learn more, visit our docs.
More legible markdown
Design is important to us; that's why markdown is now rendered with a maximum width of ~80 characters, improving legibility.
All changes
- fix: ui tweaks for saving secrets by @mscolnick in #4558
- break: markdown width clamped for more readable typography by @mscolnick in #4551
- docs: new file format documentation by @dmadisetti in #4497
- fix: Address mep feedback by @dmadisetti in #4557
- feat: display singular label in
FileUploadPluginfor single files by @peter-gy in #4569 - fix: remove auto-scroll from chat by @mscolnick in #4561
- Remove (#faq-show-code) from show code FAQ by @JoostGevaert in #4559
- feat: release reusable functions by @dmadisetti in #4560
- examples: refresh fastapi example by @dmadisetti in #4562
- docs: minor function fileformat edits by @akshayka in #4576
- docs: update links to examples and gallery by @akshayka in #4577
- fix: use context.issue in notify translators by @akshayka in #4587
- fix: get node version edge case by @akshayka in #4590
- stop gap: check header for race condition by @dmadisetti in #4589
New Contributors
- @JoostGevaert made their first contribution in #4559
Full Changelog: 0.12.10...0.13.0

