Releases
app-v1.31.0
Compare
Sorry, something went wrong.
No results found
Changelog
1.31.0 (2026-10-02)
Features
app: show the measured noise floor in the cells and the HUD (#711 ) (d97cec0 )
Performance Improvements
app: hand a map collection to MapLibre only when it changed (#740 ) (c6fc9a9 )
1.30.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.29.1 (2026-09-26)
Bug Fixes
app: keep the broker presets from config.json for the add form (#702 ) (5826ef7 )
1.29.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 )
Documentation
app: record hunter and wardriver as DutchMeshCore's production labels (#700 ) (533bc84 )
1.28.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 )
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.27.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 )
1.26.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 )
1.25.1 (2026-09-09)
Tests
app: let a test name the harmony drift's pick instead of hoping for one (#607 ) (14f98ee ), closes #606
1.25.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.24.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.23.0 (2026-08-29)
Features
app,web,landing: the 26 August design pass (#541 ) (5a04962 )
1.22.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.21.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 )
1.20.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.19.1 (2026-08-26)
Documentation
1.19.0 (2026-08-26)
Features
web,server: tell a hunter when their member verification comes through (#531 ) (54981ca )
1.18.0 (2026-08-26)
Features
app,web,server: filter receptions by sender-id class (#528 ) (f10b1ac )
1.17.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.17.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 )
1.16.0 (2026-08-25)
Features
app: name the 1-byte path hash instead of showing no sender (#522 ) (9ad8389 )
1.15.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.14.0 (2026-08-24)
Features
app: widen the cue ladder to twelve steps, 4.5 dB apart (#472 ) (ff012ba )
Documentation
app: say what a lit hex cell claims after #455 , and drop two stale claims (#469 ) (3040d01 )
1.13.2 (2026-08-24)
Performance Improvements
app: stop rebuilding a render tick that cannot have changed (#485 ) (18aa6ca ), closes #462
1.13.1 (2026-08-23)
Documentation
app,web: write the release notes for what shipped since the backfill (#460 ) (ca1e31a )
1.13.0 (2026-08-23)
Features
app,web: write release notes for readers, not from the commit log (#435 ) (8b70eaa )
1.12.0 (2026-08-22)
Features
app: capture what the radio hears, not only what it can name (#455 ) (f7518b6 )
app: give What's new its own Settings tab, and let its dot reach the HUD (#429 ) (bc646c3 ), closes #421
1.11.1 (2026-08-21)
Bug Fixes
app: collapse coincident receptions to one 3D pillar (#419 ) (f973714 )
app: let the node-position key fade, so it stops sitting on the ticker (#444 ) (fa58db2 ), closes #413
app: stop MapLibre shading the tier colour out of the 3D bars (#446 ) (29e73dc )
app: warn on a low battery when the companion does, not 260 mV later (#443 ) (61bd271 ), closes #380
Tests
app,web: pin densityGrid's kernel, which nothing was holding (#442 ) (b1807dd ), closes #370
1.11.0 (2026-08-19)
Features
app,server: draw SF8 nodes on the position layer too (#430 ) (863c3ac ), closes #418
1.10.0 (2026-08-19)
Features
app,web: give the website an onboarding tour, and say what a hunter is (#379 ) (ea7bb21 ), closes #316 #371
app: add a time-of-day sky, so near-horizontal pitch stops reading as broken (#401 ) (f199dec ), closes #397
app: raise the tilt ceiling to 85 so the camera can look along the ground (#399 ) (b5d1a23 ), closes #333
Bug Fixes
app: stop the FAB progress ring lighting a segment when sound is off (#414 ) (77e5a1f ), closes #373
1.9.0 (2026-08-19)
Features
app,web: make the receptions ticker readable at a glance (#404 ) (c48a974 ), closes #322
1.8.0 (2026-08-18)
Features
app,web: show what changed in a release behind a version badge (#363 ) (3a3dcf1 ), closes #284
Bug Fixes
app: draw 3D buildings from z13, the zoom the source declares (#400 ) (7a727f9 ), closes #395
app: pan the map when a receptions-ticker row is tapped (#392 ) (940d03e ), closes #309
Documentation
make the pre-push self-review concrete, mutation-check new tests, widen §7 (#364 ) (e4c7051 ), closes #334
1.7.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 )
app: refuse captures on a GPS fix too poor to place, and guard invalid fixes (#345 ) (ee8874f )
app: verify advert signatures before an advert may name anything (#362 ) (cac64b3 )
Bug Fixes
app: guard localStorage reads so a storage-hostile context cannot blank the app (#342 ) (ce9d534 )
app: say so when the node-position layer has no registry data to draw (#355 ) (2e2f30a )
Performance Improvements
app: rebuild the map once per view change, not twice (#351 ) (f2d0546 )
1.6.0 (2026-08-08)
Features
app: companion battery, topbar consolidation and HUD sender readout (#323 ) (a25bf1c ), closes #281
app: merge layer FAB + 2D/3D FAB into one 5-state view cycle (#314 ) (9e48a38 ), closes #258
app: park background audio and cue both transitions (#315 ) (14bc526 ), closes #260
Bug Fixes
app: round the 3D pillar footprint to an octagon, sized as a radius (#311 ) (ad0560b ), closes #308
app: show the node-position disclaimer as a glance, keep a permanent key (#312 ) (eb89280 ), closes #306
app: truncate target chip with ellipsis, keep topbar controls visible (#310 ) (22233c9 ), closes #305
1.5.1 (2026-07-29)
Bug Fixes
app: make the map popup and the target list agree on a selection (#297 ) (#326 ) (8bde3bb )
app: restore tier opacity and age-fade on the 3D pillars (#302 ) (#328 ) (74d6a1f )
refuse ambiguous prefixes and consult sender_kind on both sides (#295 , #296 ) (#325 ) (55a026f )
Continuous Integration
add an eslint no-undef pass over app, web and nameresolver (#303 ) (#324 ) (0eafdca )
1.5.0 (2026-07-27)
Features
app: render points in 3D mode as raised pillar markers (#250 ) (#266 ) (5d21696 )
app: sound modes — rx/tx cues + generative ambient music (#145 ) (#261 ) (c72022e )
node-position layer — advertised positions vs. the RSSI estimate (app + web) (#272 ) (0c21df5 )
Bug Fixes
app: bound queue reads, persist the publish watermark, add 7-day retention (#230 ) (#283 ) (c1c92fc )
app: merge target-list rows for the same node across id prefixes (#268 ) (91e63c6 )
1.4.0 (2026-07-26)
Features
Bug Fixes
app: move the FAB stack down toward the thumb zone (#257 ) (#264 ) (852a9bd )
app: stop auto-ping's discover broadcast and first trace-ping colliding (#253 , #254 ) (#262 ) (428f57c )
1.3.1 (2026-07-13)
Bug Fixes
app: stop the blank map and 3D freeze; drop terrain from 3D (#147 ) (#247 ) (0bc7a25 )
1.3.0 (2026-07-13)
Features
app: 3D mode — 2D/3D FAB, extruded hex bars, buildings, terrain (#147 ) (#228 ) (75fb92e )
app: auto-discover toggle with pulse feedback and repeater trace-ping (#241 ) (83dea99 )
app: GPS course as a third compass-mode heading source (driving mode) (#245 ) (6c09b26 )
Bug Fixes
app,web: locate disclaimer, glossary, and copy parity (#174 ) (#227 ) (41e1456 )
app: clarify login/register submit action, keep it above the keyboard (#239 ) (0255490 )
app: lighter help-overlay backdrop, click-outside dismiss, splash tagline, anchored tooltips (#220 ) (addd30a ), closes #216
app: stop follow-mode recenter from cancelling an active pinch-zoom (#243 ) (d92cd28 )
app: two-line target rows to fix id/RSSI overlap and improve name legibility (#219 ) (d800486 ), closes #215
Styles
1.2.0 (2026-07-11)
Features
app: Mesh-Hunter onboarding splash + display-name rename (#202 ) (c1d75c1 )
app: migrate the map to MapLibre GL — 2D parity (#147 phase 1) (#214 ) (cb05ab3 )
app: multi-select targets + byte-prefix in the target list (#206 ) (742252a )
app: new Mesh-Hunter app icon (hex · reticle · thermal signal) (#205 ) (1f23045 )
app: settings as a full page with Settings / About tabs (#207 ) (76f549d )
1.1.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.1.0 (2026-07-04)
Features
app: compass FAB icon previews the next state, not the current one (63f6671 )
app: draw the hunter's own session route trail on the map (cd8f0e3 )
app: topbar redesign — Select-target chip, filter dropdown, locate over the filtered set (#128 ) (5f62978 )
1.0.0 (2026-07-04)
Features
app: in-app register/login and companion linking (v1.0) (00514a9 )
0.14.1 (2026-07-03)
Bug Fixes
app: correct leaflet-rotate's renderer zoom transform to stop drift (#168 ) (a0f6093 )
0.14.0 (2026-07-02)
Features
app: fade reception points with age instead of hard-vanishing (#164 ) (cf9a62b )
app: make the Messages-panel ignore button a toggle (#165 ) (228ce93 )
Bug Fixes
app: show discover responses in the Messages panel (#166 ) (2e8c2c7 )
0.13.0 (2026-07-02)
Features
app: Settings reload button with deploy version check (#162 ) (0b4702e )
0.12.0 (2026-07-02)
Features
app: auto-fade the locate-info box after 2s (#127 ) (3f887d1 )
app: distinct icon for the combined points+hex layer mode (#126 ) (07092f9 )
app: focus the existing PWA instance instead of relaunching (#153 ) (bba418a )
app: manual pause/resume for the MQTT connection (#121 ) (496406c )
app: mark individual non-default settings within the sheets (#110 ) (a2f1dfa )
app: mark the selected target active in the target list (#108 ) (208920a )
app: real map rotation on device heading + two-finger rotate gesture (#151 ) (033033b )
app: replace settings-btn emoji with an inline SVG gear icon (#113 ) (3e4c241 )
app: show splash disclaimer + tips on every visible screen (#123 ) (21d8bc6 )
app: tap outside filter/settings/target sheets to close (#111 ) (b6dbb3f )
app: toggle FAB for the single-hunter locate overlay (#120 ) (aa95e7d )
Bug Fixes
app: direct-only filter must check hops === 0, not is_direct (#150 ) (66301e1 )
app: disable pull-to-refresh (breaks active BLE/MQTT connection) (#133 ) (6adb347 )
app: ignore-sender updates the map immediately (#112 ) (355e809 )
app: raise map maxZoom from 19 to 20 (#107 ) (475ab1b )
app: render points above the hex layer in 'both' mode (#125 ) (963871d )
app: resolve relayed-advert prefixes to repeater names (#137 ) (6a5037a ), closes #136
app: Settings connect/disconnect button stays disabled after connecting (#124 ) (986a275 )
Documentation
app: document required publish-only broker ACL (#154 ) (f80459a )
Miscellaneous Chores
app: remove the Manual position (dev) debug feature (#122 ) (5e43aa7 )
0.11.0 (2026-07-01)
Features
app: single-hunter locate for the isolated target (pwa) (#92 ) (ebe93bb )
Bug Fixes
app: active state for the Messages panel isolate-sender button (#89 ) (5f756e1 )
app: compass-mode toggle for the map recenter button (pwa) (#88 ) (f7cd13f )
app: default Direct-only filter to off (#90 ) (db65239 )
app: prevent text-selection tap-to-search on row buttons (Android) (#84 ) (9723b2d )
app: swap layer-toggle FAB icon per active layer mode (#87 ) (a720d4c )
app: unify Settings connection button (connect/disconnect/retry) (#86 ) (9d1adbd )
0.10.0 (2026-07-01)
Features
app: rotating tips on the GPS-wait splash (#83 ) (b1605bf )
Bug Fixes
app: include last-hop repeaters in the target dropdown (#76 ) (92d1c2c )
0.9.0 (2026-07-01)
Features
app: make the PWA installable (register SW, add icons + meta) (#27 ) (d7155df )
0.8.0 (2026-07-01)
Features
app: read companion spreading factor and show it in settings (#52 ) (b60ad80 )
Documentation
dedupe release changelogs (drop merge-commit duplicates) (#70 ) (10d0528 )
0.7.0 (2026-07-01)
Features
app: attenuator compensation added back to plotted RSSI (5a6deb7 ), closes #54
app: capture FLOOD last-hop relay (path[last]) as a directly-heard node (f08e88a ), closes #64
app: move settings to the top bar, Discover as a radar-icon FAB above the filter (3f2378f ), closes #45
app: startup splash + GPS-loading indicator (75fc9bf )
app: target dropdown with pinned top senders (a76da15 )
app: treat the ignore-list as a filter (move to filter sheet, light filter FAB) (82dc174 ), closes #48
identify every zero-hop node (advert + discover) by ID + role, resolve name via API (3728f26 ), closes #41
Bug Fixes
app: add missing styles for the radio settings section (f93f158 )
app: don't let MQTT connect failure abort the BLE connect (984afdf )
app: keep the hex-heat grid aligned during zoom (rebuild on zoomend, not mid-animation) (bd00863 ), closes #44
0.6.0 (2026-06-30)
Features
app,web: resolve node names from CoreScope for full-pubkey senders (197fc5a )
app: filter-active indicator + filter sheet layout (776eaf9 )
app: HUD timer showing time since last packet (6face72 )
app: move Disconnect into BLE settings, keep Connect in the HUD (3db3fdc )
app: scale hex resolution with zoom (down to 3 m) (0192d97 )
Bug Fixes
app: prevent Chrome auto-translate from rewriting the UI (ae20e57 )
Styles
app: themed X close button in overlay sheets (8fe485b )
0.5.0 (2026-06-30)
Features
app: keep screen awake during drive — Wake Lock (#17 ) (bb19d42 )
0.4.0 (2026-06-30)
Features
app: single-shot Discover button; remove redundant hop pill (#14 ) (a93d344 )
0.3.0 (2026-06-29)
Features
app: hashtag-channel decoding from a config channel-name list (#11 ) (e9d4449 )
0.2.0 (2026-06-29)
Features
app: live Messages feed — decrypted channel messages + adverts (#8 ) (7af52b7 )
You can’t perform that action at this time.