Skip to content

fix: rebase auto-resolve banner staleness + AI-resolve feedback/icon consistency - #145

Merged
devlint merged 3 commits into
mainfrom
fix/133-rebase-autoresolve-ux
Aug 10, 2026
Merged

fix: rebase auto-resolve banner staleness + AI-resolve feedback/icon consistency#145
devlint merged 3 commits into
mainfrom
fix/133-rebase-autoresolve-ux

Conversation

@devlint

@devlint devlint commented Aug 10, 2026

Copy link
Copy Markdown
Owner

Summary

  • Auto-resolve on a paused rebase does nothing (visibly)advanceToNextConflictOrFinalize() refreshed repo status but never re-polled repoOperationState, which is what RebaseProgressBanner reads for its Continue button / conflict hint. The conflict was actually resolved and staged; the banner just never found out. Now calls refreshRepoState() alongside repoRefresh(), matching the sibling handlers that already did this correctly.
  • AI-resolve loading feedback too subtle + inconsistent icon — swapped the bespoke inline SVG + faint opacity pulse for the app-wide AiSparkle component (already used in 13+ places) with its animated prop bound to the in-flight state for that hunk.
  • AI hunk explanation occasionally answers in the wrong language — locale threading was already correct end-to-end; added a best-effort mitigation repeating the language directive at the end of the user prompt (not just the system prompt), since some CLI-wrapped providers drift from language instructions buried earlier. Not a full fix — flagged as needing confirmation against the reporter's actual provider config.

Test plan

  • New tests for the AiSparkle swap and the prompt-language directive: 7/7 pass
  • Full desktop suite: 658/658 pass, no regressions
  • Manual QA via pnpm dev:web: trigger a rebase conflict, click "Résoudre auto", confirm the banner/Continue button updates immediately (no existing test harness covers App.vue directly — recommend a manual pass here)

Addresses #133

Laurent Guitton added 3 commits August 10, 2026 12:58
…tion locale drift (#133)

- App.vue: advanceToNextConflictOrFinalize() now also calls refreshRepoState()
  after repoRefresh(), matching the sibling rebase banner handlers. Without it,
  resolving a hunk/file during a rebase left the RebaseProgressBanner's
  Continue button disabled and the conflict hint shown even though the
  conflict had actually been resolved and staged.
- MergeEditor.vue: the per-hunk AI-suggest button now renders the shared
  AiSparkle icon (bound to the hunk's own loading state) instead of a bespoke
  inline SVG with only a subtle opacity pulse, fixing both the "too subtle"
  loading feedback and the icon inconsistency with the rest of the app.
- useHunkExplanation.ts: best-effort mitigation for occasional wrong-language
  AI explanations — repeat the language directive at the end of the
  user-facing prompt (in addition to the existing system-prompt instruction),
  since end-of-prompt instructions tend to be followed more reliably by some
  providers.

Tests: apps/desktop/src/components/__tests__/MergeEditor-ai-sparkle.test.ts,
apps/desktop/src/composables/__tests__/useHunkExplanation.test.ts.

disabled
# Conflicts:
#	CHANGELOG.md
@devlint
devlint merged commit a48cf21 into main Aug 10, 2026
3 checks passed
@devlint
devlint deleted the fix/133-rebase-autoresolve-ux branch August 10, 2026 13:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant