v0.7.1

OpenMOSS/MOSS-TTSv0.7.1Oct 5, 2026by huacnlee

Upgrading?

Full Release Notes

# v0.7.1

GPUI Kit v0.7.1 adds speech input and ColorSelect, and gives charts an initial draw-in animation. It improves IME editing, inline-token interactions, Markdown source mapping and streaming, keyboard focus, and table rendering. This release pins the GPUI snapshot dependencies to 0.3.8.

## New components and charts

- **Speech input**: enable the `speech` feature to capture audio with `SpeechState`, start and stop sessions with `SpeechButton`, and display levels with `SpeechWaveform`. Applications can supply a `SpeechRecognizer` and `AudioInput`; native system recognition is available on supported macOS and Windows configurations, while Linux needs an application recognizer. ([#3333](https://github.com/longbridge/gpui-kit/pull/3333))
- **Speech waveform**: levels are sampled once per 80 ms, and the waveform starts empty and scrolls smoothly from the trailing edge using its own playhead. ([#3352](https://github.com/longbridge/gpui-kit/pull/3352))
- **ColorSelect**: use a framed color field with a swatch, hex value and caret in forms. `ColorSelect::new` shares `ColorPickerState` with the compact picker, and supports placeholder and accessible-name overrides. `ColorPicker` now applies its root style refinements. ([#3289](https://github.com/longbridge/gpui-kit/pull/3289))
- **Chart appear motion**: built-in charts draw their data in on first paint, with reduced-motion support. Use `.appear(false)` to opt out or `.appear_key(...)` to replay; `PlotAppearScope` remembers completed animations across virtual-list remounts while the scope remains painted. Existing custom plots retain their behavior unless they opt in. ([#3296](https://github.com/longbridge/gpui-kit/pull/3296), [#3308](https://github.com/longbridge/gpui-kit/pull/3308))

## Editor and text input

- **Inline-token hover**: `Input::on_token_hover` and `Textarea::on_token_hover` report token entry and exit with `InlineTokenHoverEvent`, so applications can anchor tooltips or previews without changing selection. JavaScript bindings expose the same interaction. ([#3346](https://github.com/longbridge/gpui-kit/pull/3346))
- Fixed IME candidate positioning before repaint and grouped rewrites of a typed character, including Korean IME input, into the typing undo step. ([#3297](https://github.com/longbridge/gpui-kit/pull/3297), [#3341](https://github.com/longbridge/gpui-kit/pull/3341))
- Fixed Textarea row-based height, text clipping in short single-line frames, and consistency between soft wrapping and horizontal scrolling. ([#3330](https://github.com/longbridge/gpui-kit/pull/3330), [#3343](https://github.com/longbridge/gpui-kit/pull/3343), [#3358](https://github.com/longbridge/gpui-kit/pull/3358))
- Fixed completion-prefix measurement and stale trigger offsets, Kotlin syntax-query compilation, and stale syntax-injection ranges. ([#3363](https://github.com/longbridge/gpui-kit/pull/3363), [#3367](https://github.com/longbridge/gpui-kit/pull/3367), [#3317](https://github.com/longbridge/gpui-kit/pull/3317))
- Fixed mask validation for non-ASCII characters, including Chinese literal separators and characters matched by `*`. ([#3369](https://github.com/longbridge/gpui-kit/pull/3369))

## Markdown and text rendering

- **Source-based highlights**: `RenderedText::source` exposes the source of the rendered snapshot, and `range_for_source` converts Markdown source byte ranges into rendered ranges for `RangeHighlight`. ([#3281](https://github.com/longbridge/gpui-kit/pull/3281))
- **Scrollable code blocks**: a code-block style with vertical scrolling and a height cap now provides its own scrollbar, handles nested wheel scrolling and keeps code actions pinned. ([#3322](https://github.com/longbridge/gpui-kit/pull/3322))
- Improved streaming through incremental prefix updates in `TextViewState::set_text` and by committing valid background parse results overtaken by newer chunks. ([#3294](https://github.com/longbridge/gpui-kit/pull/3294), [#3344](https://github.com/longbridge/gpui-kit/pull/3344))
- Fixed CJK punctuation wrapping, inherited text colors in filled containers, and ragged GFM table rows; scroll-table column measurements are reused. ([#3293](https://github.com/longbridge/gpui-kit/pull/3293), [#3329](https://github.com/longbridge/gpui-kit/pull/3329), [#3365](https://github.com/longbridge/gpui-kit/pull/3365), [#3318](https://github.com/longbridge/gpui-kit/pull/3318))

## Dock and controls

- **Dock**: `DockArea::set_split_sizes` restores a split's proportions in place, without rebuilding panels, and reports one layout change. ([#3314](https://github.com/longbridge/gpui-kit/pull/3314))
- **Questionnaire**: choosing a single-choice answer now confirms the item and advances or submits after a brief feedback pause. `QuestionnaireState::choose` exposes that activation path; `activate_choice` continues to change the answer without confirming. Arrow-key selection, multiple-choice toggles and freeform typing do not auto-advance. ([#3350](https://github.com/longbridge/gpui-kit/pull/3350))
- **Keyboard focus**: borderless buttons show a legible focus line, DataTable shows keyboard focus, and popup menus preserve a single keyboard highlight. ([#3299](https://github.com/longbridge/gpui-kit/pull/3299), [#3300](https://github.com/longbridge/gpui-kit/pull/3300), [#3307](https://github.com/longbridge/gpui-kit/pull/3307))
- **Control sizing**: control text follows the Input/Select size ladder, OtpInput follows interface zoom, and Large Switch uses a larger track. ([#3287](https://github.com/longbridge/gpui-kit/pull/3287))
- **Clipboard**: buttons have a localized accessible name by default; `accessibility_label` provides a contextual override. ([#3354](https://github.com/longbridge/gpui-kit/pull/3354))
- **Slider**: touch drags on the track move the thumb. ([#3313](https://github.com/longbridge/gpui-kit/pull/3313))
- **Radio**: disabled controls stay disabled inside RadioGroup. ([#3331](https://github.com/longbridge/gpui-kit/pull/3331))
- **Shimmer**: the default highlight remains visible on foreground text in dark mode. ([#3328](https://github.com/longbridge/gpui-kit/pull/3328))
- **Command**: item-row corners stay concentric with the frame. ([#3285](https://github.com/longbridge/gpui-kit/pull/3285))

## Runtime, platform and documentation

- **GPUI snapshot**: exact snapshot dependencies are updated to `=0.3.8`, with continuation-indent API adaptation preserving the previous wrapping behavior. ([#3370](https://github.com/longbridge/gpui-kit/pull/3370))

- **Web runtime**: target-specific Instant handling avoids a touch-related wasm panic. ([#3271](https://github.com/longbridge/gpui-kit/pull/3271))
- **Scrolling**: phaseless mouse wheels continue scrolling after an edge bounce. ([#3316](https://github.com/longbridge/gpui-kit/pull/3316))
- **Shell**: QuickJS JIT is updated to 0.12.11. ([#3338](https://github.com/longbridge/gpui-kit/pull/3338))
- **Kit macros**: the hidden GPUI re-export points at Kit, keeping generated paths consistent. ([#3306](https://github.com/longbridge/gpui-kit/pull/3306))
- **Documentation**: release snapshots drive onboarding dependency versions; setup documents the macOS font-kit requirement, and skill examples correct app startup, async and Select re-entrancy usage. ([#3284](https://github.com/longbridge/gpui-kit/pull/3284), [#3356](https://github.com/longbridge/gpui-kit/pull/3356), [#3339](https://github.com/longbridge/gpui-kit/pull/3339), [#3345](https://github.com/longbridge/gpui-kit/pull/3345), [#3351](https://github.com/longbridge/gpui-kit/pull/3351))

## Behavior changes

Charts animate on first paint by default; disable this with `.appear(false)`. Non-interactive built-in charts now retain an element ID for animation and caches, while remaining non-interactive. ([#3296](https://github.com/longbridge/gpui-kit/pull/3296))

```diff
  let chart = LineChart::new(data).interactive(false);
- assert!(Plot::id(&chart).is_none());
+ assert!(Plot::id(&chart).is_some());
+ assert!(!Plot::interactive(&chart));
```

Single-choice Questionnaire activation now confirms by default. Applications that need to change an answer without confirmation can continue to call `activate_choice`. ([#3350](https://github.com/longbridge/gpui-kit/pull/3350))

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

## What's Changed
* command: Keep item row radius concentric with the frame by @madcodelife in https://github.com/longbridge/gpui-kit/pull/3285
* website: Follow release versions and highlight diffs by @huacnlee in https://github.com/longbridge/gpui-kit/pull/3284
* base: Gate GlobalState's Instant by target to fix a wasm touch panic by @yoyo930021 in https://github.com/longbridge/gpui-kit/pull/3271
* color_picker: Add ColorSelect, a framed field that opens the picker by @huacnlee in https://github.com/longbridge/gpui-kit/pull/3289
* text: Keep inline flow lines within the wrap width for CJK punctuation by @madcodelife in https://github.com/longbridge/gpui-kit/pull/3293
* button: Show keyboard focus on borderless variants when `focus_ring` is off by @madcodelife in https://github.com/longbridge/gpui-kit/pull/3299
* chart: Add appear motion to `Plot` and every chart by @madcodelife in https://github.com/longbridge/gpui-kit/pull/3296
* text: parse prefix extensions incrementally in TextViewState::set_text (#3291) by @Yi-111-a in https://github.com/longbridge/gpui-kit/pull/3294
* button: Keep the focus line off text and legible on fills by @madcodelife in https://github.com/longbridge/gpui-kit/pull/3300
* website: Fit StatusBar demo sections to narrow windows by @ihavecoke in https://github.com/longbridge/gpui-kit/pull/3301
* docs: Update gpui-kit dependency version to 0.7 in READMEs by @obito-t in https://github.com/longbridge/gpui-kit/pull/3304
* website: Keep box-drawing glyphs in the gallery font subsets by @ihavecoke in https://github.com/longbridge/gpui-kit/pull/3305
* table, menu: Show keyboard focus on `DataTable` and keep menu highlights on key presses by @madcodelife in https://github.com/longbridge/gpui-kit/pull/3307
* plot: Keep finished appears across remounts with `PlotAppearScope` by @madcodelife in https://github.com/longbridge/gpui-kit/pull/3308
* kit: Point the hidden gpui re-export at the Kit itself by @huacnlee in https://github.com/longbridge/gpui-kit/pull/3306
* dock: Add `DockArea::set_split_sizes` to restore a split's slot sizes by @IHadACookie in https://github.com/longbridge/gpui-kit/pull/3314
* component: Align control text sizes with Input and Select by @huacnlee in https://github.com/longbridge/gpui-kit/pull/3287
* scroll_bounce: Let phaseless wheels scroll again after bouncing at an edge by @ylinwind in https://github.com/longbridge/gpui-kit/pull/3316
* highlighter: Clip stale injection ranges to char boundaries before slicing by @huacnlee in https://github.com/longbridge/gpui-kit/pull/3317
* slider: Let a touch drag on the track move the thumb by @Bombatomica64 in https://github.com/longbridge/gpui-kit/pull/3313
* chore: upgrade notify to 8.2 and harden theme watching by @orielhaim in https://github.com/longbridge/gpui-kit/pull/3320
* shell: update QuickJS JIT to 0.12.11 by @huacnlee in https://github.com/longbridge/gpui-kit/pull/3338
* docs: Document macOS font-kit requirement by @huacnlee in https://github.com/longbridge/gpui-kit/pull/3339
* text: Avoid remeasuring scroll-table column widths by @lurenjia534 in https://github.com/longbridge/gpui-kit/pull/3318
* markdown: add source & range_for_source by @tidely in https://github.com/longbridge/gpui-kit/pull/3281
* text_view: Let fenced code blocks scroll inside a height cap by @jarviisha in https://github.com/longbridge/gpui-kit/pull/3322
* shimmer: Keep the default highlight visible on foreground text in dark mode by @Bombatomica64 in https://github.com/longbridge/gpui-kit/pull/3328
* text_view: Follow the container's text color so rich text reads in filled bubbles by @Bombatomica64 in https://github.com/longbridge/gpui-kit/pull/3329
* input: Make rows set the height of a plain Textarea again by @Bombatomica64 in https://github.com/longbridge/gpui-kit/pull/3330
* radio: Keep a disabled Radio disabled inside a RadioGroup by @Bombatomica64 in https://github.com/longbridge/gpui-kit/pull/3331
* input: Keep a single-line Input's text from being clipped in a short frame by @huacnlee in https://github.com/longbridge/gpui-kit/pull/3343
* website: Fix bold labels in Chinese numbered lists by @ihavecoke in https://github.com/longbridge/gpui-kit/pull/3342
* skills: Fix async and app startup examples that don't compile by @AncientPixel in https://github.com/longbridge/gpui-kit/pull/3345
* questionnaire: Confirm a single-choice item when a choice is chosen by @madcodelife in https://github.com/longbridge/gpui-kit/pull/3350
* skills: Fix the Select re-entrancy test examples by @AncientPixel in https://github.com/longbridge/gpui-kit/pull/3351
* speech: Add speech input by @madcodelife in https://github.com/longbridge/gpui-kit/pull/3333
* input: Group IME rewrites of the typed character into one undo step by @insd47 in https://github.com/longbridge/gpui-kit/pull/3341
* text: Commit background parses that a newer streamed chunk overtook by @FenjuFu in https://github.com/longbridge/gpui-kit/pull/3344
* input: fall back to last caret for IME candidate bounds before repaint (#3286) by @Yi-111-a in https://github.com/longbridge/gpui-kit/pull/3297
* website: Fail a docs test on a hand-written GPUI Kit version by @Yi-111-a in https://github.com/longbridge/gpui-kit/pull/3353
* website: Match onboarding dependencies to release snapshots by @huacnlee in https://github.com/longbridge/gpui-kit/pull/3356
* clipboard: Add accessibility_label to name the icon button by @counterbeing in https://github.com/longbridge/gpui-kit/pull/3354
* input: report inline token hover for tooltips and previews by @Muhammad-Owais-Warsi in https://github.com/longbridge/gpui-kit/pull/3346
* input: Keep horizontal scrolling and soft wrapping consistent by @suxiaoshao in https://github.com/longbridge/gpui-kit/pull/3358
* editor: Measure the completion prefix from the typed text and drop stale trigger offsets by @abderbejaoui in https://github.com/longbridge/gpui-kit/pull/3363
* highlighter: Make the Kotlin query compile against its grammar by @PieWhite in https://github.com/longbridge/gpui-kit/pull/3367
* text_view: normalize GFM table rows to the header column count by @kossoy in https://github.com/longbridge/gpui-kit/pull/3365
* input: Count characters, not bytes, when validating a mask pattern by @kevin9327 in https://github.com/longbridge/gpui-kit/pull/3369
* speech: Pace `SpeechWaveform` at one bar per 80 ms and scroll it smoothly by @madcodelife in https://github.com/longbridge/gpui-kit/pull/3352
* kit: Update GPUI to gpui-pre 0.3.8 and prepare v0.7.1 by @huacnlee in https://github.com/longbridge/gpui-kit/pull/3370

## New Contributors
* @yoyo930021 made their first contribution in https://github.com/longbridge/gpui-kit/pull/3271
* @Bombatomica64 made their first contribution in https://github.com/longbridge/gpui-kit/pull/3313
* @orielhaim made their first contribution in https://github.com/longbridge/gpui-kit/pull/3320
* @AncientPixel made their first contribution in https://github.com/longbridge/gpui-kit/pull/3345
* @insd47 made their first contribution in https://github.com/longbridge/gpui-kit/pull/3341
* @FenjuFu made their first contribution in https://github.com/longbridge/gpui-kit/pull/3344
* @counterbeing made their first contribution in https://github.com/longbridge/gpui-kit/pull/3354
* @abderbejaoui made their first contribution in https://github.com/longbridge/gpui-kit/pull/3363
* @PieWhite made their first contribution in https://github.com/longbridge/gpui-kit/pull/3367
* @kevin9327 made their first contribution in https://github.com/longbridge/gpui-kit/pull/3369

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

Related Repositories