11import {
2+ batch ,
23 createContext ,
34 createEffect ,
45 createMemo ,
@@ -52,7 +53,6 @@ import { useDialog } from "../../ui/dialog"
5253import { TodoItem } from "../../component/todo-item"
5354import { DialogMessage } from "./dialog-message"
5455import type { PromptInfo } from "../../component/prompt/history"
55- import { iife } from "@/util/iife"
5656import { DialogConfirm } from "@tui/ui/dialog-confirm"
5757import { DialogTimeline } from "./dialog-timeline"
5858import { DialogForkFromTimeline } from "./dialog-fork-from-timeline"
@@ -136,23 +136,25 @@ export function Session() {
136136 } )
137137
138138 const dimensions = useTerminalDimensions ( )
139- const [ sidebar , setSidebar ] = createSignal < "show" | "hide" | "auto" > ( kv . get ( "sidebar" , "auto" ) )
139+ const [ sidebar , setSidebar ] = kv . signal < "auto" | "hide" > ( "sidebar" , "hide" )
140+ const [ sidebarOpen , setSidebarOpen ] = createSignal ( false )
140141 const [ conceal , setConceal ] = createSignal ( true )
141- const [ showThinking , setShowThinking ] = createSignal ( kv . get ( "thinking_visibility" , true ) )
142- const [ showTimestamps , setShowTimestamps ] = createSignal ( kv . get ( "timestamps" , "hide" ) === "show ")
143- const [ showDetails , setShowDetails ] = createSignal ( kv . get ( "tool_details_visibility" , true ) )
144- const [ showAssistantMetadata , setShowAssistantMetadata ] = createSignal ( kv . get ( "assistant_metadata_visibility" , true ) )
145- const [ showScrollbar , setShowScrollbar ] = createSignal ( kv . get ( "scrollbar_visible" , false ) )
142+ const [ showThinking , setShowThinking ] = kv . signal ( "thinking_visibility" , true )
143+ const [ timestamps , setTimestamps ] = kv . signal < "hide" | "show" > ( "timestamps" , "hide" )
144+ const [ showDetails , setShowDetails ] = kv . signal ( "tool_details_visibility" , true )
145+ const [ showAssistantMetadata , setShowAssistantMetadata ] = kv . signal ( "assistant_metadata_visibility" , true )
146+ const [ showScrollbar , setShowScrollbar ] = kv . signal ( "scrollbar_visible" , false )
146147 const [ diffWrapMode , setDiffWrapMode ] = createSignal < "word" | "none" > ( "word" )
147- const [ animationsEnabled , setAnimationsEnabled ] = createSignal ( kv . get ( "animations_enabled" , true ) )
148+ const [ animationsEnabled , setAnimationsEnabled ] = kv . signal ( "animations_enabled" , true )
148149
149150 const wide = createMemo ( ( ) => dimensions ( ) . width > 120 )
150151 const sidebarVisible = createMemo ( ( ) => {
151152 if ( session ( ) ?. parentID ) return false
152- if ( sidebar ( ) === "show" ) return true
153+ if ( sidebarOpen ( ) ) return true
153154 if ( sidebar ( ) === "auto" && wide ( ) ) return true
154155 return false
155156 } )
157+ const showTimestamps = createMemo ( ( ) => timestamps ( ) === "show" )
156158 const contentWidth = createMemo ( ( ) => dimensions ( ) . width - ( sidebarVisible ( ) ? 42 : 0 ) - 4 )
157159
158160 const scrollAcceleration = createMemo ( ( ) => {
@@ -453,13 +455,11 @@ export function Session() {
453455 keybind : "sidebar_toggle" ,
454456 category : "Session" ,
455457 onSelect : ( dialog ) => {
456- setSidebar ( ( prev ) => {
457- if ( prev === "auto" ) return sidebarVisible ( ) ? "hide" : "show"
458- if ( prev === "show" ) return "hide"
459- return "show"
458+ batch ( ( ) => {
459+ const isVisible = sidebarVisible ( )
460+ setSidebar ( ( ) => ( isVisible ? "hide" : "auto" ) )
461+ setSidebarOpen ( ! isVisible )
460462 } )
461- if ( sidebar ( ) === "show" ) kv . set ( "sidebar" , "auto" )
462- if ( sidebar ( ) === "hide" ) kv . set ( "sidebar" , "hide" )
463463 dialog . clear ( )
464464 } ,
465465 } ,
@@ -478,11 +478,7 @@ export function Session() {
478478 value : "session.toggle.timestamps" ,
479479 category : "Session" ,
480480 onSelect : ( dialog ) => {
481- setShowTimestamps ( ( prev ) => {
482- const next = ! prev
483- kv . set ( "timestamps" , next ? "show" : "hide" )
484- return next
485- } )
481+ setTimestamps ( ( prev ) => ( prev === "show" ? "hide" : "show" ) )
486482 dialog . clear ( )
487483 } ,
488484 } ,
@@ -491,11 +487,7 @@ export function Session() {
491487 value : "session.toggle.thinking" ,
492488 category : "Session" ,
493489 onSelect : ( dialog ) => {
494- setShowThinking ( ( prev ) => {
495- const next = ! prev
496- kv . set ( "thinking_visibility" , next )
497- return next
498- } )
490+ setShowThinking ( ( prev ) => ! prev )
499491 dialog . clear ( )
500492 } ,
501493 } ,
@@ -514,9 +506,7 @@ export function Session() {
514506 keybind : "tool_details" ,
515507 category : "Session" ,
516508 onSelect : ( dialog ) => {
517- const newValue = ! showDetails ( )
518- setShowDetails ( newValue )
519- kv . set ( "tool_details_visibility" , newValue )
509+ setShowDetails ( ( prev ) => ! prev )
520510 dialog . clear ( )
521511 } ,
522512 } ,
@@ -526,11 +516,7 @@ export function Session() {
526516 keybind : "scrollbar_toggle" ,
527517 category : "Session" ,
528518 onSelect : ( dialog ) => {
529- setShowScrollbar ( ( prev ) => {
530- const next = ! prev
531- kv . set ( "scrollbar_visible" , next )
532- return next
533- } )
519+ setShowScrollbar ( ( prev ) => ! prev )
534520 dialog . clear ( )
535521 } ,
536522 } ,
@@ -539,11 +525,7 @@ export function Session() {
539525 value : "session.toggle.animations" ,
540526 category : "Session" ,
541527 onSelect : ( dialog ) => {
542- setAnimationsEnabled ( ( prev ) => {
543- const next = ! prev
544- kv . set ( "animations_enabled" , next )
545- return next
546- } )
528+ setAnimationsEnabled ( ( prev ) => ! prev )
547529 dialog . clear ( )
548530 } ,
549531 } ,
0 commit comments