@@ -86,6 +86,7 @@ def __init__(self):
8686 self .project_modified = False
8787 self .sync_thread = None
8888 self .sync_cancelled = False
89+ self .last_log_level = None
8990
9091 self .setup_ui ()
9192 self .protocol ("WM_DELETE_WINDOW" , self .on_closing )
@@ -243,19 +244,20 @@ def setup_right_panel(self, parent):
243244 self .log_text .pack (fill = "both" , expand = True , padx = 15 , pady = (0 , 15 ))
244245
245246 def log (self , message , level = "INFO" ):
246- def _update_log_widget ():
247- if level == "PROGRESS" :
248- # Delete the previous progress line
249- self .log_text .delete ("end-2l" , "end-1l" )
250-
251- timestamp = datetime .now ().strftime ("%H:%M:%S" )
252- prefix = {"INFO" : "ℹ️" , "SUCCESS" : "✅" , "ERROR" : "❌" , "WARNING" : "⚠️" , "PROGRESS" : "⏳" }.get (level , "•" )
253-
254- self .log_text .insert ("end" , f"[{ timestamp } ] { prefix } { message } \n " )
255- self .log_text .see ("end" )
256-
257- # Schedule the GUI update to run on the main thread
258- self .after (0 , _update_log_widget )
247+ def _update_log_widget ():
248+ # Only delete the previous line if it was ALSO a progress message
249+ if level == "PROGRESS" and getattr (self , "last_log_level" , None ) == "PROGRESS" :
250+ self .log_text .delete ("end-2l" , "end-1l" )
251+
252+ timestamp = datetime .now ().strftime ("%H:%M:%S" )
253+ prefix = {"INFO" : "ℹ️" , "SUCCESS" : "✅" , "ERROR" : "❌" , "WARNING" : "⚠️" , "PROGRESS" : "⏳" }.get (level , "•" )
254+
255+ self .log_text .insert ("end" , f"[{ timestamp } ] { prefix } { message } \n " )
256+ self .log_text .see ("end" )
257+ self .last_log_level = level # Store the level for the next call
258+
259+ # Schedule the GUI update to run on the main thread
260+ self .after (0 , _update_log_widget )
259261
260262 def toggle_theme (self ):
261263 current = ctk .get_appearance_mode ()
0 commit comments