From 226dc4f59e8d128bc468bc1d1bd4d14526b2fc9c Mon Sep 17 00:00:00 2001 From: Jack Kingsman Date: Sun, 15 Mar 2026 17:55:47 -0700 Subject: [PATCH] use server time for advert freshness --- app/packet_processor.py | 7 +++-- ...-DR_BaXar.js => BotCodeEditor-BD2FOJ4s.js} | Bin 467083 -> 467083 bytes ...r.js.map => BotCodeEditor-BD2FOJ4s.js.map} | Bin 1956915 -> 1956915 bytes ...l-BP-Q9HDo.js => CrackerPanel-DSLlik3_.js} | Bin 129410 -> 129410 bytes ...Do.js.map => CrackerPanel-DSLlik3_.js.map} | Bin 396562 -> 396562 bytes ...apView-DytU-fVV.js => MapView-7UG06zXw.js} | Bin 4086 -> 4086 bytes ...ytU-fVV.js.map => MapView-7UG06zXw.js.map} | Bin 14879 -> 14879 bytes ...u8bMYb.js => NeighborsMiniMap-C3Ju-R0X.js} | Bin 1670 -> 1670 bytes ...s.map => NeighborsMiniMap-C3Ju-R0X.js.map} | Bin 5886 -> 5886 bytes ...p-D3poE0C9.js => PathRouteMap-DdylhAp-.js} | Bin 3868 -> 3868 bytes ...C9.js.map => PathRouteMap-DdylhAp-.js.map} | Bin 14070 -> 14070 bytes .../{Popup-kARDuK6y.js => Popup-CqM5D37r.js} | Bin 920 -> 920 bytes ...-kARDuK6y.js.map => Popup-CqM5D37r.js.map} | Bin 4181 -> 4181 bytes ...VFKsI.js => RepeaterDashboard-DrFtUyWd.js} | Bin 28491 -> 28491 bytes ....map => RepeaterDashboard-DrFtUyWd.js.map} | Bin 89840 -> 89840 bytes ...iew-tXHXH02i.js => SearchView-CqEz3JCz.js} | Bin 5106 -> 5106 bytes ...H02i.js.map => SearchView-CqEz3JCz.js.map} | Bin 16886 -> 16886 bytes ...-Dtfx_pBE.js => SettingsModal-GFXFFaeS.js} | Bin 77263 -> 77263 bytes ...E.js.map => SettingsModal-GFXFFaeS.js.map} | Bin 196690 -> 196690 bytes ...BgaEF0Sw.js => VisualizerView-BswMOFbt.js} | Bin 590321 -> 590321 bytes ....js.map => VisualizerView-BswMOFbt.js.map} | Bin 3112795 -> 3112795 bytes frontend/prebuilt/assets/hooks-Bk-tBmjl.js | Bin 0 -> 157 bytes ...-DmAVOeP2.js.map => hooks-Bk-tBmjl.js.map} | Bin 1128 -> 1128 bytes frontend/prebuilt/assets/hooks-DmAVOeP2.js | Bin 157 -> 0 bytes .../{index-fakNQBhQ.js => index-DSM_ctlA.js} | Bin 583431 -> 583431 bytes ...-fakNQBhQ.js.map => index-DSM_ctlA.js.map} | Bin 2116437 -> 2116437 bytes ...eaflet-CiRM2en4.js => leaflet-Bn7rjtY9.js} | Bin 153764 -> 153764 bytes ...iRM2en4.js.map => leaflet-Bn7rjtY9.js.map} | Bin 700833 -> 700833 bytes ...ator-Dddr-OIj.js => separator-B1Gufat6.js} | Bin 1068 -> 1068 bytes ...r-OIj.js.map => separator-B1Gufat6.js.map} | Bin 5058 -> 5058 bytes frontend/prebuilt/index.html | Bin 2761 -> 2761 bytes tests/test_packet_pipeline.py | 29 +++++++++++++++--- 32 files changed, 29 insertions(+), 7 deletions(-) rename frontend/prebuilt/assets/{BotCodeEditor-DR_BaXar.js => BotCodeEditor-BD2FOJ4s.js} (99%) rename frontend/prebuilt/assets/{BotCodeEditor-DR_BaXar.js.map => BotCodeEditor-BD2FOJ4s.js.map} (99%) rename frontend/prebuilt/assets/{CrackerPanel-BP-Q9HDo.js => CrackerPanel-DSLlik3_.js} (99%) rename frontend/prebuilt/assets/{CrackerPanel-BP-Q9HDo.js.map => CrackerPanel-DSLlik3_.js.map} (99%) rename frontend/prebuilt/assets/{MapView-DytU-fVV.js => MapView-7UG06zXw.js} (92%) rename frontend/prebuilt/assets/{MapView-DytU-fVV.js.map => MapView-7UG06zXw.js.map} (99%) rename frontend/prebuilt/assets/{NeighborsMiniMap-Dju8bMYb.js => NeighborsMiniMap-C3Ju-R0X.js} (85%) rename frontend/prebuilt/assets/{NeighborsMiniMap-Dju8bMYb.js.map => NeighborsMiniMap-C3Ju-R0X.js.map} (97%) rename frontend/prebuilt/assets/{PathRouteMap-D3poE0C9.js => PathRouteMap-DdylhAp-.js} (95%) rename frontend/prebuilt/assets/{PathRouteMap-D3poE0C9.js.map => PathRouteMap-DdylhAp-.js.map} (99%) rename frontend/prebuilt/assets/{Popup-kARDuK6y.js => Popup-CqM5D37r.js} (81%) rename frontend/prebuilt/assets/{Popup-kARDuK6y.js.map => Popup-CqM5D37r.js.map} (97%) rename frontend/prebuilt/assets/{RepeaterDashboard-BDRVFKsI.js => RepeaterDashboard-DrFtUyWd.js} (98%) rename frontend/prebuilt/assets/{RepeaterDashboard-BDRVFKsI.js.map => RepeaterDashboard-DrFtUyWd.js.map} (99%) rename frontend/prebuilt/assets/{SearchView-tXHXH02i.js => SearchView-CqEz3JCz.js} (97%) rename frontend/prebuilt/assets/{SearchView-tXHXH02i.js.map => SearchView-CqEz3JCz.js.map} (99%) rename frontend/prebuilt/assets/{SettingsModal-Dtfx_pBE.js => SettingsModal-GFXFFaeS.js} (99%) rename frontend/prebuilt/assets/{SettingsModal-Dtfx_pBE.js.map => SettingsModal-GFXFFaeS.js.map} (99%) rename frontend/prebuilt/assets/{VisualizerView-BgaEF0Sw.js => VisualizerView-BswMOFbt.js} (99%) rename frontend/prebuilt/assets/{VisualizerView-BgaEF0Sw.js.map => VisualizerView-BswMOFbt.js.map} (99%) create mode 100644 frontend/prebuilt/assets/hooks-Bk-tBmjl.js rename frontend/prebuilt/assets/{hooks-DmAVOeP2.js.map => hooks-Bk-tBmjl.js.map} (90%) delete mode 100644 frontend/prebuilt/assets/hooks-DmAVOeP2.js rename frontend/prebuilt/assets/{index-fakNQBhQ.js => index-DSM_ctlA.js} (99%) rename frontend/prebuilt/assets/{index-fakNQBhQ.js.map => index-DSM_ctlA.js.map} (99%) rename frontend/prebuilt/assets/{leaflet-CiRM2en4.js => leaflet-Bn7rjtY9.js} (99%) rename frontend/prebuilt/assets/{leaflet-CiRM2en4.js.map => leaflet-Bn7rjtY9.js.map} (99%) rename frontend/prebuilt/assets/{separator-Dddr-OIj.js => separator-B1Gufat6.js} (89%) rename frontend/prebuilt/assets/{separator-Dddr-OIj.js.map => separator-B1Gufat6.js.map} (98%) diff --git a/app/packet_processor.py b/app/packet_processor.py index 094a0580..afeb41b4 100644 --- a/app/packet_processor.py +++ b/app/packet_processor.py @@ -477,8 +477,9 @@ async def _process_advertisement( path_len, ) - # Use device_role from advertisement for contact type (1=Chat, 2=Repeater, 3=Room, 4=Sensor) - # Use advert.timestamp for last_advert (sender's timestamp), receive timestamp for last_seen + # Use device_role from advertisement for contact type (1=Chat, 2=Repeater, 3=Room, 4=Sensor). + # Persist advert freshness fields using the server receive wall clock so + # route selection is not affected by sender clock skew. contact_type = ( advert.device_role if advert.device_role > 0 else (existing.type if existing else 0) ) @@ -498,7 +499,7 @@ async def _process_advertisement( type=contact_type, lat=advert.lat, lon=advert.lon, - last_advert=advert.timestamp if advert.timestamp > 0 else timestamp, + last_advert=timestamp, last_seen=timestamp, last_path=path_hex, last_path_len=path_len, diff --git a/frontend/prebuilt/assets/BotCodeEditor-DR_BaXar.js b/frontend/prebuilt/assets/BotCodeEditor-BD2FOJ4s.js similarity index 99% rename from frontend/prebuilt/assets/BotCodeEditor-DR_BaXar.js rename to frontend/prebuilt/assets/BotCodeEditor-BD2FOJ4s.js index 7fa4366d6e11b427f00f21a281a31420a06af5ff..be0107624b92595ec183ad995b2b7d5f3e8119f9 100644 GIT binary patch delta 59 zcmeA^DARpVW`YWbOR#Tza!HP3qfV<1W2+8Rs}6Ik4oj;JYpV|1RvmVK1py})BR799 OlVZKBV!hnN0xkeA#t~uw delta 59 zcmeA^DARpVW`YVwT4J_epi@R*qfV<1W2+8Rs}6Ik4oj;JYpV|1RvmVK1p$|!c&EgO O#3H?{V!hnN0xkeI@)7I+ diff --git a/frontend/prebuilt/assets/BotCodeEditor-DR_BaXar.js.map b/frontend/prebuilt/assets/BotCodeEditor-BD2FOJ4s.js.map similarity index 99% rename from frontend/prebuilt/assets/BotCodeEditor-DR_BaXar.js.map rename to frontend/prebuilt/assets/BotCodeEditor-BD2FOJ4s.js.map index 349a6ba1b40c9a5302e95d65e747ebcb2ef7c16a..74f861388f7fa0ebad4371074f88c2997784d6c7 100644 GIT binary patch delta 108 zcmV~$yA6U+06@|BL7spj_(4%C%i9?yFowd$VJxUEZtpI{gkc=UbNZp{hwgI;xBIny xKAP7X8Oc~CGL=YX5=)S|B$7%d3t37oD=DOuwQOW7JE>$Z2dU*Kr!VL5`vb-M9w7h# delta 108 zcmV~$yA6U+06@|BL7spj_(4%C%e#eP0xLVh3O3Xhw|5s}!Y~fwIm6fwWB<8@=F#4} wXZLy|6Pe0P<`T(5VhOU8L{iCQC2PrLBZZW*m7VP6Ae9{DB(v6*UKu_%S|lc0swA#5L*BM delta 41 xcmZqr%--~weL@#UT4J_epi@R*F7M2#)Eo`j3ye`2$IhonU@p@UsO0@vZ`wHX$ delta 35 qcmbOF7M2#)Eo`j3yiNhSftDUF`FdH!O0@vVX$o@y diff --git a/frontend/prebuilt/assets/MapView-DytU-fVV.js b/frontend/prebuilt/assets/MapView-7UG06zXw.js similarity index 92% rename from frontend/prebuilt/assets/MapView-DytU-fVV.js rename to frontend/prebuilt/assets/MapView-7UG06zXw.js index 62aaeab6de9c83c2eaf064a8cd24f6b7a4ac8089..ff0d3986165db4ff2aa2ecc004eefe00bcf122da 100644 GIT binary patch delta 72 zcmew+|4n{^IfqNIZ+vn|j^jjoO%A6#^P;ShNXv-@>Kx96zNRk5=0y|dD{wev>y|j> cX60-=F3&Gu9_nsjRuxgMmsPBnn^?dF0El!K^#A|> delta 72 zcmew+|4n{^IY(MzwqKxAM&LwyO%CVGAYY@@Jd=q9>KxgQK`y1FNvLjGSlC9@UzPw(aR;gZ diff --git a/frontend/prebuilt/assets/NeighborsMiniMap-Dju8bMYb.js b/frontend/prebuilt/assets/NeighborsMiniMap-C3Ju-R0X.js similarity index 85% rename from frontend/prebuilt/assets/NeighborsMiniMap-Dju8bMYb.js rename to frontend/prebuilt/assets/NeighborsMiniMap-C3Ju-R0X.js index b4fb52fa2d67daa02c260442b70880909530fc8a..f26f33259d2de4e8e97666509425c5a4d83e2ce5 100644 GIT binary patch delta 60 zcmZqUZR4FF&EXR48=qW~<2X^-mBT5|yeO+A(sE*fI)`(iuc?c%dC|uC*I5OejlD{B PgA5|{vWoR`6AQQiKA95g delta 60 zcmZqUZR4FF&5@Rv?HA~j5jauVmBTqR$k!+}&tzhOI!Cr+kV~nzS>?w0*I5NzvPvzI Pd?ScROVzj P7U=3_73<|D7H|OoR6`Ty delta 59 zcmbOuH%D%QCP!LgwqKxAM&LxlU=HWZAYY@@Jd=q%3LGxEj$!_(0Y)3QMDp<)7v#Gd PI9uvv73<|D7H|OoK7SI$ diff --git a/frontend/prebuilt/assets/PathRouteMap-D3poE0C9.js.map b/frontend/prebuilt/assets/PathRouteMap-DdylhAp-.js.map similarity index 99% rename from frontend/prebuilt/assets/PathRouteMap-D3poE0C9.js.map rename to frontend/prebuilt/assets/PathRouteMap-DdylhAp-.js.map index cc476cbe2856c7eec00a81f006c39d637c4bc142..bb5e2d94c0689d8dbf938a503c55715b9067790c 100644 GIT binary patch delta 18 ZcmeyC`z?2ZGJ8s8PKINF?nbRMW&l#d2kig= delta 18 ZcmeyC`z?2ZGP`j>zN>+=B-}vN`9LJ3*D$D}Tg}$aP#^yzOS;cy}i3MB$ DZe3Dcuc?c%dC^8?BLM(JAqENn delta 19 acmcbra8+S~G)J~$kV~nzS>;A$BLM(L_XcGE diff --git a/frontend/prebuilt/assets/RepeaterDashboard-BDRVFKsI.js b/frontend/prebuilt/assets/RepeaterDashboard-DrFtUyWd.js similarity index 98% rename from frontend/prebuilt/assets/RepeaterDashboard-BDRVFKsI.js rename to frontend/prebuilt/assets/RepeaterDashboard-DrFtUyWd.js index 4e55ebdcbc58a5a24570867ec53a8389bcdf07a3..7d57d958c330bbe4fd005bbe61b6910a66776978 100644 GIT binary patch delta 129 zcmX?okMZ<9#tA{n&cU04GM(N4^dqpPmoA7S` ZEx~w1M8MrG!p$u)H5h1@UT$Im7XZrLD{%k- delta 133 zcmX?qo8|m%mI?mKEU04GM(N4^dqpPmoA7S` ZEx~w1M8Ksats=g_$rWgqUT$Im7XUpEEiM26 diff --git a/frontend/prebuilt/assets/SettingsModal-Dtfx_pBE.js.map b/frontend/prebuilt/assets/SettingsModal-GFXFFaeS.js.map similarity index 99% rename from frontend/prebuilt/assets/SettingsModal-Dtfx_pBE.js.map rename to frontend/prebuilt/assets/SettingsModal-GFXFFaeS.js.map index 78eb646ab38b1593a5ae9ece345e02cfb35c82f8..3edb2b98ecc477d2b4f752c815da4ed1b0b1fc93 100644 GIT binary patch delta 28 jcmccAz;mgAr=f+hg=q@2E3dm-gqvGpYOr2bu~IDnl0gY& delta 28 jcmccAz;mgAr=f+hg=q@2E3ZpQT19+;ldE1_E&h Y-ItMbDt~dgufJPT2~eM2Zejr!03o#(>Hq)$ delta 81 zcmey^tn#s0WkMfMT4J_epi@SmURJTvWJadV&AyE7zKkHu1jNih%mT!$K+Fcj>_E&h Y-ItMbDt~&StD8Y^IZ&ToZejr!03XK}ng9R* diff --git a/frontend/prebuilt/assets/VisualizerView-BgaEF0Sw.js.map b/frontend/prebuilt/assets/VisualizerView-BswMOFbt.js.map similarity index 99% rename from frontend/prebuilt/assets/VisualizerView-BgaEF0Sw.js.map rename to frontend/prebuilt/assets/VisualizerView-BswMOFbt.js.map index 1ee270a6659c777e0569d44b8636935e3370ae67..98d4b1936123d7127161c43b8550f379c64d44ce 100644 GIT binary patch delta 163 zcmWO0HxdB>06@_ZSI#--_;CxJaR*mmMrjnkcNwLV>|G4S>tFc&M8dz|H*5d^ literal 0 HcmV?d00001 diff --git a/frontend/prebuilt/assets/hooks-DmAVOeP2.js.map b/frontend/prebuilt/assets/hooks-Bk-tBmjl.js.map similarity index 90% rename from frontend/prebuilt/assets/hooks-DmAVOeP2.js.map rename to frontend/prebuilt/assets/hooks-Bk-tBmjl.js.map index b7815b56a294081be6e4bf04952f8a68bbf07e84..d73cfcef9931e3a34c060e47a25c0d2d750bfb01 100644 GIT binary patch delta 19 acmaFC@q%N5G>22RZi!QFR?bFcR~7(9`UZpm delta 19 acmaFC@q%N5G>1#BW0-$xfYC-}R~7(8R0b~q diff --git a/frontend/prebuilt/assets/hooks-DmAVOeP2.js b/frontend/prebuilt/assets/hooks-DmAVOeP2.js deleted file mode 100644 index 97cc114523de76e24a307e47c584edd0c7e12cbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157 zcmW-ay$XXc7)5uVBG^TTC`dQy(4VokRcQBMzi6uY;Y$KS$h%ja@44p)X*9aDD24jM zLOGir?PY9>pG|AAZ^090iHjVyT)7z-pTW_q=$Z=DaVNP~y%Smy%<_QXJSyU{ypYU9 pShhmI&EjL7l;wd~?Xic386(v2?(U~i>&eoaJb#|>s#fQAP5vJ#HrD_E diff --git a/frontend/prebuilt/assets/index-fakNQBhQ.js b/frontend/prebuilt/assets/index-DSM_ctlA.js similarity index 99% rename from frontend/prebuilt/assets/index-fakNQBhQ.js rename to frontend/prebuilt/assets/index-DSM_ctlA.js index 16d807d334d8be6ba78d75dc3ead8fdf0a2e245a..a924b4c6952531d8d302487187c565c9f44a53d3 100644 GIT binary patch delta 328 zcmZoar`&!{d4j)6N@Y%lV}Y(-R817_Rw&R^`s?8W82{%%Pn(+_UsklU{K zn_XcW+?wg08#xL%T!MXaGP8~2K`J6SoC{s6jJ=$zAnF}9acnmca0&K}PcF%E1Ug?Y IH?e>V0OUV$T>t<8 delta 328 zcmZoar`&!{d4j)+aY4STfwQGvRBO>H2$Sp-B5C7KCM{mg~Ay zmW1l2g@vI=2ILo%7U*U>2Dy}an^jKMVwC1^DM_n{FK}{g_GN7MWdva+AZ7+)mhHZb ztQlqOP?xvwDQ5*@w(Wb$+5MV0U~Zc(^ou>817_Rw&R^`s?CFWFZU({S(+_UsklU{K zn_XcW+?wg08#xL%oC0(MEj?WFK`J6SN+LWWJPeF7A?h7AacnmcNK4H23v|i|1Ug?Y IH?e>V08tNbasU7T diff --git a/frontend/prebuilt/assets/index-fakNQBhQ.js.map b/frontend/prebuilt/assets/index-DSM_ctlA.js.map similarity index 99% rename from frontend/prebuilt/assets/index-fakNQBhQ.js.map rename to frontend/prebuilt/assets/index-DSM_ctlA.js.map index fce2bae898088635a22655573137add6a5c2fb6d..0ef131e986ea57249cd888824bdfa87a18e6c5f6 100644 GIT binary patch delta 89 zcmcaQt&#C65I3|iwlK9Yx3ILZwy?FZw{Wy@ws5s@xA3&^w(zy^w+OTdwg|Ndw}`Ze rwurTew@9=|wn()|x5%`}w#c=}Z&C2@=5-17jZZGgan#EyR;mR67Reke delta 89 zcmcaQt&#C65I3|iwlK9Yx3ILZwy?FZw{Wy@ws5s@xA3&^w(zy^w+OTdwg|Ndw}`Ze rwurTew@9=|wn()|x5%`}w#c=}Z&C2@=1oh?_6u~%2-M3eR;mR67u_5& diff --git a/frontend/prebuilt/assets/leaflet-CiRM2en4.js b/frontend/prebuilt/assets/leaflet-Bn7rjtY9.js similarity index 99% rename from frontend/prebuilt/assets/leaflet-CiRM2en4.js rename to frontend/prebuilt/assets/leaflet-Bn7rjtY9.js index 46791366107810bf3df608b8cd83bed8ff206acd..f429b49e022c7775208ae7d820a125f5a13f157b 100644 GIT binary patch delta 44 zcmZ3ok#osL&IzU*F2TO>$t5|Cjkc|}j9YD)!XpHn^302}N+K=wvWoR`6AQQiU!e}q delta 44 zcmZ3ok#osL&IzU*X^Gi>fle8Ljkc|}j9YD)!XpHnGlP7MQu9povWoR`6AQQiUEvOo diff --git a/frontend/prebuilt/assets/leaflet-CiRM2en4.js.map b/frontend/prebuilt/assets/leaflet-Bn7rjtY9.js.map similarity index 99% rename from frontend/prebuilt/assets/leaflet-CiRM2en4.js.map rename to frontend/prebuilt/assets/leaflet-Bn7rjtY9.js.map index 7c1d2a0d96c54a33491a1c0443882622d41c8801..8305ed1751916fd0ea5f73c38083723a2bc7ec9d 100644 GIT binary patch delta 51 zcmZ4ZSZm>9tqHOmPI=}9tqHOm&Y3~JMyYuwjjFAxjIF9nt*Xqesw}OltgWhSt*Y#;svNDVoLg17 HYBmA@xiJrP diff --git a/frontend/prebuilt/assets/separator-Dddr-OIj.js b/frontend/prebuilt/assets/separator-B1Gufat6.js similarity index 89% rename from frontend/prebuilt/assets/separator-Dddr-OIj.js rename to frontend/prebuilt/assets/separator-B1Gufat6.js index 86a21098492cbcb679af6e584ec1c879a69ca8fe..97eb89e0867a3977cb9b62aac4abc33e65450b3d 100644 GIT binary patch delta 36 rcmZ3(v4&%U0f$SlZ+vn|j^jp)C(Hs)hVG?li6v%wS;cy}i3MB$;b#l^ delta 36 rcmZ3(v4&%U0Y_S5wqKxAM&L$^C(HsaDJey|{+?NSS;cy}i3MB$W7 diff --git a/frontend/prebuilt/assets/separator-Dddr-OIj.js.map b/frontend/prebuilt/assets/separator-B1Gufat6.js.map similarity index 98% rename from frontend/prebuilt/assets/separator-Dddr-OIj.js.map rename to frontend/prebuilt/assets/separator-B1Gufat6.js.map index 4ece9eabd3fbe778e3aa7402145a4ae8a16a5be2..98672d694db4a9418aba93e9d0530bb60595ebec 100644 GIT binary patch delta 19 acmX@4en@?SJcpB^dudu?iP=W=*}?!tNCvO~ delta 19 acmX@4en@?SJcmn4N|CO=XVymb*}?!uR0h2O diff --git a/frontend/prebuilt/index.html b/frontend/prebuilt/index.html index ff7d72d46bdf277868e04a148e2286dcc064dacb..090e927064ae1c5d98410f4e57abb83f4d856f5d 100644 GIT binary patch delta 20 bcmX>pdQxL delta 20 bcmX>pdQx