you
15e80e56f1
fix: packet links use hash instead of observation ID
...
After dedup migration, transmission IDs != old packet IDs.
Hash-based links (#/packets/HASH) are stable across the migration.
Affected: node detail, channel messages, live page packet cards.
2026-03-20 23:40:30 +00:00
you
4f7b02a91c
fix: centralize hardcoded values — roles, thresholds, colors, tiles, limits — closes #104
...
- New public/roles.js shared module: ROLE_COLORS, ROLE_LABELS, ROLE_STYLE,
ROLE_EMOJI, ROLE_SORT, HEALTH_THRESHOLDS, TILE_DARK/LIGHT, SNR_THRESHOLDS,
DIST_THRESHOLDS, MAX_HOP_DIST, LIMITS — all configurable via /api/config/roles
- Removed duplicate ROLE_COLORS from map.js, nodes.js, live.js, analytics.js
- Removed duplicate health thresholds from nodes.js, home.js, observer-detail.js
- Deduplicated CartoDB tile URLs (3 copies → 1 in roles.js)
- Removed hardcoded region names from map.js and packets.js
- channels.js uses ROLE_EMOJI/ROLE_LABELS instead of hardcoded emoji chains
- server.js reads healthThresholds from config.json with defaults
- Unknown roles get gray circle fallback instead of crashing
2026-03-20 17:36:41 +00:00
you
2a076dfb1d
feat: shareable URLs for channels — update URL on selection, accept route param
...
- selectChannel updates URL to #/channels/<hash>
- init accepts routeParam and auto-selects channel
- Search results use new URL format instead of ?ch= query param
2026-03-20 06:51:54 +00:00
you
de658bfb0d
perf: configurable cache TTLs via config.json — server + client fetch from /api/config/cache
...
All cache TTLs now read from config.json cacheTTL section (seconds).
Client fetches config on load via GET /api/config/cache.
config.example.json updated with defaults.
Edit config.json, restart server — no code changes needed to tweak TTLs.
2026-03-20 03:23:58 +00:00
you
720d019a28
perf: align cache TTLs with real data rates — analytics 30min-1hr, nodes 5min, chat 10-15s, stats 10s, server debounce 30s
2026-03-20 03:20:33 +00:00
you
e98e04553a
feat: add frontend API response caching with TTL, in-flight dedup, and WebSocket invalidation
...
- Replace api() with caching version supporting TTL and request deduplication
- Add appropriate TTLs to all api() call sites across all frontend JS files:
- /stats: 5s TTL (was called 962 times in 3 min)
- /nodes/:pubkey: 15s, /health: 30s, /observers: 30s
- /channels: 15s, messages: 10s
- /analytics/*: 60s, /bulk-health: 60s, /network-status: 60s
- /nodes?*: 10s
- Skip caching for real-time endpoints (/packets, /resolve-hops, /perf)
- Invalidate /stats, /nodes, /channels caches on WebSocket messages
- Deduplicate in-flight requests (same path returns same promise)
- Add cache hit rate to window.apiPerf() console debugging
- Update all cache busters in index.html
2026-03-20 02:03:25 +00:00
you
bd560b9e52
fix: channels — aria-live, listbox, tooltip, mobile, resize, theme, cache, refresh ( closes #84 , #85 , #86 , #87 , #88 , #89 , #90 , #91 , #92 )
2026-03-19 19:39:08 +00:00
you
5255f7091e
fix: analytics — async race, guards, legend CSS, dedup API, responsive layout ( closes #75 , #76 , #77 , #78 , #79 , #80 , #81 )
2026-03-19 19:38:58 +00:00
you
02ae79beba
fix: observers — refresh a11y, table caption, spark ARIA, mobile, timezone ( closes #93 , #94 , #95 , #96 , #97 )
2026-03-19 19:37:00 +00:00
you
e1b382a5fe
fix: channels sender keyboard access, node panel focus trap ( closes #82 , #83 )
2026-03-19 18:57:55 +00:00
you
72743fd9ee
fix: WS debounce helper, clean up remaining window globals ( closes #7 , #8 )
2026-03-19 16:51:34 +00:00
you
43e62f9baf
Fix channel chat not showing new messages
...
Two bugs:
1. refreshMessages() compared array length to detect changes — at the
200 message limit, new messages don't change the count. Now compares
last message timestamp instead.
2. WS handler only triggered on type 'message' — observer-decoded
GRP_TXT packets broadcast as type 'packet' were missed. Now also
triggers refresh on packet events with GRP_TXT payload type.
2026-03-19 04:04:50 +00:00
you
d8189a5435
Add 'View packet' link in channel chat messages
...
Include packetId in channel message API response, render as link
in message metadata row that navigates to #/packets/id/<id>.
2026-03-18 23:19:37 +00:00
you
46349172f6
Initial commit: MeshCore Analyzer
...
Bay Area MeshCore mesh network analyzer with:
- Live packet visualization with map, contrail animations, shockwave pulses
- VCR controls: pause/play/rewind/scrub timeline with speed control
- Packet browser with grouped view, detail panel, byte breakdown
- Channel message decryption (hashtag-derived PSKs)
- Node directory with health cards, favorites, search
- Analytics dashboard with network insights
- Observer management and BLE/companion bridge support
- Trace route visualization
- Dark theme, responsive design, accessibility
- SQLite storage, WebSocket live feed, REST API
2026-03-18 19:34:05 +00:00