github marimo-team/marimo 0.14.15

latest releases: 0.15.2, 0.15.1, 0.15.0...
one month ago

This release improves marimo's code intelligence with runtime completions, expands notebook conversion capabilities, and includes several UI/UX improvements and bug fixes.

✨ Highlights

Dynamic key completion

marimo now offers runtime key completions for dictionaries, dataframes, and other subscriptable objects (#5618). Unlike static LSP completions, these suggestions come from inspecting objects in memory, enabling completions that are only knowable at runtime.

Dynamic key completion showing dictionary and dataframe column suggestions

When you type dataframe[", marimo suggests column names. When accessing dictionary keys, you'll see all available keys as completions. This works with:

  • Dictionary keys - my_dict[" shows all available keys
  • DataFrame columns - df[" suggests column names
  • Custom objects - Any object implementing _ipython_key_completions_()

py:percent support in marimo convert

marimo convert now supports converting py:percent format (#5686). Convert your py:percent notebooks directly to marimo notebooks:

# Requires jupytext
uvx --with=jupytext marimo convert pypercent_notebook.py -o notebook.py

The converter also works for ingesting regular Python scripts. If you try to open a non-marimo Python script with marimo edit, you'll now be prompted to convert it first.

Column layout improvements

Keyboard navigation is now supported with column layouts! You can move between columns using the arrow keys in command mode (or h/l for Vim users) (#5760). We've also redesigned the column layout UI (#5772).

Redesigned column UI with kanban-inspired layout

Console output text wrapping

Long console outputs are now easier to read with the new text wrapping toggle (#5739). A button appears on hover in the top-right corner of console outputs, letting you toggle between wrapped and unwrapped text.

Console output text wrapping toggle demonstration

🚨 Breaking changes

  • Vim keybindings now require Ctrl+Escape (or Cmd+Escape on macOS) to enter command mode (#5815, #5837).

    Previously, pressing Escape from Vim normal mode would enter Command Mode, but this caused confusing behavior and accidental mode switches for Vim users. Adding this extra modifier prevents unintended exits from normal mode while letting you choose whether to use Command Mode at all.

✨ Enhancements

  • Add duckdb dialect for codemirror (#5786)
  • Prevent accidental overwrites and converter for non-marimo Python scripts (#5686)
  • Expand hidden code on go-to-definition (#5803)
  • Bypass delete confirmation for empty cells (#5804)
  • Migrate LSP from @sourcegraph/vscode-ws-jsonrpc to vscode-ws-jsonrpc (#5798)
  • Better icon caching (#5791)
  • Revamp column UI with kanban-inspired design (#5772)
  • Support keyboard navigation across columns in command mode (#5760)
  • Add copy button in console, and fix ctrl-a to copy all (#5765)
  • Don't persist minimap state open/closed state between page reloads (#5757)
  • Add text wrapping toggle for console output (#5739)
  • Add deployment doc on how to schedule marimo (#5728)
  • Move cell left/right in edit mode (#5808)
  • Dynamic SQL keyword completion based on dialect (#5775)
  • Improve AI prompt to not comment on the code (#5822)
  • Better formatting for google docstrings (#5750)
  • Better jupyter widget warning for unsupported (#5785)
  • Identify ddl, dmls and run clickhouse.command instead of query (#5824)
  • Experimental backend aggregations in table charts (#5704)
  • Interactive key completion (#5618)

🐛 Bug fixes

  • Cache invaliadation for external decorators (#5758)
  • don't show sql bottom panel when cell is hidden (#5826)
  • Fix cell movement shortcuts on non-Mac keyboards (#5759)
  • Move cell delete ops inside setState callback to prevent race condition (#5813)
  • Conditionally show tip for invalid status in interactive terminal (#5790)
  • Copy-paste cell mime-type (#5789)
  • Cache invaliadation for external decorators (#5758)
  • Mo.plain_text rendering (#5764)
  • Change columns in place for mo.ui.dataframe and add tests (#5763)
  • Altair's code gen with comment (#5767)
  • Restrict Shift+Delete in edit mode to empty cells only (#5766)
  • Allow marimo to open the markdown file format over http (#5742)
  • Deemphasize unreferenceable cells in minimap when no cell is selected (#5754)
  • chore/fix: parse correct message for anywidget (#5741)
  • Ensure cell connections render above unselected cells in minimap (#5732)
  • Allow partial chatModelConfig (#5749)

📚 Documentation

  • Change vim mode command entry from Shift+Escape to Ctrl/Cmd+Escape (#5837)
  • Molab (#5809)
  • Update documentation with Shift+Enter command mode vim bindings (#5816)
  • Document Python script conversion support (#5795)
  • Fix file upload docs (#5788)
  • Add "Understanding dataflow" user guide (#5737)
  • Make gifs consisent width on docs landing page (#5735)
  • Remove dead link (#5729)
  • Add zh-tw translation section for sharing cloud notebooks (#5821)
  • Two tiny fixes to tutorial text. (#5812)

🔬 Preview features

  • Mcp tool for marimo docs (#5745)
  • Add mcp backend client side integration (#5736)

📝 Other changes

  • Check for missing cursor for sqlalchemy native output (#5823)
  • Update base-url on remote healthy (#5787)
  • Add suspense for vega charts (#5770)
  • Add binary handling in tables (#5762)
  • Skip broken datetime tests (#5753)

New Contributors

Full Changelog: 0.14.13...0.14.14

Don't miss a new marimo release

NewReleases is sending notifications on new releases.