Commit Graph
358 Commits
Author SHA1 Message Date
gadgethd 4bd2c08b7e scripts: harden read-only evidence runner (PGAPPNAME + idle-tx timeout) 2026-09-19 11:20:46 +00:00
gadgethd d73b75e43e frontend: refresh maplibre-gl to 6.10.0 (GHSA-jrc7-96c5-q579) 2026-09-19 11:20:46 +00:00
gadgethd 52d1812f4d docs: refresh generated OpenAPI artifact (unblocks contract gate) 2026-09-19 11:20:46 +00:00
gadgethd 7ca92ad6cf docs: record CI smoke-failure analysis (inherited tagger-worker build gap) 2026-09-19 11:20:46 +00:00
gadgethd 4eb8bcb951 ci: build tagger-worker image so the compose smoke stack can start 2026-09-19 11:20:46 +00:00
gadgethd 115400835c docs: record inherited contract and dependency CI failures 2026-09-19 10:38:46 +00:00
gadgethd 333f180530 fix: reduce health query latency and measure feed rows 2026-09-19 10:34:47 +00:00
gadgethd 1d86e043a5 feat(tags): live message tags for feed + app
- tagger-worker: persistent retry queue (tagger_retry) so API outages cannot
  drop tags; overlap 20s->120s; only publicly-visible in-scope messages are
  sent to the API (visibility + network filter)
- backend: tags joined into /feed/messages, /packets/recent, /packets/:hash
  and the WS initial state; new GET /tags/recent for live enrichment; contract
  + openapi entries
- frontend: tag chips under the row meta line (feed + app), live 15s tag poll,
  Message tags section in the packet detail panel
2026-09-18 00:13:01 +00:00
hermes-gadget 4bf39aea94 feat(api): honor region= filter on /packets/recent raw events
The raw events path (getRecentPacketEvents) ignored a region query, so
consumers could only filter the newest few hundred feed rows themselves
(~10 min slice). Honoring region_scope here lets the nemesh.uk eng-ne
toggle show the most recent eng-ne-scoped packets across the 24h window
and update live as new ones arrive. Normalises 'eng-ne' / '#eng-ne' to
the stored '#eng-ne' form; invalid values fall back to unfiltered.
Verified live: region=eng-ne returns tagged rows; the compat route
serves them through to the site in a browser.
2026-09-17 14:26:44 +00:00
hermes-gadget ffa3160348 fix(api): expose region_scope in /packets/recent raw events (eng-ne feed toggle)
The raw=1 response path (getRecentPacketEvents) omitted region_scope, so
consumers filtering on region scope (nemesh.uk compat region=eng-ne) could
never match, even though packets were correctly tagged at ingest. Add the
column to the SELECT. Verified live: 1000-row raw fetch now carries
region_scope and the compat filter serves #eng-ne rows from real data.
2026-09-17 14:16:44 +00:00
gadgethd a8921b89f0 compose: add MESHCORE_REGION_NAMES backend probe list (eng-ne)
Region-scope probing was unset -> defaulted to Europe,Global, so
eng-ne scoped packets (the North East mesh region) were never tagged
with region_scope. Verified before enabling: 174/400 recent
transport-coded packets match eng-ne via the decoder transportCodeMatchesRegion;
0 match Europe/Global. Probe list is now eng-ne,Europe,Global so
ingest tags region_scope=#eng-ne for downstream consumers (nemesh.uk
eng-ne feed toggle, ukmesh charts regionScope resolution).
2026-09-17 13:42:32 +00:00
gadgethd 1eefb50b31 fix(map): remove duplicate attribution controls — default MapLibre attribution is sufficient 2026-08-27 23:59:16 +00:00
gadgethd aee892cc82 fix(ws): improve initial-state size estimator accuracy and drop duplicate viable_pairs 2026-08-27 23:59:16 +00:00
gadgethd 4f4546f31a test(e2e): migrate E2E test route stubs from CARTO to OpenFreeMap 2026-08-27 23:48:01 +00:00
gadgethd 0a41d4bfc6 refactor(map): fix overlay anchors and migrate mini-maps to OpenFreeMap with attribution 2026-08-27 23:48:01 +00:00
gadgethd fda05b835f refactor(map): rewrite theme switching to use OpenFreeMap setStyle with style.load rehydration 2026-08-27 23:48:01 +00:00
gadgethd c177bc44d4 refactor(map): replace CARTO basemap definitions with OpenFreeMap style URLs 2026-08-27 23:48:01 +00:00
gadgethd d864d0a15b infra: migrate preconnects, CSP, and service worker from CARTO to OpenFreeMap 2026-08-27 23:48:01 +00:00
gadgethd 5b555a7d4f style(repeaters): drop IATA chip from top adverting list 2026-08-27 23:48:01 +00:00
gadgethd 44f52fd7e4 fix(api): coerce COUNT(*) string to numeric adverts_in_window 2026-08-27 23:48:01 +00:00
gadgethd 79e5e4ad0b feat(repeaters): top 10 adverting repeaters (24h) in repeater search empty state 2026-08-27 23:48:01 +00:00
gadgethd bf7d7ad85e fix: anchor confirmed paths and stabilize observer dots 2026-08-27 23:48:01 +00:00
gadgethd 2a4dd27bcd fix(site): update operator Discord handle to sudogadget on install page 2026-08-27 23:48:01 +00:00
gadgethd 306b512ab0 docs: record database reset readiness evidence 2026-08-27 23:48:01 +00:00
gadgethd d11336da64 fix(backup): restore split-stack recovery workflow 2026-08-27 23:48:01 +00:00
gadgethd b7bd60f629 fix(owner): preserve authorization inventory across reset 2026-08-27 23:48:01 +00:00
gadgethd 26781dc7d9 fix(db): make reset schema and lifecycle reproducible 2026-08-27 23:48:01 +00:00
gadgethd ece8c70aa6 fix(map): fetch DEM z0-4 too (MapLibre 6 pyramid starts at lowest available zoom) 2026-08-27 23:48:01 +00:00
gadgethd 42cfdca975 chore: record MapLibre terrain release 2026-08-27 23:48:01 +00:00
gadgethd b50957c0ba fix(map): let MapLibre select terrain DEM pyramid 2026-08-27 23:48:01 +00:00
gadgethd 69b0f3811e fix(map): restore multi-tile terrain on MapLibre 6 2026-08-27 23:48:01 +00:00
gadgethd 733b0f11e4 chore: re-baseline drift-guard manifests (terrain fix release) 2026-08-27 23:47:37 +00:00
gadgethd b3473b5d11 chore(map): reproducible terrain tile fetch script; ignore terrain-tiles dir 2026-08-27 23:47:37 +00:00
gadgethd c63f638d46 fix(map): serve terrain tiles from website containers too (nginx location + volume) 2026-08-27 23:47:37 +00:00
gadgethd 1888c2863c fix(ci): move E2E tests to workers-and-compose job where backend is running 2026-08-27 09:33:53 +00:00
dependabot[bot] f990c6bd74 chore(deps): bump the actions group across 1 directory with 6 updates (#71)
Bumps the actions group with 6 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [actions/checkout](https://github.com/actions/checkout) | `4.4.0` | `7.0.1` |
| [actions/setup-node](https://github.com/actions/setup-node) | `4.4.0` | `7.0.0` |
| [actions/setup-python](https://github.com/actions/setup-python) | `5.6.0` | `7.0.0` |
| [gitleaks/gitleaks-action](https://github.com/gitleaks/gitleaks-action) | `2.3.9` | `3.0.0` |
| [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) | `4.2.0` | `4.3.0` |
| [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) | `3.9.1` | `4.1.2` |



Updates `actions/checkout` from 4.4.0 to 7.0.1
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.4.0...3d3c42e5aac5ba805825da76410c181273ba90b1)

Updates `actions/setup-node` from 4.4.0 to 7.0.0
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v4.4.0...820762786026740c76f36085b0efc47a31fe5020)

Updates `actions/setup-python` from 5.6.0 to 7.0.0
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/a26af69be951a213d495a4c3e4e4022e16d87065...5fda3b95a4ea91299a34e894583c3862153e4b97)

Updates `gitleaks/gitleaks-action` from 2.3.9 to 3.0.0
- [Release notes](https://github.com/gitleaks/gitleaks-action/releases)
- [Commits](https://github.com/gitleaks/gitleaks-action/compare/ff98106e4c7b2bc287b24eaf42907196329070c7...e0c47f4f8be36e29cdc102c57e68cb5cbf0e8d1e)

Updates `docker/setup-buildx-action` from 4.2.0 to 4.3.0
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/bb05f3f5519dd87d3ba754cc423b652a5edd6d2c...37fe631027851001ddb9b187196cc803df7f5f0e)

Updates `sigstore/cosign-installer` from 3.9.1 to 4.1.2
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](https://github.com/sigstore/cosign-installer/compare/398d4b0eeef1380460a10c8013a76f728fb906ac...6f9f17788090df1f26f669e9d70d6ae9567deba6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: actions/setup-node
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: actions/setup-python
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: gitleaks/gitleaks-action
  dependency-version: 3.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: docker/setup-buildx-action
  dependency-version: 4.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
- dependency-name: sigstore/cosign-installer
  dependency-version: 4.1.2
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-27 09:41:49 +01:00
dependabot[bot] bccc4af59c chore(deps): bump the frontend-dependencies group across 1 directory with 9 updates (#70)
Bumps the frontend-dependencies group with 9 updates in the /frontend directory:

| Package | From | To |
| --- | --- | --- |
| [@deck.gl/aggregation-layers](https://github.com/visgl/deck.gl) | `9.3.8` | `9.3.10` |
| [@deck.gl/core](https://github.com/visgl/deck.gl) | `9.3.8` | `9.3.10` |
| [@deck.gl/extensions](https://github.com/visgl/deck.gl) | `9.3.8` | `9.3.10` |
| [@deck.gl/layers](https://github.com/visgl/deck.gl) | `9.3.8` | `9.3.10` |
| [@deck.gl/mapbox](https://github.com/visgl/deck.gl) | `9.3.8` | `9.3.10` |
| [maplibre-gl](https://github.com/maplibre/maplibre-gl-js) | `6.2.0` | `6.4.0` |
| [zustand](https://github.com/pmndrs/zustand) | `5.0.14` | `5.0.15` |
| [@axe-core/playwright](https://github.com/dequelabs/axe-core-npm) | `4.12.1` | `4.13.0` |
| [tsx](https://github.com/privatenumber/tsx) | `4.23.11` | `4.23.12` |



Updates `@deck.gl/aggregation-layers` from 9.3.8 to 9.3.10
- [Release notes](https://github.com/visgl/deck.gl/releases)
- [Changelog](https://github.com/visgl/deck.gl/blob/v9.3.10/CHANGELOG.md)
- [Commits](https://github.com/visgl/deck.gl/compare/v9.3.8...v9.3.10)

Updates `@deck.gl/core` from 9.3.8 to 9.3.10
- [Release notes](https://github.com/visgl/deck.gl/releases)
- [Changelog](https://github.com/visgl/deck.gl/blob/v9.3.10/CHANGELOG.md)
- [Commits](https://github.com/visgl/deck.gl/compare/v9.3.8...v9.3.10)

Updates `@deck.gl/extensions` from 9.3.8 to 9.3.10
- [Release notes](https://github.com/visgl/deck.gl/releases)
- [Changelog](https://github.com/visgl/deck.gl/blob/v9.3.10/CHANGELOG.md)
- [Commits](https://github.com/visgl/deck.gl/compare/v9.3.8...v9.3.10)

Updates `@deck.gl/layers` from 9.3.8 to 9.3.10
- [Release notes](https://github.com/visgl/deck.gl/releases)
- [Changelog](https://github.com/visgl/deck.gl/blob/v9.3.10/CHANGELOG.md)
- [Commits](https://github.com/visgl/deck.gl/compare/v9.3.8...v9.3.10)

Updates `@deck.gl/mapbox` from 9.3.8 to 9.3.10
- [Release notes](https://github.com/visgl/deck.gl/releases)
- [Changelog](https://github.com/visgl/deck.gl/blob/v9.3.10/CHANGELOG.md)
- [Commits](https://github.com/visgl/deck.gl/compare/v9.3.8...v9.3.10)

Updates `maplibre-gl` from 6.2.0 to 6.4.0
- [Release notes](https://github.com/maplibre/maplibre-gl-js/releases)
- [Changelog](https://github.com/maplibre/maplibre-gl-js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/maplibre/maplibre-gl-js/compare/v6.2.0...v6.4.0)

Updates `zustand` from 5.0.14 to 5.0.15
- [Release notes](https://github.com/pmndrs/zustand/releases)
- [Commits](https://github.com/pmndrs/zustand/compare/v5.0.14...v5.0.15)

Updates `@axe-core/playwright` from 4.12.1 to 4.13.0
- [Release notes](https://github.com/dequelabs/axe-core-npm/releases)
- [Changelog](https://github.com/dequelabs/axe-core-npm/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/dequelabs/axe-core-npm/commits/v4.13.0)

Updates `tsx` from 4.23.11 to 4.23.12
- [Release notes](https://github.com/privatenumber/tsx/releases)
- [Changelog](https://github.com/privatenumber/tsx/blob/master/release.config.cjs)
- [Commits](https://github.com/privatenumber/tsx/compare/v4.23.11...v4.23.12)

---
updated-dependencies:
- dependency-name: "@deck.gl/aggregation-layers"
  dependency-version: 9.3.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: frontend-dependencies
- dependency-name: "@deck.gl/core"
  dependency-version: 9.3.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: frontend-dependencies
- dependency-name: "@deck.gl/extensions"
  dependency-version: 9.3.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: frontend-dependencies
- dependency-name: "@deck.gl/layers"
  dependency-version: 9.3.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: frontend-dependencies
- dependency-name: "@deck.gl/mapbox"
  dependency-version: 9.3.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: frontend-dependencies
- dependency-name: maplibre-gl
  dependency-version: 6.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: frontend-dependencies
- dependency-name: zustand
  dependency-version: 5.0.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: frontend-dependencies
- dependency-name: "@axe-core/playwright"
  dependency-version: 4.13.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: frontend-dependencies
- dependency-name: tsx
  dependency-version: 4.23.12
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: frontend-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-27 09:41:45 +01:00
dependabot[bot] 68225c463b chore(deps): bump the rf-worker-dependencies group (#68)
Bumps the rf-worker-dependencies group in /viewshed-worker with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [numpy](https://github.com/numpy/numpy) | `2.3.5` | `2.5.2` |
| [prometheus-client](https://github.com/prometheus/client_python) | `0.21.1` | `0.26.0` |
| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.11` | `2.9.12` |
| [redis](https://github.com/redis/redis-py) | `5.0.8` | `8.1.0` |
| [requests](https://github.com/psf/requests) | `2.32.3` | `2.34.2` |
| [scipy](https://github.com/scipy/scipy) | `1.16.3` | `1.18.0` |


Updates `numpy` from 2.3.5 to 2.5.2
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst)
- [Commits](https://github.com/numpy/numpy/compare/v2.3.5...v2.5.2)

Updates `prometheus-client` from 0.21.1 to 0.26.0
- [Release notes](https://github.com/prometheus/client_python/releases)
- [Commits](https://github.com/prometheus/client_python/compare/v0.21.1...v0.26.0)

Updates `psycopg2-binary` from 2.9.11 to 2.9.12
- [Changelog](https://github.com/psycopg/psycopg2/blob/master/NEWS)
- [Commits](https://github.com/psycopg/psycopg2/compare/2.9.11...2.9.12)

Updates `redis` from 5.0.8 to 8.1.0
- [Release notes](https://github.com/redis/redis-py/releases)
- [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES)
- [Commits](https://github.com/redis/redis-py/compare/v5.0.8...v8.1.0)

Updates `requests` from 2.32.3 to 2.34.2
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.32.3...v2.34.2)

Updates `scipy` from 1.16.3 to 1.18.0
- [Release notes](https://github.com/scipy/scipy/releases)
- [Commits](https://github.com/scipy/scipy/compare/v1.16.3...v1.18.0)

---
updated-dependencies:
- dependency-name: numpy
  dependency-version: 2.5.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rf-worker-dependencies
- dependency-name: prometheus-client
  dependency-version: 0.26.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rf-worker-dependencies
- dependency-name: psycopg2-binary
  dependency-version: 2.9.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rf-worker-dependencies
- dependency-name: redis
  dependency-version: 8.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: rf-worker-dependencies
- dependency-name: requests
  dependency-version: 2.34.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rf-worker-dependencies
- dependency-name: scipy
  dependency-version: 1.18.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rf-worker-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-27 09:41:41 +01:00
dependabot[bot] 5fbc45be2b chore(deps): bump the backend-dependencies group (#66)
Bumps the backend-dependencies group in /backend with 2 updates: [pg](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg) and [tsx](https://github.com/privatenumber/tsx).


Updates `pg` from 8.22.0 to 8.23.0
- [Changelog](https://github.com/brianc/node-postgres/blob/master/CHANGELOG.md)
- [Commits](https://github.com/brianc/node-postgres/commits/pg@8.23.0/packages/pg)

Updates `tsx` from 4.23.11 to 4.23.12
- [Release notes](https://github.com/privatenumber/tsx/releases)
- [Changelog](https://github.com/privatenumber/tsx/blob/master/release.config.cjs)
- [Commits](https://github.com/privatenumber/tsx/compare/v4.23.11...v4.23.12)

---
updated-dependencies:
- dependency-name: pg
  dependency-version: 8.23.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: backend-dependencies
- dependency-name: tsx
  dependency-version: 4.23.12
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: backend-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-27 09:41:37 +01:00
dependabot[bot] 618d42fd3e chore(deps): bump the scripts-dependencies group (#65)
Bumps the scripts-dependencies group in /scripts with 2 updates: [pg](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg) and [tsx](https://github.com/privatenumber/tsx).


Updates `pg` from 8.22.0 to 8.23.0
- [Changelog](https://github.com/brianc/node-postgres/blob/master/CHANGELOG.md)
- [Commits](https://github.com/brianc/node-postgres/commits/pg@8.23.0/packages/pg)

Updates `tsx` from 4.23.11 to 4.23.12
- [Release notes](https://github.com/privatenumber/tsx/releases)
- [Changelog](https://github.com/privatenumber/tsx/blob/master/release.config.cjs)
- [Commits](https://github.com/privatenumber/tsx/compare/v4.23.11...v4.23.12)

---
updated-dependencies:
- dependency-name: pg
  dependency-version: 8.23.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: scripts-dependencies
- dependency-name: tsx
  dependency-version: 4.23.12
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: scripts-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-27 09:41:33 +01:00
hermes-gadget 93e72b824e Remove planning/report/summary .md files from root
Cleanup: remove 23 stale planning, report, audit, and summary markdown
files from the root directory. These were artifacts from the early UKMesh
migration planning phase and are no longer needed. README.md retained.
2026-08-21 23:50:09 +01:00
gadgethd 309a108c44 chore: re-baseline drift-guard manifests (privacy page restyle) 2026-08-12 20:50:26 +00:00
gadgethd 1ba7674782 style(privacy): match site-prose/prose-section layout of sibling pages 2026-08-12 20:49:42 +00:00
gadgethd a4d9120bfc chore: re-baseline drift-guard manifests to rel-3400d3c (telemetry+gdpr release) 2026-08-12 20:45:41 +00:00
gadgethd fafc6c52ca fix(retention): health-worker retention targets from env — covers frontend_error_events + packet_decryptions (was hardcoded 2-table list) 2026-08-12 20:40:09 +00:00
gadgethd 3400d3c1fc fix(telemetry): correct telemetry=off gate — key is telemetry, value off (probe caught it) 2026-08-12 20:36:19 +00:00
gadgethd 181a41e891 test(dataLifecycle): packets retention now 30 days per 2026-08-12 policy 2026-08-12 20:25:30 +00:00
gadgethd 20ecb5f427 fix(telemetry): lazy telemetry=off check so module imports safely in node tests 2026-08-12 20:23:40 +00:00
gadgethd b8628a78bf feat(telemetry+gdpr): shared client error capture, console.error hook, privacy page, retention jobs, packet_paths store
- clientErrors.ts: window.onerror/unhandledrejection for BOTH domains via main.tsx
  (was app-only in App.tsx); resource-failure classification; telemetry=off gate;
  console.error hook (kind warning) with terrain-tiles noise filter; page field
  now pathname-only (no query strings)
- PrivacyPage at /privacy linked from footer + cookie banner; docs/privacy.md LIA
- retention: packet_decryptions added to row-table retention targets; packets
  180d->30d in lifecycle policies; migration 050 schedules timescaledb retention
  jobs (packets 30d, node_status 180d, node_neighbor 7d) that never existed
- migration 050: packet_paths hypertable (content-stripped path store, no
  retention) + backfill of 2.56M path-bearing packets + ingest dual-write
2026-08-12 20:23:13 +00:00
gadgethd c16d14fd93 chore: re-baseline drift-guard manifests to rel-18cb600 (stats mobile fixes); fix image pins to full 64-hex digests 2026-08-12 14:47:45 +00:00