From 7a4b905ddb64bdc92b7f9acf2ccde9bd84d7a6f3 Mon Sep 17 00:00:00 2001 From: Christophe Besson Date: Fri, 4 Sep 2026 02:20:48 +0200 Subject: fix(node): pin utf-8 (and LF) on every text file the node reads or writes node.toml, the keystore envelope, the unlock key, the loopback UI token, pairing/invite code files and the denylist were all read and written with the platform default encoding and newline translation. On Windows that is cp1252 + CRLF: a node.toml or keystore holding any non-ASCII byte failed to load, and ops.py's line-based node.toml editor round-tripped CRLF in and LF out. Every read is now `encoding="utf-8"`; every write is `encoding="utf-8", newline="\n"` so the files stay LF whatever the OS. No-op where the locale was already UTF-8. Co-Authored-By: Claude Sonnet 5 --- packages/meshbay-node/src/meshbay_node/transport/quic_server.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'packages/meshbay-node/src/meshbay_node/transport') diff --git a/packages/meshbay-node/src/meshbay_node/transport/quic_server.py b/packages/meshbay-node/src/meshbay_node/transport/quic_server.py index 95fccf1..360b9ac 100644 --- a/packages/meshbay-node/src/meshbay_node/transport/quic_server.py +++ b/packages/meshbay-node/src/meshbay_node/transport/quic_server.py @@ -144,7 +144,7 @@ class Denylist: return try: import json - data = json.loads(self._path.read_text()) + data = json.loads(self._path.read_text(encoding="utf-8")) self.user_ids = set(data.get("users", [])) self.group_ids = set(data.get("groups", [])) self.jtis = set(data.get("jtis", [])) @@ -163,7 +163,7 @@ class Denylist: "users": sorted(self.user_ids), "groups": sorted(self.group_ids), "jtis": sorted(self.jtis), - })) + }), encoding="utf-8", newline="\n") except Exception as e: log.warning("Could not persist denylist to %s: %s", self._path, e) -- cgit v1.2.3