From fa0304793a4525db68cb53b527d695bfa2c65966 Mon Sep 17 00:00:00 2001 From: Christian Kolset Date: Sun, 2 Aug 2026 01:38:09 -0600 Subject: Remove Debug window feature MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Debug button, DebugWindow, and the stdout/stderr tee (core/debug_log.py) weren't wanted. developer_mode toggle stays — still gates device Simulation Mode checkboxes and verbose terminal logging. Co-Authored-By: Claude Sonnet 5 --- core/debug_log.py | 65 ------------------------------------------------------- 1 file changed, 65 deletions(-) delete mode 100644 core/debug_log.py (limited to 'core/debug_log.py') diff --git a/core/debug_log.py b/core/debug_log.py deleted file mode 100644 index 86a8a59..0000000 --- a/core/debug_log.py +++ /dev/null @@ -1,65 +0,0 @@ -""" -core/debug_log.py - -Tees stdout/stderr into an in-memory ring buffer + Qt signal so the Debug -window can show everything the app has printed since startup — including -messages from background poll threads (e.g. "[CMLLayer] poll error: ...") — -not just whatever gets printed while the window happens to be open. - -install() should be called once, early, before anything prints. The real -streams are still written to, so running from a terminal is unaffected. -""" - -from __future__ import annotations - -import sys -from collections import deque -from typing import Optional - -from PyQt6.QtCore import QObject, pyqtSignal - - -class _Broadcaster(QObject): - line_written = pyqtSignal(str) - - -class _StreamTee: - def __init__(self, real_stream, lines: deque, broadcaster: _Broadcaster): - self._real = real_stream - self._lines = lines - self._broadcaster = broadcaster - - def write(self, text: str) -> None: - self._real.write(text) - if text: - self._lines.append(text) - self._broadcaster.line_written.emit(text) - - def flush(self) -> None: - self._real.flush() - - def isatty(self) -> bool: - return False - - -_lines: Optional[deque] = None -_broadcaster: Optional[_Broadcaster] = None - - -def install(max_lines: int = 2000) -> None: - """Redirect sys.stdout/sys.stderr through the tee. Safe to call once.""" - global _lines, _broadcaster - if _broadcaster is not None: - return - _lines = deque(maxlen=max_lines) - _broadcaster = _Broadcaster() - sys.stdout = _StreamTee(sys.stdout, _lines, _broadcaster) - sys.stderr = _StreamTee(sys.stderr, _lines, _broadcaster) - - -def get_broadcaster() -> Optional[_Broadcaster]: - return _broadcaster - - -def get_history() -> str: - return "".join(_lines) if _lines is not None else "" -- cgit v1.2.3