diff --git a/apps/desktop/src/app/contrib/latest-actions.test.ts b/apps/desktop/src/app/contrib/latest-actions.test.ts index f719e8438a..57756bce20 100644 --- a/apps/desktop/src/app/contrib/latest-actions.test.ts +++ b/apps/desktop/src/app/contrib/latest-actions.test.ts @@ -11,6 +11,8 @@ function makeChatActions(): ChatActions { onAddUrl: vi.fn(), onAttachDroppedItems: vi.fn(), onAttachImageBlob: vi.fn(), + onAttachPastedText: vi.fn(), + onAttachPrCommentUrl: vi.fn(), onBranchInNewChat: vi.fn(), onCancel: vi.fn(), onDeleteSelectedSession: vi.fn(), @@ -25,6 +27,7 @@ function makeChatActions(): ChatActions { onRestoreToMessage: vi.fn(), onRetryResume: vi.fn(), onSteer: vi.fn(), + onSteerHidden: vi.fn(), onSubmit: vi.fn(), onThreadMessagesChange: vi.fn(), onToggleSelectedPin: vi.fn(), @@ -49,6 +52,15 @@ function makeSidebarActions(): SidebarActions { } describe('latestActions adapters', () => { + it('forwards every present handler — an optional one the adapter forgets never reaches ChatView', () => { + const actions = makeChatActions() + const adapted = latestChatActions(actions) + + for (const key of Object.keys(actions) as (keyof ChatActions)[]) { + expect(typeof adapted[key], key).toBe('function') + } + }) + it('dereferences the latest steer handler from a stable actions object', async () => { const staleSteer = vi.fn(async () => false) const latestSteer = vi.fn(async () => true) diff --git a/apps/desktop/src/app/contrib/latest-actions.ts b/apps/desktop/src/app/contrib/latest-actions.ts index 41fa4949d8..433c6411d3 100644 --- a/apps/desktop/src/app/contrib/latest-actions.ts +++ b/apps/desktop/src/app/contrib/latest-actions.ts @@ -34,6 +34,8 @@ export function latestChatActions(actions: ChatActions): ChatActions { onAddUrl: (...args) => actions.onAddUrl(...args), onAttachDroppedItems: (...args) => actions.onAttachDroppedItems(...args), onAttachImageBlob: (...args) => actions.onAttachImageBlob(...args), + onAttachPastedText: latestOptional(() => actions.onAttachPastedText), + onAttachPrCommentUrl: latestOptional(() => actions.onAttachPrCommentUrl), onBranchInNewChat: latestOptional(() => actions.onBranchInNewChat), onCancel: (...args) => actions.onCancel(...args), onDeleteSelectedSession: (...args) => actions.onDeleteSelectedSession(...args), @@ -48,6 +50,7 @@ export function latestChatActions(actions: ChatActions): ChatActions { onRestoreToMessage: latestOptional(() => actions.onRestoreToMessage), onRetryResume: (...args) => actions.onRetryResume(...args), onSteer: (...args) => actions.onSteer(...args), + onSteerHidden: latestOptional(() => actions.onSteerHidden), onSubmit: (...args) => actions.onSubmit(...args), onThreadMessagesChange: (...args) => actions.onThreadMessagesChange(...args), onToggleSelectedPin: (...args) => actions.onToggleSelectedPin(...args),