From eae7aa395cf0ba9b1582af43414a870730a45dcd Mon Sep 17 00:00:00 2001 From: Agung Maulana Date: Thu, 16 Jul 2026 15:11:54 +0700 Subject: [PATCH 1/2] fix(git): show branch action buttons during push progress When pushing a branch, the action overlay buttons (push spinner, switch, delete) and commit action buttons were hidden because they relied solely on group-hover for visibility. This made it impossible to see the push progress indicator. Now the buttons stay visible while the branch is being pushed, providing visual feedback during the operation. --- frontend/components/workspace/panels/GitPanel.svelte | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/frontend/components/workspace/panels/GitPanel.svelte b/frontend/components/workspace/panels/GitPanel.svelte index e877a9ca..e721e2a5 100644 --- a/frontend/components/workspace/panels/GitPanel.svelte +++ b/frontend/components/workspace/panels/GitPanel.svelte @@ -3658,7 +3658,7 @@ ${bodies}`; {#if !branch.isCurrent} -
+
{#if !nestedPushed.has(branch.name)} {#if pushingBranch === branch.name} @@ -3671,7 +3671,7 @@ ${bodies}`;
{:else} -
+
{#if !nestedPushed.has(branch.name) || branch.ahead > 0} {#if pushingBranch === branch.name}
@@ -3718,7 +3718,7 @@ ${bodies}`; {#if commit.author}{commit.author}{/if}
-
+
{#if !branch.isCurrent} @@ -4900,7 +4900,7 @@ ${bodies}`;
{#if !branch.isCurrent} -
+
{#if !pushedBranchNames.has(branch.name)} {#if pushingBranch === branch.name} @@ -4913,7 +4913,7 @@ ${bodies}`;
{:else} -
+
{#if !pushedBranchNames.has(branch.name) || branch.ahead > 0} {#if pushingBranch === branch.name}
@@ -4960,7 +4960,7 @@ ${bodies}`; {#if commit.author}{commit.author}{/if}
-
+
{#if !branch.isCurrent} From d13ac56034e146b7cde6ff14b2c2a2e581cba284 Mon Sep 17 00:00:00 2001 From: Agung Maulana Date: Thu, 16 Jul 2026 15:32:02 +0700 Subject: [PATCH 2/2] refactor(git): restructure branch action overlays for maintainability Extracts spinner state outside the hover-action overlay wrapper in both nested and flat branch views, simplifying the conditional class logic. Previously the overlay container toggled between visible and hover-visible states via pointer-events and opacity classes; now the overlay consistently uses group-hover opacity while the spinner is rendered as a sibling element, making the DOM structure easier to reason about and modify. --- .../workspace/panels/GitPanel.svelte | 148 ++++++++++-------- 1 file changed, 79 insertions(+), 69 deletions(-) diff --git a/frontend/components/workspace/panels/GitPanel.svelte b/frontend/components/workspace/panels/GitPanel.svelte index e721e2a5..eecbf3d9 100644 --- a/frontend/components/workspace/panels/GitPanel.svelte +++ b/frontend/components/workspace/panels/GitPanel.svelte @@ -3658,32 +3658,32 @@ ${bodies}`;
{#if !branch.isCurrent} -
- - {#if !nestedPushed.has(branch.name)} - {#if pushingBranch === branch.name} -
- {:else} - - {/if} + {#if pushingBranch === branch.name} +
+ {:else} +
+ + {#if !nestedPushed.has(branch.name)} + + {/if} + + +
{/if} - - -
{:else} -
- {#if !nestedPushed.has(branch.name) || branch.ahead > 0} - {#if pushingBranch === branch.name} -
- {:else} - - {/if} - {/if} - {#if branch.behind > 0} - + {#if pushingBranch === branch.name} +
+ {:else} +
+ {#if !nestedPushed.has(branch.name) || branch.ahead > 0} + + {/if} + {#if branch.behind > 0} + + {/if} + +
{/if} - -
{/if}
{#if isExpanded} @@ -3718,20 +3718,25 @@ ${bodies}`; {#if commit.author}{commit.author}{/if}
-
- {#if !branch.isCurrent} - - {:else if i === 0} - {#if pushingBranch === branch.name} -
- {:else if showHeadPush} - {@const isDiverged = nestedPushed.has(branch.name) && (nested.info.ahead ?? 0) > 0 && (nested.info.behind ?? 0) > 0} - - {/if} - +
+ + +
+ {:else if i === 0 && pushingBranch === branch.name} +
+ {:else} +
+ + {#if showHeadPush} + {@const isDiverged = nestedPushed.has(branch.name) && (nested.info.ahead ?? 0) > 0 && (nested.info.behind ?? 0) > 0} + + {/if} + {#if i === 0} + + {/if} +
{/if} -
{#if commitExpanded}
@@ -4900,33 +4905,33 @@ ${bodies}`;
{#if !branch.isCurrent} -
- - {#if !pushedBranchNames.has(branch.name)} - {#if pushingBranch === branch.name} -
- {:else} - - {/if} + {#if pushingBranch === branch.name} +
+ {:else} +
+ + {#if !pushedBranchNames.has(branch.name)} + + {/if} + + +
{/if} - - -
- {:else} -
- {#if !pushedBranchNames.has(branch.name) || branch.ahead > 0} + {:else} {#if pushingBranch === branch.name} -
+
{:else} - +
+ {#if !pushedBranchNames.has(branch.name) || branch.ahead > 0} + + {/if} + {#if branch.behind > 0} + + {/if} + +
{/if} {/if} - {#if branch.behind > 0} - - {/if} - -
- {/if} {#if isExpanded}
@@ -4960,20 +4965,25 @@ ${bodies}`; {#if commit.author}{commit.author}{/if}
-
- {#if !branch.isCurrent} - - {:else if i === 0} - {#if pushingBranch === branch.name} -
- {:else if showHeadPush} - {@const isDiverged = pushedBranchNames.has(branch.name) && (branchInfo?.ahead ?? 0) > 0 && (branchInfo?.behind ?? 0) > 0} - - {/if} - +
+ + +
+ {:else if i === 0 && pushingBranch === branch.name} +
+ {:else} +
+ + {#if showHeadPush} + {@const isDiverged = pushedBranchNames.has(branch.name) && (branchInfo?.ahead ?? 0) > 0 && (branchInfo?.behind ?? 0) > 0} + + {/if} + {#if i === 0} + + {/if} +
{/if} -
{#if commitExpanded}