Skip to content

web: v1.27.0

Latest

Choose a tag to compare

@github-actions github-actions released this 02 Oct 12:00
000bb89

Changelog

1.27.0 (2026-10-02)

Features

  • app: show the measured noise floor in the cells and the HUD (#711) (d97cec0)

1.26.0 (2026-09-30)

Features

  • app,web: ease what the map shows by zoom, on one hex system (#734) (4c2a57b)
  • app,web: name a relay on the map the way the app does (#733) (a9aa01a)
  • app: send one broker to several collectors under one switch (#722) (8c6da30)
  • web: export the repeaters heard in view as a 1200×1200 PNG (#725) (d6186bc)

Bug Fixes

  • app,web: hang a Discover-heard repeater's star from its own position (#724) (15a6ada)
  • app,web: put the caret in the target picker's search when it opens (#721) (6bd899c)
  • app: drop the float window's previous and next buttons (#717) (c957ff3)
  • app: give the sound the playback buffer instead of the smallest (#712) (dee5484)
  • app: hide Chrome's pause on the fullscreen readout (#715) (836d91e)
  • app: keep a space under the HUD on Android (#710) (2754716)
  • app: let the fullscreen readout turn with the phone (#718) (fae3749)
  • app: put the transmit pop under the receptions it sat over (#738) (2bfc5fa)
  • server: keep the node registry in memory on a loop of its own (#736) (4f3e988)
  • web: keep the map bar on one row between 641 and 767 px (#732) (c44dc1d)

1.25.1 (2026-09-26)

Bug Fixes

  • app: keep the broker presets from config.json for the add form (#702) (5826ef7)

1.25.0 (2026-09-26)

Features

  • app: ask a selected repeater for its regions, owner and clock (#695) (9c77066)
  • app: map the companion's noise floor per cell (#698) (363a0d8)
  • app: publish to several MQTT brokers, with a page to manage them (#671) (27c41df)

Bug Fixes

  • app,web: keep node names on the screen and clear of what sits over the map (#692) (35c8963)
  • app: attach a short id only when its whole chain agrees on the name (#693) (4723ff7)
  • app: let the menu button's tint mean the attenuator and its dot mean news (#694) (a258012)
  • web: draw the reach through a registry outage, and say for 3 s which side is out (#691) (688827a)

Tests

  • web: fast-forward the map refresh instead of waiting it out (#697) (94f2d14)
  • web: tap a glyph only once a click there would reach it (#690) (fa5538c)

1.24.0 (2026-09-24)

Features

  • app,web: draw the node layer's glyphs as GL layers, not DOM markers (#682) (3928ebf)
  • app: read the whole radio from SELF_INFO, and name the self-advert setting for what it is for (#683) (05da05b)
  • web: one control above the hunter list that selects all, or clears the pick (#678) (07d0753)

Bug Fixes

  • app,web: let the FAB ring count the on states, so off is not a segment (#677) (4a1d3a2)
  • app,web: print an unnamed sender's id once in the target list (#676) (3f7d465)
  • app: fold a node's prefixes into one row without an advert in the window (#681) (48734ef)
  • app: keep the points of earlier rides on the map down to zoom 12 (#670) (789997d)
  • app: open the float readout through fullscreen on Android, so capture goes on (#672) (425b889)
  • app: ship MapLibre in the build, so the launch needs no other host (#673) (82180cc)
  • run the changelog generator's CLI on Windows (#686) (233865d)
  • web: give the picker rows their own look back from the bar (#680) (da616ff)
  • web: make a node's estimate from the whole window, not from the view (#675) (9255d75)
  • web: paint the active stop of the View control, and give the quick ranges their own look (#674) (b9c2eb3)

1.23.0 (2026-09-17)

Features

  • app,web: a reading layer that points at the node you heard (#667) (23c823d)
  • app,web: one control for where nodes are, and a glyph key that lives in the popup (#653) (640d5ae)
  • map: select any repeater's reach, and dim the rest of the map with it (#656) (1142292)
  • web: one control rail on the map, and the ticker pinned on a phone (#657) (5360f70)

Bug Fixes

  • app,web: make the receptions card and the map agree on what is on show (#652) (c44bcfc)
  • app,web: mount the overlays when the style is ready, not when its tiles are (#654) (4f9fef2)
  • map: show when a reception arrived and which ride it belongs to (#655) (7d476bd)
  • web: stand the map readout above the attribution, not on it (#659) (8b9d47d)

Miscellaneous Chores

  • build the release notes from one file per entry (#642) (9c053c0)

1.22.0 (2026-09-12)

Features

  • app,web,server: drop Sender unknown, the Unnamed chip already selects the same receptions (#582) (f297d9c)
  • app,web: every repeater's reach at once, in its own hue, as the third stop of Node positions (#593) (e7dded6)
  • app,web: make the two filter panels one panel (#573) (488b4e2)
  • app,web: show the id beside a resolved name in the receptions ticker (#584) (f397b09)
  • app: add Share my node name, off by default, sending a zero-hop advert each cycle a companion is the target (#577) (2acbdad)
  • app: ask a selected companion for its telemetry each cycle, zero-hop, and keep what it answers per node (#578) (cfcc130)
  • app: draw earlier rides as coverage and outlines, pulse the newest reception, and name the nodes in a hex cell (#579) (e348c4c)
  • app: let the HUD follow the ticker's stand, act on the shown sender, and float it over other apps (#575) (ec9c9ed)
  • app: look ahead while the map turns with you, and give the compass button three stops (#585) (a7b0f99)
  • app: make the HUD the ticker's playhead, so a name that resolves later reaches it (#583) (0205138)
  • app: name a short id only when the registries of the SF agree, and mark it as a guess (#587) (1a8798a)
  • app: ship terrain on the AWS DEM, raised by the 3D view, with an exaggeration setting (#586) (2aad6e4)
  • app: size the receptions card to what it holds, in steps (#570) (2ab97cb)
  • web: bring the app's 3D to the map: view button, bars, pillars, buildings, terrain and rotation (#596) (b0f3054)
  • web: bring the map's receptions ticker onto the app's card model (#571) (7da4ca9)
  • web: make the map's bar one row that names the product, at every width (#572) (efb3eeb)
  • web: move the map from Leaflet to MapLibre, the app's map, at 2D parity (#592) (8def27e)

Bug Fixes

  • app: paint a 3D bar the tint of its own cell, and lower the style light (#588) (39172e1)
  • web: fetch the hunter roster per role, so a login shows real names and a logout drops them (#598) (4b28ee9)
  • web: paint the open filter panel over the Locate readout and the node-position notice (#597) (aa8a304)

Code Refactoring

  • web: one watcher on #bar, and the open panels follow its growth (#600) (0cb6a51)

Tests

  • app,web: guard the picker block and the shared tokens against drift, and give the web the app's palette (#601) (88fc3de)
  • web: read Clear's effect off the newest request, not every request since a mark (#614) (c06da92)

1.21.0 (2026-09-08)

Features

  • app,web: mark the About and What's new links that leave the app (#589) (f14d205)
  • app: give auto-discover a duty floor from the airtime the last cycle spent (#581) (6450c3c)
  • app: give the time window the map's presets (#574) (bfef541)
  • landing,app,web: link the FAQ from both About tabs, and give every question an anchor (#580) (ae1410c)

Bug Fixes

  • app: stop the parked tone that stood in for the bed while backgrounded (#569) (0d595f8)

1.20.0 (2026-08-30)

Features

  • app: give the theme three states and a memory, and end the Settings tab (#566) (e67c319)
  • app: keep the SNR the repeater heard us at (#489) (0cd0a7c)
  • app: make every recorded reception audible, one instrument per type (+ sound tweaks) (#470) (6244c0f)
  • web: gate the point layer, and say what an account opens (#513) (71856f1)

Bug Fixes

  • app: take the gate's coach marks out of #splash's stacking context (#565) (6fba59e)

1.19.0 (2026-08-29)

Features

  • app,web,landing: the 26 August design pass (#541) (5a04962)

1.18.0 (2026-08-29)

Features

  • app: remove Locate, rename its maths to geometry.js (#540) (6dd94ae)
  • app: sweep the repeaters you can hear when no target is picked (#484) (7f2eafb)

1.17.0 (2026-08-28)

Features

  • app: name a trace reply after the node we pinged (#483) (04eded1)
  • web: name the picked target on the picker button (#499) (cabe596)

Bug Fixes

  • web: drop the hop notice from the map (#508) (ac925df)

1.16.0 (2026-08-26)

Features

  • app: search the target sheet by name or id prefix (#477) (c69c57c)
  • web,landing: lead with mapping, and say where accounts come from (#491) (f9f326c)
  • web,server: ignore a sender from the map (#500) (1b62809)

1.15.1 (2026-08-26)

Documentation

1.15.0 (2026-08-26)

Features

  • web,server: tell a hunter when their member verification comes through (#531) (54981ca)

1.14.0 (2026-08-26)

Features

  • app,web,server: filter receptions by sender-id class (#528) (f10b1ac)

1.13.1 (2026-08-26)

Bug Fixes

  • web,app: resolve the names in the target list, and mark the ids that cannot (#526) (9fe9067)
  • web,server: say how far back the map reaches instead of "capped" (#488) (5a26e51), closes #440

1.13.0 (2026-08-25)

Features

  • app,web: keep the reception when the identity or the decode fails (#478) (0c2831a)
  • app: give the app the map's two reception filters (#507) (a5243b0)
  • web: open the map on the last 30 days, not on All time (#512) (28802ac)
  • web: put the secondary filters behind a Filters pill on a phone (#467) (36f100f)

Bug Fixes

  • web: reload the map when Sender unknown is ticked (#504) (01c22aa)

1.12.0 (2026-08-25)

Features

  • app: name the 1-byte path hash instead of showing no sender (#522) (9ad8389)

1.11.0 (2026-08-25)

Features

  • app,web: locate from the whole signal field, not its centre of mass (#516) (4d9a947), closes #454
  • server,web: give a flood with no sender something to filter on (#497) (9362217)

Bug Fixes

  • app: send the receptions that are waiting, radio or no radio (#515) (15f79ff), closes #454
  • server,app: stop one reception blocking every reception behind it (#505) (c49b87a), closes #454
  • web,app: make the map keep up with the drive (#514) (720da82), closes #454

1.10.0 (2026-08-24)

Features

  • server,web: show a visitor everything that has been mapped (#466) (4dc885d)
  • web: give the map a settings sheet, so the bar can stop being the junk drawer (#432) (2c5f9d5)
  • web: let the receptions ticker be placed and put away (#473) (6f744a3)

1.9.2 (2026-08-24)

Performance Improvements

  • app: stop rebuilding a render tick that cannot have changed (#485) (18aa6ca), closes #462

1.9.1 (2026-08-23)

Documentation

  • app,web: write the release notes for what shipped since the backfill (#460) (ca1e31a)

1.9.0 (2026-08-23)

Features

  • app,web: write release notes for readers, not from the commit log (#435) (8b70eaa)

Bug Fixes

  • web: stop node-position labels printing over each other (#439) (a31e34e)

1.8.2 (2026-08-22)

Bug Fixes

  • web: let Leaflet's own controls follow the theme (#437) (86c3ed1)
  • web: let the position disclaimer go on a phone, and stay on a desktop (#438) (8cbd8d6)

1.8.1 (2026-08-21)

Bug Fixes

  • web: say which way the node-position layer came up empty (#445) (afd9c13), closes #376
  • web: stop the onboarding tour covering the controls it is explaining (#436) (d9500d1), closes #428

Tests

  • app,web: pin densityGrid's kernel, which nothing was holding (#442) (b1807dd), closes #370

1.8.0 (2026-08-19)

Features

  • app,web: give the website an onboarding tour, and say what a hunter is (#379) (ea7bb21), closes #316 #371
  • server,web: draw node positions from the registry, not from what you heard (#398) (a4ac33b), closes #377

Bug Fixes

  • web: put the bar's popovers back above the receptions ticker (#417) (c4e13c7)

1.7.0 (2026-08-19)

Features

  • app,web: make the receptions ticker readable at a glance (#404) (c48a974), closes #322

1.6.0 (2026-08-18)

Features

  • app,web: show what changed in a release behind a version badge (#363) (3a3dcf1), closes #284

Bug Fixes

  • web: hide Locate until the role is known (#393) (412daa4), closes #270
  • web: keep bar popovers on screen whatever the toggle's position (#385) (29ce125), closes #372
  • web: keep node positions out of the Locate focus view (#391) (7eb0f6c), closes #390
  • web: keep the receptions ticker off the bar's last row (#388) (92addc4), closes #386

1.5.0 (2026-08-15)

Features

  • app,web: carry the decoder's full packet-type set in the filter chips (#343) (e924935)
  • app,web: extend the weak end of the RSSI scale below -110 dBm (#344) (29b1015)

Bug Fixes

  • web: hold a name-resolution redraw while a popup is open (#354) (369ddcf)
  • web: keep the map painted while a pan/zoom redraw is in flight (#350) (fcb32d0)
  • web: stop filters.js and map.js racing — the page could die on load (#361) (caff818)

Documentation

  • web: record what the ?v= buster covers, and the nginx policy it leans on (#360) (e21b209)

Tests

  • web: close two diagnosed e2e flake sources — boot-window clicks and the per-test CDN fetch (#352) (fa9bec2)
  • web: pin app<->web parity for the duplicated modules (#238 option 2) (#359) (473e84e)

1.4.0 (2026-08-08)

Features

  • web: generalize the target-list picker to the hunter filter (#290) (#313) (8e34c51)

1.3.2 (2026-08-08)

Bug Fixes

  • web: merge sender-picker rows for one node across id prefixes (#331) (#332) (116c1a4)

1.3.1 (2026-07-29)

Bug Fixes

Continuous Integration

  • add an eslint no-undef pass over app, web and nameresolver (#303) (#324) (0eafdca)

Tests

  • web: route every spec through the shared e2e fixture (#304) (#329) (d89b9eb)

1.3.0 (2026-07-27)

Features

  • node-position layer — advertised positions vs. the RSSI estimate (app + web) (#272) (0c21df5)
  • web,server: browsable multi-select target-list picker (#223) (#288) (184712b)
  • web: add a live reception ticker, two-way synced with the map (#224) (#287) (8165140)
  • web: Grafana-style time-range picker with relative ranges (#285) (#289) (3270463)

1.2.1 (2026-07-26)

Bug Fixes

Miscellaneous Chores

  • web: drop the unserved web/landing copy of the homepage (#291) (8c5f979)

1.2.0 (2026-07-13)

Features

  • web: expand #f-hunter to a multi-row listbox on focus (#244) (30ea9b0)

Bug Fixes

  • app,web: locate disclaimer, glossary, and copy parity (#174) (#227) (41e1456)
  • web: fit the map to today's data on load instead of a Belgium-ish default (#222) (4ea1bb1), closes #218
  • web: stop persisting from/to date filter in localStorage (#221) (5bc0d30), closes #217

1.1.0 (2026-07-11)

Features

  • app: Mesh-Hunter onboarding splash + display-name rename (#202) (c1d75c1)

1.0.1 (2026-07-04)

Bug Fixes

  • web: only load Matomo on production hosts (not localhost/CI) (1c70a7a)

Miscellaneous Chores

  • add cookieless Matomo analytics to landing/map/app (9b06bad)

1.0.0 (2026-07-04)

Features

  • web: login, role-aware map, admin page, and mesh-hunter.eu landing (v1.0) (1be0c58)

0.6.0 (2026-07-03)

Features

  • web filter parity with the app (packet-type + direct-only via hops) (#170) (3ce0640)

Bug Fixes

  • web: CS-layer toggle clears reliably; add Clear button + sender-name hover (#171) (4594d75)

0.5.0 (2026-07-02)

Features

  • lift the 5000-point cap — paged points fetch (map 25k, Locate all) (#160) (0a1413b)
  • nameresolver — standalone SF7 name resolver + web multi-resolver support (#156) (a574d8a)
  • show SF7/SF8 node counts in the website top bar (#158) (819f4b3)
  • web: complete the Locate legend toggle (style + e2e test) (#161) (1c98734)
  • web: reflect all settings in the URL and persist them (#135) (2b75f6f), closes #134

Bug Fixes

  • web: map starts in hex mode by default (#152) (6794d77)

0.4.1 (2026-07-01)

Documentation

  • dedupe release changelogs (drop merge-commit duplicates) (#70) (10d0528)

0.4.0 (2026-07-01)

Features

  • CoreScope mobile-observer points as two optional map layers (adverts/relays) (aa411fd), closes #60
  • identify every zero-hop node (advert + discover) by ID + role, resolve name via API (3728f26), closes #41
  • Locate merges CoreScope sightings + focus-mode hides other points (ad36014), closes #62
  • web: live Locate layer — centroid, heatmap, outliers, polling (bed8936)
  • web: Locate — show strongest-reception marker alongside centroid (03139db)
  • web: Locate button + info-card scaffolding (7f0cffa)
  • web: locate.js convergence + encirclement stats (02f2ed9)
  • web: locate.js core math + web vitest harness (c80df52)
  • web: locate.js geographic outlier rejection (2718b19)
  • web: locate.js RSSI-weighted kernel-density heatmap (e9b7a79)
  • web: locate() orchestrator (0f5fb3f)
  • web: point popup shows sender ID + a 'Locate this sender' button (62d3de7), closes #58

Bug Fixes

  • web: address final-review findings on Locate (375deeb)
  • web: Locate — dedupe stationary clusters (10m) + 20km outlier floor (76005b1), closes #33
  • web: Locate — linear-power RSSI weighting with -55 dBm cap (d0e7382)
  • web: pad density grid by 3-sigma so the heatmap border is transparent (f92d614), closes #39
  • web: remove heatmap rectangle artifact + e2e for filter bar & toggles (6f2fe5e), closes #37

Tests

  • web: Playwright E2E harness + Locate suite; run web in CI (205cd47), closes #35
  • web: scope vitest to *.test.js so it ignores the Playwright e2e specs (e7d0617)

Miscellaneous Chores

  • web: gitignore dev-only vitest harness artifacts (d866ec2)

0.3.0 (2026-06-30)

Features

  • app,web: resolve node names from CoreScope for full-pubkey senders (197fc5a)

0.2.0 (2026-06-30)

Features

  • analysis website — multi-hunter map at map.on8ar.eu (#19) (42465fb)
  • server,web: expose server version via /api/version and show it on the site (c4cde9d)
  • web: add light/dark theme toggle (58f5bfe)
  • web: version the analysis site as its own release-please component (be038ed)

Bug Fixes

  • web: default timeframe to today and open native picker on click (1de7bc3)