Skip to content

Releases: marimo-team/marimo

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

0.23.3

Choose a tag to compare

@mscolnick mscolnick released this 24 Apr 18:00
b9ba3e5

What's Changed

✨ Enhancements

  • Add slide config form in sidebar, and reveal slide types (#9300)
  • Restore LICENSE in sdist via PEP 639 license-files (#9341)
  • Status indicator for PDF exports via CLI (#9322)
  • workspace management: add hooks, and shared components (#9272)

🐛 Bug fixes

  • Guard _resolve_proxy against bare-port inputs (#9366)
  • Guard _references_virtual_file against cyclic data (#9369)
  • Decode tuple/frozenset payloads with non-finite floats (#9365)
  • Return html encoded matplotlib Figure from msgspec encoder hook (#9359)
  • Harden trust-bearing window globals and gate script loading (#9330)
  • fix markdown .center, .right, .left not respecting new lines (#9326)
  • File navigator (#9307)
  • Add _MARIMO_DISABLE_AUTH_ON_VIRTUAL_FILES env flag (#9343)
  • Correct AWS Bedrock Claude model IDs (#9299)
  • Kill kernel's process group on shutdown (#9257)
  • Add DataFusionFormatter (#9338)
  • Preserve shared-memory virtual files owned by other live sessions (#9228)
  • Update CsvViewer layout to use flex column. (#9336)
  • Emit relative Location on login redirect (#9314)
  • bump pymdown-extensions to fix NoneType bug (#9319)
  • Trust exported notebook pages (#9318)
  • Preserve non-string dict keys in rich display (#9301)
  • Update dataflow.md.txt snapshot (#9315)
  • Fix type-check Channel.Pull with NewType and union msg_type (#9296)

📚 Documentation

  • Specify html is only in app mode (#9333)
  • Fix typo in documentation for dataflow.py (#9173)

📝 Other changes

  • Flush console output buffer before marking cell idle (#9164) (f0187ea)
  • Resolve relative path sources in --sandbox uv export (#9052) (ccc1841)
  • use union for narwhals files (#9156) (58543f6)
  • Update dependency @playwright/test to ^1.59.1 (#9295)
  • Replace pickle with msgspec for IPC serialization (#8713) (df4e40c)

Contributors

Thanks to all our community and contributors who made this release possible: @akshayka, @app/renovate, @bfriebel, @dmadisetti, @Light2Dark, @manzt, @mchav, @mscolnick, @NewDestinyDan, @peter-gy, @shaun0927

New Contributors

Full Changelog: 0.23.2...0.23.3

0.23.2

Choose a tag to compare

@mscolnick mscolnick released this 20 Apr 21:48
dc23c71

What's Changed

🚨 Breaking changes

  • Mo.ui.refresh typing and docs (#9229)

✨ Enhancements

  • Code-mode .screenshot() api (#9232)
  • Visible markers for leading/trailing whitespace in string cells (#9256)
  • swap reveal.js instead of swiper for slides (#9166)
  • change wasm link to molab link on run page (#9240)
  • Bail out of type inference when completion budget expires (#9247)
  • Introduce better_inspect module for enhanced dir() and help() functionality for marimo-pair (#9223)
  • add molab resource to edit homepage (#9241)
  • Add ctx.packages namespace to code mode (#9233)
  • Backend-based file and directory duplication (#9142)
  • Support columns in marimo-pair (#9212)
  • Expand uv_build supported versions in build-system (#9231)
  • Visually distinguish null, empty, whitespace, NaN, and Infinity in table cells (#9218)
  • Restore Altair SVG output as base64-encoded Data URLs (#9104)
  • Auto-save in code-mode and marimo-pair (#9191)
  • add molab share action (#9207)
  • LSP root and document URI integration from backend (#9143)
  • Decouple Matplotlib render resolution (DPI) from display size (#9144)

🐛 Bug fixes

  • Hold references to asyncio tasks (#9261)
  • Use urlparse instead of regex for proxy determination (#9254)
  • Preserve columns in DefaultTableManager exports (#9258)
  • Drop dangling @file URLs from the session cache (#9278)
  • Make FieldTypes a Map to preserve column order (#9279)
  • Avoid double-mangling names inside walrus comprehension (#9276)
  • Static path handling (#9281)
  • Restore plain text tracebacks and fix exit codes for code mode (#9224)
  • Suppress marimo-ui-value-update echo for user-initiated changes (#9262)
  • "Download as .py" in WASM run-mode exports (#9268)
  • Tailwind v4 opacity fix, selection toggle, hover colors, and cleanup (#9259)
  • Export menu works for plain-Python data without pandas/polars/pyarrow (#9246)
  • Drop stale autosaves after newer foreground writes (#9239)
  • Preserve column order in DefaultTableManager select/drop (#9235)
  • Use the proactor event loop policy on Windows in edit-mode runtimes (#9194)
  • Allow for data-uris in mpl-interactive and marimo-panel after a cell has run (#9196)
  • Opencode marimo-pair skill discovery (#9225)
  • fix variants for toast (#9230)
  • Only toast cell logs in app mode (#9190)
  • fix label not being passed through for mo.ui.tabs (#9187)
  • Support mo.ui.matplotlib selections from code mode (#9195)
  • fix cte refs for errored paths, and dml (#9188)
  • Add warning log when repr_mimebundle fails (#9199)
  • Use shared memory for virtual files when running with app isolation (#9181)
  • Virtualize dataframe page selector to fix "No matching page" bug (#9178)
  • Arrow keys lose selection in vim visual mode (#9172)
  • Strip access token via redirect (#9170)
  • Pair direction (#9161)
  • Require auth in LSP middleware (#9160)
  • With_dynamic_directory path traversal (#9162)
  • Image dimensions for Altair PNG outputs (#9149)

📚 Documentation

  • Update Traditional Chinese README to highlight marimo pair (#9183)
  • Maintainer approval in contributing (#9153)
  • Link to marimo pair in the README (#9145)

📝 Other changes

  • Clear error state on disabled-transitively cells when ancestor recovers (#8784) (ba12764)
  • Update dependency dompurify to v3.4.0 [security] (#9216)
  • Update dependency lodash-es to v4.18.1 [security] (#9217)
  • Add lazy cache blob types (arrow, npy) (#9035) (6baa22d)
  • Widen Html.batch() type to accept all UIElement subclasses (#9163) (#9176) (73ff622)
  • Handle list-type tooltip encoding in altair chart (#9167) (#9175) (386cba6)
  • Add reactive funnel and funnelarea selection support (#9044) (b95d26d)
  • Add reactive box plot selection support (#9010) (b73a370)

Contributors

Thanks to all our community and contributors who made this release possible: @akshayka, @app/renovate, @daizutabi, @dmadisetti, @kirangadhave, @Light2Dark, @manzt, @moble, @mscolnick, @nojaf, @shaun0927, @thliang01

New Contributors

Full Changelog: 0.23.1...0.23.2