Releases: marimo-team/marimo
0.14.16
This release extends code completion with basedpyright support and includes several important bug fixes.
✨ Enhancements
- Clear selection or autocomplete popup first before exiting to command mode (#5849)
- Use svg renderer and support enum charts (#5846)
- Add
basedpyright(#5712)
🐛 Bug fixes
- Top-level cache decorator with additional deps (#5862)
- Make reusable cell link only clickable on text, not entire block (#5851)
- Set combobox to truncate (#5829)
- Fix missing
!piptransform in notebook converter (#5841)
📝 Other changes
- Add fallback to csv for col summaries (#5871)
- Update dependency
openapi-typescriptto^7.8.0(#5869) marimo-snippetson dataframe page (#4638)- Use break-word in row-viewer panel (#5845)
Full Changelog: 0.14.15...0.14.16
0.14.15
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.
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_()
Huge thanks to @zilto for contributing this feature!
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.pyThe 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).
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.
🚨 Breaking changes
-
Vim keybindings now require
Ctrl+Escape(orCmd+Escapeon 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-jsonrpctovscode-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
setStatecallback 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+Deletein 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+EscapetoCtrl/Cmd+Escape(#5837) - Molab (#5809)
- Update documentation with
Shift+Entercommand 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
📝 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
0.14.13
This release introduces a new minimap for navigating reactive notebooks, along with important fixes for LSP code completions.
✨ Highlights
🗺️ Tracing dataflow with the minimap
The new minimap offers a focused slice of your notebook's dataflow graph, helping you understand a specific cell's reactive context and navigate related cells.
Click a cell in the minimap to jump to it — connections are read left to right, showing how data flows through your notebook and the order in which cells run. You can toggle the minimap with a hotkey (Cmd/Ctrl-Shift-i) or by clicking the map icon in the bottom footer bar.
This feature was heavily inspired by Observable’s Minimap, a thoughtfully designed, compact dataflow representation for their reactive JavaScript notebooks. We built marimo’s from scratch, adapting to fit our own execution model and rules.
✨ Enhancements
- Add hotkey to toggle minimap (
Mod-Shift-i) (#5730) - Add param to show dtypes in table header (#5693)
- Properly focus (and unfocus) multi-cell delete confirmation (#5690)
- Add reactive notebook minimap for navigating and visualizing dataflow (#5707)
- Add support for
TIMETZandTIMESTAMP_MSdata types in DuckDB integration (#5703)
🐛 Bug fixes
- Ensure "Convert to SQL" action converts to SQL instead of markdown (#5725)
- Windows paths for persistent cache (#5723)
- Fix stale variable dependencies in frontend (#5719)
- Fix LSP code completions and optimize cell ordering for imports (#5721)
- Show dtypes for idexes in tables (#5694)
- Better support for
geopandasinmo.ui.dataframeandmo.ui.table(#5674) - Hide vim cursor(s) when in command mode (#5695)
- Save button in multi-col notebooks lighting up (#5691)
- Fix
Enterkey handling for delete confirmation button (#5689)
📚 Documentation
- Add traditional chinese (zh-tw) readme.md translation (#5715)
- Add Command Mode documentation (#5696)
New Contributors
- @thliang01 made their first contribution in #5715
Full Changelog: 0.14.12...0.14.13
0.14.12
This release introduces safe cell deletion and expands vim keybindings for command mode. See full release notes below.
✨ Highlights
🗑️ Graceful cell deletion with keyboard shortcuts
marimo previously avoided cell deletion via keybindings to prevent accidental deletions. This release adds smart safeguards that allow keyboard-based deletion while protecting your work (#5664, #5670). When deleting cells with keyboard shortcuts, marimo now asks for confirmation if the cell took a long time to run and/or declares variables used by other cells.
Keymaps:
Shift+Backspace- Delete cell (regular keybindings)dd- Delete cell (vim keybindings)
To revert to the previous behavior (only allowing deletion of empty cells), set config.keymap.destructive_delete = False
⌨️ Expanded vim keybindings
We've added more vim-style keybindings for cell operations in command mode (#5675):
yy- Copy cell(s)p- Paste belowP- Paste aboveo- Insert cell belowO- Insert cell aboveu- Undo cell deletion
✨ Enhancements
- Use backend binning for numeric columns (#5669)
- Change "cell.delete" hotkey description from "Delete empty cell" to "Delete cell" (#5676)
- Add additional vim keybindings for cell operations (#5675)
- Add destructive cell deletion confirmation (#5664)
- Expose auto output flag (#5652)
- Sidebar buttons are accessible now (#5672)
- Enhance multi-cell action toolbar with new shortcuts and actions (#5655)
- Add config override detection and UI components (#5650)
- Update multi-cell toolbar labels: "Hide/Show cells" → "Hide/Show code" (#5653)
- Mpl.interactive with remote backends (#5662)
🐛 Bug fixes
- Partial config leads to errors (#5683)
- Enable cache at top level (#5678)
- Prompt user to open invalid files (#5677)
- Detect inline datasets for altair_chart (#5682)
- Support more pandas dtypes in dataframe viewer (#5660)
- Additional unit tests for
test_transformers.pyand fix edge cases (#5654)
📝 Other changes
- Don't write snapshots on empty session views (#5684)
- Hide code logic for html export (#5685)
- 'marimo env' shows if it is an editable install (#5666)
- Skip completing placeholder on readonly editors (#5661)
Full Changelog: 0.14.11...0.14.12
0.14.11
This release adds command mode for cell navigation and a redesigned data editor. It also includes a breaking change, removing the Alt + ` keyboard shortcut. See full release notes below.
✨ Highlights
⌨️ Command mode
Many of you have told us that command mode was the one feature you missed most from Jupyter. We heard you, and we've built it into marimo.
Command mode lets you work at the cell level — navigating between cells, creating new ones, and applying operations to multiple cells at once. Press Escape to enter command mode (the cell border turns blue), and press Enter to return to edit mode.
Navigation and cell management (Escape, then):
↓/↑- Move between cellsEnter- Edit the selected cella/b- Add a new cell above/belowc/v- Copy and paste cellss- Save notebookCtrl/Cmd + ↑/↓- Jump to top/bottom of notebookShift + Enter- Run cell and advance to next
Multi-cell selection:
Shift + ↑/↓- Select multiple cells- Apply operations to all selected cells at once (hide, delete, disable, etc.)
You can return to editing with Enter to exit command mode.
For vim users:
When vim keybindings are enabled, there additional familiar keybindings (Escape or Ctrl + [, then):
j/k- Move down/upgg/G- Jump to first/last cellShift + j/k- Extend selection
You can return to editing with i or Enter to exit command mode. Follow future plans for vim support in #931.
📊 Revamped data editor
The data editor plugin (mo.ui.data_editor and mo.ui.dataframe) has been totally upgraded.
Direct editing:
- Paste from clipboard - Copy data from Excel or other sources and paste into cells
- Column operations - Add, rename, or delete columns
- Row deletion - Remove rows
- No more limits - The 1000-row restriction is gone
Transformations:
- Null value filtering - Filter by null/non-null values
- Duplicate handling - Remove duplicates with control over which records to keep
- Live updates - See changes as you edit
- Improved performance - Upgraded grid engine handles large datasets
These improvements make the data editor feel more like a spreadsheet when you need it, while maintaining dataframe operations.
🚨 Breaking changes
-
Remove Alt-` for completions (#5609)
Why this change: The Alt + ` shortcut for triggering code completions conflicted with system shortcuts on several platforms, particularly on macOS where it's used for window switching. This caused frustration for users who couldn't access completions reliably.
What to use instead: Code completions now work automatically as you type, providing a smoother experience. If you need to manually trigger completions, use
Ctrl + Space(orCmd + Spaceon macOS if not reserved by Spotlight), which is the standard shortcut across most code editors.
🔬 Preview features
- Add
tyLSP (#5302)
✨ Enhancements
- Allow auto download to be configured globally (#5647)
- Add vim bindings for top/bottom cell navigation:
ggandG(#5636) - Better ollama configuration (#5644)
- Absolute positioning of button and enable select all rows (#5643)
- Data editor plugin v2 (#5514)
- Multi-cell selection (#5633)
- Use
ito focus a cell from command mode when in vim keymap (#5632) - Propagate
Ctrl+[asEscapeto enter command mode with vim keybindings (#5635) - Start markdown cells with hidden code (#5627)
- Navigation, copy/paste, new cells hotkeys when on a cell (#5620)
- Better focus navigation between cell and cell-editor (#5614)
- Feat/add force capability on export (#5610)
- Add form tooltip inline for
mo.dataframe(#5600) - Set
scrollToViewto smooth (#5604) - Add
default_table_max_columnsto user config (#5598) - Autofocus generate with AI (#5592)
- Add quick actions to change cell output area (#5596)
- Scroll table with keyboard navigation (#5595)
- Configurable skew protection in
create_asgi_app, defaultFalse(#5585) - Display failed connection information + more graceful backoff. (#5584)
- Gracefully handle
BaseExceptions from downstream df libraries (#5576) - Show additional loading indicator after 5 seconds (#5580)
- Remove title for table cell (#5574)
- Allow select on table cells (#5565)
- Add cursor introspection for dbapi spec (#5557)
- Add null and non-null filter for dataframes (#5548)
- Don't auto scroll when sending cell to top/bottom from menu (#5544)
- Add tool-chaining, send back signature (anthropic), add tool ui in chat-panel (#5469)
- Use upstream signature formatting code for pylsp (#5214)
- Remove duplicate import in
data_explorerdocs (#5060) - Build plots and charts from tables, with Python code generation (#5452)
- Add chart builder / chart-to-cell functionality within table (#5392)
🐛 Bug fixes
- Lsp syncing fixes for hover and completion (#5637)
- Enable cache decoration on class methods (#5630)
- Variable kwargs did not invalidate cache (#5613)
- Fix handling of class attribute references for reactive variables (#5616)
- Patch matplotlib interactive to not steal focus on mount (#5586)
- Rename dataframe transforms (#5599)
- Fix overflow on footer styles (#5593)
- Expand checks around decorated functions to enable functools usage (#5582)
- Cast elements in list of enums to string for polars (#5572)
- Detect
datetimeand handle timezones for pandas (#5573) - Make reactivity options in footer responsive for small screen widths (#5563)
- Opening a notebook from the sidebar when in a subpath (#5561)
- Fix deepcopy in
from_anywidget.py(#5134)
📚 Documentation
- Explain the difference between gho and ghp tokens (#5639)
- Update cell docstring to better express current abillities (#5607)
- Docs for Windsurf upgrade (#5587)
- Add table panels and chart builder docs (#5533)
📝 Other changes
- DRY up logic between vim keymap
ibinding (#5645) - Consolidate and cleanup cell keyboard props (#5631)
New Contributors
- @jmsmdy made their first contribution in #5134
- @rubiagatra made their first contribution in #5610
- @YDX-2147483647 made their first contribution in #5639
Full Changelog: https://github.com/...
0.14.10
What's Changed
✨ Highlights
🧮 Dataframes get another upgrade in this release. You can now select table cells with your cursor or keyboard, copy your selection to clipboard, and click nested entries to get a rich view. (#5450)
459226117-8e49d17c-f2db-48ff-af8b-efb7ec7cd626.mp4
🖱️ Right-click the create cell button to get a context menu that lets you create Python, SQL, or markdown cells. (#5489)
🐛 Bug fixes
- Fix infinite loop with query parameters (#5519)
- Reuse ports that are available but recently closed (#5515)
- Don't highlight keyword argument names as reactive references (#5500)
- Include all query params in WebSocket connection (#5507)
- Ensure cell action tooltip appears above sidebar panel (#5491)
- register UIElement on change if it is missing from the UIElementRegistry (#5474)
- Tracing panel - sort queued cells to bottom (#5458)
- Fix go-to-definition for function declarations (#5484)
📝 Other changes
- 0.14.10 (da5e4ec)
- Prevent noisy health calls in wasm situations (#5510)
- Minor typo fix in uv docs (#5508)
- Update dependency boto3 to >=1.38.46 (#5501)
- Update dependency clickhouse-connect to >=0.8.18 (#5502)
- [pre-commit.ci] pre-commit autoupdate (#5499)
- add lilypad (#5497)
- Make websocket-jsonrpc server bridge generic (#5427)
New Contributors
Full Changelog: 0.14.9...0.14.10
0.14.9
What's Changed
This release includes quality-of-life improvements and bug fixes (importantly, restoring compatibility with our VS Code extension).
✨ Enhancements
- Did you know that marimo has a command palette? (
Cmd/Ctrl+k). We have a tooltip now to remind you: render command palette shortcut for notebook actions (#5467) - Add Vim-style autocompletion keybindings (Ctrl-y, Ctrl-n, Ctrl-p) (#5466)
- Configuration to disable sharing actions in the marimo editor (#5432)
- Make formatting failure message package-manager agnostic (#5459)
- Update filename form placeholder text (#5462)
🐛 Bug fixes
- Restore DOM-based metadata for VS Code extension compatibility (#5480)
- Empty tool list error for openai compatible endpoints (#5482)
- Fix shift-enter not focusing new cell at end (#5481)
- Wasm kernels don't have argv (#5476)
- Fix StateRegistry retain_active_states (#5435)
📚 Documentation
New Contributors
- @kyrre made their first contribution in #5432
- @buckley-w-david made their first contribution in #5435
Full Changelog: 0.14.8...0.14.9
0.14.8
What's Changed
🖌️ Variable reference highlighting with go-to-definition. We have a new quality-of-life feature — the marimo editor can now highlight cell references, i.e. variables that they use but don't define. This helps you understand how data flows through your notebook at a glance. You can even hover over the variable and Ctrl+Click to jump to definition.
This feature is currently opt-in: enable in the settings (Display > Reference Highlighting), or through the command palette (Ctrl/Cmd + k)
If you like this feature, let us (h/t @manzt!) know!
⌨️ More command palette options. You can now toggle light/dark/system themes through the command palette (Ctrl/Cmd + k).
📦 More seamless optional dependency installation. Install optional dependencies in the column explorer panel for charts with just one click.
All changes
- fix: CLI print for non UTF-8 terminals by @akshayka in #5397
- chore(frontend): Add
invariantdebugger statement for development by @manzt in #5414 - [Windows] Fix
Copy PathandCopy Relative Pathreturning identical results. by @Haleshot in #5399 - chore: fix api spec by @Light2Dark in #5422
- chore(deps): update testing dependencies by @renovate in #5383
- fix: marimo development preview by @akshayka in #5403
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #5425
- chore(deps): update build tools by @renovate in #5418
- feat(frontend): Highlight reactive references by @manzt in #5415
- fix: Update HTML snapshots for server templates by @akshayka in #5429
- fix: set cell editor height and overflow to hidden when hidden by @Light2Dark in #5391
- chore(frontend): Simplify and tighten TypeScript configuration by @manzt in #5413
- dev: Use islands as local asset server by @dmadisetti in #5436
- chore(frontend/lsp): Replace "as
any" type assertion with a type guard by @manzt in #5437 - docs: call out package support among wasm limitations by @akshayka in #5439
- improvement: install packages directly by @Light2Dark in #5434
- fix: disable controls when not connected by @akshayka in #5438
- Fix markdown indentation by @vvsagar in #5442
- chore(frontend): Remove simple cases of
as anyby @manzt in #5440 - fix(islands): Replace "vega" runtime imports with "vega-loader" to resolve build issues by @manzt in #5449
- Add light/dark/system settings from command by @koaning in #5444
- chore(frontend): Remove "vega" as top-level dependency by @manzt in #5453
- chore: Expand remote downloads for a broader range of urls by @dmadisetti in #5456
- fix(vim): Show cursor only in last focused cell by @manzt in #5457
- fix: loading progress bar in tables by @Light2Dark in #5443
New Contributors
Full Changelog: 0.14.7...0.14.8
0.14.7
What's Changed
📦 An improved package viewer for uv projects. This release introduces a vastly improved package manager panel for uv projects and uv-sandboxed notebooks (marimo edit --sandbox my_notebook.py). When using uv in these ways, the package manager panel will now display the package environment as a tree, with top-level packages and their dependencies nested underneath.
Sandboxed notebooks.
sandbox.mp4
uv projects.
project.mp4
🤖 Chat sidebar improvements. A new footer in the sidebar lets you choose your model, and a settings button lets you configure options.
Bug fixes. Bug fixes for tables.
All changes
- chore: add biome lint for addEventListener by @mscolnick in #5293
- fix: remove autoscroll by @mscolnick in #5344
- feat: add tool support to backend providers and mode to AiConfig by @bjoaquinc in #5308
- fix: handle invalid plotly renderer keys to prevent KeyError by @yeoamlog in #5348
- improvement: better sort order for mo.ui.file_browser() by @mscolnick in #5350
- try/catch logger file handler by @asford in #5352
- fixes: range focus improvements by @Light2Dark in #5353
- fix: remove select-none, which prevented select on tables by @Light2Dark in #5356
- improvement: support uploading folders in the sidebar (keep heirarchy) by @mscolnick in #5349
- improvement: Ctrl-A in console output selects all the output by @mscolnick in #5360
- improvement: simplify focus and delay on start by @mscolnick in #5359
- feat: add footer for chat-panel chat input and change settings button by @bjoaquinc in #5354
- feat: duplicate file from sidebar, insert snippet to read file by @mscolnick in #5357
- pref: async path by @mscolnick in #5363
- feat: Add uv-managed "tree" view for package manager by @manzt in #5358
- docs: readings and videos by @akshayka in #5368
- Upgrade minimum version of pytest by @koaning in #5369
- style: runtime connecting indicator by @akshayka in #5375
- fix: copilot connection by @akshayka in #5380
- Fix matplotlib plots not rendering in HTML export by @manzt in #5377
- fix: unique schema type for
StreamMediaOutputby @akshayka in #5387 - fix: media console outputs from serialized notebook by @akshayka in #5388
- fix: query parameters in ws by @akshayka in #5381
- fix: Serialization fix by @dmadisetti in #5398
- Correct mo.tabs example by @williambdean in #5404
- docs: fix broken community themes repo by @Haleshot in #5400
- fix: wasm column summary charts by @Light2Dark in #5390
- feat: add tool manager and create invoke-tool endpoint by @bjoaquinc in #5409
- logging: downgrade warning to debug for session cache serialization by @dmadisetti in #5423
- fix: resolve chat message duplication on first message send by @manzt in #5424
- release: 0.14.7 by @akshayka in #5426
New Contributors
- @yeoamlog made their first contribution in #5348
- @williambdean made their first contribution in #5404
Full Changelog: 0.14.0...0.14.7
0.14.0
Highlights ⭐
🧮 Tables: small touches that go a long way. We're continuing to craft a delightful user experience for working with dataframes and tables.
Every table now comes with an expandable column viewer that lets you drill down into their data distribution:
column_explorer.mp4
You can now adjust the page size with a dropdown:
🤖 Improved AI chat experience. Our AI-powered chatbot — which knows about your data! — now supports reasoning tokens and persists chat history.
chat-sidebar.mp4
📦 Install package extras with our UI.
trevmanz.-.1932822219081589191.mp4
🐻❄️ Polars execution plans, with mermaid diagrams. Polars lazy-frames now produce an explain graph using mermaid.
⚡️ Connection state. Improved backend connection detection and disabled editor features until connected.
Many stability improvements and bug fixes.
What's Changed
- tidy: store cleanup by @dmadisetti in #5121
- chore(deps): update to ai-sdk/react (useChat import), isLoading → status by @bjoaquinc in #5127
- improvement: improve uv projects detection by @mscolnick in #5123
- chore: cleanup config passing to HTML from server by @mscolnick in #5120
- fix: sync activeChatId with messages when creating new thread or switching threads by @bjoaquinc in #5130
- docs: make contributing docs succinct by @winstxnhdw in #5128
- docs: add example notebook link for slides layout by @Haleshot in #5138
- fix: just exit on non-interactive terminals by @mscolnick in #5126
- feat: add ai chat persistence between sessions by @bjoaquinc in #5141
- docs: update
watching.mdto reflect support for data file watching by @Haleshot in #5137 - fix: handle json duckdb datatype by @mscolnick in #5144
- improvement: notebook schema serialization by @mscolnick in #5131
- Minor correction in fileformat.py by @killickm in #5149
- docs: fix image rendering in carousel preview by @Haleshot in #5148
- improvement: selectable row viewer by @Light2Dark in #5147
- feat: add
mo.image_compare()| image comparison slider by @Haleshot in #5091 - chore(deps): update build tools by @renovate in #5049
- chore(deps): update dependency hvplot to ~=0.11.3 by @renovate in #5151
- chore(deps): update dependency boto3 to >=1.38.26 by @renovate in #5150
- feat: add frontend schema for redshift by @Light2Dark in #5140
- feat: add redshift engine by @Light2Dark in #5132
- improvement: marimo converters to/from various formats by @mscolnick in #5146
- security: Create policy and thank previous reporters by @dmadisetti in #5162
- feat: add reasoning tokens in chat panel and reasoning support for anthropic by @bjoaquinc in #5159
- fix: add cell ids to deserialize by @mscolnick in #5165
- fix: add cell ids to deserialize by @mscolnick in #5166
- Add mechanism for injecting custom file stores by @pepijndevos in #5161
- fix: skew potection token in run-mode when auth is enabled by @mscolnick in #5168
- fix: broken CI with mac anthropic by @dmadisetti in #5173
- feat: allow env level app overrides by @dmadisetti in #5172
- chore: publish dev to test-pypi by @mscolnick in #5174
- chore: publish dev to test-pypi by @mscolnick in #5175
- fix: CI pass by @dmadisetti in #5177
- fix: inline favicon by @mscolnick in #5181
- Create ipynb fixtures for
marimo convertand snapshot outputs by @manzt in #5179 - fix(anthropic): set temperature = 1 for extended-thinking models by @bjoaquinc in #5190
- feat: add ai reasoning tokens and other parts persistence between sessions by @bjoaquinc in #5191
- chore: add tests for sql function by @Light2Dark in #5189
- chore(convert): Move
_transform_sourcestests to snapshot-based tests by @manzt in #5194 - Add support for initial chart properties in
data_explorer(take 2) by @janosh in #5171 - Use runtime assertions instead of type assertions by @manzt in #5208
- Support some JupyterBook cell tags in marimo convert by @manzt in #5169
- improvement: allow for different backends by @mscolnick in #5187
- feat: Skip undo delete toast for empty cells by @manzt in #5209
- chore: add suspense for terminal by @Light2Dark in #5211
- Default to
uvpackage manager when launched fromuvby @manzt in #5213 - docs (ai completion): add instructions for Ollama by @tobiasschweizer in #5212
- Discover
uvexecutable withUVenvironment variable by @manzt in #5215 - fix: Skip PEP 723 check on directories by @manzt in #5216
- Modify docs for readability and consistency by @gublit in #5222
- fix: home edit mode with separated backend by @dmadisetti in #5235
- fix(deps): update codemirror dependencies by @renovate in #5225
- chore: update ai model list by @bjoaquinc in #5232
- chore: upgrade ai backend from google-generativeai (deprecated) -> google-genai by @bjoaquinc in #5226
- fix: add reasoning config only if is reasoning model by @bjoaquinc in #5221
- chore: remove old feature flags by @Light2Dark in #5241
- improvement: condense / cleanup static banner by @mscolnick in #5245
- fix: table cell styles index error by @Light2Dark in #5253
- feat: add MarkdownRenderer to ReasoningAccordion by @bjoaquinc in #5248
- feat: change page size in tables directly by @Light2Dark in #5243
- fix: disable charts for > max_rows without vegafusion by @Light2Dark in #5224
- feat: Render mermaid-based (optimized) query plan for
pl.LazyFrameby @manzt in #5247 - feat: runtime config link fix by @dmadisetti in #5256
- chore(google): updated mo.ui.chat to use google-genai instead of google-generativeai by @bjoaquinc in #5258
- improvement: handle waiting until connection is healthy by @mscolnick in #5259
- fix: don't block when writing auto-export files by @mscolnick in #5254
- chore: upgrade to react 19 by @Light2Dark in #5249
- fix: (outlines) Headings with the same name are highlighted multiple… by @jo-soft in #5176
- docs: add numfocus affiliation by @akshayka in #5267
- fix: centering/aligning of file-button by removing flex-grow by @mscolnick in #5266
- style: improve page size input styles by @Light2Dark in #5264
- docs: make numfocus logo smaller, add to docs homepage by @akshayka in #5268
- chore: remove context provider & update types (react 19) by @Light2Dark in #5252
- fix: allow authToken in mount config by @mscolnick in #5269
- chore: add defaults to table args by @mscolnick in #5263
- feat: Allow selecting optional "extras" for missing packages by @manzt in https://github.com...









