| ... | @@ -897,23 +897,32 @@ export default function ChatView() { | ... | @@ -897,23 +897,32 @@ export default function ChatView() { |
| 897 | } | 897 | } |
| 898 | }; | 898 | }; |
| 899 | | 899 | |
| 900 | const onModelSelect = (model: ModelSlug) => { | 900 | const onModelSelect = useCallback( |
| 901 | if (!activeThread) return; | 901 | (model: ModelSlug) => { |
| 902 | dispatch({ | 902 | if (!activeThread) return; |
| 903 | type: "SET_THREAD_MODEL", | 903 | dispatch({ |
| 904 | threadId: activeThread.id, | 904 | type: "SET_THREAD_MODEL", |
| 905 | model: resolveModelSlug(model), | 905 | threadId: activeThread.id, |
| 906 | }); | 906 | model: resolveModelSlug(model), |
| 907 | scheduleComposerFocus(); | 907 | }); |
| 908 | }; | 908 | scheduleComposerFocus(); |
| 909 | const onEffortSelect = (effort: ReasoningEffort) => { | 909 | }, |
| 910 | setSelectedEffort(effort); | 910 | [activeThread, dispatch, scheduleComposerFocus], |
| 911 | scheduleComposerFocus(); | 911 | ); |
| 912 | }; | 912 | const onEffortSelect = useCallback( |
| 913 | const onEnvModeChange = (mode: "local" | "worktree") => { | 913 | (effort: ReasoningEffort) => { |
| 914 | setEnvMode(mode); | 914 | setSelectedEffort(effort); |
| 915 | scheduleComposerFocus(); | 915 | scheduleComposerFocus(); |
| 916 | }; | 916 | }, |
| | 917 | [scheduleComposerFocus], |
| | 918 | ); |
| | 919 | const onEnvModeChange = useCallback( |
| | 920 | (mode: "local" | "worktree") => { |
| | 921 | setEnvMode(mode); |
| | 922 | scheduleComposerFocus(); |
| | 923 | }, |
| | 924 | [scheduleComposerFocus], |
| | 925 | ); |
| 917 | | 926 | |
| 918 | const onKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => { | 927 | const onKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => { |
| 919 | if (e.key === "Enter" && !e.shiftKey) { | 928 | if (e.key === "Enter" && !e.shiftKey) { |