Releases
web-v1.27.0
Compare
Sorry, something went wrong.
No results found
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
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 )
You can’t perform that action at this time.