From 64502c4ca24e9ee1114654508f8ffee69e90e269 Mon Sep 17 00:00:00 2001 From: Jack Kingsman Date: Thu, 16 Apr 2026 11:39:17 -0700 Subject: [PATCH] Fix default URL for map upload. Closes #190. --- app/fanout/AGENTS_fanout.md | 4 ++-- app/fanout/map_upload.py | 9 +++++---- .../src/components/settings/SettingsFanoutSection.tsx | 10 +++++----- tests/test_map_upload.py | 2 +- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/app/fanout/AGENTS_fanout.md b/app/fanout/AGENTS_fanout.md index 3285319..ac3ece9 100644 --- a/app/fanout/AGENTS_fanout.md +++ b/app/fanout/AGENTS_fanout.md @@ -144,8 +144,8 @@ Amazon SQS delivery. Config blob: - Supports both decoded messages and raw packets via normal scope selection ### map_upload (map_upload.py) -Uploads heard repeater and room-server advertisements to map.meshcore.dev. Config blob: -- `api_url` (optional, default `""`) — upload endpoint; empty falls back to the public map.meshcore.dev API +Uploads heard repeater and room-server advertisements to map.meshcore.io. Config blob: +- `api_url` (optional, default `""`) — upload endpoint; empty falls back to the public map.meshcore.io API - `dry_run` (bool, default `true`) — when true, logs the payload at INFO level without sending - `geofence_enabled` (bool, default `false`) — when true, only uploads nodes within `geofence_radius_km` of the radio's own configured lat/lon - `geofence_radius_km` (float, default `0`) — filter radius in kilometres diff --git a/app/fanout/map_upload.py b/app/fanout/map_upload.py index 31ae5fd..4256d29 100644 --- a/app/fanout/map_upload.py +++ b/app/fanout/map_upload.py @@ -1,6 +1,7 @@ -"""Fanout module for uploading heard advert packets to map.meshcore.dev. +"""Fanout module for uploading heard advert packets to map.meshcore.io. -Mirrors the logic of the standalone map.meshcore.dev-uploader project: +Mirrors the logic of the standalone map.meshcore.dev-uploader project +(historical name; the live service is now hosted at map.meshcore.io): - Listens on raw RF packets via on_raw - Filters for ADVERT packets, only processes repeaters (role 2) and rooms (role 3) - Skips nodes with no valid location (lat/lon None) @@ -16,7 +17,7 @@ the raw hex link. Config keys ----------- api_url : str, default "" - Upload endpoint. Empty string falls back to the public map.meshcore.dev API. + Upload endpoint. Empty string falls back to the public map.meshcore.io API. dry_run : bool, default True When True, log the payload at INFO level instead of sending it. geofence_enabled : bool, default False @@ -46,7 +47,7 @@ from app.services.radio_runtime import radio_runtime logger = logging.getLogger(__name__) -_DEFAULT_API_URL = "https://map.meshcore.dev/api/v1/uploader/node" +_DEFAULT_API_URL = "https://map.meshcore.io/api/v1/uploader/node" # Re-upload guard: skip re-uploading a pubkey seen within this window (AU parity) _REUPLOAD_SECONDS = 3600 diff --git a/frontend/src/components/settings/SettingsFanoutSection.tsx b/frontend/src/components/settings/SettingsFanoutSection.tsx index 2dc6d51..7b02c5d 100644 --- a/frontend/src/components/settings/SettingsFanoutSection.tsx +++ b/frontend/src/components/settings/SettingsFanoutSection.tsx @@ -325,7 +325,7 @@ const CREATE_INTEGRATION_DEFINITIONS: readonly CreateIntegrationDefinition[] = [ label: 'Map Upload', section: 'Community Sharing', description: - 'Upload repeaters and room servers to map.meshcore.dev or a compatible map API endpoint.', + 'Upload repeaters and room servers to map.meshcore.io or a compatible map API endpoint.', defaultName: 'Map Upload', nameMode: 'counted', defaults: { @@ -1668,12 +1668,12 @@ function MapUploadConfigEditor({

Automatically upload heard repeater and room server advertisements to{' '} - map.meshcore.dev + map.meshcore.io . Requires the radio's private key to be available (firmware must have{' '} ENABLE_PRIVATE_KEY_EXPORT=1). Only raw RF packets are shared — never @@ -1710,12 +1710,12 @@ function MapUploadConfigEditor({ onChange({ ...config, api_url: e.target.value })} />

- Leave blank to use the default map.meshcore.dev endpoint. + Leave blank to use the default map.meshcore.io endpoint.

diff --git a/tests/test_map_upload.py b/tests/test_map_upload.py index 81e5a7f..226c5f7 100644 --- a/tests/test_map_upload.py +++ b/tests/test_map_upload.py @@ -479,7 +479,7 @@ class TestLiveSend: @pytest.mark.asyncio async def test_live_send_defaults_to_map_url(self): - """Empty api_url should default to the map.meshcore.dev endpoint.""" + """Empty api_url should default to the map.meshcore.io endpoint.""" mod = _make_module({"dry_run": False, "api_url": ""}) await mod.start()