From 2397eeff20df21079f1567dbf3ed2a7cd06a58ad Mon Sep 17 00:00:00 2001 From: Ivan Date: Sat, 9 May 2026 21:08:41 -0500 Subject: [PATCH] feat(config): raise announce storage and API defaults to 2500 Increase announce_max_stored_* and announce_fetch_limit_* defaults from 1000/500 to 2500 so the API lists everything stored in the database by default. Matches better with public network usage where node counts are higher. --- meshchatx/meshchat.py | 6 +++--- meshchatx/src/backend/announce_manager.py | 8 ++++---- meshchatx/src/backend/config_manager.py | 16 ++++++++-------- meshchatx/src/backend/database/announces.py | 2 +- tests/backend/test_announce_limits.py | 6 +++--- tests/backend/test_smoke_extended.py | 4 ++-- 6 files changed, 21 insertions(+), 21 deletions(-) diff --git a/meshchatx/meshchat.py b/meshchatx/meshchat.py index 5da111f..7ff3a7e 100644 --- a/meshchatx/meshchat.py +++ b/meshchatx/meshchat.py @@ -2197,7 +2197,7 @@ class ReticulumMeshChat: def _default_announce_fetch_limit(self, aspect): ctx = self.current_context if not ctx or not ctx.config: - return 500 + return 2500 keys = { "lxmf.delivery": ctx.config.announce_fetch_limit_lxmf_delivery, "nomadnetwork.node": ctx.config.announce_fetch_limit_nomadnetwork_node, @@ -2206,10 +2206,10 @@ class ReticulumMeshChat: } cfg = keys.get(aspect) if cfg is None: - return 500 + return 2500 v = cfg.get() if v is None or v < 1: - return 500 + return 2500 return min(int(v), 100_000) def get_lxst_version(self) -> str: diff --git a/meshchatx/src/backend/announce_manager.py b/meshchatx/src/backend/announce_manager.py index ff12522..ffb8ab8 100644 --- a/meshchatx/src/backend/announce_manager.py +++ b/meshchatx/src/backend/announce_manager.py @@ -46,16 +46,16 @@ class AnnounceManager: def _get_fetch_limit_for_aspect(self, aspect): if not self.config: - return 500 + return 2500 key = _ASPECT_FETCH_LIMIT_KEYS.get(aspect) if not key: - return 500 + return 2500 attr = getattr(self.config, key, None) if attr is None: - return 500 + return 2500 v = attr.get() if v is None or v < 1: - return 500 + return 2500 return min(v, 100_000) def is_storing_announce_for_aspect(self, aspect, force_store: bool = False) -> bool: diff --git a/meshchatx/src/backend/config_manager.py b/meshchatx/src/backend/config_manager.py index 3da2ec6..c601dcf 100644 --- a/meshchatx/src/backend/config_manager.py +++ b/meshchatx/src/backend/config_manager.py @@ -413,37 +413,37 @@ class ConfigManager: True, ) - # announce caps: max rows stored per aspect (oldest dropped). Default 1000. + # announce caps: max rows stored per aspect (oldest dropped). Default 2500. self.announce_max_stored_lxmf_delivery = self.IntConfig( self, "announce_max_stored_lxmf_delivery", - 1000, + 2500, ) self.announce_max_stored_nomadnetwork_node = self.IntConfig( self, "announce_max_stored_nomadnetwork_node", - 1000, + 2500, ) self.announce_max_stored_lxmf_propagation = self.IntConfig( self, "announce_max_stored_lxmf_propagation", - 1000, + 2500, ) - # default API page size per aspect when limit query param omitted. Default 500. + # default API page size per aspect when limit query param omitted. Default 2500. self.announce_fetch_limit_lxmf_delivery = self.IntConfig( self, "announce_fetch_limit_lxmf_delivery", - 500, + 2500, ) self.announce_fetch_limit_nomadnetwork_node = self.IntConfig( self, "announce_fetch_limit_nomadnetwork_node", - 500, + 2500, ) self.announce_fetch_limit_lxmf_propagation = self.IntConfig( self, "announce_fetch_limit_lxmf_propagation", - 500, + 2500, ) # lxst.telephony shares LXMF caps in announce_manager aspect mapping self.announce_search_max_fetch = self.IntConfig( diff --git a/meshchatx/src/backend/database/announces.py b/meshchatx/src/backend/database/announces.py index 5949e28..9286390 100644 --- a/meshchatx/src/backend/database/announces.py +++ b/meshchatx/src/backend/database/announces.py @@ -127,7 +127,7 @@ class AnnounceDAO: search_term=None, identity_hash=None, destination_hash=None, - limit=500, + limit=2500, offset=0, ): query = "SELECT * FROM announces WHERE 1=1" diff --git a/tests/backend/test_announce_limits.py b/tests/backend/test_announce_limits.py index 4ce2c3c..62107af 100644 --- a/tests/backend/test_announce_limits.py +++ b/tests/backend/test_announce_limits.py @@ -221,13 +221,13 @@ def test_fetch_limit_invalid_falls_back_to_default(mock_db, mock_config): manager = _make_manager(mock_db, mock_config) - assert manager._get_fetch_limit_for_aspect("lxmf.delivery") == 500 + assert manager._get_fetch_limit_for_aspect("lxmf.delivery") == 2500 def test_fetch_limit_unknown_aspect_returns_default(mock_db, mock_config): manager = _make_manager(mock_db, mock_config) - assert manager._get_fetch_limit_for_aspect("unknown.aspect") == 500 + assert manager._get_fetch_limit_for_aspect("unknown.aspect") == 2500 def test_fetch_limit_none_falls_back_to_default(mock_db, mock_config): @@ -236,7 +236,7 @@ def test_fetch_limit_none_falls_back_to_default(mock_db, mock_config): manager = _make_manager(mock_db, mock_config) - assert manager._get_fetch_limit_for_aspect("lxmf.delivery") == 500 + assert manager._get_fetch_limit_for_aspect("lxmf.delivery") == 2500 def test_get_filtered_announces_uses_clamped_fetch_limit(mock_db, mock_config): diff --git a/tests/backend/test_smoke_extended.py b/tests/backend/test_smoke_extended.py index 2436197..692b36e 100644 --- a/tests/backend/test_smoke_extended.py +++ b/tests/backend/test_smoke_extended.py @@ -109,8 +109,8 @@ def test_config_manager_smoke(): config.auto_announce_enabled.set(True) assert config.auto_announce_enabled.get() is True - assert config.announce_max_stored_lxmf_delivery.get() == 1000 - assert config.announce_fetch_limit_lxmf_delivery.get() == 500 + assert config.announce_max_stored_lxmf_delivery.get() == 2500 + assert config.announce_fetch_limit_lxmf_delivery.get() == 2500 assert config.discovered_interfaces_max_return.get() == 500