mirror of
https://github.com/Kpa-clawbot/meshcore-analyzer.git
synced 2026-10-15 23:09:55 +00:00
New feature: every "ping" channel message gets recorded and scored, producing records (farthest reach, most hops, widest simultaneous spread, fastest full spread, most airtime-efficient) plus leaderboards (top relay nodes, top first-hearer observers). Global, not scoped by region/area, per dborup's request. Architecture: - Ingestor writes a lightweight ping_triggers row (tx_id, hash, channel_hash, sender, first_seen) at ingest time when a new CHAN transmission matches the same isPingTrigger logic the pong-reply feature already uses (mirrored, kept in sync by hand -- now a 3rd copy alongside public/channels.js and cmd/server/db.go). - Server periodically (every 2 min) joins ping_triggers with the same GetPacketPath + LoRa-airtime-estimate logic behind View Path, computing the full snapshot in memory (no write access needed from the read-only server) and caching it, matching the steady-state recomputer pattern used throughout cmd/server. - New GET /api/ping-scores endpoint + Ping Scores page (linked from Tools and from every pong reply bubble in Channels). Schema change follows the dbschema.go INVARIANT from #1321 exactly: migration in Apply() (ingestor-only), assertion in AssertReady() (server fatal-exits if ping_triggers is missing rather than silently degrading) -- the same pattern #1865/#1867's configured_scope should have used but didn't fully wire up (see the ping_scores.go doc comment and today's earlier startup-race fix for the story). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
83 lines
3.0 KiB
Bash
Executable File
83 lines
3.0 KiB
Bash
Executable File
#!/bin/sh
|
|
# Run all tests with coverage
|
|
set -e
|
|
|
|
echo "═══════════════════════════════════════"
|
|
echo " CoreScope — Test Suite"
|
|
echo "═══════════════════════════════════════"
|
|
echo ""
|
|
|
|
# Unit tests (deterministic, fast)
|
|
echo "── Unit Tests ──"
|
|
node test-packet-filter.js
|
|
node test-packet-filter-ux.js
|
|
node test-aging.js
|
|
node test-issue-1065-gesture-hints-gates.js
|
|
node test-frontend-helpers.js
|
|
node test-geo-filter.js
|
|
node test-fetch-all-nodes-pagination.js
|
|
node test-nodes-geo-scope-filter.js
|
|
node test-my-repeaters-dashboard.js
|
|
node test-url-state.js
|
|
node test-perf-go-runtime.js
|
|
node test-channel-psk-ux.js
|
|
node test-channel-sidebar-layout.js
|
|
node test-channel-fluid-layout.js
|
|
node test-channel-modal-ux.js
|
|
node test-channel-decrypt-insecure-context.js
|
|
node test-channel-qr.js
|
|
node test-channel-qr-wiring.js
|
|
node test-channel-issue-1087.js
|
|
node test-issue-1409-no-encrypted-flood.js
|
|
node test-analytics-channels-integration.js
|
|
node test-analytics-foreign-traffic-tab.js
|
|
node test-analytics-nodes-without-scope.js
|
|
node test-observers-headings.js
|
|
node test-issue-1789-observer-firmware-cols.js
|
|
node test-issue-1648-m1-emoji-scan.js
|
|
node test-issue-1648-m2-emoji-scan.js
|
|
node test-issue-1648-m3-emoji-scan.js
|
|
node test-issue-1648-m6-final-sweep.js
|
|
node test-issue-1648-m6-lint-self.js
|
|
node test-traces.js
|
|
node test-live-multibyte-filter.js
|
|
|
|
# #1418 — route-view v2 (Tufte) coverage
|
|
node test-issue-1418-raw-hex-extraction.js
|
|
node test-issue-1418-edge-weights.js
|
|
node test-issue-1418-cb-preset-ramp.js
|
|
node test-issue-1418-spider-fan.js
|
|
node test-issue-1418-deeplink-hops-channels.js
|
|
node test-issue-1418-polish-review.js
|
|
node test-issue-1420-tile-providers.js
|
|
node test-issue-1614-tile-url-function.js
|
|
node test-issue-1438-marker-css-vars.js
|
|
node test-issue-1438-customizer-mcrole.js
|
|
node test-issue-1446-cb-preset-cascade.js
|
|
node test-issue-1380-cb-sim-overlay.js
|
|
node test-issue-1380-cb-reset-button.js
|
|
node test-issue-1450-logo-aspect.js
|
|
node test-issue-1454-channels-toggle.js
|
|
node test-issue-1456-score-labels.js
|
|
|
|
# #1461 mobile UX overhaul + #1470 node-detail tile helper (#1468 covered by E2E)
|
|
node test-issue-1461-mobile-page-actions.js
|
|
node test-issue-1470-node-tile-helper.js
|
|
node test-issue-1485-live-anim-z.js
|
|
node test-issue-1532-live-fullscreen.js
|
|
node test-naive-banner-tone.js
|
|
node test-issue-1473-reserved-prefixes.js
|
|
node test-issue-1473-prefix-generator.js
|
|
node test-issue-1770-mobile-row-clamp.js
|
|
node test-issue-1849-trace-hashbytes.js
|
|
node test-node-analytics-hop-chart.js
|
|
node test-analytics-hop-depth-ui.js
|
|
node test-channels-ping-bot-reply.js
|
|
node test-packet-path-map.js
|
|
node test-ping-scores.js
|
|
|
|
echo ""
|
|
echo "═══════════════════════════════════════"
|
|
echo " All tests passed"
|
|
echo "═══════════════════════════════════════"
|