v0.4.0
longbridge/gpui-kitv0.4.0Nov 17, 2025by huacnlee
AI Summary
A major release with significant breaking changes to improve API consistency and usability, plus new components and the gpui-component-assets crate.
Key Highlights
- Major API refactoring across multiple components for consistency
- Added gpui-component-assets crate
- Added new Collapsible component
- Major Popover, Slider, Toggle API improvements
- Security fix: Upgrade tracing-subscriber
Breaking Changes
- breadcrumb: Rename item to child and add children method
- clipboard: Removed content method from Clipboard
- dialog: Rename Modal to Dialog
- form: Renamed column to columns
- form: Rename FormField to Field
- input, select, date_picker: Refactor cleanable to have argument and default to false
- list, table: Refactor List, Table to have ListState, TableState
- notification: Add &mut Self to content and action method
- radio: Rename on_change to on_click for RadioGroup
- resizable: Simplify Resizable API
- select, list: Update searchable default to false
- sheet: Rename Drawer to Sheet
- spinner: Rename Indicator to Spinner
- tab: Refactor creation to use builder pattern
- table: Change context_menu method in TableDelegate to mutable window and cx
- toggle: Refactor Toggle, ToggleGroup API
New Features
- Add gpui-component-assets crate
- Button: Remove duplicate disabled style
- Button_group: Add vertical option
- Button_group: Fix overriding button click when no on_click
- Chart(pie): Support dynamic inner and outer radius
- Chart(bar): Fix label not centered
- Collapsible: Add Collapsible component
- ContextMenu: Fix to cover parent element area
- Editor: Fix indent guides render position
- Input: Improve double-click for word selection
- Input: Delete selected text with modifier keys
- Input: Avoid blocking vertical scroll events in single-line mode
- Input: Fix x offset resetting for single line inputs
- Form(field): Fix label line break not working
- Label: Fix highlight may crash of not a char boundary
- List: Fix incorrect next selection when select index is none
- List: Add searchable, search_placeholder option to List and Select
- List: Avoid select item when selectable(false)
- Menu: Add item and export PopupMenuItem with builder methods
- Menu: Fix Popover change broken submenu click in dropdown menu
- Modal, drawer: Block background interaction when active
- Modal: Adjust close button position
- NumberInput: Improve style details
- Popover: Renamed no_style to appearance
- Popover: Improve Popover API
- Popover: Fix incorrect to sync on_open_change to state
- Popover: Fix click trigger to close popover
- Popover: Revert defer_to focus on Popover open
- Progress: Fix incorrect border radius
- Select: Impl SelectItem for &'static str
- Select: Avoid reopen menu when clearing selection
- Select: Restore the selection when canceling
- Slider: Improve interaction to click on bar to drag
- Slider: Add option to choose between linear and logarithmic scale
- Slider: Remove thumb tooltip
- Tab: Use on_click instead of action for TabBar dropdown menu
- Table: Keep scroll to item at bottom when move down
- Table: Fix Table stripe mode overflow scroll
- Table: Fix row border missing on first frame
- Table: Fix missing border on first frame
- Theme: Export more theme options for schema
- Theme: Allows to use alpha color for active_border but at least 0.3
- Tiles: Add tile_radius theme option and default 0px
- Tiles: Add scrollbar_show option to Tiles
- Tiles: Add panel auto-snap while drag movement
- Webview: Add inspector feature to enable WebView developer tools
Full Release Notes
## Break Change
In this version we have make a lot of breaking changes to improve the overall API consistency and usability.
If you are upgrading from v0.3.x, please check the changelog carefully and adjust your code accordingly,
the PR links are provided for more details of each change.
- breadcrumb: Rename `item` to `child` and add `children` method. by @huacnlee in #1519
- clipboard: Removed `content` method from Clipboard. by @huacnlee in #1520
- dialog: Rename Modal to Dialog. by @huacnlee in #1538
- form: Renamed `column` to `columns`. by @huacnlee in #1522
- form: Rename FormField to `Field`. by @huacnlee in #1539
- input, select, date_picker: Refactor `cleanable` to have argument and default to false. by @Moulberry in #1506
- list, table: Refactor List, Table to have ListState, TableState. by @huacnlee in #1468
- notification: Add `&mut Self` to `content` and `action` method. by @huacnlee in #1569
- radio: Rename `on_change` to `on_click` for RadioGroup. by @huacnlee in #1517
- resizable: Simplify Resizable API. by @huacnlee in #1459
- select, list: Update `searchable` default to false. by @huacnlee in #1504
- sheet: Rename `Drawer` to `Sheet`. by @huacnlee in #1527
- spinner: Rename Indicator to Spinner. by @huacnlee in #1526
- tab: Refactor creation to use builder pattern by @madcodelife in #1553
- table: Change `context_menu` method in TableDelegate to mutable `window` and `cx`. by @huacnlee in #1487
- toggle: Refactor Toggle, ToggleGroup API. by @huacnlee in #1515
## What's New
### Assets
- Add [gpui-component-assets](https://crates.io/crates/gpui-component-assets) crate by @huacnlee in #1601
See [Icon & Assets](https://longbridge.github.io/gpui-component/docs/assets#use-default-bundled-assets) for how to use.
### Button
- button: Remove duplicate disabled style by @madcodelife in #1529
- button_group: Add vertical by @Moulberry in #1537
- button_group: Fix overriding button click when no on_click by @Moulberry in #1546
### Chart
- chart(pie): Support dynamic inner and outer radius by @madcodelife in #1444
- chart(bar): Fix the label is not centered by @madcodelife in #1448
### Collapsible
- collapsible: Add Collapsible. by @huacnlee in #1525
### ContextMenu
- context_menu: Fix ContextMenu to cover parent element area. by @huacnlee in #1566
### Input & Editor
- editor: Fix indent guides render position. by @huacnlee in #1524
- input: Improve double-click for word selection by @FlyingYu-Z in #1491
- input: Delete selected text with modifier keys by @Moulberry in #1497
- input: Avoid blocking vertical scroll events in single-line mode by @chulingera2025 in #1572
- input: Fix x offset resetting for single line inputs by @zanmato in #1591
### Field
- form(field): Fix label line break not working by @madcodelife in #1558
### Label
- label: Fix Label highlight may crash of `not a char boundary`. by @huacnlee in #1574
### List
- list: Fix incorrect next selection when select index is none by @madcodelife in #1498
- list: Add `searchable`, `search_placeholder` option to List and Select. by @huacnlee in #1503
- list: Avoid select item when selectable(false). by @huacnlee in #1508
### Menu
- menu: Add `item` and export `PopupMenuItem` with builder methods to PopupMenu. by @huacnlee in #1445
- menu: Fix #1545 Popover change broken submenu click in dropdown menu. by @huacnlee in #1563
### Modal
- modal, drawer: Block background interaction when Modal, Drawer is active. by @FlyingYu-Z in #1483
- modal: Adjust close button position. by @huacnlee in #1532
### NumberInput
- number_input: Improve style details by @madcodelife in #1606
### Popover
- popover: Renamed `no_style` to `appearance` like the Input. by @huacnlee in #1523
- popover: Improve Popover API. by @huacnlee in #1545
- popover: Fix #1545 incorrect to sync on_open_change to state. by @huacnlee in #1557
- popover: Fix click trigger to close popover. by @huacnlee in #1559
- popover: Revert defer_to focus on Popover open. by @huacnlee in #1571
### Progress
- progress: Fix incorrect border radius by @madcodelife in #1555
### Select
- select: Impl SelectItem for `&'static str`. by @huacnlee in #1451
- select: Avoid reopen menu when clearing selection by @madcodelife in #1484
- select: Restore the selection when canceling by @madcodelife in #1501
### Slider
- slider: Improve Slider interaction to click on bar to drag. by @CherryWorm in #1544
- slider: Add option to choose between linear and logarithmic scale by @CherryWorm in #1543
- slider: Remove thumb tooltip by @CherryWorm in #1582
### Tab
- tab: Use on_click instead of action for TabBar dropdown menu. by @huacnlee in #1454
### Table
- table: Keep scroll to item at bottom when move down. by @huacnlee in #1499
- table: Fix Table stripe mode overflow scroll. by @huacnlee in #1530
- table: fix row border missing on first frame by @Moulberry in #1505
- table: Fix missing border on first frame by @Moulberry in #1533
### Theme
- theme: Export more theme options for schema. by @huacnlee in #1442
- theme: Allows to use alpha color for active_border but at least 0.3. by @obito-t in #1531
### Tiles
- tiles: Add `tile_radius` theme option and default 0px. by @huacnlee in #1441
- tiles: Add `scrollbar_show` option to Tiles by @ihavecoke in #1496
- tiles: Add to support panel auto-snap while drag movement by @ihavecoke in #1552
### WebView
- webview: Add inspector feature to enable WebView developer tools by @ihavecoke in #1564
## Other Changes
- docs: Fix typo in README charting description by @gurjeet in #1434
- docs: Remove incorrect `Accessibility` section. by @huacnlee in #1439
- docs: Update chart by @madcodelife in #1446
- docs: Improve docs add more details. by @huacnlee in #1447
- docs: Add Context & ElementId doc. by @huacnlee in #1460
- docs: Update docs website style. by @huacnlee in #1488
- docs: Fix footer and add note to home page. by @huacnlee in #1511
- docs: Update version to v0.4.0-preview1 in docs. by @huacnlee in #1534
- chore: Rename Dropdown to Select, TextInput to Input. by @huacnlee in #1449
- chore: Keep spawn task on it owner. by @huacnlee in #1456
- chore: Update List, Tree, Kbd exports. by @huacnlee in #1467
- chore: Move `searchable` to ListState and SelectState. by @huacnlee in #1507
- chore: Remove unused image example. by @huacnlee in #1510
- chore: Standardize the overall API and improve docs. by @huacnlee in #1516
- chore: Dependency `gpui-macros/inspector` to inspector features by @ihavecoke in #1568
## New Contributors
* @gurjeet made their first contribution in https://github.com/longbridge/gpui-component/pull/1434
* @FlyingYu-Z made their first contribution in https://github.com/longbridge/gpui-component/pull/1483
* @Moulberry made their first contribution in https://github.com/longbridge/gpui-component/pull/1497
* @CherryWorm made their first contribution in https://github.com/longbridge/gpui-component/pull/1544
* @chulingera2025 made their first contribution in https://github.com/longbridge/gpui-component/pull/1572
* @zanmato made their first contribution in https://github.com/longbridge/gpui-component/pull/1591
**Full Changelog**: https://github.com/longbridge/gpui-component/compare/v0.3.1...v0.4.0