native macOS codings agent orchestrator
6
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix(shelf): show per-button tooltips on spine bottom controls

The whole spine had a `.help(book.displayName)` covering its full bounds,
so hovering the New Tab / Split buttons (or any tab slot) still showed
the book's branch name instead of the action label. Move the help to
the header where book identification belongs, and let each control
render its own tooltip — matching the format used by the horizontal
tab bar's trailing accessories ("Title (⌘…)") by pulling the
keybinding from `GhosttyShortcutManager`.

onevcat 71318409 ceef897a

+12 -2
+12 -2
supacode/Features/Shelf/Views/ShelfSpineView.swift
··· 39 39 40 40 @State private var isHovering = false 41 41 @Shared(.repositoryAppearances) private var repositoryAppearances 42 + @Environment(GhosttyShortcutManager.self) private var ghosttyShortcuts 42 43 43 44 var body: some View { 44 45 VStack(spacing: 0) { ··· 83 84 .frame(width: 1) 84 85 } 85 86 } 86 - .help(book.displayName) 87 87 } 88 88 89 89 /// Step-wise accent-alpha ladder keyed by `distanceFromOpen`. 100% ··· 173 173 ShelfSpineControlButton( 174 174 systemImage: "plus", 175 175 label: "New Tab", 176 + shortcut: ghosttyShortcuts.display(for: "new_tab"), 176 177 action: onNewTab 177 178 ) 178 179 } ··· 180 181 ShelfSpineControlButton( 181 182 systemImage: "square.split.2x1", 182 183 label: "Split Vertically", 184 + shortcut: ghosttyShortcuts.display(for: "new_split:right"), 183 185 action: onSplitVertical 184 186 ) 185 187 } ··· 187 189 ShelfSpineControlButton( 188 190 systemImage: "square.split.1x2", 189 191 label: "Split Horizontally", 192 + shortcut: ghosttyShortcuts.display(for: "new_split:down"), 190 193 action: onSplitHorizontal 191 194 ) 192 195 } ··· 212 215 } 213 216 .buttonStyle(.plain) 214 217 .contextMenu { bookContextMenu } 218 + .help(book.displayName) 215 219 } 216 220 217 221 @ViewBuilder ··· 496 500 private struct ShelfSpineControlButton: View { 497 501 let systemImage: String 498 502 let label: String 503 + let shortcut: String? 499 504 let action: () -> Void 500 505 501 506 var body: some View { ··· 508 513 .accessibilityHidden(true) 509 514 } 510 515 .buttonStyle(.plain) 511 - .help(label) 516 + .help(helpText) 517 + } 518 + 519 + private var helpText: String { 520 + guard let shortcut else { return label } 521 + return "\(label) (\(shortcut))" 512 522 } 513 523 } 514 524