v0.7.3

OpenMOSS/MOSS-TTSv0.7.3Oct 12, 2026by huacnlee

Upgrading?

Full Release Notes

GPUI Kit v0.7.3 replaces v0.7.2, which is yanked: it contains every v0.7.2 change and moves GPUI to the gpui-pre 0.3.9 snapshot. Upgrade from v0.7.1 or v0.7.2 directly to v0.7.3.

This release adds a readonly Diff viewer with a Git history example, an optional GPUI Fast backend, and configurable dialog entrances. It refreshes TextView typography and improves text selection, Editor completions, tables, menus, tooltips and accessibility, and stops several per-frame state writes that made long scrolling views rebuild.

## New components and runtime

- **Diff**: display application-supplied unified or Git patches with the virtualized, readonly `Diff` view. `DiffFile::parse` prepares each file and one `DiffState` shows them all, with Unified or Split layout (`DiffMode`), syntax highlighting, folding, change navigation, inline word or character emphasis, soft wrapping, annotations, and two-way or diff3 conflict display. Applications own patch loading, review comments and saving. ([#3378](https://github.com/longbridge/gpui-kit/pull/3378))
- **Git history example**: `examples/tig` is a desktop Git history browser built on Diff, with a resizable commit and file sidebar, Split layout and a settings menu; the Diff review APIs it needed are complete. ([#3388](https://github.com/longbridge/gpui-kit/pull/3388))
- **GPUI snapshot**: exact snapshot dependencies are updated to `=0.3.9` (zed@93d7456), and the optional GPUI Fast backend requires `gpui-fast` 0.1.7 on the same snapshot. ([#3459](https://github.com/longbridge/gpui-kit/pull/3459))
- **GPUI Fast backend**: enable the optional `gpui-fast` feature (`gpui-kit = { version = "0.7", features = ["gpui-fast"] }`) to run on GPUI Fast instead of the default gpui-pre backend. Imports and macros are unchanged, and Windows applications embed a single manifest. ([#3375](https://github.com/longbridge/gpui-kit/pull/3375), [#3380](https://github.com/longbridge/gpui-kit/pull/3380))
- **Fewer rebuilds**: selectable text, the text selection layer, `Root`, inputs, `TextViewState` and resizable panels no longer write state on frames where nothing changed, so retained views under GPUI Fast stay on their scroll layer. ([#3407](https://github.com/longbridge/gpui-kit/pull/3407), [#3418](https://github.com/longbridge/gpui-kit/pull/3418))

## Editor and text input

- **On-demand completions**: dispatch the Editor-only `ShowCompletions` action or call `show_completions` to request suggestions from a command, menu or application shortcut; no default shortcut is bound. ([#3411](https://github.com/longbridge/gpui-kit/pull/3411))
- **Programmatic multi-cursor**: `InputState::add_selection` adds a selection while keeping the existing ones, enabling features such as select all occurrences. ([#3403](https://github.com/longbridge/gpui-kit/pull/3403))
- **Context menus**: an input keeps its selection and focus ring while its context menu is open, and submenus inherit the parent menu's `action_context`, so actions such as Select All reach the source Textarea. Custom `on_context_menu` builders now run after the input is released and can read its cursor and text. ([#3382](https://github.com/longbridge/gpui-kit/pull/3382), [#3433](https://github.com/longbridge/gpui-kit/pull/3433))
- Fixed completion and code-action popups lagging one frame behind the caret, and auto-grow Textareas collapsing to `min_rows` after `set_auto_grow` changes the limits. ([#3412](https://github.com/longbridge/gpui-kit/pull/3412), [#3430](https://github.com/longbridge/gpui-kit/pull/3430))

## Markdown and text rendering

- **Typography**: TextView headings build hierarchy with weight, sizes and spacing scale with the inherited font size, and lists, code, links and tables are more restrained. See Behavior changes. ([#3371](https://github.com/longbridge/gpui-kit/pull/3371))
- **Selection**: mouse selections include block `MarkdownPlugin` content as whole blocks, completed selections survive style, zoom and width changes, and the selection paints under the glyphs so opaque selection colors keep text readable. ([#3373](https://github.com/longbridge/gpui-kit/pull/3373), [#3390](https://github.com/longbridge/gpui-kit/pull/3390), [#3421](https://github.com/longbridge/gpui-kit/pull/3421), [#3439](https://github.com/longbridge/gpui-kit/pull/3439))
- **Tables**: narrow columns size from measured text width and stay on one line, and rounded table frames keep clean corners at any horizontal scroll offset. `RoundedFrameCover` is available for application frames with their own rounded scroll viewports. ([#3399](https://github.com/longbridge/gpui-kit/pull/3399), [#3309](https://github.com/longbridge/gpui-kit/pull/3309), [#3400](https://github.com/longbridge/gpui-kit/pull/3400))
- Fixed inline `<mark>` highlights in Markdown, including `color` and `background-color` attributes. ([#3425](https://github.com/longbridge/gpui-kit/pull/3425))

## Components

- **Dialog**: choose an entrance with `entrance(DialogEntrance::Fade)`, `FadeSlide`, `None` or the default `SlideDown` on `Dialog` and `AlertDialog`; `AlertDialog::margin_top` moves an alert off the default top offset. ([#3405](https://github.com/longbridge/gpui-kit/pull/3405), [#3404](https://github.com/longbridge/gpui-kit/pull/3404))
- **Tooltip**: install `TooltipDefaults` to set the application-wide show delay and grace period, or override one trigger with `tooltip_show_delay`. ([#3376](https://github.com/longbridge/gpui-kit/pull/3376))
- **DataTable**: `header_row_height` sets header rows apart from body rows; the sort icon is a labelled button; `visible_rows_changed` reports one-row and empty tables; a right-clicked cell's outline clears on the next click, exposed through `TableState::right_clicked_cell`. ([#3420](https://github.com/longbridge/gpui-kit/pull/3420), [#3396](https://github.com/longbridge/gpui-kit/pull/3396), [#3397](https://github.com/longbridge/gpui-kit/pull/3397), [#3413](https://github.com/longbridge/gpui-kit/pull/3413))
- **ContextMenu**: a long press opens the menu on touch devices, and the menu takes focus before its first frame, avoiding a debug-build abort with accessibility active. ([#3393](https://github.com/longbridge/gpui-kit/pull/3393), [#3422](https://github.com/longbridge/gpui-kit/pull/3422))
- **TabBar**: clicking a clipped tab scrolls it into view with the next tab peeking. ([#3419](https://github.com/longbridge/gpui-kit/pull/3419))
- **Dock**: closing the focused tab hands focus to the tab that replaces it. ([#3409](https://github.com/longbridge/gpui-kit/pull/3409))
- **DropdownButton**: `menu_accessibility_label` names the caret-only menu trigger, with a localized "More options" default. ([#3410](https://github.com/longbridge/gpui-kit/pull/3410))
- **Settings**: focus rings stay inside the list viewport. ([#3394](https://github.com/longbridge/gpui-kit/pull/3394))
- **UI tests**: `Progress`, `ProgressCircle` and `TitleBar` can be found with `TestWindowExt::find`. ([#3383](https://github.com/longbridge/gpui-kit/pull/3383))

## Documentation

- **Focus and dialogs**: the guides explain recovering focus when the focused element stops rendering, and the `open_dialog` builder and footer contracts. ([#3386](https://github.com/longbridge/gpui-kit/pull/3386), [#3406](https://github.com/longbridge/gpui-kit/pull/3406))

## Behavior changes

TextView renders with new default typography. Heading sizes follow the inherited font size, the paragraph gap is `0.75rem` (was `1rem`), and list, inline code, link and table cell styling change. The paragraph gap, headings and code blocks can be restored through the existing style hooks. ([#3371](https://github.com/longbridge/gpui-kit/pull/3371))

```diff
 TextViewStyle::default()
+    .paragraph_gap(rems(1.))
```

Table column widths in the default wrap layout change for most Markdown tables. A drag that starts and ends inside the same block plugin no longer selects it. ([#3399](https://github.com/longbridge/gpui-kit/pull/3399), [#3390](https://github.com/longbridge/gpui-kit/pull/3390))

While a context menu is open, focus that the application moves elsewhere is no longer pulled back to the menu. ([#3422](https://github.com/longbridge/gpui-kit/pull/3422))

`TableDelegate::visible_rows_changed` now fires with `0..1` for a one-row table and `0..0` when the rows drop to none, and its end never passes `rows_count`. ([#3397](https://github.com/longbridge/gpui-kit/pull/3397))

`TooltipRequest::placement` is deprecated in favor of `with_placement`. ([#3376](https://github.com/longbridge/gpui-kit/pull/3376))

```diff
- TooltipRequest::new(bounds, build).placement(Placement::Right)
+ TooltipRequest::new(bounds, build).with_placement(Placement::Right)
```

Thank you to everyone who contributed code, documentation, testing, and feedback!

## What's Changed
* text_view: Improve default typography by @madcodelife in https://github.com/longbridge/gpui-kit/pull/3371
* text_view: Include block plugins in mouse selections by @lurenjia534 in https://github.com/longbridge/gpui-kit/pull/3373
* kit: Add optional gpui-fast backend by @huacnlee in https://github.com/longbridge/gpui-kit/pull/3375
* tooltip: Make show delay and grace period configurable with `TooltipDefaults` by @madcodelife in https://github.com/longbridge/gpui-kit/pull/3376
* docs: Explain recovering focus when the focused element stops rendering by @AncientPixel in https://github.com/longbridge/gpui-kit/pull/3386
* diff: Add readonly patch viewer by @huacnlee in https://github.com/longbridge/gpui-kit/pull/3378
* kit: Use one Windows manifest with GPUI Fast by @huacnlee in https://github.com/longbridge/gpui-kit/pull/3380
* test: Make Progress and TitleBar findable in UI tests by @AncientPixel in https://github.com/longbridge/gpui-kit/pull/3383
* input: Preserve selection, focus ring and context menu actions by @lurenjia534 in https://github.com/longbridge/gpui-kit/pull/3382
* diff: Add a Git history example and complete review APIs by @huacnlee in https://github.com/longbridge/gpui-kit/pull/3388
* text_view: Ignore gestures that stay inside one block plugin by @ylinwind in https://github.com/longbridge/gpui-kit/pull/3390
* text_view: Round the first and last table rows to the frame radius by @ihavecoke in https://github.com/longbridge/gpui-kit/pull/3309
* menu: Open a context menu with a long press on touch by @Bombatomica64 in https://github.com/longbridge/gpui-kit/pull/3393
* text_view: Keep narrow table columns on one line by @madcodelife in https://github.com/longbridge/gpui-kit/pull/3399
* settings: Keep focus rings inside the list viewport by @lurenjia534 in https://github.com/longbridge/gpui-kit/pull/3394
* scrollable_mask: Keep rounded scroll-table corners clean at any scroll offset by @ihavecoke in https://github.com/longbridge/gpui-kit/pull/3400
* dialog: Add margin_top to AlertDialog by @xxww0098 in https://github.com/longbridge/gpui-kit/pull/3404
* input: Add InputState::add_selection for programmatic multi-cursor by @sola-ryu in https://github.com/longbridge/gpui-kit/pull/3403
* text_selection: Stop writing selection state on every frame by @huacnlee in https://github.com/longbridge/gpui-kit/pull/3407
* table: Make the sort icon a labelled button by @AncientPixel in https://github.com/longbridge/gpui-kit/pull/3396
* table: Report visible row ranges of one row or none by @AncientPixel in https://github.com/longbridge/gpui-kit/pull/3397
* dialog: Support configurable entrance animations by @xxww0098 in https://github.com/longbridge/gpui-kit/pull/3405
* docs: Explain the open_dialog builder and footer contracts by @xxww0098 in https://github.com/longbridge/gpui-kit/pull/3406
* dock: Hand the focus to the tab that replaces a closed one by @sola-ryu in https://github.com/longbridge/gpui-kit/pull/3409
* dropdown_button: Add A11y names for the menu trigger by @sola-ryu in https://github.com/longbridge/gpui-kit/pull/3410
* text, resizable: Stop notifying state that did not change by @huacnlee in https://github.com/longbridge/gpui-kit/pull/3418
* editor: Add on-demand completion commands by @sola-ryu in https://github.com/longbridge/gpui-kit/pull/3411
* table: Clear a right-clicked cell's outline on the next click by @sola-ryu in https://github.com/longbridge/gpui-kit/pull/3413
* tab: Scroll a clicked tab into view with the next one peeking by @madcodelife in https://github.com/longbridge/gpui-kit/pull/3419
* table: Allow a header row height separate from the body by @xhofe in https://github.com/longbridge/gpui-kit/pull/3420
* menu: Focus a context menu before its first frame by @madcodelife in https://github.com/longbridge/gpui-kit/pull/3422
* text: Preserve logical selection across presentation changes by @TomiXRM in https://github.com/longbridge/gpui-kit/pull/3421
* text: Keep inline HTML mark highlights in Markdown by @henrikogaard in https://github.com/longbridge/gpui-kit/pull/3425
* input: Anchor completion/code-action popups to the current frame's caret by @sola-ryu in https://github.com/longbridge/gpui-kit/pull/3412
* input: Run custom context menu builders after releasing the input by @costajohnt in https://github.com/longbridge/gpui-kit/pull/3433
* input: Keep auto-grow rows fitted when the limits change by @sneffets in https://github.com/longbridge/gpui-kit/pull/3430
* text: Paint TextView selection under the glyphs by @cesartalen in https://github.com/longbridge/gpui-kit/pull/3439
* kit: Update GPUI to gpui-pre 0.3.9 by @huacnlee in https://github.com/longbridge/gpui-kit/pull/3459

## New Contributors
* @xxww0098 made their first contribution in https://github.com/longbridge/gpui-kit/pull/3404
* @sola-ryu made their first contribution in https://github.com/longbridge/gpui-kit/pull/3403
* @xhofe made their first contribution in https://github.com/longbridge/gpui-kit/pull/3420
* @TomiXRM made their first contribution in https://github.com/longbridge/gpui-kit/pull/3421
* @henrikogaard made their first contribution in https://github.com/longbridge/gpui-kit/pull/3425
* @costajohnt made their first contribution in https://github.com/longbridge/gpui-kit/pull/3433
* @sneffets made their first contribution in https://github.com/longbridge/gpui-kit/pull/3430
* @cesartalen made their first contribution in https://github.com/longbridge/gpui-kit/pull/3439

**Full Changelog**: https://github.com/longbridge/gpui-kit/compare/v0.7.1...v0.7.3

Related Repositories