From f4f344ce29294fb69681c769825377a196b2fa51 Mon Sep 17 00:00:00 2001 From: NBA2K1 <78034913+NBA2K1@users.noreply.github.com> Date: Thu, 8 Jan 2026 22:48:34 +0100 Subject: [PATCH] add log buffer and replace direct list mutation - Introduce _addLog() helper to manage log insertion - Enforce a maximum log history of 200 entries to prevent unbounded memory growth - Replace direct _logsNotifier.value.add(event) with safe, immutable-style list update - Improve log handling consistency and avoid mutating notifier state in place --- lib/modules/browse/extension/edit_code.dart | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/modules/browse/extension/edit_code.dart b/lib/modules/browse/extension/edit_code.dart index 8f400d81..d0d748ee 100644 --- a/lib/modules/browse/extension/edit_code.dart +++ b/lib/modules/browse/extension/edit_code.dart @@ -93,7 +93,7 @@ class _CodeEditorPageState extends ConsumerState { _controller.text = source?.sourceCode ?? ""; useLogger = true; _logSubscription = _logStreamController.stream.listen((event) async { - _logsNotifier.value.add(event); + _addLog(event); try { await Future.delayed(const Duration(milliseconds: 5)); if (_scrollController.hasClients) { @@ -103,6 +103,18 @@ class _CodeEditorPageState extends ConsumerState { }); } + static const int _maxLogs = 200; + + void _addLog((LoggerLevel, String, DateTime) log) { + final logs = _logsNotifier.value; + final newLogs = List<(LoggerLevel, String, DateTime)>.from(logs); + if (newLogs.length >= _maxLogs) { + newLogs.removeAt(0); + } + newLogs.add(log); + _logsNotifier.value = newLogs; + } + List filters = []; Future filterDialog(BuildContext context) async {