LiteScope · Releases
from GitHub · updated 2026-07-053 releases
v1.0.2 # 1 month ago · 2026-06-20 21:31 UTC
Highlights
- Added map heatmaps, scope-region overlays, and direct-link analytics.
- Added Spotlight Search for faster navigation.
- Added node activity, observation fanout, and payload-mix analytics.
- Added duplicate-message stacking and region filtering to Channels.
- Added configurable history retention with
retentionDays. - Refined home statistics and live observer status.
Performance
- Batched SQLite writes and reduced ingestor CPU usage.
- Improved analytics caching and query bounds.
- Added route code splitting, response compression, and React compiler optimizations.
- Reduced RF analytics response sizes.
Fixes and security
- Fixed packet-filter pagination.
- Fixed observer and node-detail links.
- Fixed channel-list jumping while filters load.
- Improved IATA validation, flags, decoding, and Polish translations.
- Added API limit protections and XSS safeguards.
- Improved light-mode contrast and map rendering reliability.
Deployment
- Added optional
VITE_SITE_URLsupport for generatedrobots.txtandsitemap.xml. - Existing installations remain compatible; new settings are optional.
Full changelog: v1.0.1…v1.0.2
v1.0.1 # 1 month ago · 2026-06-07 19:22 UTC
Update focused on geographic filtering, analytics, and richer channel messages.
🌍 Geographic & region filtering
- Region filter on Packets, Map, and Analytics - a country → IATA cascade chip selector with multi-select.
- Strict geo-locking by node position. A new embedded country-border dataset (Natural Earth 1:50m) resolves each node's real country from its coordinates, so filtering to e.g.
PLshows only nodes physically in Poland - not foreign nodes that merely propagated into a Polish observer. - "Local only" mode on Packets - show only packets heard exclusively within the selected region (excludes long-distance propagation caught by local observers).
📊 Analytics
- Global region + time-window filter applied across every tab (Overview, RF, SNR, Nodes, Observers, Channels, Hashes, Scope, Distance) - not just Activity.
- Time windows: 24h / 3d / 7d (the misleading "All" option was removed).
- Top Nodes adverts ⇄ retransmits toggle added to the Analytics → Nodes tab (https://github.com/RikoDEV/litescope/issues/3).
💬 Channels
- Contact-share cards — messages containing pubkey:type:name now render as a contact card (avatar, name, hash) with a Show QR button that generates a
meshcore://contact/add?...deep link to scan into the MeshCore app. - Location-share cards — coordinates like
51.977430,20.060091render as a tiny inline map with an OpenStreetMap link. - Live propagation — a message's observation and hop counts now climb in real time as more observers report the same packet.
🗺️ Nodes & Map
- Unified node-type symbols across the whole app (
◆ repeater,● companion,⬡ room,▲ sensor) - the Live Map now uses the same shapes/colors as the main map and node lists. - Node details now track more than adverts — packets a node relayed are included, so the payload-type breakdown reflects real activity instead of only
ADVERT. - Color-coded payload types in node "Recent packets".
🐛 Fixes & housekeeping
- Multiple geo-filter correctness fixes.
- Removed a duplicate/orphaned file.
- Reverted Live Map markers to canvas rendering (preferCanvas) to keep zoom smooth.
v1.0.0 # 2 months ago · 2026-06-04 18:40 UTC
The first stable release of liteScope — a lightweight, self-hosted dashboard for monitoring MeshCore networks. It ingests MQTT telemetry from one or more brokers, stores it in SQLite, and serves a real-time React UI with live packet feeds, node analytics, channel decryption, maps, and observer stats.
✨ Highlights
- Real-time everything — live packet feed over WebSocket, animated packet-trace playback, and a live node map.
- Deep packet inspection — colored hex dump with per-section highlighting, per-observer raw bytes and routing paths, and field-by-field decoded payloads.
- Network analytics — RF stats, activity timelines, hop/distance analysis, geographic coverage, and a new Hash Usage Matrix for spotting node-prefix collisions.
- Channel decryption — add AES-128 keys or derive them from a passphrase, then browse decrypted message history.
- Self-hosted & private — runs entirely on your infrastructure; nothing leaves your network.
🚀 Features
Live monitoring
- Live packet feed — filter by type, route, channel, or minimum observer count; pause/resume; expandable per-observation sub-rows with per-observer hex and path data.
- Packet detail sidebar — colored hex dump with byte offsets and section hover-highlighting, field breakdown table, and field-specific decoded rendering. Click any observation to switch to that observer's perspective.
- Live map — animated packet-trace playback with VCR controls (pause, replay, speed, timeline) and theme-aware tiles.
Nodes & observers
- Node explorer — per-node RF analytics (RSSI / SNR distributions), last-heard filters, role tabs, and a full-height location map.
- Observer dashboard — per-observer packet timelines, SNR charts, and packet-type breakdowns.
Channels
- Channel decryption — AES-128 keys or SHA-256-derived passphrase keys; decrypted message history; deep-linked channel URLs with working back navigation.
Analytics
- Network analytics — overview cards, activity heatmap, RF stats, top nodes/observers, packet-type distribution; deep-linked tabs (
/analytics/rf,/analytics/scope, …). - Hash size & adoption — 1/2/3-byte hash distribution over time and multi-byte adopters.
- Hash Usage Matrix — a 16×16 first-byte prefix grid with a 1/2/3-byte collision selector, per-cell node tooltips, and a click-through detail panel for inspecting prefix collisions.
- Distance / hop analytics — link-type breakdown, hop distribution, longest paths, and pairwise geographic coverage.
Maps & UX
- Node map — Leaflet markers with role-colored SVG icons, type-aware clustering, byte-size filter, and hash-prefix labels; theme-aware tiles (OSM light / CARTO dark).
- Decoder — paste raw hex packets for one-off decoding.
- Material 3 Expressive light/dark theme, persisted per browser.
- i18n — English, Polish, and German (auto-detected, persisted), with the rest of the UI ready for more.
- Fully responsive — charts, maps, and panels adapt from mobile to desktop.
🔧 Reliability & performance
- Concurrency-safe store — decoded payloads are computed once under the write lock, eliminating a data race on hot read paths.
- Faster analytics — version-keyed result caching for heavy endpoints, an index-aware node RF lookup, and bounded memory for pairwise geographic distance.
- Live node indexing — node packet lists and RF stats now reflect packets ingested after startup, not just those present at boot.
- Configurable origins — new
allowedOriginssetting drives CORS and WebSocket origin checks (defaults to["*"]).