Change8

gradio@6.20.0

📦 gradioView on GitHub →
8 features🐛 15 fixes🔧 10 symbols

Summary

This release introduces significant workflow enhancements, migrates Image components to Svelte 5, and resolves several critical bugs related to component rendering, security, and event handling.

✨ New Features

  • Added "Download All" functionality to the Gallery component.
  • Workflow: Downstream output is now shown when a subgraph runs.
  • Workflow: Updated input change handling logic.
  • Migrated Image components to Svelte 5.
  • Workflow: Nodes are now automatically added when clicking on a port.
  • Workflow: Validated the model before invoking the inference client.
  • Replaced deprecated Starlette 422 status constant in the queue validator error path.
  • Workflow: Injected token into function calls.

🐛 Bug Fixes

  • Fixed `JSONDecodeError` when loading cached examples that contained negative number outputs.
  • Security fix: Served `/gradio_api/file=<url>` via an SSRF-safe streaming proxy instead of an open redirect.
  • Workflow: Forwarded `_token` to bound functions when no request session is present.
  • Fixed `gr.Plot` collapsing to zero height when using autosize Plotly figures.
  • Fixed embedded Gradio apps growing infinitely tall on HF Spaces when using `vh`/`%` heights or `fill_height`.
  • Enforced `max_file_size` for multipart uploads to the `/component_server` route.
  • Fixed `gr.ImageEditor` high CPU usage when idle by sleeping the render loop when no changes are occurring.
  • Fixed ImageEditor transform tools and hidden cleanup issues.
  • Fired `state.change()` events for streaming (`.stream()`) events.
  • Fixed ImageEditor brush texture resets.
  • Used same-origin credentials in the JS client to restore functionality for cross-origin embeds.
  • Fixed `gr.Tabs.select()` event not firing when switching tabs.
  • Waited for in-flight head scripts before running `js_on_load` in `gr.HTML`.
  • Fixed Column component staying hidden after a multi-yield visibility update.
  • Fixed `TypeError: this.app.$destroy is not a function` when embedding a Gradio app using the `<gradio-app>` web component.

Affected Symbols