From 1092b650e0fd1755c72d4eb0ddc410c806099500 Mon Sep 17 00:00:00 2001 From: umutcagand Date: Mon, 24 Aug 2026 00:30:19 +0300 Subject: [PATCH 1/3] chore: refresh fix/freebuff-disable-chat-logo-animation onto current main --- cli/src/components/chat-header.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cli/src/components/chat-header.tsx b/cli/src/components/chat-header.tsx index ab40f88910..878efcb756 100644 --- a/cli/src/components/chat-header.tsx +++ b/cli/src/components/chat-header.tsx @@ -8,6 +8,7 @@ import { IS_FREEBUFF } from '../utils/constants' import { openFileAtPath } from '../utils/open-file' import { formatCwd } from '../utils/path-helpers' import { getLogoAccentColor, getLogoBlockColor } from '../utils/theme-system' +import { shouldAnimateChatHeader } from '../utils/chat-header-animation' import { TerminalLink } from './terminal-link' export const ChatHeader = memo(function ChatHeader({ @@ -23,7 +24,7 @@ export const ChatHeader = memo(function ChatHeader({ const blockColor = getLogoBlockColor(theme.name) const accentColor = getLogoAccentColor(theme.name) const { applySheenToChar } = useSheenAnimation({ - enabled: animationEnabled, + enabled: shouldAnimateChatHeader(animationEnabled, IS_FREEBUFF), logoColor: theme.foreground, accentColor, blockColor, From fa60435963eacc170ca8048138110818349d600c Mon Sep 17 00:00:00 2001 From: umutcagand Date: Mon, 24 Aug 2026 00:30:20 +0300 Subject: [PATCH 2/3] chore: refresh fix/freebuff-disable-chat-logo-animation onto current main --- .../__tests__/chat-header-animation.test.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 cli/src/utils/__tests__/chat-header-animation.test.ts diff --git a/cli/src/utils/__tests__/chat-header-animation.test.ts b/cli/src/utils/__tests__/chat-header-animation.test.ts new file mode 100644 index 0000000000..8456ddcc7b --- /dev/null +++ b/cli/src/utils/__tests__/chat-header-animation.test.ts @@ -0,0 +1,18 @@ +import { describe, expect, it } from 'bun:test' + +import { shouldAnimateChatHeader } from '../chat-header-animation' + +describe('shouldAnimateChatHeader', () => { + it('disables the sheen for the Freebuff chat header', () => { + expect(shouldAnimateChatHeader(true, true)).toBe(false) + }) + + it('keeps the Codebuff sheen when the header is active', () => { + expect(shouldAnimateChatHeader(true, false)).toBe(true) + }) + + it('does not animate an inactive header for either product', () => { + expect(shouldAnimateChatHeader(false, true)).toBe(false) + expect(shouldAnimateChatHeader(false, false)).toBe(false) + }) +}) From 1b4ac3846b8ee2b66babfe7fdd48cc9fb6f7c28e Mon Sep 17 00:00:00 2001 From: umutcagand Date: Mon, 24 Aug 2026 00:30:21 +0300 Subject: [PATCH 3/3] chore: refresh fix/freebuff-disable-chat-logo-animation onto current main --- cli/src/utils/chat-header-animation.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 cli/src/utils/chat-header-animation.ts diff --git a/cli/src/utils/chat-header-animation.ts b/cli/src/utils/chat-header-animation.ts new file mode 100644 index 0000000000..5311f8ec46 --- /dev/null +++ b/cli/src/utils/chat-header-animation.ts @@ -0,0 +1,10 @@ +/** + * Freebuff's chat logo sheen can make the focused input appear to flicker. + * Keep the animation for Codebuff while leaving the Freebuff chat header static. + */ +export function shouldAnimateChatHeader( + animationEnabled: boolean, + isFreebuff: boolean, +): boolean { + return animationEnabled && !isFreebuff +}