Skip to content

Releases: marimo-team/marimo

0.23.14

Choose a tag to compare

@dmadisetti dmadisetti released this 10 Jul 20:04
5087f83

What's Changed

This release brings anywidget composition with hot reload, an experimental debugger with per-line timing, chat AI improvements, and cached WASM exports.

Plus many fixes across charts, tables, and exports.

⭐️ Highlights

Anywidget composition and hot reload

marimo now supports anywidget's new composition API: parent widgets can render child widgets they were handed as values. Widget frontend code also hot-reloads in place as you edit it — live views re-render with widget state intact (#10127).

image

Read the docs for more on building custom UI plugins.

Debugger and per-line timing

An experimental debugger execution lifecycle adds frame watching to cell execution, highlighting the currently executing line and enabling debug points (#9970).

Screen.Recording.2026-06-23.at.9.53.50.AM.mov

Building on the same machinery, the experimental line_timing flag shows an elapsed-time pill on any line that has been busy for more than ~500ms (#10126).

Chat AI improvements

The AI chat panel picked up several upgrades this release:

  • Web search and fetch — the chat panel can now search and fetch from the web, adapting to your provider's native tools when available (#10052)
  • Errors as chat context — mention @error://all or a single cell's error to attach its source, traceback, and SQL schema as context chips (#10038)
  • "Fix in chat" — cell errors and tracebacks gain an option to route the failing code straight into the sidebar (#10024)
  • Prompt caching — enabled for supported providers (#10052)
Screen.Recording.2026-06-30.at.5.24.02.PM.mov

Read the docs for more on AI features.

Cached WASM exports

marimo export html-wasm --execute now bundles runtime cache into the export, so published notebooks hydrate cell outputs from cache instead of recomputing them in the browser (#9897). This lets you share interactive snapshots of executions that normally can't run in the browser at all (like a jax or torch training run) while the rest of the notebook stays live. Built on a new cell-level cached execution lifecycle, opt-in via [tool.marimo.runtime] cache_cells = true (#9895).

Screen.Recording.2026-07-08.at.4.39.03.PM.mov

Read the docs for more on exporting notebooks.

✨ Enhancements

  • Support anywidget composition and hot reload (#10127)
  • Add signatures to cache bundles to prevent tamper (#10123)
  • Add MARIMO_SESSION_COOKIE_SECURE env var for Secure session cookie (#10117)
  • Support mdx flavor in md export (#10116)
  • Honor per-cell hide_code in kiosk and reader views (#10111)
  • Allow selecting a pandas DataFrame index as a chart axis (#10097)
  • Add web search and fetch capabilities to AI chat, with provider caching (#10052)
  • Single-cell error chips and auto-sync resource map (#10038)
  • Add "Hide all" columns action (#10068)
  • Introduce progressive loading for WASM (#10044)
  • Open home in a new tab instead of replacing the current one (#10066)
  • Add "Fix with AI assistant" option for errors (#10024)
  • Better completions around function calls (#10045)
  • Add Fable and Sonnet 5 to models list (#10051)
  • Avoid bumping __generated_with when that's the only change in a notebook (#10027)
  • Bundle session caches into html-wasm --execute output (#9897)
  • Cell-level cached execution lifecycle (#9895)

🐛 Bug fixes

  • Fix mounting anywidget CSS in cross-realm roots (#10136)
  • Allow WebPDF export on Windows (#10131)
  • Preserve aspect ratio for images with numeric dimensions (#10130)
  • Fall back to interpreter completion when jedi static analysis raises (#10100)
  • Make graceful kernel shutdown opt-in to unblock event loop (#10124)
  • Classify SetBreakpointsCommand and resync breakpoints on restart (#10120)
  • Key task-list checkboxes by checked state to prevent stale render (#10114)
  • Extend LSP go-to-definition fallback to context menu and cmd+click (#10102)
  • Increased cache robustness for wire level cell resolution (#10109)
  • Respect per-notebook inline theme when serving a directory (#10101)
  • ASGI credentials reflection (#10107)
  • Fix pie chart rendering when innerRadius is undefined (#10104)
  • Apply mo.ui.dataframe row filter when submitted via .form() (#10092)
  • Render legacy named render/initialize exports (#10093)
  • Don't grey out streaming output in grid and slides layouts (#10094)
  • Fix data editor in fullscreen (#10098)
  • Make the rename symbol popup readable in dark mode (#10091)
  • Fix external go to definition (#10099)
  • Cache os.path.realpath results in _is_user_module (#10086)
  • Readonly view selects SQL language (#10074)
  • Polars lazyframe query plan visualisation fix (#10087)
  • Preserve leading and trailing comments when formatting cells (#10060)
  • Show sql snippet cells as sql instead of python (#10050)
  • Restore write permission on export directory after copytree on Nix (#10041)
  • Expand dict transformation (#9561)

📚 Documentation

  • Fix single-column example in mo.ui.table docstring (#10075)
  • Emphasize non-reactivity of mo.ui.panel in its docstring (#10067)

🔬 Preview features

  • Experimental line_timing — green active-line highlight + per-line timer (#10126)
  • Experimental SSE transport for the kernel connection (MARIMO_SERVER_TRANSPORT) (#10119)
  • Debugger execution lifecycle (#9970)

Contributors

Thanks to all our community and contributors who made this release possible: @akshayka, @brookpatten, @David-Wu1119, @dmadisetti, @eeshsaxena, @Felipenguim, @Hemanth-1354, @kirangadhave, @Light2Dark, @manzt, @mscolnick, @ohmdelta, @Oishe, @peter-gy, @qorexdevs, @VishakBaddur, @wally-an, @yairchu

And especially to our new contributors:

Full Changelog: 0.23.13...0.23.14

0.23.13

Choose a tag to compare

@mscolnick mscolnick released this 08 Jul 19:03
7df9434

What's Changed

Full Changelog: 0.23.12...0.23.13

0.23.12

Choose a tag to compare

@mscolnick mscolnick released this 01 Jul 14:58
d5d48e7

What's Changed

✨ Enhancements

  • Improve anywidget invalid module error messages (#10026)
  • WandB models updated (#10040)
  • LazyStore dual-mode WASM backend (#9898)
  • Avoid forced min-width and horizontal clipping in mobile app view (#10023)
  • Stamp context attachments (#9994)
  • Update llm-info model catalog and backfill descriptions (#10002)
  • Hydrate islands from JSON payloads (#9987)
  • Suppress kernel-dependent table controls in static export (#10007)
  • Keyboard and screen-reader accessibility for mo.ui.file_browser (#10005)
  • synonyms for showing code in the command palette (#9993)
  • Defer marimo-pair references and improve code mode prompts (#9985)
  • Support array protocol objects (torch.Tensor, JAX, etc.) in mo.audio (#9943)

🐛 Bug fixes

  • Use CSS styles for width/height to support percentage values (#9966)
  • Close pty master before reaping to avoid event-loop deadlock (#10031)
  • Bump ruff version for test failures (#10029)
  • Remove unavailable models (#10025)
  • Keep with_dynamic_directory serving after a directory symlink swap (#10015)
  • Avoid double formatting in mo.output.replace (#9909)
  • Typing for numpy as indices (#10014)
  • Use GITHUB_TOKEN for sync-llm-info PR creation (#9998)
  • Ignore D421 property-docstring-starts-with-verb lint rule (#9992)

📝 Other changes

  • Support pydantic-ai v2 (#9973)
  • Tighten import handling and fix SetComprehension typo (#9607) (ea3c57c)
  • Clarify UIElement value is read-only (#9382) (bf0468d)
  • Anywidget refresh value (#9454) (f7b1571)
  • Support multiple markdown flavors in marimo export md (#9586) (8565003)
  • Upgrade frontend to Tailwind v4.3 and lint deprecated classes (#9995)

Contributors

Thanks to all our community and contributors who made this release possible: @akshayka, @allin2, @app/github-actions, @dmadisetti, @kirangadhave, @koaning, @ktaletsk, @Light2Dark, @lxingy3, @mscolnick, @peter-gy, @Vitaliy-Pikalo

New Contributors

Full Changelog: 0.23.11...0.23.12

0.23.11

Choose a tag to compare

@dmadisetti dmadisetti released this 25 Jun 20:02
0f6c605

What's Changed

This release gives mo.ui.table finer display control (fixed column widths, a toggleable search bar, and a reusable display config).
Additionally mo.output.clear_console() adds a way to clear console output mid-run, and ships a broad set of fixes across AI config, exports, and the data sources tree.

Various other bug fixes like matplotlib==3.11 support in mo.mpl.interactive and pydantic-slim integration also ship in this release.

⭐️ Highlights

More control over mo.ui.table display

You can now size and trim tables to fit your data. column_widths pins named columns to an exact pixel width (great for long file paths or notes that used to get clipped), while unlisted columns continue to size to their content. The search bar is now toggleable via show_search, and the four visibility flags are available as a reusable mo.ui.table.Display config you can build once and unpack into many tables (#9982, #9984).

mo.ui.table(df, column_widths={"filename": 600, "id": 60})

# Reusable display config
cfg = mo.ui.table.Display(show_search=False, show_download=False)
mo.ui.table(data, **cfg)
mo.ui.table(other, **{**cfg, "show_column_summaries": False})

Clear console output mid-run

mo.output.clear_console() clears a cell's console output while it's still running, and the clear now sticks across reconnects, exports, and the on-disk session cache, not just in the live view. This replaces the old "re-run the cell to clear it" workaround.

✨ Enhancements

  • Add show/hide all code commands to command palette (#9989)
  • Add show_search and a reusable mo.ui.table.Display config (#9984)
  • Add column_widths to mo.ui.table (#9982)
  • Stub serialization toolkit (class/lazy/module stubs) (#9896)
  • Add more trace attributes under an AI span (#9968)
  • Only auto-expand search matches in the data sources tree (#9955)
  • Disable settings overridden by pyproject.toml (#9961)
  • Tighten markdown heading spacing (#9962)
  • Add mo.output.clear_console() (#9950)

🐛 Bug fixes

  • Remove print page margin and inset content for themed PDF export (#9971)
  • Support matplotlib 3.11 interactive (#9990)
  • Add repair for orphaned tool calls (#9976)
  • Wrap cells in function scope before ruff formatting (#9889)
  • Allow DeepSeek custom provider configuration (#9969)
  • Stringify pint-pandas values in table JSON output (#9951)
  • Prevent hard failure on malformed AI config (#9960)
  • Open AI settings from command palette when ai.enabled is false (#9937)
  • Count lines like ast/tokenize, not str.splitlines() (#9957)
  • Keep interactively-created hidden cells editable on creation (#9958)
  • Delete local variables after cell execution (#9933)
  • Correct fully-qualified table name in column previews (#9954)

📚 Documentation

  • Fix shebangs /bin/bash -> /usr/bin/env bash (#9942)

📝 Other changes

  • Bump pydantic-ai, and cap to v2 (#9978)
  • sidebar code-mode: add run_scratchpad utility functions (#9637, 068f140)
  • Tooling to generate canonical DESIGN.md (#9641, 7f29fa3)
  • Support nested schemas for data sources (#9837, #9845, 06b152a)

Contributors

Thanks to all our community and contributors who made this release possible: @akshayka, @dmadisetti, @kirangadhave, @Light2Dark, @lzblack, @peter-gy, @skaphi, @VishakBaddur

And especially to our new contributors:

Full Changelog: 0.23.10...0.23.11

0.23.10

Choose a tag to compare

@mscolnick mscolnick released this 18 Jun 19:12
2f6ca50

What's Changed

This release brings threading and multiprocessing to WASM notebooks and makes remote storage browsing scale with search and pagination — alongside table column controls, slide editing improvements, and a broad set of fixes.

⭐️ Highlights

Pyodide 314.0

This release moves marimo's WebAssembly runtime to Pyodide's latest release: Pyodide 314.0. This allows use to use newer versions of duckdb, polars, and pyarrow as well as many other popular packages.

Threading and multiprocessing in WASM

WASM notebooks can now run threading- and multiprocessing-shaped code. marimo installs lightweight adapters for Pyodide so mo.Thread, stdlib threading primitives, and common multiprocessing APIs keep working in the browser, executing on a synthetic thread identity that the marimo runtime context follows (#9839).

Screen.Recording.2026-06-09.at.16.56.56.mov

Scalable remote storage browsing

Browsing large remote storage backends is now practical. Listings paginate behind a "Load more" button instead of loading everything up front, and when a prefix query matches none of the already-loaded entries, marimo pages through the backend to surface remote results — matching on full paths so partial path queries resolve, with clear status while it searches (#9834, #9835).

Screen.Recording.2026-06-10.at.11.56.00.AM.mov

✨ Enhancements

  • Search the backend when no loaded entries match (#9835)
  • Honor OTEL_SERVICE_NAME for traces (#9906)
  • Progressively mount cell editors in the editor view (#9904)
  • Generate Google Drive connection code for embedded environments (#9884)
  • Paginate remote storage listings with a "Load more" button (#9834)
  • Threading and multiprocessing adapters in WASM (#9839)
  • Gate schema discovery behind "auto" for remote engines (#9784)
  • Column visibility dropdown in table top bar (#9865)
  • Support ROCM for /api/usage endpoint (#9773)
  • Shared select-core for multiselect, dropdown, and filter picker (#9849)
  • Per-slide show-code config + editor toggles (#9831)
  • Resolve definitions and get docstring (#9838)
  • Minimap insert-cell + context menu (#9830)
  • Add a toggle to filter empty schemas and db (#9712)
  • Wire Dremio dialect into the SQL editor (#9817)
  • Allow lazy (callable) filename (#9799)
  • Styled tooltip for mo.ui.table hover_template (#9780)
  • Remove beta status for opencode (#9791)

🐛 Bug fixes

  • Deflake CI by ignoring finished WASM thread records (#9914)
  • Rewrite double-quoted DuckDB sources in WASM (#9925)
  • Avoid crash when creating a markdown cell (#9923)
  • Stop logging raw AI config at debug level (#9911)
  • Handle missing psutil gracefully for Android/Termux (#9872)
  • Make WASM as_completed timeout deterministic (#9891)
  • Keep !-command cells from disabling underscore-privatization on convert (#9873)
  • Respect user-configured marimo data transformer (#9887)
  • Skip chart for nested/unknown column types (#9876)
  • Correct editable input behavior with steps and fractional values (#9860)
  • Allow async cancellation (#9705)
  • Apply ordering to frozen set as it drifts with PYTHONHASHSEED (#9861)
  • Highlight python code blocks in ty hover tooltips (#9824)
  • Disable speaker notes handle on fullscreen (#9825)
  • Disambiguate storage entries with duplicate paths (#9832)
  • Add docstring styles for links (#9827)
  • Infer provider profile from base_url for custom providers (#9813)
  • Store video sources as virtual files instead of inlining (#9812)
  • Show static-preview notice once per session (#9796)
  • Stop reusable hint flicker on cell updates (#9782)
  • Land focus in target cell on right-click Go to Definition (#9795)
  • Fix reactive go-to-definition lookup (#9747)
  • Coalesce outgoing document transactions to avoid intra-batch conflicts (#9781)

📚 Documentation

  • Admonition (#9903)
  • Support PEP 508 Emscripten dependency markers (#9864)
  • Update SECURITY.md (#9863)
  • Add entry on jupyter-book-marimo plugin (#9802)

📝 Other changes

Contributors

Thanks to all our community and contributors who made this release possible: @agriyakhetarpal, @akshayka, @dmadisetti, @kirangadhave, @koaning, @Light2Dark, @mscolnick, @nkgotcode, @peter-gy, @Set27, @VishakBaddur

And especially to our new contributors:

Full Changelog: 0.23.9...0.23.10

0.23.9

Choose a tag to compare

@kirangadhave kirangadhave released this 04 Jun 23:07
c3c0ee3

What's Changed

This release makes opening a notebook in a second tab non-destructive, mo.ui.table adds new args for hidden_columns/visible_columns (mutually exclusive), and tightens sharing and error-output behavior across the board.

⭐️ Highlights

Open the same notebook in a second tab

Opening a notebook in a second browser tab no longer forcibly disconnects the first. The new tab joins as a live, read-only viewer, and you can take over editing from either side with a single click — no destructive modal and no reload required (#9746).

Screen.Recording.2026-06-01.at.3.31.17.PM.mov

Show and hide table columns

mo.ui.table now supports column visibility. Hide and show columns from the column header menu, Column Explorer with a click, find columns fast with smart prefix-based search, and control initial visibility from Python. A hidden-count and "Unhide all" link keep things discoverable (#9687, #9696).

Screen.Recording.2026-05-26.at.6.35.04.PM.mov

Cells with no output now show in slides

Because slides allow code edits, a slide edited to no longer produce an output used to disappear from the deck entirely. Such cells now appear in the slides minimap and viewer so you can edit them back in (they're still skipped during a presentation). Minimap thumbnails are also larger and more readable (#9771).

Screen.Recording.2026-06-03.at.2.25.46.PM.mov

✨ Enhancements

  • Add MARIMO_RESTRICT_SHARING env var machine-wide (#9756)
  • Non-destructive local takeover (read-only viewer + bidirectional takeover) (#9746)
  • Add cells with no output to the minimap & viewer (#9771)
  • Add GET /api/kernel/status endpoint (#9768)
  • Enforce sharing config as server-side security (#9578)
  • Add filter param for regex and callable filtering (#9667)
  • Slides config panel open by default (#9737)
  • Add pair with agent link (#9738)
  • Add Opus 4.8 and script to append models to the top (#9723)
  • Remove mapping for 'src' to 'auto-mix-prep' (#9725)
  • Add workflow to automate running llm-sync-models script (#9724)
  • Automation script to pull models.yml (#9635)
  • Support Dremio ADBC data source browsing (#9694)
  • Add auto_close_pairs setting (#9711)
  • WASM compatibility rule checks (#9587)
  • Fix dropped error hints and improve error output UI (#9673)
  • Column Explorer visibility controls + smart-search (#9696)
  • Sort toml entries when writing config (#9686)
  • Pretty format hidden variable behavior in stack traces (#9660)
  • Add column visibility kwargs and UI controls (#9687)
  • Unified filter pill UI with overflow strip (#9638)
  • Add padding between cell number and minimap dependency lines (#9675)

🐛 Bug fixes

  • Escape user-controlled file_key in service worker injection (#9789)
  • Fix completions in slides view (#9769)
  • Arg/kwarg collision for local numpy vars in caching (#9751)
  • Suppress marimo hover tooltip for all LSP providers, not just pylsp (#9741)
  • Fix SQL defs lookup (#9754)
  • Keep stepped range progress totals aligned (#9582)
  • Per-provider max_tokens defaults with optional override (#9703)
  • Accept ChartDataType in mo.ui.table to resolve pyright error when passing chart.value (#9674)
  • Jump to running notebook cells only (#9707)
  • Fix mo.cache raising KeyError: 'scratch' in scratchpad (#9664)
  • Fix interruption for pydantic-ai chatbot (#9620)
  • Preserve top level names for name thrashing (#9695)
  • Lazy download-size RPC + first-page extrapolation (#9691)

📚 Documentation

  • Add config to disable AI (#9739)
  • Update molab docs with new compute and sharing features (#9748)

📝 Other changes

  • Don't shadow builtin print unless mo.Thread is used (#9765, #9766)
  • Zz/zt/zb scroll for notebook viewport (#9701, #9728)
  • Add rule to prevent test files from having the same name (#9671)

Contributors

Thanks to all our community and contributors who made this release possible: @akshayka, @corleyma, @dmadisetti, @everettroeth, @foxcroftjn, @GHX5T-SOL, @kirangadhave, @kjgoodrick, @kratos0718, @Light2Dark, @mscolnick, @nojaf, @Rowlando13, @VishakBaddur, @XanthanGum

And especially to our new contributors:

Full Changelog: 0.23.8...0.23.9

0.23.7

Choose a tag to compare

@dmadisetti dmadisetti released this 21 May 22:02
06a9c32

What's Changed

This release brings major upgrades to table filtering, adds speaker notes to slide view, and lets WASM notebooks query remote files with DuckDB.

⭐ Highlights

Powerful new table column filters

Table columns now support the full operator set across every dtype. Text columns get contains, starts_with, ends_with, equals, regex, is_empty, and more, with a slash-bracketed regex input and a creatable values picker for in / not_in. Number columns get native between, and the new date/datetime/time filter UI brings the same operator coverage to date-like columns with smart clipboard paste for ISO/US/RFC dates and A - B ranges (#9597, #9615).

Screen.Recording.2026-05-18.at.7.54.06.PM.mov

Speaker notes for slides

Press S in slide view to open speaker notes alongside the current slide, including in fullscreen and kiosk mode (#9533).

Screen.Recording.2026-05-12.at.5.32.23.PM.mov

Query remote files with DuckDB in WASM notebooks

WASM notebooks can now read CSV, Parquet, JSON, and GeoJSON over HTTP from mo.sql, SQL cells, raw duckdb.sql/query/execute, connection SQL methods, and the duckdb.read_csv/read_parquet/read_json Python API. marimo rewrites the AST with sqlglot, fetches the remote file via its shared WASM fetch util, and binds the result as a pandas DataFrame that DuckDB can scan (#9480).

SELECT * FROM read_csv('https://example.com/cars.csv')

✨ Enhancements

  • Expand column filter operators and pill-editor UX (#9597)
  • Date/datetime/time filter UI (#9615)
  • Add speaker notes for slides (#9533)
  • Support HTTP DuckDB queries in WASM notebooks (#9480)
  • Snapshot document and outputs in MCP execute_code (#9654)
  • Rename ctx.notify to broadcast_raw_notification (#9581)
  • Record staleness reads on .code access only (#9655)
  • Expose cell outputs to code_mode (#9653)
  • Make marimo new CLI help page render properly at 80 columns (#9636)
  • Read-before-write protection for cell edits (#9585)
  • Skip stdlib/site-packages on per-cell check (#9629)
  • Show cell index in dependency minimap (#9633)
  • Extract ModuleReloader/ModuleWatcher into AutoreloadManager (#9590)
  • DRY up code between wasm and native kernel (#9591)
  • Update default duckdb mo.sql deps (#9599)
  • Show .git and .venv in file browser (#9606)
  • Support disabled on dropdown and multiselect (#9600)
  • Split kernel command dispatch into router + callback bundles (#9577)
  • Add Prompt tab to pair-with-agent modal (#9568)
  • Replace MarimoFileKey alias with FileKey ADT (#9483)
  • Optimize memoize_last_value for faster UI reactivity (#9555)
  • Hardening pass — utilities, deprecated API cleanup, lifespan fix (#9552)
  • Stream uploads to disk instead of buffering (#9527)
  • Add kernel_session() as context manager, DRY up tests (#9554)
  • Sandboxed exports for consistent wasm envs (#9519)
  • Add tool approval flow for chat-panel (#9507)
  • Remove input for hidden cells from exports (#9548)
  • Parallelize file uploads with bounded concurrency (#9528)
  • Use multipart/form-data for /api/files/create (#9521)
  • Show loading and success toasts for exports (#9509)
  • Add cut cells command (#8019)
  • Allow def declarations within functions (#9379)
  • Correlate scratchpad completion with run_id (#9350)
  • Make disconnect indicator clickable to reconnect (#9410)

🐛 Bug fixes

  • Guard SQL ref extraction on sqlglot availability (#9656)
  • Fix lru_cache(...) resetting when cell is rerun (#9609)
  • Skip reload when notebook has git conflict markers (#9626)
  • Stream lazy-polars output via pl(lazy=True) (#9648)
  • Trigger downloads programmatically to work inside cross-origin iframes (#9649)
  • Stdin handling for empty submissions (#9556)
  • Avoid pyarrow requirement for polars output in DuckDB engine (#9643)
  • Isolate test_project_dependencies from pyproject.toml pollution (#9634)
  • Restore selection_mode='all' and accept list form (#9630)
  • Allow freezing pandas index columns (#9631)
  • Inline public/ images in static HTML export (#9627)
  • Remove unused flush_messages plumbing (#9598)
  • Migrate remaining background-task sites to asyncio_utils (#9596)
  • Normalize dev version in static notebook asset URL (#9592)
  • JSON-escape > and < in web-component attrs (#9595)
  • Render Enum members as str in JSON serializer (#9594)
  • Narrow callback deps, drop get_context in cache (#9589)
  • Callback bug fixes in cache clear, dataset connections, and model updates (#9588)
  • Avoid treating class-like array refs as data primitives (#9569)
  • Group kernel streams into KernelStreams; phase-key NotebookCellHooks (#9571)
  • Pass theme to register_formatters in pyodide and script runner (#9553)
  • Use Referrer-Policy same-origin to fix Chrome 147+ Error code 5 on macOS (#9543)
  • Extract shared kernel lifecycle for subprocess and pyodide (#9541)
  • Hide watermark when printing (#9525)
  • Markdown singleton to mitigate reported race condition (#9530)
  • Contain comm callback errors in mpl_interactive (#9532)
  • Disconnect toolbar callbacks on cell rerun (#9531)
  • Fix overflow and support vertical tabs (#9511)
  • Allow hosts to size-gate downloads (#9510)
  • Detect marimo notebooks with long module docstrings (#9652)
  • Fix argument splitting on '--' in the command line (#9368)

📚 Documentation

  • Update markdown_indentation.md (#9622)
  • Standardize supported dataframe backends across UI elements (#9583)
  • Attribution (#9608)
  • Polish tutorial notebooks (#9573)
  • Add detailed docstring for CLI recover command (#9546)
  • Note that an added notebook will be downloaded if it's a URL path (#9545)
  • Clarify that marimo run hides source code by default (#9529)
  • Add Mermaid theme customization options (#9478)
  • Remove formatter recommendation section from guide (#9434)...
Read more

0.23.6

Choose a tag to compare

@mscolnick mscolnick released this 11 May 21:38
c8f2b17

What's Changed

🚨 Breaking changes

  • Propagate notebook filename through MarimoIslandGenerator.from_file (#9409). This is a correctness fix, but could break existing users who relied on broken assumptions.

✨ Enhancements

  • Implement kernel exit classification and notification system (#9500)
  • Render notebook snapshot while Pyodide initializes (#9502)
  • hide add cell toolbar when show-chrome is false (#9487)
  • Add gpt-5.5 support (#9488)
  • Extract NotebookWorkspace from AppFileRouter (#9448)
  • Add new W&B models to llm-info data (#9465)
  • Add --execute to marimo export html-wasm for session previews (#9437)

🐛 Bug fixes

  • Send initial size when WebSocket opens (#9505)
  • Restore --proxy for base_url (#9503)
  • Avoid exponential blow-up of nested struct sample values (#9506)
  • Normalize Windows backslashes in inserted image URLs (#9504)
  • Skip wasm controller dynamic import unless host opts in (#9467)
  • fix label alignment (#9486)
  • standardize (y/n) prompt defaults (#9492)
  • Skip /health checks for static notebooks (#9498)
  • Avoid RecursionError when formatting objects with getattr traps (#9497)
  • Prevent mpl figure DPI from compounding on cell rerun (#9474)
  • use unified thinking for pydantic-ai (#9477)
  • Remount on src change in mo.Html to avoid stale paint (#9472)
  • Fix UI hang and stabilize tests for unusual tuple/list/dict child classes (#9468)
  • Include cell_manager in TransactionSource literal (#9457)
  • Improve parameter validation error messages for list[NewType] fields (#9442)

📚 Documentation

  • OpenCode Go config (#9431)
  • Add slides documentation and video (#9464)
  • Additional security acknowledgements (#9450)

📝 Other changes

  • Support HTTP Range requests on virtual files (#9460) (#9473) (26ee423)
  • Update all storybook dependencies to ^10.3.5 (#9392)

Contributors

Thanks to all our community and contributors who made this release possible: @app/renovate, @dmadisetti, @domwst, @fonnesbeck, @kirangadhave, @Light2Dark, @ljchang, @mchav, @mscolnick, @ralphptorres, @stephenlf, @wally-an

New Contributors

Full Changelog: 0.23.5...0.23.6

0.23.5

Choose a tag to compare

@dmadisetti dmadisetti released this 05 May 16:34
8e7d778

What's Changed

This release adds editable code in slide view, OpenTelemetry distributed tracing support, and patches polars network I/O in WASM notebooks.

⭐ Highlights

Editable code in slide view

Press C (or click the code icon) in slide view to toggle an inline code editor under each slide, including in fullscreen mode. Run mode shows a read-only editor when include-code is enabled.

✨ Enhancements

  • Add OTLP export and W3C trace context propagation to tracing (#9414)
  • Add editable code in slide view (#9389)
  • Patch polars I/O in wasm (#9413)
  • Add a CLI tip for marimo pair (#9422)
  • Prompt user to build fe at first run (#9381)

🐛 Bug fixes

  • Provide upper bound on jedi pin (#9449)
  • Force Content-Disposition on table export downloads (#9426)

📚 Documentation

  • Update marimo-pair docs to mention molab (#9436)

📝 Other changes

  • Add load_notebook helper, simplify AppFileRouter (#9438)
  • Add data-testids to file-explorer dropdown menu items (#9427)
  • Deflake subprocess kill test (#9423)
  • CI: doppler secrets (#9236)

Contributors

Thanks to all our community and contributors who made this release possible: @akshayka, @dmadisetti, @koaning, @Light2Dark, @mscolnick, @ouatu-ro, @tigretigre

Full Changelog: 0.23.4...0.23.5

0.23.4

Choose a tag to compare

@mscolnick mscolnick released this 28 Apr 17:59
3687c76

What's Changed

✨ Enhancements

  • Update snapshots and types for altair v6.1.0 / vega-lite v6.4.1 (#9415)
  • make _format_plan respect format_on_save; format enabled/disabled unit tests (#9380)
  • standardize top k filter components and logic (#9393)
  • Editable filter pills (#9349)

🐛 Bug fixes

  • allow cell selection on non-interactive marimo elements (#9399)
  • adjust ordering of header (#9403)
  • Msgspec encoding for starlette user (#9406)
  • Check platform instead of sys.modules for pyodide check (#9404)
  • Docs typo (#9400)
  • Scope filter-by-values top-K to exclude the filter being edited (#9376)
  • Hide marimo-pair in wasm, fix opencode prompt (#9375)
  • Mark DuckDb INET type (from inet extension) as unknown type (#9384)
  • Add Path to cookie (#9364)

📚 Documentation

  • Documentation Bugfix: Polars cannot read json from URL (#9397)

📝 Other changes

  • Update dependency postcss to ^8.5.10 (#9334)
  • Update dependency postcss to v8.5.10 [security] (#9372)

Contributors

Thanks to all our community and contributors who made this release possible: @akshayka, @app/renovate, @daniel-bogdoll, @dmadisetti, @iggylari, @jpopesculian, @kirangadhave, @Light2Dark, @mscolnick, @ouatu-ro

New Contributors

Full Changelog: 0.23.3...0.23.4