diff --git a/package.json b/package.json index 125253e7..3160aa01 100644 --- a/package.json +++ b/package.json @@ -23,11 +23,11 @@ "prebuild": "tsx scripts/fetch-pricing-data.ts", "build": "electron-vite build", "dist": "electron-builder --mac --win --linux", - "dist:mac": "electron-builder --mac --publish always", - "dist:mac:arm64": "electron-builder --mac --arm64 --publish always", - "dist:mac:x64": "electron-builder --mac --x64 --publish always", - "dist:win": "electron-builder --win --publish always", - "dist:linux": "electron-builder --linux --publish always", + "dist:mac": "electron-builder --mac", + "dist:mac:arm64": "electron-builder --mac --arm64", + "dist:mac:x64": "electron-builder --mac --x64", + "dist:win": "electron-builder --win", + "dist:linux": "electron-builder --linux", "preview": "electron-vite preview", "typecheck": "tsc --noEmit", "lint": "eslint src/", diff --git a/src/renderer/components/ui/MentionableTextarea.tsx b/src/renderer/components/ui/MentionableTextarea.tsx index 0b54f7f8..fcdd3f0b 100644 --- a/src/renderer/components/ui/MentionableTextarea.tsx +++ b/src/renderer/components/ui/MentionableTextarea.tsx @@ -254,7 +254,7 @@ export const MentionableTextarea = React.forwardRef { const textarea = internalRef.current; - if (!textarea || triggerIndex < 0 || !s.filePath) return; + const triggerIdx = getTriggerIndex(); + if (!textarea || triggerIdx < 0 || !s.filePath) return; - const replaceStart = triggerIndex; - const replaceEnd = triggerIndex + 1 + query.length; + const replaceStart = triggerIdx; + const replaceEnd = triggerIdx + 1 + query.length; const before = value.slice(0, replaceStart); const after = value.slice(replaceEnd); @@ -347,7 +348,7 @@ export const MentionableTextarea = React.forwardRef) => void; /** Current @-trigger character position in text (-1 if no active trigger) */ triggerIndex: number; + /** Getter for trigger index — use at call time to avoid stale closure */ + getTriggerIndex: () => number; } interface MentionTrigger { @@ -310,6 +312,8 @@ export function useMentionDetection({ [isOpen, filteredSuggestions, selectedIndex, selectSuggestion, dismiss] ); + const getTriggerIndex = useCallback(() => triggerIndexRef.current, []); + return { isOpen, query, @@ -323,5 +327,6 @@ export function useMentionDetection({ handleSelect, // eslint-disable-next-line react-hooks/refs -- expose current trigger position to caller triggerIndex: triggerIndexRef.current, + getTriggerIndex, }; }