native macOS codings agent orchestrator
6
fork

Configure Feed

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

Merge pull request #6 from onevcat/fix/canvas-sidebar-ui

Fix Canvas sidebar and toolbar UI issues

authored by

Wei Wang and committed by
GitHub
ce9a1540 8d0fc9a7

+39 -9
+3 -3
.claude/hooks/block-upstream-pr.sh
··· 7 7 8 8 # Only inspect gh pr create commands 9 9 if echo "$COMMAND" | grep -qE 'gh\s+pr\s+create'; then 10 - # Allow if explicitly targeting the fork 11 - if echo "$COMMAND" | grep -qE '(--repo|--repo=|-R)\s*onevcat/supacode'; then 10 + # Allow if explicitly targeting the fork (onevcat/supacode or onevcat/Prowl) 11 + if echo "$COMMAND" | grep -qE '(--repo|--repo=|-R)\s*onevcat/(supacode|Prowl)'; then 12 12 exit 0 13 13 fi 14 14 cat <<EOF >&2 15 15 BLOCKED: gh pr create must explicitly target the fork. 16 16 17 - Use: gh pr create --repo onevcat/supacode ... 17 + Use: gh pr create --repo onevcat/Prowl ... 18 18 Never target upstream (supabitapp/supacode). 19 19 EOF 20 20 exit 2
+1 -1
supacode/Features/Canvas/Views/CanvasSidebarButton.swift
··· 11 11 } label: { 12 12 Label("Canvas", systemImage: "square.grid.2x2") 13 13 .font(.callout) 14 - .frame(maxWidth: .infinity, alignment: .leading) 14 + .frame(maxWidth: .infinity) 15 15 } 16 16 .buttonStyle(.plain) 17 17 .padding(.horizontal, 12)
+1
supacode/Features/Repositories/Views/SidebarListView.swift
··· 189 189 isSelected: state.isShowingCanvas 190 190 ) 191 191 .padding(.top, 4) 192 + .background(.bar) 192 193 .overlay(alignment: .bottom) { 193 194 Divider() 194 195 }
+34 -5
supacode/Features/Repositories/Views/WorktreeDetailView.swift
··· 43 43 selectedWorktree: selectedWorktree, 44 44 selectedWorktreeSummaries: selectedWorktreeSummaries 45 45 ) 46 - .toolbar(removing: .title) 46 + .navigationTitle(repositories.isShowingCanvas ? "Canvas" : "") 47 + .toolbar(removing: repositories.isShowingCanvas ? nil : .title) 47 48 .toolbar { 48 49 if repositories.isShowingCanvas { 49 - ToolbarItem(placement: .navigation) { 50 - Text("Canvas") 51 - .font(.headline) 52 - } 53 50 ToolbarItem(placement: .primaryAction) { 54 51 ToolbarNotificationsPopoverButton( 55 52 groups: notificationGroups, ··· 698 695 #Preview("Worktree Toolbar") { 699 696 WorktreeToolbarPreview() 700 697 } 698 + 699 + @MainActor 700 + private struct CanvasToolbarPreview: View { 701 + var body: some View { 702 + NavigationSplitView { 703 + List { 704 + Text("Sidebar Item 1") 705 + Text("Sidebar Item 2") 706 + } 707 + .navigationSplitViewColumnWidth(220) 708 + } detail: { 709 + Text("Canvas Content") 710 + .frame(maxWidth: .infinity, maxHeight: .infinity) 711 + .navigationTitle("Canvas") 712 + .toolbar { 713 + ToolbarItem(placement: .primaryAction) { 714 + ToolbarNotificationsPopoverButton( 715 + groups: [], 716 + unseenWorktreeCount: 0, 717 + onSelectNotification: { _, _ in }, 718 + onDismissAll: {} 719 + ) 720 + } 721 + } 722 + } 723 + .frame(width: 900, height: 300) 724 + } 725 + } 726 + 727 + #Preview("Canvas Toolbar") { 728 + CanvasToolbarPreview() 729 + }