Commit Graph
23 Commits
Author SHA1 Message Date
gadgethd 4d9872768a perf: reduce monitoring load and retire path history 2026-08-09 19:37:59 +00:00
gadgethd 09366e7dec fix: harden HopReach release image 2026-08-02 17:27:48 +01:00
gadgethd 6479529106 perf: vendor optimized HopReach release 2026-08-02 15:59:39 +01:00
gadgethd 4553647f54 feat: integrate HopReach RF coverage 2026-08-02 14:11:11 +01:00
gadgethd 5db382e181 feat: complete codebase reliability upgrade 2026-08-02 03:40:11 +01:00
gadgethd 1ebc496965 Map UI redesign, live-path visibility, feed latency, and security hardening (#19)
* Fix map node freshness consistency

* Harden output, ingest, caches, and WebSocket limits

* Enforce public visibility across derived data

* Harden proxy and operator deployment boundary

* Make owner grants authoritative and reconcile ACLs safely

* Bound path, spam, and statistics analysis

* Make link and coverage jobs crash-safe

* Implement strategic security remediation

* Fix production cutover configuration

* Fix disabled viewshed worker health signal

* Serve stale stats during background refresh

* Retain stale stats through refresh windows

* Bound analytics work to protect ingestion

* Prioritize summary warmup over chart scans

* Throttle path history rebuilds

* Bound path history result memory

* Stream path history aggregation

* Give bounded path rebuild one CPU

* Serve stale charts during bounded refresh

* Prioritize startup stats before chart scans

* Bound path history segment cardinality

* Pin path rebuild context to privacy generation

* Self-host original frontend fonts

* Allow bounded path rebuild to complete

* Improve live map UI and low-latency group feed

- Dock node details on the right with selection highlight and collapsible layers
- Add node legend, 24h activity sparkline, copy-link, and layout/overlap fixes
- Keep all repeaters visible during Live Path focus
- Send GroupText feed packets immediately over WebSocket (no batch delay)
- Cache expensive stats/observer activity more aggressively to protect ingest
- Remove stale local planning/audit markdown from the tree

* fix(ci): supply OPERATOR_SITE_TOKEN for compose validation

Workers/Compose CI failed because docker-compose requires
OPERATOR_SITE_TOKEN. Add CI placeholders for that and MQTT_PASSWORD.
2026-07-27 02:39:12 +01:00
gadgethd 93cc3e1b38 Expand network intelligence and harden operations (#9)
Consolidates the stacked backend, privacy, network-intelligence, frontend, operations, mobile, and owner-cache changes after resolving main conflicts and passing the full CI suite.
2026-07-23 20:50:47 +01:00
BenandClaude Sonnet 4.6 edc8206a22 Add ML path learner, Anubis bot protection, planned coverage, companion page, and misc improvements
- ml-path-learner: new Python worker that trains a prefix→node ML model from gold paths and writes scores to ml_path_prefix_scores
- lazyResolver: integrate ML scores and edge priors into tiered candidate ranking; bidirectional pass-2 propagation; global cross-group direct anchors
- Anubis: add sidecar bot-protection containers for all public HTTP services; botPolicy.yaml
- Planned coverage: new API route + frontend map layers for placing hypothetical repeaters and computing coverage
- Map: light/dark theme toggle; map-tools button group (LOS, Repeater, theme); plan-repeater mode with click-to-place/remove and polling
- Frontend: remove inferred nodes from map display (backend inference kept for internal use)
- Stats page: observer region summary, channel traffic, companion activity endpoints and UI
- UKCompanionPage: new companion activity page
- Teesside site: extracted into standalone build context (teesside-site/)
- healthcheck overrides: share.html, sw.js, region filter support, SVG score ring updates
- DB: dedicated analytics pool; DATABASE_SKIP_SCHEMA_INIT flag; path hash prefix indexes; lateral join fixes for node_link_radio_reports
- docker-compose: ml-path-learner service; anubis sidecars; DATABASE_SKIP_SCHEMA_INIT on all workers; OBSERVER_RETENTION_SECONDS; REGIONS_FILE
- backend-site: internal operator dashboard routes
- docker/mesh-health-check-entrypoint.sh: extract channel secret from MESHCORE_CHANNEL_SECRETS at startup
- scripts: observer key generation, observer registration, healthcheck tunnel check
- vacuum-compressed-chunks.sh: maintenance script

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 01:33:48 +00:00
BenandClaude Sonnet 4.6 caaa45c5d6 Remove private radio bot URL from public config defaults
RADIO_BOT_URL is a private integration — strip the default service name
from docker-compose and remove it from the README env table.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-16 02:09:09 +00:00
BenandClaude Sonnet 4.6 441f80229c Update README and open source page
- README: correct GitHub URL, add path-history-worker, RADIO_BOT_URL env var,
  path resolver worker pool notes, updated services table and architecture diagram
- OpenSourcePage: fix GitHub link (teesside-mesh → ukmesh), add Recharts,
  polygon-clipping, cors, express-rate-limit; update geospatial section
  (GDAL, psycopg2, redis-py in place of rasterio; clarify world-atlas usage)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-16 02:07:22 +00:00
Ben f5fcd68105 Refresh README for current public features 2026-03-08 04:00:53 +00:00
Ben 814c94d01f Update README for owner portal and current coverage 2026-03-07 03:25:54 +00:00
Ben b61f7429df Clarify Phase 5 auto-claim via Ed25519 key without login 2026-03-05 00:50:28 +00:00
Ben eca35e0016 Add repeater owner portal roadmap phase and renumber planned phases 2026-03-05 00:49:03 +00:00
Ben 8951db1bad Restore phased roadmap format in README 2026-03-05 00:46:57 +00:00
Ben 7da3b6c54e Sanitize README to remove environment-specific deployment details 2026-03-05 00:43:46 +00:00
Ben 0e365479a6 Split workers, fix frontend proxy resilience, expand health UX/docs 2026-03-05 00:39:44 +00:00
gadgethd d728eb0cde Update repository URL in README 2026-03-04 23:55:41 +00:00
BenandClaude Sonnet 4.6 26d96133af Add Paths (Beta), node elevation, and coverage preview
- Paths (Beta): new map layer with confidence-scored packet path resolution.
  Per-hop candidates filtered by 2-char node ID prefix, ranked by proximity
  to the interpolated src-to-rx line. Each hop scored by ambiguity factor
  (1/n_candidates) and distance factor (reachable within elevation-derived
  range). Threshold slider in the filter panel (default 50%). Purple dashed
  polyline, separate from the existing packet paths layer.

- Node elevation: viewshed worker now writes terrain elevation (m ASL) to
  nodes.elevation_m when computing each viewshed, and backfills existing
  nodes from stored radius_m on startup. Elevation shown in node popup.

- Coverage preview: "Preview coverage" button in node popup shows that
  node's viewshed at lower opacity (10%) for 20 seconds then auto-dismisses.

- Beta path range uses stored radius_m from node_coverage directly instead
  of bounding box estimation.

- Fix homepage Live Map button to link directly to app.teessidemesh.com.

- README Phase 3: clarify nodes must be on MQTT to be claimable.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 23:10:18 +00:00
BenandClaude Sonnet 4.6 6fcfda4b5a Expand roadmap with phases 3-6
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 22:06:59 +00:00
BenandClaude Sonnet 4.6 e019842e7a Add project roadmap to README
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 20:24:42 +00:00
Ben 6fd6242c4c Add full acknowledgements and license compatibility notes to README 2026-03-03 19:23:49 +00:00
Ben cb713d6c1a Initial commit 2026-03-03 19:11:05 +00:00