mirror of
https://github.com/zed-industries/zed.git
synced 2026-05-29 19:14:13 +00:00
## Summary - Implements `icon_label` on `GitPanel` to return the total count of uncommitted changes (`new_count + changes_count`) when non-zero, capped at `"99+"` for large repos. - Updates `PanelButtons::render()` to render that label as a small green badge overlaid on the panel's sidebar icon, using absolute positioning within a `div().relative()` wrapper. - The badge uses `version_control_added` theme color and `LabelSize::XSmall` text with `LineHeightStyle::UiLabel` for accurate vertical centering, positioned at the top-right corner of the icon button. The `icon_label` method already existed on the `Panel`/`PanelHandle` traits with a default `None` impl, and was already implemented by `NotificationPanel` (unread notification count) and `TerminalPanel` (open terminal count) — but was never rendered. This wires it up for all three panels at once. ## Notes - Badge is positioned with non-negative offsets (`top(0)`, `right(0)`) to stay within the parent container's bounds. The status bar's `render_left_tools()` uses `.overflow_x_hidden()`, which in GPUI clips both axes (the `overflow_mask` returns a full content mask whenever any axis is non-`Visible`), so negative offsets would be clipped. - `LineHeightStyle::UiLabel` collapses line height to `relative(1.)` so flex centering aligns the visual glyph rather than a taller-than-necessary line box. - No new data tracking logic — `GitPanel` already maintains `new_count` and `changes_count` reactively. - No feature flag or settings added per YAGNI. ## Suggested .rules additions The following pattern came up repeatedly and would prevent future sessions from hitting the same issue: ``` ## GPUI overflow clipping `overflow_x_hidden()` (and any single-axis overflow setter) clips **both** axes in GPUI. The `overflow_mask()` implementation in `style.rs` returns a full `ContentMask` (bounding box) whenever any axis is non-`Visible`. Absolute-positioned children that extend outside the element bounds will be clipped even if only the X axis is set to Hidden. Avoid negative `top`/`right`/`bottom`/`left` offsets on absolute children of containers that have any overflow hidden — keep badge/overlay elements within the parent's bounds instead. ``` Release Notes: - Added a numeric badge to the git panel sidebar icon showing the count of uncommitted changes. --------- Co-authored-by: Danilo Leal <daniloleal09@gmail.com> |
||
|---|---|---|
| .. | ||
| src | ||
| Cargo.toml | ||
| LICENSE-GPL | ||