v0.6.1

longbridge/gpui-kitv0.6.1Sep 9, 2026by huacnlee

AI Summary

GPUI Kit v0.6.1 introduces multi-cursor editing, automatic bracket pairing, and headless UI testing capabilities. It also enhances Markdown rendering, text selection, accessibility, and general component behaviors.

Key Highlights

  • Multi-cursor editing with Alt-click and column selection support
  • Automatic bracket pairing and smart indentation on Enter
  • Headless UI testing support via the `test-support` feature
  • Enhanced Markdown rendering including YAML frontmatter support
  • Improved accessibility for dialogs, selects, and calendar items

New Features

  • Multi-cursor editing functionality
  • Automatic bracket pairing and smart indentation
  • Headless UI testing API
  • YAML frontmatter rendering plugin
  • Preferred tooltip placement for buttons
  • Committed values exposure for Select components
  • Styled support and label_style for SidebarMenuItem
  • SVG byte support in icon slots
  • Exposed `list` and `uniform_list` to scripts
  • Markdown inline code styling improvements

Full Release Notes

# GPUI Kit v0.6.1

GPUI Kit v0.6.1 brings multi-cursor editing, automatic bracket pairing, smart indentation, and headless UI testing. This release also improves Markdown rendering, text selection, accessibility, and everyday component behavior.

## Editor and Text Input

- **Multi-cursor editing** with Alt-click to add cursors and Shift-Alt-drag for column selection. Column selections now preserve their width across short lines. ([#2837](https://github.com/longbridge/gpui-kit/pull/2837), [#2987](https://github.com/longbridge/gpui-kit/pull/2987))
- **Automatic bracket pairing and smart indentation** on Enter, with configurable language rules and independent `auto_close` and `smart_indent` preferences. ([#3018](https://github.com/longbridge/gpui-kit/pull/3018))
- Improved search behavior: reopening search restores focus, preserves the active match, and reveals matches after manual scrolling. ([#2932](https://github.com/longbridge/gpui-kit/pull/2932), [#2953](https://github.com/longbridge/gpui-kit/pull/2953), [#2955](https://github.com/longbridge/gpui-kit/pull/2955))
- Fixed cursor movement across CRLF boundaries and pending syntax highlighting when switching languages. ([#2986](https://github.com/longbridge/gpui-kit/pull/2986), [#2994](https://github.com/longbridge/gpui-kit/pull/2994))
- Fixed selection drag-autoscroll in virtualized lists and ensured scrolling stops when the selection gesture ends. ([#2948](https://github.com/longbridge/gpui-kit/pull/2948), [#2941](https://github.com/longbridge/gpui-kit/pull/2941))
- Reduced unnecessary updates when scroll and paint state remain unchanged. ([#2988](https://github.com/longbridge/gpui-kit/pull/2988))

## Headless UI Testing

Applications can now test interactions and layout through `gpui_kit::test`, enabled by the `test-support` feature. The testing API supports scoped queries, native input events, state snapshots, and waiting for deferred updates.

This release also expands integration coverage across core controls, menus, dialogs, tables, and dock layouts, with separate Metal rendering checks on macOS. ([#3005](https://github.com/longbridge/gpui-kit/pull/3005), [#3019](https://github.com/longbridge/gpui-kit/pull/3019))

## Markdown and Text Rendering

- Added opt-in **YAML frontmatter rendering** through `MarkdownExtensions::frontmatter()` and `FrontmatterPlugin`. Supported mappings render as structured metadata; unsupported content falls back to a YAML code block. ([#2850](https://github.com/longbridge/gpui-kit/pull/2850))
- Corrected hard and soft line-break rendering. ([#2945](https://github.com/longbridge/gpui-kit/pull/2945), [#2947](https://github.com/longbridge/gpui-kit/pull/2947))
- Improved inline code styling with rounded backgrounds and a monospace font. ([#2949](https://github.com/longbridge/gpui-kit/pull/2949))
- Fixed stale measurements when replacing a document with another containing the same number of blocks. ([#2946](https://github.com/longbridge/gpui-kit/pull/2946))

## Components and Accessibility

- **Button:** added preferred tooltip placement and restored the selected background for ghost buttons. ([#2971](https://github.com/longbridge/gpui-kit/pull/2971), [#2938](https://github.com/longbridge/gpui-kit/pull/2938))
- **Select:** exposed committed values, improved accessible activation, and made `on_dismiss` run consistently regardless of how the popup closes. ([#2973](https://github.com/longbridge/gpui-kit/pull/2973), [#2984](https://github.com/longbridge/gpui-kit/pull/2984))
- **Sidebar:** added `Styled` support and `label_style` to `SidebarMenuItem`. ([#2957](https://github.com/longbridge/gpui-kit/pull/2957))
- **Icons:** added SVG byte support in component icon slots and shared Lucide icon names while preserving default icons. ([#2980](https://github.com/longbridge/gpui-kit/pull/2980), [#3020](https://github.com/longbridge/gpui-kit/pull/3020))
- Fixed panel resizing flicker and list measurement when the configured measurement row is absent. ([#2907](https://github.com/longbridge/gpui-kit/pull/2907), [#2975](https://github.com/longbridge/gpui-kit/pull/2975))
- Improved accessibility for dialog close buttons and calendar items. ([#2969](https://github.com/longbridge/gpui-kit/pull/2969), [#2996](https://github.com/longbridge/gpui-kit/pull/2996))
- Added fallback to an installed monospace font when the default is unavailable. ([#3009](https://github.com/longbridge/gpui-kit/pull/3009))

## Runtime and Platform Improvements

- Refined FPS reporting using frame cost and the display's refresh rate, with sustained frames enabled by default. ([#2944](https://github.com/longbridge/gpui-kit/pull/2944), [#2954](https://github.com/longbridge/gpui-kit/pull/2954), [#2956](https://github.com/longbridge/gpui-kit/pull/2956))
- Restricted Windows native-menu `uxtheme` loading to System32. ([#2974](https://github.com/longbridge/gpui-kit/pull/2974))
- Updated Tree-sitter and removed the previous workaround. ([#2990](https://github.com/longbridge/gpui-kit/pull/2990))

## Documentation

The documentation website now uses Astro, with improved App Stories browsing and preserved sidebar scroll position. Component API documentation is separated from shared Kit guides, with expanded coverage of fonts, editor search, UI testing, and AI-assisted development.

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

## What's Changed
* website: Bundle IBM Plex Sans so `.SystemUIFont` resolves on the web by @huacnlee in https://github.com/longbridge/gpui-kit/pull/2933
* gpui-pre: Audit licenses before publishing and state GPUI's origin by @huacnlee in https://github.com/longbridge/gpui-kit/pull/2936
* chore: Let the doctests written for gpui-kit users compile by @huacnlee in https://github.com/longbridge/gpui-kit/pull/2937
* website: Add a release notes page and keep page titles off the toolbar by @huacnlee in https://github.com/longbridge/gpui-kit/pull/2935
* button: Select a ghost button with `secondary_active` again by @madcodelife in https://github.com/longbridge/gpui-kit/pull/2938
* shell: Improve application compatibility by @huacnlee in https://github.com/longbridge/gpui-kit/pull/2939
* chroe: Drop the unused reqwest_client dependency by @huacnlee in https://github.com/longbridge/gpui-kit/pull/2940
* base: Stop auto scroll once the text selection gesture has ended by @madcodelife in https://github.com/longbridge/gpui-kit/pull/2941
* skills: Quote gpui-kit skill description by @prabirshrestha in https://github.com/longbridge/gpui-kit/pull/2943
* fps: Sustain frames by default, and stop grading the rate by @huacnlee in https://github.com/longbridge/gpui-kit/pull/2944
* website: migrate from VitePress to Astro by @endless-bot in https://github.com/longbridge/gpui-kit/pull/2926
* story: Draw the chart gallery through a virtual list by @huacnlee in https://github.com/longbridge/gpui-kit/pull/2950
* markdown: render hard line breaks instead of concatenating lines by @kossoy in https://github.com/longbridge/gpui-kit/pull/2945
* editor: Refocus the search bar when search is invoked again by @hlcfan in https://github.com/longbridge/gpui-kit/pull/2932
* markdown: reflow soft line breaks instead of rendering them as hard breaks by @kossoy in https://github.com/longbridge/gpui-kit/pull/2947
* text: remeasure list items when a document is replaced with an equal block count by @kossoy in https://github.com/longbridge/gpui-kit/pull/2946
* website: Add five apps to the app stories page by @huacnlee in https://github.com/longbridge/gpui-kit/pull/2951
* resizable: Fix panel resizing flickering by @hlcfan in https://github.com/longbridge/gpui-kit/pull/2907
* shell: Expose GPUI's list and uniform_list to scripts by @huacnlee in https://github.com/longbridge/gpui-kit/pull/2952
* fps: Derive the headline rate from frame cost instead of driving the frame loop by @huacnlee in https://github.com/longbridge/gpui-kit/pull/2954
* fps: Cap the headline by asking the platform what the panel runs at by @huacnlee in https://github.com/longbridge/gpui-kit/pull/2956
* sidebar: make SidebarMenuItem implement Styled and add label_style by @ItsCacia in https://github.com/longbridge/gpui-kit/pull/2957
* website: Fix Showcase lockfile installation in docs releases by @huacnlee in https://github.com/longbridge/gpui-kit/pull/2958
* website: Refine App Stories layout and browsing by @huacnlee in https://github.com/longbridge/gpui-kit/pull/2960
* website: Remove two Vue components orphaned by the Astro migration by @huacnlee in https://github.com/longbridge/gpui-kit/pull/2965
* editor: Reveal search match after manual scroll by @hlcfan in https://github.com/longbridge/gpui-kit/pull/2955
* chore: Forward platform test support and profiling by @grishy in https://github.com/longbridge/gpui-kit/pull/2966
* base: move the native examples into their own package by @Tryanks in https://github.com/longbridge/gpui-kit/pull/2963
* editor: Preserve active search match on panel open by @hlcfan in https://github.com/longbridge/gpui-kit/pull/2953
* dialog: make the close button accessible by @grishy in https://github.com/longbridge/gpui-kit/pull/2969
* button: expose preferred tooltip placement by @grishy in https://github.com/longbridge/gpui-kit/pull/2971
* docs: welcome AI-assisted contributions by @huacnlee in https://github.com/longbridge/gpui-kit/pull/2981
* ci: enable weekly gpui-pre releases by @huacnlee in https://github.com/longbridge/gpui-kit/pull/2982
* native_menu: Constrain uxtheme loading to System32 by @lurenjia534 in https://github.com/longbridge/gpui-kit/pull/2974
* select: expose committed values and accessible activation by @grishy in https://github.com/longbridge/gpui-kit/pull/2973
* list: measure an existing row when the configured item is absent by @grishy in https://github.com/longbridge/gpui-kit/pull/2975
* story: replace List search results without duplicating rows by @grishy in https://github.com/longbridge/gpui-kit/pull/2976
* icon: Support SVG bytes in component icon slots by @suxiaoshao in https://github.com/longbridge/gpui-kit/pull/2980
* select: run on_dismiss however the popup closes by @huacnlee in https://github.com/longbridge/gpui-kit/pull/2984
* chore: isolate story examples from test-support by @huacnlee in https://github.com/longbridge/gpui-kit/pull/2985
* input: Multi cursors by @zanmato in https://github.com/longbridge/gpui-kit/pull/2837
* input: Keep column selection width over short rows by @huacnlee in https://github.com/longbridge/gpui-kit/pull/2987
* input: preserve CRLF cursor boundaries and document shortcuts by @kossoy in https://github.com/longbridge/gpui-kit/pull/2986
* chore: Fix the CI metadata parse and skip unchanged snapshots by @huacnlee in https://github.com/longbridge/gpui-kit/pull/2992
* fix(base): name calendar items for accessibility by @huacnlee in https://github.com/longbridge/gpui-kit/pull/2996
* chore: improve component conventions for AI-assisted development by @huacnlee in https://github.com/longbridge/gpui-kit/pull/2993
* highlighter: Update tree-sitter to remove workaround by @zanmato in https://github.com/longbridge/gpui-kit/pull/2990
* input: trigger pending re-highlight when switching editor language by @Muhammad-Owais-Warsi in https://github.com/longbridge/gpui-kit/pull/2994
* input: Avoid notifying unchanged scroll and paint state by @jlucaso1 in https://github.com/longbridge/gpui-kit/pull/2988
* docs: document editor search panel and searchable API by @Muhammad-Owais-Warsi in https://github.com/longbridge/gpui-kit/pull/3002
* chore: Expand CONTRIBUTING.md with GPUI and GPUI Kit details by @huacnlee in https://github.com/longbridge/gpui-kit/pull/3004
* docs: separate Component API docs from shared Kit guides by @huacnlee in https://github.com/longbridge/gpui-kit/pull/3006
* theme: Fall back to an installed monospace font when the default is missing by @madcodelife in https://github.com/longbridge/gpui-kit/pull/3009
* docs: document fonts - system, theme, custom bundling, and WASM by @Muhammad-Owais-Warsi in https://github.com/longbridge/gpui-kit/pull/3010
* kit: Add headless UI testing to gpui-kit by @huacnlee in https://github.com/longbridge/gpui-kit/pull/3005
* docs: migrate root/theme/dock from docs to component section by @endless-bot in https://github.com/longbridge/gpui-kit/pull/3014
* website: Preserve docs sidebar scroll position across navigation by @loosheng in https://github.com/longbridge/gpui-kit/pull/3007
* kit: expand core UI integration coverage by @huacnlee in https://github.com/longbridge/gpui-kit/pull/3019
* markdown: Add Frontmatter plugin as structured metadata by @BeratHundurel in https://github.com/longbridge/gpui-kit/pull/2850
* assets: share Lucide icon names and preserve default icons by @huacnlee in https://github.com/longbridge/gpui-kit/pull/3020
* text_view: Improve inline code render with rounded style and mono font by @kossoy in https://github.com/longbridge/gpui-kit/pull/2949
* text_selection: drag-autoscroll never moved a virtualized list by @kossoy in https://github.com/longbridge/gpui-kit/pull/2948
* editor: auto-close brackets and smart indent on Enter by @Muhammad-Owais-Warsi in https://github.com/longbridge/gpui-kit/pull/3018

## New Contributors
* @prabirshrestha made their first contribution in https://github.com/longbridge/gpui-kit/pull/2943
* @endless-bot made their first contribution in https://github.com/longbridge/gpui-kit/pull/2926
* @kossoy made their first contribution in https://github.com/longbridge/gpui-kit/pull/2945
* @grishy made their first contribution in https://github.com/longbridge/gpui-kit/pull/2966
* @Tryanks made their first contribution in https://github.com/longbridge/gpui-kit/pull/2963
* @Muhammad-Owais-Warsi made their first contribution in https://github.com/longbridge/gpui-kit/pull/2994
* @loosheng made their first contribution in https://github.com/longbridge/gpui-kit/pull/3007

**Full Changelog**: https://github.com/longbridge/gpui-kit/compare/v0.6.0...v0.6.1