Skip to content

chore(deps): update dependency marimo to v0.23.9 [security]#685

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/pypi-marimo-vulnerability
Open

chore(deps): update dependency marimo to v0.23.9 [security]#685
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/pypi-marimo-vulnerability

Conversation

@renovate

@renovate renovate Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
marimo 0.23.50.23.9 age confidence

marimo contains a reflected cross-site scripting vulnerability in the notebook page

CVE-2026-54386 / GHSA-8m59-7xv8-735h

More information

Details

marimo before 0.23.9 contains a reflected cross-site scripting vulnerability in the notebook page that allows unauthenticated attackers to inject arbitrary JavaScript by exploiting improper escaping of single quotes in the file query parameter reflected into an inline JavaScript string literal. Attackers can craft a malicious link with a payload beginning with new to bypass the 404 check and inject JavaScript into the page, which executes without Content-Security-Policy restrictions in the origin of a victim's marimo server.

Severity

  • CVSS Score: 5.1 / 10 (Medium)
  • Vector String: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Release Notes

marimo-team/marimo (marimo)

v0.23.9

Compare Source

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: marimo-team/marimo@0.23.8...0.23.9

v0.23.8

Compare Source

v0.23.7

Compare Source

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)
📝 Other changes
  • Enforce single backticks in Python docstrings (markdown, not RST) (#​9645)
  • Add data-testid to top-level chrome elements (#​9566)
  • Fix pnpm-workspace.yaml configuration (#​9574)
  • Fix pnpm-workspace.yaml configuration (#​9515)
Contributors

Thanks to all our community and contributors who made this release possible: @​akshayka, @​archpulse, @​arghaffari, @​dmadisetti, @​jeremytanjianle, @​JoostGevaert, @​kirangadhave, @​leoadberg, @​Light2Dark, @​manzt, @​mchav, @​mscolnick, @​peter-gy, @​Rowlando13, @​Shamik-07, @​williambdean

And especially to our new contributors:

Full Changelog: marimo-team/marimo@0.23.6...0.23.7

v0.23.6

Compare Source

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
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: marimo-team/marimo@0.23.5...0.23.6


Configuration

📅 Schedule: (in timezone Europe/Berlin)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot requested a review from a team as a code owner June 19, 2026 05:38
@renovate renovate Bot added bot Automated pull requests or issues dependencies Pull requests that update a dependency file renovate Pull requests from Renovate skip:codecov Skip Codecov reporting and check skip:test:long_running Skip long-running tests (≥5min) labels Jun 19, 2026
@renovate renovate Bot enabled auto-merge (squash) June 19, 2026 05:38
@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bot Automated pull requests or issues dependencies Pull requests that update a dependency file renovate Pull requests from Renovate skip:codecov Skip Codecov reporting and check skip:test:long_running Skip long-running tests (≥5min)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants