diff --git a/src/gui_2.py b/src/gui_2.py index 9ffc703..407794a 100644 --- a/src/gui_2.py +++ b/src/gui_2.py @@ -4060,47 +4060,47 @@ def hello(): self._handle_reset_session() if self.perf_profiling_enabled: self.perf_monitor.end_component("_render_message_panel") - def _render_response_panel(self) -> None: - if self.perf_profiling_enabled: self.perf_monitor.start_component("_render_response_panel") - if self._trigger_blink: - self._trigger_blink = False - self._is_blinking = True - self._blink_start_time = time.time() - try: - imgui.set_window_focus("Response") # type: ignore[call-arg] - except: - pass - is_blinking = False - blink_color = vec4(0, 0, 0, 0) - if self._is_blinking: - elapsed = time.time() - self._blink_start_time - if elapsed > 1.5: - self._is_blinking = False - else: - is_blinking = True - val = math.sin(elapsed * 8 * math.pi) - alpha = 50/255 if val > 0 else 0 - blink_color = vec4(0, 255, 0, alpha) + def _render_response_panel(self) -> None: + if self.perf_profiling_enabled: self.perf_monitor.start_component("_render_response_panel") + if self._trigger_blink: + self._trigger_blink = False + self._is_blinking = True + self._blink_start_time = time.time() + try: + imgui.set_window_focus("Response") # type: ignore[call-arg] + except: + pass + is_blinking = False + blink_color = vec4(0, 0, 0, 0) + if self._is_blinking: + elapsed = time.time() - self._blink_start_time + if elapsed > 1.5: + self._is_blinking = False + else: + is_blinking = True + val = math.sin(elapsed * 8 * math.pi) + alpha = 50/255 if val > 0 else 0 + blink_color = vec4(0, 255, 0, alpha) - with imscope.style_color(imgui.Col_.frame_bg, blink_color) if is_blinking else nullcontext(): - with imscope.style_color(imgui.Col_.child_bg, blink_color) if is_blinking else nullcontext(): - with imscope.child("response_scroll_area", imgui.ImVec2(0, -40), True): - is_nerv = theme.is_nerv_active() - with imscope.style_color(imgui.Col_.text, vec4(80, 255, 80)) if is_nerv else nullcontext(): - segments, parsed_response = thinking_parser.parse_thinking_trace(self.ai_response) - if segments: - self._render_thinking_trace([{"content": s.content, "marker": s.marker} for s in segments], 9999) - markdown_helper.render(parsed_response, context_id="response") + with imscope.style_color(imgui.Col_.frame_bg, blink_color) if is_blinking else nullcontext(): + with imscope.style_color(imgui.Col_.child_bg, blink_color) if is_blinking else nullcontext(): + with imscope.child("response_scroll_area", imgui.ImVec2(0, -40), True): + is_nerv = theme.is_nerv_active() + with imscope.style_color(imgui.Col_.text, vec4(80, 255, 80)) if is_nerv else nullcontext(): + segments, parsed_response = thinking_parser.parse_thinking_trace(self.ai_response) + if segments: + self._render_thinking_trace([{"content": s.content, "marker": s.marker} for s in segments], 9999) + markdown_helper.render(parsed_response, context_id="response") - imgui.separator() - if imgui.button("-> History"): - if self.ai_response: - segments, response = thinking_parser.parse_thinking_trace(self.ai_response) - entry = {"role": "AI", "content": response, "collapsed": True, "ts": project_manager.now_ts()} - if segments: - entry["thinking_segments"] = [{"content": s.content, "marker": s.marker} for s in segments] - self.disc_entries.append(entry) - if self.perf_profiling_enabled: self.perf_monitor.end_component("_render_response_panel") + imgui.separator() + if imgui.button("-> History"): + if self.ai_response: + segments, response = thinking_parser.parse_thinking_trace(self.ai_response) + entry = {"role": "AI", "content": response, "collapsed": True, "ts": project_manager.now_ts()} + if segments: + entry["thinking_segments"] = [{"content": s.content, "marker": s.marker} for s in segments] + self.disc_entries.append(entry) + if self.perf_profiling_enabled: self.perf_monitor.end_component("_render_response_panel") def _render_external_tools_panel(self) -> None: if self.perf_profiling_enabled: self.perf_monitor.start_component("_render_external_tools_panel")