@@ -11,6 +11,7 @@ import {
1111 removeTab ,
1212 setActiveTab ,
1313 setTabs ,
14+ setTabMode ,
1415 setTabModel ,
1516} from "../../redux/slices/tabsSlice" ;
1617import { AppDispatch , RootState } from "../../redux/store" ;
@@ -19,6 +20,7 @@ import { varWithFallback } from "../../styles/theme";
1920import { useAuth } from "../../context/Auth" ;
2021import { selectSelectedChatModel } from "../../redux/slices/configSlice" ;
2122import { updateSelectedModelByRole } from "../../redux/thunks/updateSelectedModelByRole" ;
23+ import { setMode } from "../../redux/slices/sessionSlice" ;
2224
2325// Haven't set up theme colors for tabs yet
2426// Will keep it simple and choose from existing ones. Comments show vars we could use
@@ -144,9 +146,9 @@ export const TabBar = React.forwardRef<HTMLDivElement>((_, ref) => {
144146 const tabs = useSelector ( ( state : RootState ) => state . tabs . tabs ) ;
145147 const selectedModel = useAppSelector ( selectSelectedChatModel ) ;
146148 const { selectedProfile } = useAuth ( ) ;
149+ const mode = useAppSelector ( ( state : RootState ) => state . session . mode ) ;
147150 const activeTab = tabs . find ( ( tab ) => tab . isActive ) ;
148151 const activeTabId = activeTab ?. id ;
149- const activeTabModel = activeTab ?. modelTitle ;
150152
151153 // Simple UUID generator for our needs
152154 const generateId = useCallback ( ( ) => {
@@ -172,7 +174,14 @@ export const TabBar = React.forwardRef<HTMLDivElement>((_, ref) => {
172174 setTabModel ( { id : activeTabId , modelTitle : selectedModel . title } ) ,
173175 ) ;
174176 }
175- } , [ activeTabId , selectedModel ?. title , dispatch ] ) ;
177+ } , [ activeTabId , selectedModel ?. title , mode , dispatch ] ) ;
178+
179+ // Persist the currently selected mode into the active tab
180+ useEffect ( ( ) => {
181+ if ( activeTabId && mode ) {
182+ dispatch ( setTabMode ( { id : activeTabId , mode } ) ) ;
183+ }
184+ } , [ activeTabId , mode , dispatch ] ) ;
176185
177186 const handleNewTab = async ( ) => {
178187 // Save current session before creating new one
@@ -191,6 +200,7 @@ export const TabBar = React.forwardRef<HTMLDivElement>((_, ref) => {
191200 isActive : true ,
192201 sessionId : undefined ,
193202 modelTitle : selectedModel ?. title ,
203+ mode,
194204 } ) ,
195205 ) ;
196206 } ;
@@ -216,6 +226,12 @@ export const TabBar = React.forwardRef<HTMLDivElement>((_, ref) => {
216226 }
217227
218228 dispatch ( setActiveTab ( id ) ) ;
229+
230+ // restore mode for this tab (if set)
231+ if ( targetTab . mode ) {
232+ dispatch ( setMode ( targetTab . mode ) ) ;
233+ }
234+
219235 // restore model for this tab
220236 if ( targetTab . modelTitle && selectedProfile ) {
221237 void dispatch (
0 commit comments