Commit Graph
3275 Commits
Author SHA1 Message Date
Mike-Solar 447353ebbd fix(gpui): node cards scale with zoom; explorer icon grid shows thumbnails
- node_graph: card geometry stays graph-space; paint/hit-test/wire
  endpoints scale by zoom so nodes no longer overlap at zoom != 1
- project_explorer: icon grid aligns items to start (no full-height
  selection stretch), loads thumbnails from filesystem paths and
  observes the data source for late arrivals
2026-08-18 12:41:04 +08:00
Mike-Solar 27c6c393c3 feat(gpui): track-header toggle targets + explorer icon buttons 2026-08-17 01:37:31 +08:00
Mike-Solar 819029e876 fix(dock): panel drag reorders the layout
The strip handed the drag to the dock area via cx.emit, which is
deferred — the dock's drag state was created a dispatch too late, so
the hovered target was never recorded and drops were no-ops. The dock
area now lazily begins the drag in its own capture-phase handler;
drops onto the root edge from the panel's own group split the tree
instead of being swallowed as self-drops.
2026-08-16 19:46:05 +08:00
Mike-Solar c1fc52c654 feat: explorer icons show root-level footage; footage drag source; timeline layout constants public 2026-08-16 19:07:33 +08:00
Mike-Solar 6162b2fc50 feat(gpui): ruler markers + work-area drag reshape 2026-08-16 16:06:19 +08:00
Mike-Solar fc0420ddd8 feat(gpui): content-width dock tabs, rounded timeline clips 2026-08-13 23:37:57 +08:00
Mike-Solar 888c39bf27 feat(gpui_widgets): menu scrubbing, content-width popups, density pass
- MenuBar: hover another title with a menu open to switch (scrubbing)
- menu popup width computed from the longest label; ROW_HEIGHT 22
- dock tab bar 26px / smaller tab text; viewer transport tightened
2026-08-13 18:16:10 +08:00
Mike-Solar af5482d774 style: cargo fmt with the workspace tab policy (hard_tabs)
Whitespace only; the fork has no own rustfmt.toml so the Oak root
policy applies.
2026-08-11 23:06:13 +08:00
Mike-Solar 49e471ae64 feat(gpui, gpui_widgets): i18n string-table hook + node-graph fit API
- gpui::i18n: minimal string-table override (set_table/tr/clear_table) with
  built-in defaults; effect-stack and viewer strings now go through it so
  hosts can localize widget-baked labels without a full i18n framework.
- gpui_widgets::i18n re-exports the hook (gpui_widgets::i18n::set_table).
- node_graph: GraphViewState::fit_to_rect for fit-window/initial viewports
  (unit tested); NodeGraphView::viewport_size accessor for fit targets.
2026-08-10 16:52:39 +08:00
Mike-Solar 16ae7c42df gpui_widgets defect fixes: menu checkmarks, dock ratios, meter orientation, CPU frames, drop-frame timecode
- menu: add runtime set-checked path (MenuItem::set_checked/clear_checked,
  Menu::set_item_checked recursive, MenuBar::set_item_checked)
- dock: Split now stores per-child ratios (sum 1.0) so 3+ panels on one
  axis keep distinct sizes; resize_split_child adjusts a single boundary,
  resize_split keeps its two-arg whole-share semantics; one handle per
  boundary; DockLayoutState VERSION bumped to 2 for the new ratios field
- audio_meter: MeterOrientation::Vertical for the 26px transport strip,
  segments lit bottom to top
- viewer: ViewerFrameSource::CpuFrame + set_cpu_frame (BGRA8 RenderImage
  via the sprite atlas) for platforms without CVPixelBuffer
- timeline: TimeDisplay::TimecodeDropFrame (SMPTE drop-frame for NTSC
  rates, non-drop fallback otherwise)
- gpui_widgets: regression test pinning the fractional spacing helpers
  (py_0p5/py_1p5/py_2p5/py_3p5 already exist; no _0_5 aliases added)
2026-08-10 05:45:53 +08:00
Mike-Solar 47c6126d0c feat(gpui): add track selection and transition-resize gestures to timeline
W5 timeline supplements: clicking a track header toggles the track in a
selected_tracks set and emits TimelineEvent::TrackSelected; clips with in/out
transitions get a resize handle at the wedge edge that emits
TimelineEvent::TransitionChanged with the clamped new length (delta-scaled
by zoom). Both follow the request-only contract. 182 gpui tests pass.
2026-08-09 06:22:15 +08:00
Mike-Solar ad7c965c5a feat(gpui): add dock, effect stack, node graph, and timeline widgets
Implements four workspace widget modules with accompanying learn examples:

- dock: dockable panel layout system (tabs, splits, drag-to-dock) with
  serde-based persistence via PanelRegistry / DockLayoutState
- effect_stack: linear effect-stack inspector widget
- node_graph: node-graph editor (nodes, ports, wires, pan/zoom canvas)
- timeline: video-editing timeline (tracks, clips, ruler, playhead)

Timeline snapping prefers the earlier frame when two snap points are
equally close, with SnapKind priority breaking same-frame ties.
2026-08-09 03:31:06 +08:00
Max Carter 祁明思 6043651563 Add letter spacing and text transforms to GPUI (#111)
* Add text spacing and transform style plumbing

* Apply byte-stable transforms and spacing-aware truncation

* Add platform letter spacing support

* Fix scheduler clippy warning

* Refresh dependency lockfile

* Fix CI for text spacing changes

* Add text transform preview example
2026-08-07 21:48:02 -07:00
Brendon Felix 568271c01c feat(macos): support haptic feedback (#71)
* Support haptic feedback on macOS

* add tests for haptic feedback
2026-08-04 14:52:28 -07:00
Dustin Yost 2542e1154a add App::emit such that events can be emitted without acquiring a Context (#94) 2026-07-27 23:16:59 -07:00
Miles Wirht 6c799b8e99 removed all of the git sources (#91) 2026-07-13 21:25:00 -04:00
temportalflux 309d319880 remove legacy input example now that gpui_elements::editable_text exists 2026-07-12 17:44:06 -04:00
temportalflux 6ecdda92d0 add Point::is_nearly_eq 2026-07-11 09:31:07 -04:00
temportalflux cfc9f6fab1 update documentation of 'use_keyed_transition', 'use_keyed_state', & 'with_element_state' to make it clear that the functions can be called during 'render' implementations, as 'examples/learn/transition.rs' illustrates 2026-07-11 09:31:07 -04:00
temportalflux f4cb5e21b7 add getter/setter to interface with the current scroll offset of interactivity 2026-07-11 09:31:07 -04:00
temportalflux 1f2c11d44f move TextLayout::layout logic into standalone functions so they can be shared between labels and editable text elements 2026-07-11 09:31:07 -04:00
temportalflux b1e67f32af change shape_text api to support non-SharedString types as input without forcing extra allocations 2026-07-11 09:31:07 -04:00
Leonard Seibold c17b4367d5 gpui: Add gpu_device_lost() to query device-loss state on Linux (#78) 2026-06-22 23:15:54 -04:00
Philipp Schaffrath 0610782953 Wayland input_region and exclusive_zone + WGPU panic fix (#82) 2026-06-22 21:59:02 -04:00
Miles Wirht c6634f040a Discord community permalink (#73) 2026-06-17 13:28:53 -04:00
Miles Wirht ad7be1c090 Docs (#72) 2026-06-17 13:06:39 -04:00
Andreas Johansson 3cc78b38f4 Add set_keyring_label (#64) 2026-06-15 18:46:45 -04:00
Miles Wirht ec395ac14c My stab at CI (#66) 2026-06-15 18:42:57 -04:00
Miles Wirht bf71c690a3 Utopian CI setup phase 2: Better HTTP abstractions (#61) 2026-06-14 21:58:25 -04:00
Miles Wirht 64318f59f3 A utopian CI setup part one: General build fixes (#60) 2026-06-14 21:58:12 -04:00
Leonard SeiboldandNewspicel 69d467e4d1 Filter API + Blur (#40)
Co-authored-by: Newspicel <newspicel+claude@pm.me>
2026-06-14 10:18:25 -04:00
Brendon Felix cfec5ff014 Add Transition::jump_to for transitions (#58) 2026-06-13 22:52:08 -04:00
Xemor 59f5ca2b05 Fix compilation on Linux - add & to .field (#57) 2026-06-13 16:04:59 -04:00
Scar-00 290010344b fix surface compiler error on windows (#46) 2026-06-09 17:53:14 -04:00
Dustin Yost 1b410c1783 Add a collection of contextless action keystrokes that can be built with a shared key context (#43) 2026-06-07 17:42:58 -04:00
Leonard Seibold 6d043b22e4 gpui: Add wgpu Surface element and GPU device requirements API for Linux (#39) 2026-06-07 01:53:18 -04:00
Miles Wirht d54ef9dcbe cargo fmt (#35) 2026-06-05 11:23:06 -04:00
Miles Wirht 3042d1b3ef API Fixes (#30) 2026-06-04 21:41:59 -04:00
Cameron Campbell 81af1059a2 added transitions (#29) 2026-06-04 20:26:15 -04:00
Scar-00 01335f7698 re-re-fork (#28) 2026-06-02 07:53:18 -04:00
Nate Butler 18aeb44a54 Start reorganizing examples (#10)
* Update crate name

* wip

* reduce to just the gpui crate

* Fix misisng example images

* Delete ownership_post.rs

* Update Cargo.toml

* Update README.md

* bump to 0.3.3

* organize

* organize

* Add more learn examples

* Delete _ownership_and_data_flow.rs

* wip learn examples

* Fix colors

* tidy

* Move _template up

* add animation example

* Update examples

* remove legacy examples from toml

* Delete examples.toml
2025-12-28 23:14:33 -05:00
localccandKirill Bulatov a698f1bf63 Fix Bounds::contains (#44711)
Closes #11643 

Release Notes:

- Fixed double hover state on windows

Co-authored-by: Kirill Bulatov <mail4score@gmail.com>
2025-12-12 14:49:29 +00:00
636d11ebec Multiple priority scheduler (#44701)
Improves the scheduler by allowing tasks to have a set priority which
will significantly improve responsiveness.

Release notes:

- N/A

---------

Co-authored-by: Yara <git@yara.blue>
Co-authored-by: dvdsk <noreply@davidsk.dev>
2025-12-12 06:32:30 -08:00
Dino 12073e10f8 Fix missing buffer font features in Blame UI, Hover Popover and Markdown Preview (#44657)
- Fix missing font features in 
  `git_ui::blame_ui::GitBlameRenderer.render_blame_entry`
- Fix missing buffer font features in
`markdown_preview::markdown_renderer`
- Update the way that the markdown style is built for hover popovers so
  that, for code blocks, the buffer font features are used.
- Introduce `gpui::Styled.font_features` to allow callers to also set
  the font's features, similar to how `gpui::Styled.font_family` already
  exists.

Relates to #44209

Release Notes:

- Fixed wrong font features in Blame UI, Hover Popover and Markdown
Preview
2025-12-12 09:55:06 +00:00
Lukas Wirth 5a6198cc39 language: Spawn language servers on background threads (#44631)
Closes https://github.com/zed-industries/zed/issues/39056

Leverages a new `await_on_background` API that spawns the future on the
background but blocks the current task, allowing to borrow from the
surrounding scope.

Release Notes:

- N/A *or* Added/Fixed/Improved ...
2025-12-11 17:23:27 +00:00
Yara 🏳️‍⚧️ ecb8d3d4dd Revert "Multiple priority scheduler" (#44637)
Reverts zed-industries/zed#44575
2025-12-11 16:16:43 +01:00
localccandYara 95dbc0efc2 Multiple priority scheduler (#44575)
Improves the scheduler by allowing tasks to have a set priority which
will significantly improve responsiveness.

Release notes:

- N/A

---------

Co-authored-by: Yara <git@yara.blue>
2025-12-11 13:22:39 +00:00
Lukas Wirth a6b9524d78 gpui: Retain maximized and fullscreen state for new windows derived from previous windows (#44605)
Release Notes:

- Fixed new windows underflowing the taskbar on windows
- Improved new windows spawned from maximized or fullscreened windows by
copying the maximized and fullscreened states
2025-12-11 09:38:38 +00:00
David KleingeldandJulia Ryan 736a712387 Handle response error for ashpd fixing login edgecases (#44502)
Release Notes:

- Fixed login fallbacks on Linux

Co-authored-by: Julia Ryan <juliaryan3.14@gmail.com>
2025-12-09 23:30:36 +00:00
David Kleingeld 20fa9983ad Revert "gpui: Update link to Ownership and data flow section" (#44492)
While this fixes the link in the Readme it breaks the one in the docs
which is the more important one (we should probably just duplicate the
readme and not include it into gpui.rs but that is annoying).
2025-12-09 17:22:16 +00:00