From e0e8e22cd2ee558e7b777af6ed87642ab3f842aa Mon Sep 17 00:00:00 2001 From: forbes Date: Thu, 12 Feb 2026 15:39:40 -0600 Subject: [PATCH] feat: live SSE-based Database Activity panel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace the static startup-only item list with a real-time event feed: - InitGui.py: remove the startup list_items() call that showed '(Unable to connect)' when not yet authenticated; show a simple '(Waiting for connection...)' placeholder instead - silo_commands.py (submodule): maintain an in-memory event list prepended by SSE events, seeded with 10 recent items on first connect, with relative timestamps refreshed every 60s The panel now shows live activity ('F01-0001 updated ยท just now') instead of requiring expensive full re-fetches on every SSE event. --- mods/silo | 2 +- src/Mod/Create/InitGui.py | 21 +++------------------ 2 files changed, 4 insertions(+), 19 deletions(-) diff --git a/mods/silo b/mods/silo index 972dc07157..d7c6066030 160000 --- a/mods/silo +++ b/mods/silo @@ -1 +1 @@ -Subproject commit 972dc07157f8de9820ae6ca1348c640088d30c60 +Subproject commit d7c606603013debf83545a7ea3ace262daa5ad1c diff --git a/src/Mod/Create/InitGui.py b/src/Mod/Create/InitGui.py index bdf0eed086..7bccb18848 100644 --- a/src/Mod/Create/InitGui.py +++ b/src/Mod/Create/InitGui.py @@ -104,7 +104,7 @@ def _setup_silo_auth_panel(): def _setup_silo_activity_panel(): - """Show a dock widget with recent Silo database activity.""" + """Show a dock widget with live Silo database activity.""" try: from PySide import QtCore, QtWidgets @@ -121,27 +121,12 @@ def _setup_silo_activity_panel(): widget = QtWidgets.QWidget() layout = QtWidgets.QVBoxLayout(widget) + layout.setContentsMargins(0, 0, 0, 0) activity_list = QtWidgets.QListWidget() + activity_list.addItem("(Waiting for connection...)") layout.addWidget(activity_list) - try: - import silo_commands - - items = silo_commands._client.list_items() - if isinstance(items, list): - for item in items[:20]: - pn = item.get("part_number", "") - desc = item.get("description", "") - updated = item.get("updated_at", "") - if updated: - updated = updated[:10] - activity_list.addItem(f"{pn} - {desc} - {updated}") - if activity_list.count() == 0: - activity_list.addItem("(No items in database)") - except Exception: - activity_list.addItem("(Unable to connect to Silo database)") - panel.setWidget(widget) mw.addDockWidget(QtCore.Qt.RightDockWidgetArea, panel) except Exception as e: