fix: port IME enter fix and Firecrawl tool name from master

This commit is contained in:
LIghtJUNction
2026-04-29 02:41:13 +08:00
parent 1acefcd8c7
commit c059d60f57
2 changed files with 30 additions and 1 deletions

View File

@@ -48,6 +48,10 @@
<textarea
ref="inputField"
v-model="localPrompt"
@compositionstart="handleCompositionStart"
@compositionend="handleCompositionEnd"
@compositioncancel="handleCompositionEnd"
@blur="clearCompositionState()"
:disabled="disabled"
placeholder="Ask AstrBot..."
class="chat-textarea"
@@ -309,6 +313,7 @@ import {
import { useDisplay } from "vuetify";
import { useModuleI18n } from "@/i18n/composables";
import { useCustomizerStore } from "@/stores/customizer";
import { isComposingEnter } from "@/utils/imeInput.mjs";
import ConfigSelector from "./ConfigSelector.vue";
import ProviderModelMenu from "./ProviderModelMenu.vue";
import StyledMenu from "@/components/shared/StyledMenu.vue";
@@ -380,6 +385,8 @@ const providerModelMenuRef = ref<InstanceType<typeof ProviderModelMenu> | null>(
const showProviderSelector = ref(true);
const isReplyClosing = ref(false);
const isDragging = ref(false);
const isComposing = ref(false);
const lastCompositionEndAt = ref<number | null>(null);
let dragLeaveTimeout: number | null = null;
const localPrompt = computed({
@@ -449,6 +456,10 @@ function handleKeyDown(e: KeyboardEvent) {
return;
}
if (isComposingEnter(e, isComposing.value, lastCompositionEndAt.value)) {
return;
}
const isSendHotkey =
e.ctrlKey ||
e.metaKey ||
@@ -468,6 +479,23 @@ function handleKeyDown(e: KeyboardEvent) {
}
}
function handleCompositionStart() {
isComposing.value = true;
lastCompositionEndAt.value = null;
}
function handleCompositionEnd(e: CompositionEvent) {
lastCompositionEndAt.value = e.timeStamp;
clearCompositionState({ keepLastEndAt: true });
}
function clearCompositionState({ keepLastEndAt = false } = {}) {
isComposing.value = false;
if (!keepLastEndAt) {
lastCompositionEndAt.value = null;
}
}
function handleKeyUp(e: KeyboardEvent) {
if (e.keyCode === 66) {
ctrlKeyDown.value = false;
@@ -569,6 +597,7 @@ onBeforeUnmount(() => {
if (inputField.value) {
inputField.value.removeEventListener("paste", handlePaste);
}
clearCompositionState();
document.removeEventListener("keyup", handleKeyUp);
});

View File

@@ -303,7 +303,7 @@ export default {
part.tool_calls.forEach(toolCall => {
// 检查是否是支持引用解析的 web_search 工具调用
if (
!['web_search_baidu', 'web_search_tavily', 'web_search_bocha', 'web_search_brave'].includes(toolCall.name) ||
!['web_search_baidu', 'web_search_tavily', 'web_search_bocha', 'web_search_brave', 'web_search_firecrawl'].includes(toolCall.name) ||
!toolCall.result
) {
return;