diff --git a/api/app/clients/AnthropicClient.js b/api/app/clients/AnthropicClient.js
index 60b9c64d1e..91939975c4 100644
--- a/api/app/clients/AnthropicClient.js
+++ b/api/app/clients/AnthropicClient.js
@@ -396,13 +396,13 @@ class AnthropicClient extends BaseClient {
const formattedMessages = orderedMessages.map((message, i) => {
const formattedMessage = this.useMessages
? formatMessage({
- message,
- endpoint: EModelEndpoint.anthropic,
- })
+ message,
+ endpoint: EModelEndpoint.anthropic,
+ })
: {
- author: message.isCreatedByUser ? this.userLabel : this.assistantLabel,
- content: message?.content ?? message.text,
- };
+ author: message.isCreatedByUser ? this.userLabel : this.assistantLabel,
+ content: message?.content ?? message.text,
+ };
const needsTokenCount = this.contextStrategy && !orderedMessages[i].tokenCount;
/* If tokens were never counted, or, is a Vision request and the message has files, count again */
@@ -680,7 +680,7 @@ class AnthropicClient extends BaseClient {
}
getCompletion() {
- logger.debug('AnthropicClient doesn\'t use getCompletion (all handled in sendCompletion)');
+ logger.debug("AnthropicClient doesn't use getCompletion (all handled in sendCompletion)");
}
/**
@@ -888,7 +888,7 @@ class AnthropicClient extends BaseClient {
}
getBuildMessagesOptions() {
- logger.debug('AnthropicClient doesn\'t use getBuildMessagesOptions');
+ logger.debug("AnthropicClient doesn't use getBuildMessagesOptions");
}
getEncoding() {
diff --git a/api/utils/tokens.js b/api/utils/tokens.js
index 8bf134fa4c..e2c311692e 100644
--- a/api/utils/tokens.js
+++ b/api/utils/tokens.js
@@ -239,12 +239,15 @@ const modelMaxOutputs = {
system_default: 1024,
};
+/** Outputs from https://docs.anthropic.com/en/docs/about-claude/models/all-models#model-names */
const anthropicMaxOutputs = {
'claude-3-haiku': 4096,
'claude-3-sonnet': 4096,
'claude-3-opus': 4096,
'claude-3.5-sonnet': 8192,
'claude-3-5-sonnet': 8192,
+ 'claude-3.7-sonnet': 128000,
+ 'claude-3-7-sonnet': 128000,
};
const maxOutputTokensMap = {
diff --git a/client/src/components/Chat/ExportAndShareMenu.tsx b/client/src/components/Chat/ExportAndShareMenu.tsx
index 7f37ebbc72..4d67967cc1 100644
--- a/client/src/components/Chat/ExportAndShareMenu.tsx
+++ b/client/src/components/Chat/ExportAndShareMenu.tsx
@@ -44,15 +44,6 @@ export default function ExportAndShareMenu({
};
const dropdownItems: t.MenuItemProps[] = [
- {
- label: localize('com_endpoint_export'),
- onClick: exportHandler,
- icon: ,
- /** NOTE: THE FOLLOWING PROPS ARE REQUIRED FOR MENU ITEMS THAT OPEN DIALOGS */
- hideOnClick: false,
- ref: exportButtonRef,
- render: (props) => ,
- },
{
label: localize('com_ui_share'),
onClick: shareHandler,
@@ -63,6 +54,15 @@ export default function ExportAndShareMenu({
ref: shareButtonRef,
render: (props) => ,
},
+ {
+ label: localize('com_endpoint_export'),
+ onClick: exportHandler,
+ icon: ,
+ /** NOTE: THE FOLLOWING PROPS ARE REQUIRED FOR MENU ITEMS THAT OPEN DIALOGS */
+ hideOnClick: false,
+ ref: exportButtonRef,
+ render: (props) => ,
+ },
];
return (
@@ -81,7 +81,7 @@ export default function ExportAndShareMenu({
aria-label="Export options"
className="inline-flex size-10 flex-shrink-0 items-center justify-center rounded-xl border border-border-light bg-transparent text-text-primary transition-all ease-in-out hover:bg-surface-tertiary disabled:pointer-events-none disabled:opacity-50 radix-state-open:bg-surface-tertiary"
>
- {
);
const handleContainerClick = useCallback(() => {
+ /** Check if the device is a touchscreen */
+ if (window.matchMedia?.('(pointer: coarse)').matches) {
+ return;
+ }
textAreaRef.current?.focus();
}, []);
@@ -126,6 +130,7 @@ const ChatForm = memo(({ index = 0 }: { index?: number }) => {
});
const { submitMessage, submitPrompt } = useSubmitMessage();
+
const handleKeyUp = useHandleKeyUp({
index,
textAreaRef,
diff --git a/client/src/components/Chat/Input/CollapseChat.tsx b/client/src/components/Chat/Input/CollapseChat.tsx
index 715724c29d..1bec592177 100644
--- a/client/src/components/Chat/Input/CollapseChat.tsx
+++ b/client/src/components/Chat/Input/CollapseChat.tsx
@@ -41,9 +41,9 @@ const CollapseChat = ({
)}
>
{isCollapsed ? (
-
- ) : (
+ ) : (
+
)}
}
diff --git a/client/src/components/Chat/Messages/Content/EditMessage.tsx b/client/src/components/Chat/Messages/Content/EditMessage.tsx
index 4abd891360..200cf7d402 100644
--- a/client/src/components/Chat/Messages/Content/EditMessage.tsx
+++ b/client/src/components/Chat/Messages/Content/EditMessage.tsx
@@ -113,9 +113,9 @@ const EditMessage = ({
messages.map((msg) =>
msg.messageId === messageId
? {
- ...msg,
- text: data.text,
- }
+ ...msg,
+ text: data.text,
+ }
: msg,
),
);
diff --git a/client/src/hooks/Chat/useFocusChatEffect.ts b/client/src/hooks/Chat/useFocusChatEffect.ts
index 3a22533b75..f3ede51613 100644
--- a/client/src/hooks/Chat/useFocusChatEffect.ts
+++ b/client/src/hooks/Chat/useFocusChatEffect.ts
@@ -11,7 +11,10 @@ export default function useFocusChatEffect(textAreaRef: React.RefObject