From cd1a345242b29d12e38c1f70059df9889a421dd5 Mon Sep 17 00:00:00 2001 From: Alex Vanderpot Date: Fri, 29 May 2026 00:41:48 -0400 Subject: [PATCH] release-prep: remove meshtastic from web app Meshtastic was UI-filtering only (no meshtastic data backend). Drop it as a node type/option, and simplify the map marker/cluster/popup rendering now that every node is meshcore. Update product copy to MeshCore-only. The nodeTypes query plumbing stays (the unified view's type is always 'meshcore'). Production build passes. Co-Authored-By: Claude Opus 4.8 --- meshexplorer/src/app/layout.tsx | 2 +- meshexplorer/src/components/InfoModal.tsx | 2 +- meshexplorer/src/components/MapIcons.tsx | 110 +++++------------- .../src/components/MapLayerSettings.tsx | 4 +- meshexplorer/src/hooks/useMapLayerSettings.ts | 3 +- 5 files changed, 34 insertions(+), 87 deletions(-) diff --git a/meshexplorer/src/app/layout.tsx b/meshexplorer/src/app/layout.tsx index 90da1d5..1bb4ce2 100644 --- a/meshexplorer/src/app/layout.tsx +++ b/meshexplorer/src/app/layout.tsx @@ -16,7 +16,7 @@ const geistMono = Geist_Mono({ export const metadata: Metadata = { title: "MeshExplorer", - description: "A real-time map, chat client, and packet analysis tool for mesh networks using MeshCore and Meshtastic.", + description: "A real-time map, chat client, and packet analysis tool for MeshCore mesh networks.", icons: { icon: { url: "/favicon.svg", type: "image/svg+xml" }, apple: { url: "/favicon.svg", type: "image/svg+xml" } diff --git a/meshexplorer/src/components/InfoModal.tsx b/meshexplorer/src/components/InfoModal.tsx index 88f119c..1381423 100644 --- a/meshexplorer/src/components/InfoModal.tsx +++ b/meshexplorer/src/components/InfoModal.tsx @@ -15,7 +15,7 @@ export default function InfoModal({ isOpen, onClose }: InfoModalProps) {

{getAppName()} is a web-based visualization tool for exploring and monitoring mesh networks. - It provides real-time mapping of network nodes, message tracking, and statistical analysis for MeshCore and Meshtastic networks. + It provides real-time mapping of network nodes, message tracking, and statistical analysis for MeshCore networks.

diff --git a/meshexplorer/src/components/MapIcons.tsx b/meshexplorer/src/components/MapIcons.tsx index c3ce91f..60a7644 100644 --- a/meshexplorer/src/components/MapIcons.tsx +++ b/meshexplorer/src/components/MapIcons.tsx @@ -23,19 +23,13 @@ interface PopupContentProps { // Individual node marker component export function NodeMarker({ node, showNodeNames = true, isSelected = false, isLoadingNeighbors = false }: NodeMarkerProps) { const getMarkerClass = () => { - let baseClass = "custom-node-marker"; - - if (node.type === "meshtastic") { - baseClass += " custom-node-marker--green"; - } else if (node.type === "meshcore") { - baseClass += " custom-node-marker--blue custom-node-marker--top"; - } - + let baseClass = "custom-node-marker custom-node-marker--blue custom-node-marker--top"; + // Only add loading class when actually loading neighbors if (isLoadingNeighbors) { baseClass += " custom-node-marker--loading"; } - + return baseClass; }; @@ -43,7 +37,7 @@ export function NodeMarker({ node, showNodeNames = true, isSelected = false, isL
{showNodeNames && node.short_name && (
- {node.type === "meshcore" ? getNameIconLabel(node.name || node.short_name) : node.short_name} + {getNameIconLabel(node.name || node.short_name)}
)}
@@ -51,29 +45,11 @@ export function NodeMarker({ node, showNodeNames = true, isSelected = false, isL ); } -// Cluster marker component with pie chart +// Cluster marker component export function ClusterMarker({ children }: ClusterMarkerProps) { - let meshtasticCount = 0; - let meshcoreCount = 0; - // Convert children to array if it's not already const childrenArray = Array.isArray(children) ? children : [children]; - - childrenArray.forEach((marker: any) => { - const node = marker.options && marker.options.nodeData; - if (node?.type === 'meshtastic') meshtasticCount++; - else if (node?.type === 'meshcore') meshcoreCount++; - }); - - const total = meshtasticCount + meshcoreCount; - const percentMeshcore = total ? meshcoreCount / total : 0; - const percentMeshtastic = total ? meshtasticCount / total : 0; - - // Pie chart SVG calculations - const r = 13.5; - const c = 2 * Math.PI * r; - const meshcoreArc = percentMeshcore * c; - const meshtasticArc = percentMeshtastic * c; + const total = childrenArray.length; return (
- - -
ID: {node.type === "meshcore" ? formatPublicKey(node.node_id) : node.node_id}
+
ID: {formatPublicKey(node.node_id)}
Full Name: {node.name ?? "-"}
-
Short Name: {node.type === "meshcore" && node.short_name ? getNameIconLabel(node.name || node.short_name) : (node.short_name ?? "-")}
+
Short Name: {node.short_name ? getNameIconLabel(node.name || node.short_name) : "-"}
Type: {node.type ?? "-"}
Lat: {node.latitude}
Lng: {node.longitude}
@@ -172,30 +124,26 @@ export function PopupContent({ node, target = '_self' }: PopupContentProps) { ) : (
First seen: -
)} - {node.type === "meshcore" && ( - - )} +
); } - - \ No newline at end of file diff --git a/meshexplorer/src/components/MapLayerSettings.tsx b/meshexplorer/src/components/MapLayerSettings.tsx index 927f878..d004b4e 100644 --- a/meshexplorer/src/components/MapLayerSettings.tsx +++ b/meshexplorer/src/components/MapLayerSettings.tsx @@ -78,11 +78,11 @@ export default function MapLayerSettingsComponent({ onSettingsChange }: MapLayer