From 559b4bf298268871a8fcd07a4bedc7fad9a6756e Mon Sep 17 00:00:00 2001 From: Stefan Haller Date: Fri, 3 Jul 2026 14:24:20 +0200 Subject: [PATCH] Bounce REBASE_COMMITS model updates onto the UI thread refreshRebaseCommits now computes the merged rebasing commits and working tree state on the worker and writes Model.Commits / WorkingTreeStateAtLastCommitRefresh in an onUIThreadUnlessRepoChanged bounce. LocalCommitsMutex is left in place for now; it's shared with the commits and branches refreshes and comes out once they're all bounced. Co-Authored-By: Claude Sonnet 5 --- pkg/gui/controllers/helpers/refresh_helper.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/pkg/gui/controllers/helpers/refresh_helper.go b/pkg/gui/controllers/helpers/refresh_helper.go index d1c1091da..4d511ed78 100644 --- a/pkg/gui/controllers/helpers/refresh_helper.go +++ b/pkg/gui/controllers/helpers/refresh_helper.go @@ -654,12 +654,19 @@ func (self *RefreshHelper) refreshRebaseCommits() error { self.c.Mutexes().LocalCommitsMutex.Lock() defer self.c.Mutexes().LocalCommitsMutex.Unlock() + generation := self.c.State().GetRepoGeneration() + updatedCommits, err := self.c.Git().Loaders.CommitLoader.MergeRebasingCommits(self.c.Model().HashPool, self.c.Model().Commits) if err != nil { return err } - self.c.Model().Commits = updatedCommits - self.c.Model().WorkingTreeStateAtLastCommitRefresh = self.c.Git().Status.WorkingTreeState() + workingTreeState := self.c.Git().Status.WorkingTreeState() + + self.onUIThreadUnlessRepoChanged(generation, func() error { + self.c.Model().Commits = updatedCommits + self.c.Model().WorkingTreeStateAtLastCommitRefresh = workingTreeState + return nil + }) self.refreshView(self.c.Contexts().LocalCommits) return nil