From 28b57b6964bfcd6ce78f2a77822f7221f6e4f7e5 Mon Sep 17 00:00:00 2001
From: Artur Borecki
Date: Thu, 5 Mar 2026 21:26:34 +0100
Subject: [PATCH 1/6] build(uv.lock): update judas_protocol to 0.9.0
---
uv.lock | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/uv.lock b/uv.lock
index e66d908..e33d026 100644
--- a/uv.lock
+++ b/uv.lock
@@ -358,8 +358,8 @@ wheels = [
[[package]]
name = "judas-protocol"
-version = "0.8.0"
-source = { git = "https://gitea.pufereq.pl/judas/judas_protocol.git#a805ccf38edffadc1b8c8b276e60758c86516cd3" }
+version = "0.9.0"
+source = { git = "https://gitea.pufereq.pl/judas/judas_protocol.git#3d5a1e95daa4cd99b51abdcaca9967fa8f921ec1" }
[[package]]
name = "judas-server"
--
2.39.5
From 3d13d241168b011c0044eb64db4b0fe70878d748 Mon Sep 17 00:00:00 2001
From: Artur Borecki
Date: Thu, 5 Mar 2026 22:29:48 +0100
Subject: [PATCH 2/6] build(uv.lock): update judas_protocol to 0.9.1
---
uv.lock | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/uv.lock b/uv.lock
index e33d026..b95c71f 100644
--- a/uv.lock
+++ b/uv.lock
@@ -358,8 +358,8 @@ wheels = [
[[package]]
name = "judas-protocol"
-version = "0.9.0"
-source = { git = "https://gitea.pufereq.pl/judas/judas_protocol.git#3d5a1e95daa4cd99b51abdcaca9967fa8f921ec1" }
+version = "0.9.1"
+source = { git = "https://gitea.pufereq.pl/judas/judas_protocol.git#085c34f232f95313d66db48a7d17bc25c92a35ae" }
[[package]]
name = "judas-server"
--
2.39.5
From 40c08d01693973f29f13c133a11fc5f166891a25 Mon Sep 17 00:00:00 2001
From: Artur Borecki
Date: Sun, 8 Mar 2026 20:37:26 +0100
Subject: [PATCH 3/6] feat(initial_handler.py): add handler for
`TELEMETRY/INTIIAL` msgs
---
.../handler/telemetry/initial_handler.py | 33 +++++++++++++++++++
1 file changed, 33 insertions(+)
create mode 100644 src/judas_server/backend/handler/telemetry/initial_handler.py
diff --git a/src/judas_server/backend/handler/telemetry/initial_handler.py b/src/judas_server/backend/handler/telemetry/initial_handler.py
new file mode 100644
index 0000000..eb25abc
--- /dev/null
+++ b/src/judas_server/backend/handler/telemetry/initial_handler.py
@@ -0,0 +1,33 @@
+# -*- coding: utf-8 -*-
+"""Initial telemetry handler."""
+
+from __future__ import annotations
+
+from typing import TYPE_CHECKING
+
+from judas_protocol import Message
+
+from judas_server.backend.handler.base_handler import BaseHandler
+
+if TYPE_CHECKING:
+ from judas_server.backend import BackendServer
+ from judas_server.backend.client import Client
+
+
+class InitialTelemetryHandler(BaseHandler):
+ """Handles the initial telemetry message from a client."""
+
+ def __init__(self, backend_server: BackendServer) -> None:
+ """Initialize the handler."""
+ super().__init__(backend_server)
+
+ def handle(self, client: Client, message: Message) -> None:
+ """Handle the initial telemetry message."""
+ self.logger.debug(
+ f"Handling initial telemetry message from {client}..."
+ )
+
+ client.initial_telemetry = message.payload
+ self.backend_server.known_clients[client.id]["initial_telemetry"] = ( # type: ignore
+ message.payload
+ )
--
2.39.5
From 6ed03ab74de8e91d13b5f1971a3f4cec890e4fef Mon Sep 17 00:00:00 2001
From: Artur Borecki
Date: Sun, 8 Mar 2026 20:38:01 +0100
Subject: [PATCH 4/6] feat(client.py): add `Client.initial_telemetry` property
---
src/judas_server/backend/client.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/judas_server/backend/client.py b/src/judas_server/backend/client.py
index 1c20fa2..14390fb 100644
--- a/src/judas_server/backend/client.py
+++ b/src/judas_server/backend/client.py
@@ -6,6 +6,7 @@ from __future__ import annotations
import logging as lg
import socket
import time
+from typing import Any
from judas_server.backend.client_status import ClientStatus
@@ -41,6 +42,8 @@ class Client:
self.inbound: bytes = b""
self.outbound: bytes = b""
+ self.initial_telemetry: dict[str, Any] | None = None
+
def __str__(self) -> str:
if self.addr:
return f"Client({self.id} ({self.addr[0]}:{self.addr[1]}))"
--
2.39.5
From 7e9a9e6eede6cc926fef64c626434e65984befbc Mon Sep 17 00:00:00 2001
From: Artur Borecki
Date: Sun, 8 Mar 2026 20:38:32 +0100
Subject: [PATCH 5/6] feat(backend_server.py): add `initial_telemetry` support
---
src/judas_server/backend/backend_server.py | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/src/judas_server/backend/backend_server.py b/src/judas_server/backend/backend_server.py
index cce28a7..fe5cae4 100644
--- a/src/judas_server/backend/backend_server.py
+++ b/src/judas_server/backend/backend_server.py
@@ -8,11 +8,15 @@ import threading
import time
from typing import TYPE_CHECKING, Any, Final
+from judas_protocol.types import TelemetryAction
import yaml
from judas_protocol import Category, ControlAction, Message
from judas_server.backend.client import Client, ClientStatus
from judas_server.backend.handler.hello_handler import HelloHandler
+from judas_server.backend.handler.telemetry.initial_handler import (
+ InitialTelemetryHandler,
+)
if TYPE_CHECKING:
from typing import Callable
@@ -67,11 +71,16 @@ class BackendServer:
"""Initialize message handlers."""
hello_handler = HelloHandler(self)
+ initial_telemetry_handler = InitialTelemetryHandler(self)
self.message_handlers[(Category.CONTROL, ControlAction.HELLO)] = (
hello_handler.handle
)
+ self.message_handlers[
+ (Category.TELEMETRY, TelemetryAction.INITIAL)
+ ] = initial_telemetry_handler.handle
+
def _load_known_clients(self) -> dict[str, dict[str, str | float]]:
"""Load the list of known clients from a YAML file and validate."""
known_clients: dict[str, dict[str, str | float]] = {}
@@ -108,6 +117,9 @@ class BackendServer:
client.last_seen = float(
known_clients[client_id].get("last_seen", 0.0)
)
+ client.initial_telemetry = known_clients[client_id].get( # type: ignore
+ "initial_telemetry", None
+ )
self.clients[client_id] = client
except FileNotFoundError:
@@ -399,4 +411,5 @@ class BackendServer:
"addr": client.addr,
"last_seen": client.last_seen,
"status": client.status,
+ "initial_telemetry": client.initial_telemetry,
}
--
2.39.5
From d7b136851bafa2c20e1634bd5568f4bac839177f Mon Sep 17 00:00:00 2001
From: Artur Borecki
Date: Sun, 8 Mar 2026 20:38:59 +0100
Subject: [PATCH 6/6] feat(client_details.html): add temporary initial
telemetry display
---
src/judas_server/web/templates/client_details.html | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/judas_server/web/templates/client_details.html b/src/judas_server/web/templates/client_details.html
index db9e58d..2fec335 100644
--- a/src/judas_server/web/templates/client_details.html
+++ b/src/judas_server/web/templates/client_details.html
@@ -18,6 +18,10 @@
Last Seen:
{{ client.last_seen }}
+
+ Initial:
+
{{ client.initial_telemetry | tojson(indent=2) }}
+