aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-node/src/meshbay_node/daemon.py
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-08-29 18:42:43 +0200
committerChristophe Besson <cbesson@gmail.com>2026-08-29 18:52:53 +0200
commit1f8a52484412b48205e5ff6aac506428e2fb77ed (patch)
tree5598419ee4caef21f607876de6af2d30d6452191 /packages/meshbay-node/src/meshbay_node/daemon.py
parent8de80b7e19738b716d9973c0b4ba3b42085f7359 (diff)
downloadmeshbay-1f8a52484412b48205e5ff6aac506428e2fb77ed.tar.gz
feat(node): editable node settings in the Node page (D5)
Expose invite_ttl_hours, pair_ttl_hours, device_request_ttl_minutes, max_concurrent_streams and transcode_incompatible_video in the Node management panel. Changes are applied immediately via roster.db and written back to node.toml so they survive a DB wipe. On startup, roster overrides take precedence over node.toml defaults. Draft v6 §2.11 documents the design; MNP gains node_settings_set / node_settings_set_ack for the browser path. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-node/src/meshbay_node/daemon.py')
-rw-r--r--packages/meshbay-node/src/meshbay_node/daemon.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/packages/meshbay-node/src/meshbay_node/daemon.py b/packages/meshbay-node/src/meshbay_node/daemon.py
index 266693a..e1e4dee 100644
--- a/packages/meshbay-node/src/meshbay_node/daemon.py
+++ b/packages/meshbay-node/src/meshbay_node/daemon.py
@@ -267,6 +267,20 @@ class NodeDaemon:
await self._roster.open()
await self._roster.purge_expired()
+ # Apply any roster overrides to node config (panel-edited values
+ # take precedence over node.toml defaults).
+ nd = self._config.node
+ defaults = {
+ "invite_ttl_hours": nd.invite_ttl_hours,
+ "pair_ttl_hours": nd.pair_ttl_hours,
+ "device_request_ttl_minutes": nd.device_request_ttl_minutes,
+ "max_concurrent_streams": nd.max_concurrent_streams,
+ "transcode_incompatible_video": nd.transcode_incompatible_video,
+ }
+ effective = await self._roster.node_settings(defaults)
+ for k, v in effective.items():
+ setattr(nd, k, v)
+
# X25519 key material for GEK unwrapping
from cryptography.hazmat.primitives import serialization
sk_x_raw = keys.sk_x25519.private_bytes(