## longbridge/gpui-kit — v0.7.0…v0.7.1

_50 commits._

### Features
- **clipboard: Add accessibility_label to name the icon button (#3354)** (edd5d3a)
- **speech: Add speech input (#3333)** (0790ad3)
- **Convert markdown source ranges to highlights** — Added the ability to convert a markdown source text range (like from a stored comment or annotation) back into the corresponding rendered text range for highlighting. This includes a new `source()` method to access the original markdown and `range_for_source()` to map source byte ranges to rendered text ranges that can be passed to range highlights. (15da283)
- **dock: Add `DockArea::set_split_sizes` to restore a split's slot sizes (#3314)** (11b04d9)
- **chart: Add appear motion to `Plot` and every chart (#3296)** (c06d463)
- **color_picker: Add ColorSelect, a framed field that opens the picker (#3289)** (17b2c6a)

### Fixes
- **Fixed Select component test examples** — Updated the Re-entrancy testing documentation section with corrected code examples that use public APIs and proper UI testing patterns. The examples now show how to test Select components through the actual UI using keyboard interactions and the `cx.wait_for` method, replacing non-functional placeholder code that relied on private internal APIs. (f89c5cc)
- **Fixed async and startup code examples** — Corrected multiple code examples in the documentation that weren't compiling correctly. The fixes update async patterns to use proper foreground/background task handling without the removed `Task::then` method, and modernize application startup code to use current GPUI APIs. (5d426c3)
- **base: Gate GlobalState's Instant by target to fix a wasm touch panic (#3271)** (5a3892c)

### UI
- **Single-choice questions confirm immediately** — When a user clicks a choice in a single-answer questionnaire item, that item now confirms and moves to the next question automatically—no need to press Next. Selecting the same choice again (like after going back) now works as expected, with a brief 150ms pause so users see their selection before moving on. (2188a98)
- **Fixed Chinese documentation list formatting** — Corrected 15 numbered-list labels in Chinese documentation that were displaying literal `**` characters instead of bold text. The fix moved full-width colons outside of emphasis markers in the overview, accessibility, and keybinding documentation pages. (f6438b8)
- **Fix text clipping in single-line inputs** — Single-line input fields were cutting off the tops and bottoms of text characters, especially visible with mixed CJK and Latin characters. This fix adjusts the input frame layout to ensure the full line height is visible while maintaining proper vertical centering. (3a14284)
- **Radio items stay disabled in groups** — Fixed a bug where individual Radio items marked as disabled would appear enabled and be selectable when placed inside an enabled RadioGroup. Now a Radio item is properly disabled when either it or its parent group is disabled. (1be572b)
- **Textarea rows setting now works** — Fixed a bug where the `rows()` setting on plain Textareas was being ignored and always displayed as a single line. Now when you set `.rows(5)`, for example, the Textarea will actually be 5 rows tall instead of just 1, making it possible to control input heights without needing manual height settings. (eb0cc13)
- **Fix text visibility in filled bubbles** — Text views now inherit their container's text color, ensuring rich text like links, code, and quotes display correctly in filled bubbles. This prevents white-on-white text in dark mode and adapts all text styling colors when displayed on inverted background surfaces. (0b8a653)
- **Fix shimmer highlight visibility in dark mode** — When using ShimmerText with default foreground text in dark mode, the shimmer highlight band was invisible because it matched the text color. The fix now detects when the highlight would be too similar to the text and automatically shifts it toward the opposite color end, making the animation visible. This only affects the default case; custom highlight colors and muted text work as before. (b4c7cbd)
- **Code blocks now scroll independently** — Long fenced code blocks in chat answers can now scroll within a height-capped container with their own scrollbar, instead of pushing content off-screen. When a code block has a max height and scroll enabled, it captures mouse wheel input intelligently—scrolling the code first, then passing wheel events to the parent list once the code reaches its edge. (21113ca)

### Backend
- **kit: Update GPUI to gpui-pre 0.3.8 and prepare v0.7.1 (#3370)** (87d10ae)
- **speech: Pace `SpeechWaveform` at one bar per 80 ms and scroll it smoothly (#3352)** (4890b1c)
- **input: Count characters, not bytes, when validating a mask pattern (#3369)** (6150a8c)
- **text_view: normalize GFM table rows to the header column count (#3365)** (1269b7a)
- **highlighter: Make the Kotlin query compile against its grammar (#3367)** (42fbb97)
- **editor: Measure the completion prefix from the typed text and drop stale trigger offsets (#3363)** (4c7f135)
- **input: Keep horizontal scrolling and soft wrapping consistent (#3358)** (3a39e9d)
- **input: report inline token hover for tooltips and previews (#3346)** (d89a9b2)
- **website: Match onboarding dependencies to release snapshots (#3356)** (2c5162f)
- **website: Fail a docs test on a hand-written GPUI Kit version (#3353)** (3467e64)
- **input: fall back to last caret for IME candidate bounds before repaint (#3286) (#3297)** (73ef866)
- **text: Commit background parses that a newer streamed chunk overtook (#3344)** (a4ba683)
- **input: Group IME rewrites of the typed character into one undo step (#3341)** (21252d8)
- **text: Avoid remeasuring scroll-table column widths (#3318)** (ec6b87f)
- **shell: update QuickJS JIT to 0.12.11 (#3338)** (eb1316f)
- **slider: Let a touch drag on the track move the thumb (#3313)** (9c369db)
- **highlighter: Clip stale injection ranges to char boundaries before slicing (#3317)** (4f861e8)
- **scroll_bounce: Let phaseless wheels scroll again after bouncing at an edge (#3316)** (0d887f1)
- **component: Align control text sizes with Input and Select (#3287)** (4708780)
- **kit: Point the hidden gpui re-export at the Kit itself (#3306)** (caf830c)
- **plot: Keep finished appears across remounts with `PlotAppearScope` (#3308)** (2ec5696)
- **table, menu: Show keyboard focus on `DataTable` and keep menu highlights on key presses (#3307)** (cc83991)
- **website: Keep box-drawing glyphs in the gallery font subsets (#3305)** (cb12d20)
- **website: Fit StatusBar demo sections to narrow windows (#3301)** (9fda5d5)
- **button: Keep the focus line off text and legible on fills (#3300)** (eb6c13a)
- **text: parse prefix extensions incrementally in TextViewState::set_text (#3291) (#3294)** (2960200)
- **button: Show keyboard focus on borderless variants when `focus_ring` is off (#3299)** (db8c62b)
- **text: Keep inline flow lines within the wrap width for CJK punctuation (#3293)** (56dc964)
- **website: Follow release versions and highlight diffs (#3284)** (adde487)
- **command: Keep item row radius concentric with the frame (#3285)** (71bf31a)

### Docs
- **docs: Document macOS font-kit requirement (#3339)** (912f8a9)
- **docs: Update gpui-kit dependency version to 0.7 in READMEs (#3304)** (25d59c0)

### Chore
- **chore: upgrade notify to 8.2 and harden theme watching (#3320)** (201b55a)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/longbridge/gpui-kit?utm_source=github-action)._