diff --git a/package/gluon-status-page/files/lib/gluon/status-page/view/status-page.html b/package/gluon-status-page/files/lib/gluon/status-page/view/status-page.html
index 15ce0a792af8c79ed4a1c3ff38626eb1e5ee1e8d..cc121fe515ee6a6bbcf5edaeb2dcd1f571f02cec 100644
--- a/package/gluon-status-page/files/lib/gluon/status-page/view/status-page.html
+++ b/package/gluon-status-page/files/lib/gluon/status-page/view/status-page.html
@@ -251,8 +251,8 @@
 
 				<div id="mesh-vpn" style="display: none">
 					<h3><%:Mesh VPN%></h3>
-					<table id="mesh-vpn-peers">
-						<tbody></tbody>
+					<table>
+						<tbody id="mesh-vpn-peers"></tbody>
 					</table>
 				</div>
 			</div>
diff --git a/package/gluon-status-page/files/lib/gluon/status-page/www/static/status-page.js b/package/gluon-status-page/files/lib/gluon/status-page/www/static/status-page.js
index 20fde64ef0adb749f256587837ae1ff01de217fb..820cc60faf6fb66791c4ec7c6f9c9b91cd5a0e67 100644
--- a/package/gluon-status-page/files/lib/gluon/status-page/www/static/status-page.js
+++ b/package/gluon-status-page/files/lib/gluon/status-page/www/static/status-page.js
@@ -1 +1 @@
-"use strict";!function(){var r=JSON.parse(document.body.getAttribute("data-translations"));function i(t,e){return t.toFixed(e).replace(/\./,r["."])}function a(t,e){e--;for(var n=t;10<=n&&0<e;n/=10)e--;return i(t,e)}function o(t){var e=["","K","M","G","T"],n=1024,i=t,r=0;if(void 0===i)return"- ";for(;n<i&&r<e.length-1;)i/=n,r++;return(i=a(i,3))+" "+e[r]}String.prototype.sprintf=function(){var t=0,e=arguments;return this.replace(/%s/g,function(){return e[t++]})};var s={id:function(t){return t},decimal:function(t){return i(t,2)},percent:function(t){return r["%s used"].sprintf(a(100*t,3)+"%")},memory:function(t){t=1-t.available/t.total;return s.percent(t)},time:function(t){var t=Math.round(t/60),e=Math.floor(t/1440),n=Math.floor(t%1440/60),t=Math.floor(t%60),i="";return 1===e?i+=r["1 day"]+", ":1<e&&(i+=r["%s days"].sprintf(e)+", "),i+=n+":",t<10&&(i+="0"),i+=t},packetsDiff:function(t,e,n){if(0<n)return t=(t-e)/n,r["%s packets/s"].sprintf(i(t,0))},bytesDiff:function(t,e,n){if(0<n)return o(8*((t-e)/n))+"bps"},bytes:function(t){return o(t)+"B"},neighbour:function(t){if(!t)return"";for(var e in c){var n,i,r=c[e].lookup_neigh(t);if(r)return n=document.createElement("span"),i=(n.appendChild(document.createTextNode("via ")),document.createElement("a")),i.href="http://["+r.get_addr()+"]/",i.textContent=r.get_hostname(),n.appendChild(i),n.appendChild(document.createTextNode(" ("+e+")")),n}return"via "+t+" (unknown iface)"}};function l(e,t){return t.split("/").forEach(function(t){e=e&&e[t]}),e}function d(t,e){var n=new EventSource(t),i={};n.onmessage=function(t){t=JSON.parse(t.data);e(t,i),i=t},n.onerror=function(){n.close(),window.setTimeout(function(){d(t,e)},3e3)}}var x,k=document.body.getAttribute("data-node-address");try{x=JSON.parse(document.body.getAttribute("data-node-location"))}catch(t){}function t(t){var e=document.getElementById("mesh-vpn");if(t){e.style.display="";for(var i=document.getElementById("mesh-vpn-peers").firstElementChild;i.lastChild;)i.removeChild(i.lastChild);t=function e(n,i){return Object.keys(i.peers||{}).forEach(function(t){n.push([t,i.peers[t]])}),Object.keys(i.groups||{}).forEach(function(t){e(n,i.groups[t])}),n}([],t);t.sort(),t.forEach(function(t){var e=document.createElement("tr"),n=document.createElement("th"),n=(n.textContent=t[0],e.appendChild(n),document.createElement("td"));t[1]?n.textContent=r.connected+" ("+s.time(t[1].established)+")":n.textContent=r["not connected"],e.appendChild(n),i.appendChild(e)})}else e.style.display="none"}var e=document.querySelectorAll("[data-statistics]");d("/cgi-bin/dyn/statistics",function(a,o){var c=a.uptime-o.uptime;e.forEach(function(t){var e=t.getAttribute("data-statistics"),n=t.getAttribute("data-format"),i=l(o,e),e=l(a,e);try{var r=s[n](e,i,c);"object"==typeof r?(t.lastChild&&t.removeChild(t.lastChild),t.appendChild(r)):t.textContent=r}catch(t){console.error(t)}});try{t(a.mesh_vpn)}catch(t){console.error(t)}});var c={};function A(n){var i=document.createElement("canvas"),r=i.getContext("2d"),a=null;return{canvas:i,highlight:!1,resize:function(t,e){var n;try{n=r.getImageData(0,0,t,e)}catch(t){}i.width=t,i.height=e,n&&r.putImageData(n,0,0)},draw:function(t,e){var e=e(a);r.clearRect(t,0,5,i.height),e&&(t=t,e=e,r.beginPath(),r.fillStyle=n,r.arc(t,e,1.2,0,2*Math.PI,!1),r.closePath(),r.fill())},set:function(t){a=t}}}function h(){var a=-100,o=0,c=0,s=[],l=document.createElement("canvas"),u=(l.className="signalgraph",l.height=200,l.getContext("2d"));function d(){l.width=l.clientWidth,s.forEach(function(t){t.resize(l.width,l.height)})}function n(){if(0!==l.clientWidth){l.width!==l.clientWidth&&d(),u.clearRect(0,0,l.width,l.height);var e=!1,t=(s.forEach(function(t){t.highlight&&(e=!0)}),u.save(),s.forEach(function(t){e&&(u.globalAlpha=.2),t.highlight&&(u.globalAlpha=1),t.draw(c,function(t){return e=l.height,(1-(t-a)/(o-a))*e;var e}),u.drawImage(t.canvas,0,0)}),u.restore(),u.save(),u.beginPath(),u.strokeStyle="rgba(255, 180, 0, 0.15)",u.lineWidth=5,u.moveTo(c+2.5,0),u.lineTo(c+2.5,l.height),u.stroke(),Math.floor(l.height/40));u.save(),u.lineWidth=.5,u.strokeStyle="rgba(0, 0, 0, 0.25)",u.fillStyle="rgba(0, 0, 0, 0.5)",u.textAlign="end",u.textBaseline="bottom",u.beginPath();for(var n=0;n<t;n++){var i=l.height-40*n,r=(u.moveTo(0,i-.5),u.lineTo(l.width,i-.5),Math.round((r=l.height,(a*i+o*(r-i))/r))+" dBm");u.save(),u.strokeStyle="rgba(255, 255, 255, 0.9)",u.lineWidth=4,u.miterLimit=2,u.strokeText(r,l.width-5,i-2.5),u.fillText(r,l.width-5,i-2.5),u.restore()}u.stroke(),u.strokeStyle="rgba(0, 0, 0, 0.83)",u.lineWidth=1.5,u.strokeRect(.5,.5,l.width-1,l.height-1),u.restore()}}d(),window.addEventListener("resize",n);var i=0;return window.requestAnimationFrame(function t(e){40<e-i&&(n(),c=(c+1)%l.width,i=e),window.requestAnimationFrame(t)}),{el:l,addSignal:function(t){s.push(t),t.resize(l.width,l.height)},removeSignal:function(t){s.splice(s.indexOf(t),1)}}}function f(t,o,e,n){var i,r=t.table.firstElementChild,a=r.firstElementChild,c=r.insertRow(),r=c.insertCell(),s=(r.setAttribute("data-label",a.children[0].textContent),t.wireless&&((i=document.createElement("span")).textContent="⬤ ",i.style.color=e,r.appendChild(i)),document.createElement("span")),l=(s.textContent=o,r.appendChild(s),{});for(var u,d,h,f,g,m,p,v,b,C=0;C<a.children.length;C++)u=a.children[C],f=h=d=void 0,(f=u.getAttribute("data-key"))&&(d=u.getAttribute("data-suffix")||"",(h=c.insertCell()).textContent="-",h.setAttribute("data-label",u.textContent),l[f]={td:h,suffix:d});function y(){b&&window.clearTimeout(b),b=window.setTimeout(function(){v&&t.signalgraph.removeSignal(v),c.parentNode.removeChild(c),n()},6e4)}function w(t){var e,t=function(t){"::"==(t="::"==t.slice(0,2)?"0"+t:t).slice(-2)&&(t+="0");for(var e=t.split(":"),n=e.length,i=[],r=0;r<e.length;r++){var a=e[r];if(""===a)for(;n++<=8;)i.push(0);else{if(!/^[a-f0-9]{1,4}$/i.test(a))return;i.push(parseInt(a,16))}}return i}(t);if(t)return e="",t.forEach(function(t){e+=("0000000000000000"+t.toString(2)).slice(-16)}),e}function E(t){var i=w(k);if(t&&t[0])return(t=t.map(function(t){var e=w(t);if(!e)return[-1];var n=0;return[n=i?function(t,e){for(var n=0;n<t.length&&n<e.length&&t[n]===e[n];n++);return n}(i,e):n,e,t]})).sort(function(t,e){return t[0]<e[0]?1:t[0]>e[0]||t[1]<e[1]?-1:t[1]>e[1]?1:0}),t=t[0][2],t&&!/^fe80:/i.test(t)?t:void 0}return t.wireless&&((g=c.insertCell()).textContent="-",g.setAttribute("data-label",a.children[Object.keys(l).length+1].textContent),(m=c.insertCell()).textContent="-",m.setAttribute("data-label",a.children[Object.keys(l).length+2].textContent),(p=c.insertCell()).textContent="-",p.setAttribute("data-label",a.children[Object.keys(l).length+3].textContent),v=A(e),t.signalgraph.addSignal(v)),c.onmouseenter=function(){c.classList.add("highlight"),v&&(v.highlight=!0)},c.onmouseleave=function(){c.classList.remove("highlight"),v&&(v.highlight=!1)},y(),{get_hostname:function(){return s.textContent},get_addr:function(){return o},update_nodeinfo:function(t){var e,n,i,r,a;(o=E(t.network.addresses))&&("span"===s.nodeName.toLowerCase()&&(e=s,s=document.createElement("a"),e.parentNode.replaceChild(s,e)),s.href="http://["+o+"]/"),s.textContent=t.hostname,x&&t.location&&(e=x.latitude,n=x.longitude,i=t.location.latitude,t=t.location.longitude,r=Math.PI/180,a=(i*=r)-(e*=r),t=(t*=r)-(n*=r),r=Math.sin(a/2)*Math.sin(a/2)+Math.sin(t/2)*Math.sin(t/2)*Math.cos(e)*Math.cos(i),n=6372.8*(2*Math.asin(Math.sqrt(r))),m.textContent=Math.round(1e3*n)+" m"),y()},update_mesh:function(n){Object.keys(l).forEach(function(t){var e=l[t];e.td.textContent=n[t]+e.suffix}),y()},update_wifi:function(t){g.textContent=t.signal,p.textContent=Math.round(t.inactive/1e3)+" s",c.classList.toggle("inactive",200<t.inactive),v.set(200<t.inactive?null:t.signal),y()}}}function u(t,e,n){var i,a={},r=(n&&(i=h(),t.appendChild(i.el)),{table:t.firstElementChild,signalgraph:i,ifname:e,wireless:n}),o=!1,c={},s=[];function l(){var t;o||(o=!0,(t=new EventSource("/cgi-bin/dyn/neighbours-nodeinfo?"+encodeURIComponent(e))).addEventListener("neighbour",function(t){try{var n=JSON.parse(t.data);i=[],r=n.network.mesh,Object.keys(r).forEach(function(t){var e=r[t].interfaces;Object.keys(e).forEach(function(t){e[t].forEach(function(t){i.push(t)})})}),i.forEach(function(t){var e=a[t];if(e){delete c[t];try{e.update_nodeinfo(n)}catch(t){console.error(t)}}})}catch(t){console.error(t)}var i,r},!1),t.onerror=function(){t.close(),o=!1,Object.keys(c).forEach(function(t){0<c[t]&&(c[t]--,l())})})}function u(t){var e=a[t];return e||(c[t]=3,e=a[t]=f(r,t,(s=s[0]?s:["#396AB1","#DA7C30","#3E9651","#CC2529","#535154","#6B4C9A","#922428","#948B3D"]).shift(),function(){delete c[t],delete a[t]}),l()),e}return n&&d("/cgi-bin/dyn/stations?"+encodeURIComponent(e),function(n){Object.keys(n).forEach(function(t){var e=n[t];u(t).update_wifi(e)})}),{get_neigh:u,lookup_neigh:function(t){return a[t]}}}document.querySelectorAll("[data-interface]").forEach(function(t){var e=t.getAttribute("data-interface"),n=(t.getAttribute("data-interface-address"),!!t.getAttribute("data-interface-wireless"));c[e]=u(t,e,n)});var n=document.body.getAttribute("data-mesh-provider");n&&d(n,function(i){Object.keys(i).forEach(function(t){var e=i[t],n=c[e.ifname];n&&n.get_neigh(t).update_mesh(e)})})}();
\ No newline at end of file
+"use strict";!function(){var r=JSON.parse(document.body.getAttribute("data-translations"));function i(t,e){return t.toFixed(e).replace(/\./,r["."])}function a(t,e){e--;for(var n=t;10<=n&&0<e;n/=10)e--;return i(t,e)}function o(t){var e=["","K","M","G","T"],n=1024,i=t,r=0;if(void 0===i)return"- ";for(;n<i&&r<e.length-1;)i/=n,r++;return(i=a(i,3))+" "+e[r]}String.prototype.sprintf=function(){var t=0,e=arguments;return this.replace(/%s/g,function(){return e[t++]})};var s={id:function(t){return t},decimal:function(t){return i(t,2)},percent:function(t){return r["%s used"].sprintf(a(100*t,3)+"%")},memory:function(t){t=1-t.available/t.total;return s.percent(t)},time:function(t){var t=Math.round(t/60),e=Math.floor(t/1440),n=Math.floor(t%1440/60),t=Math.floor(t%60),i="";return 1===e?i+=r["1 day"]+", ":1<e&&(i+=r["%s days"].sprintf(e)+", "),i+=n+":",t<10&&(i+="0"),i+=t},packetsDiff:function(t,e,n){if(0<n)return t=(t-e)/n,r["%s packets/s"].sprintf(i(t,0))},bytesDiff:function(t,e,n){if(0<n)return o(8*((t-e)/n))+"bps"},bytes:function(t){return o(t)+"B"},neighbour:function(t){if(!t)return"";for(var e in c){var n,i,r=c[e].lookup_neigh(t);if(r)return n=document.createElement("span"),i=(n.appendChild(document.createTextNode("via ")),document.createElement("a")),i.href="http://["+r.get_addr()+"]/",i.textContent=r.get_hostname(),n.appendChild(i),n.appendChild(document.createTextNode(" ("+e+")")),n}return"via "+t+" (unknown iface)"}};function u(e,t){return t.split("/").forEach(function(t){e=e&&e[t]}),e}function d(t,e){var n=new EventSource(t),i={};n.onmessage=function(t){t=JSON.parse(t.data);e(t,i),i=t},n.onerror=function(){n.close(),window.setTimeout(function(){d(t,e)},3e3)}}var x,k=document.body.getAttribute("data-node-address");try{x=JSON.parse(document.body.getAttribute("data-node-location"))}catch(t){}function t(t){var e=document.getElementById("mesh-vpn");if(t){e.style.display="";for(var i=document.getElementById("mesh-vpn-peers");i.lastChild;)i.removeChild(i.lastChild);t=function e(n,i){return Object.keys(i.peers||{}).forEach(function(t){n.push([t,i.peers[t]])}),Object.keys(i.groups||{}).forEach(function(t){e(n,i.groups[t])}),n}([],t);t.sort(),t.forEach(function(t){var e=document.createElement("tr"),n=document.createElement("th"),n=(n.textContent=t[0],e.appendChild(n),document.createElement("td"));t[1]?n.textContent=r.connected+" ("+s.time(t[1].established)+")":n.textContent=r["not connected"],e.appendChild(n),i.appendChild(e)})}else e.style.display="none"}var e=document.querySelectorAll("[data-statistics]");d("/cgi-bin/dyn/statistics",function(a,o){var c=a.uptime-o.uptime;e.forEach(function(t){var e=t.getAttribute("data-statistics"),n=t.getAttribute("data-format"),i=u(o,e),e=u(a,e);try{var r=s[n](e,i,c);"object"==typeof r?(t.lastChild&&t.removeChild(t.lastChild),t.appendChild(r)):t.textContent=r}catch(t){console.error(t)}});try{t(a.mesh_vpn)}catch(t){console.error(t)}});var c={};function A(n){var i=document.createElement("canvas"),r=i.getContext("2d"),a=null;return{canvas:i,highlight:!1,resize:function(t,e){var n;try{n=r.getImageData(0,0,t,e)}catch(t){}i.width=t,i.height=e,n&&r.putImageData(n,0,0)},draw:function(t,e){var e=e(a);r.clearRect(t,0,5,i.height),e&&(t=t,e=e,r.beginPath(),r.fillStyle=n,r.arc(t,e,1.2,0,2*Math.PI,!1),r.closePath(),r.fill())},set:function(t){a=t}}}function h(){var a=-100,o=0,c=0,s=[],u=document.createElement("canvas"),l=(u.className="signalgraph",u.height=200,u.getContext("2d"));function d(){u.width=u.clientWidth,s.forEach(function(t){t.resize(u.width,u.height)})}function n(){if(0!==u.clientWidth){u.width!==u.clientWidth&&d(),l.clearRect(0,0,u.width,u.height);var e=!1,t=(s.forEach(function(t){t.highlight&&(e=!0)}),l.save(),s.forEach(function(t){e&&(l.globalAlpha=.2),t.highlight&&(l.globalAlpha=1),t.draw(c,function(t){return e=u.height,(1-(t-a)/(o-a))*e;var e}),l.drawImage(t.canvas,0,0)}),l.restore(),l.save(),l.beginPath(),l.strokeStyle="rgba(255, 180, 0, 0.15)",l.lineWidth=5,l.moveTo(c+2.5,0),l.lineTo(c+2.5,u.height),l.stroke(),Math.floor(u.height/40));l.save(),l.lineWidth=.5,l.strokeStyle="rgba(0, 0, 0, 0.25)",l.fillStyle="rgba(0, 0, 0, 0.5)",l.textAlign="end",l.textBaseline="bottom",l.beginPath();for(var n=0;n<t;n++){var i=u.height-40*n,r=(l.moveTo(0,i-.5),l.lineTo(u.width,i-.5),Math.round((r=u.height,(a*i+o*(r-i))/r))+" dBm");l.save(),l.strokeStyle="rgba(255, 255, 255, 0.9)",l.lineWidth=4,l.miterLimit=2,l.strokeText(r,u.width-5,i-2.5),l.fillText(r,u.width-5,i-2.5),l.restore()}l.stroke(),l.strokeStyle="rgba(0, 0, 0, 0.83)",l.lineWidth=1.5,l.strokeRect(.5,.5,u.width-1,u.height-1),l.restore()}}d(),window.addEventListener("resize",n);var i=0;return window.requestAnimationFrame(function t(e){40<e-i&&(n(),c=(c+1)%u.width,i=e),window.requestAnimationFrame(t)}),{el:u,addSignal:function(t){s.push(t),t.resize(u.width,u.height)},removeSignal:function(t){s.splice(s.indexOf(t),1)}}}function f(t,o,e,n){var i,r=t.tbody.firstElementChild,a=t.tbody.insertRow(),c=a.insertCell(),s=(c.setAttribute("data-label",r.children[0].textContent),t.wireless&&((i=document.createElement("span")).textContent="⬤ ",i.style.color=e,c.appendChild(i)),document.createElement("span")),u=(s.textContent=o,c.appendChild(s),{});for(var l,d,h,f,g,p,m,v,b,C=0;C<r.children.length;C++)l=r.children[C],f=h=d=void 0,(f=l.getAttribute("data-key"))&&(d=l.getAttribute("data-suffix")||"",(h=a.insertCell()).textContent="-",h.setAttribute("data-label",l.textContent),u[f]={td:h,suffix:d});function y(){b&&window.clearTimeout(b),b=window.setTimeout(function(){v&&t.signalgraph.removeSignal(v),a.parentNode.removeChild(a),n()},6e4)}function w(t){var e,t=function(t){"::"==(t="::"==t.slice(0,2)?"0"+t:t).slice(-2)&&(t+="0");for(var e=t.split(":"),n=e.length,i=[],r=0;r<e.length;r++){var a=e[r];if(""===a)for(;n++<=8;)i.push(0);else{if(!/^[a-f0-9]{1,4}$/i.test(a))return;i.push(parseInt(a,16))}}return i}(t);if(t)return e="",t.forEach(function(t){e+=("0000000000000000"+t.toString(2)).slice(-16)}),e}function E(t){var i=w(k);if(t&&t[0])return(t=t.map(function(t){var e=w(t);if(!e)return[-1];var n=0;return[n=i?function(t,e){for(var n=0;n<t.length&&n<e.length&&t[n]===e[n];n++);return n}(i,e):n,e,t]})).sort(function(t,e){return t[0]<e[0]?1:t[0]>e[0]||t[1]<e[1]?-1:t[1]>e[1]?1:0}),t=t[0][2],t&&!/^fe80:/i.test(t)?t:void 0}return t.wireless&&((g=a.insertCell()).textContent="-",g.setAttribute("data-label",r.children[Object.keys(u).length+1].textContent),(p=a.insertCell()).textContent="-",p.setAttribute("data-label",r.children[Object.keys(u).length+2].textContent),(m=a.insertCell()).textContent="-",m.setAttribute("data-label",r.children[Object.keys(u).length+3].textContent),v=A(e),t.signalgraph.addSignal(v)),a.onmouseenter=function(){a.classList.add("highlight"),v&&(v.highlight=!0)},a.onmouseleave=function(){a.classList.remove("highlight"),v&&(v.highlight=!1)},y(),{get_hostname:function(){return s.textContent},get_addr:function(){return o},update_nodeinfo:function(t){var e,n,i,r,a;(o=E(t.network.addresses))&&("span"===s.nodeName.toLowerCase()&&(e=s,s=document.createElement("a"),e.parentNode.replaceChild(s,e)),s.href="http://["+o+"]/"),s.textContent=t.hostname,x&&t.location&&(e=x.latitude,n=x.longitude,i=t.location.latitude,t=t.location.longitude,r=Math.PI/180,a=(i*=r)-(e*=r),t=(t*=r)-(n*=r),r=Math.sin(a/2)*Math.sin(a/2)+Math.sin(t/2)*Math.sin(t/2)*Math.cos(e)*Math.cos(i),n=6372.8*(2*Math.asin(Math.sqrt(r))),p.textContent=Math.round(1e3*n)+" m"),y()},update_mesh:function(n){Object.keys(u).forEach(function(t){var e=u[t];e.td.textContent=n[t]+e.suffix}),y()},update_wifi:function(t){g.textContent=t.signal,m.textContent=Math.round(t.inactive/1e3)+" s",a.classList.toggle("inactive",200<t.inactive),v.set(200<t.inactive?null:t.signal),y()}}}function l(t,e,n){var i,a={},r=(n&&(i=h(),t.appendChild(i.el)),{tbody:t.firstElementChild.firstElementChild,signalgraph:i,ifname:e,wireless:n}),o=!1,c={},s=[];function u(){var t;o||(o=!0,(t=new EventSource("/cgi-bin/dyn/neighbours-nodeinfo?"+encodeURIComponent(e))).addEventListener("neighbour",function(t){try{var n=JSON.parse(t.data);i=[],r=n.network.mesh,Object.keys(r).forEach(function(t){var e=r[t].interfaces;Object.keys(e).forEach(function(t){e[t].forEach(function(t){i.push(t)})})}),i.forEach(function(t){var e=a[t];if(e){delete c[t];try{e.update_nodeinfo(n)}catch(t){console.error(t)}}})}catch(t){console.error(t)}var i,r},!1),t.onerror=function(){t.close(),o=!1,Object.keys(c).forEach(function(t){0<c[t]&&(c[t]--,u())})})}function l(t){var e=a[t];return e||(c[t]=3,e=a[t]=f(r,t,(s=s[0]?s:["#396AB1","#DA7C30","#3E9651","#CC2529","#535154","#6B4C9A","#922428","#948B3D"]).shift(),function(){delete c[t],delete a[t]}),u()),e}return n&&d("/cgi-bin/dyn/stations?"+encodeURIComponent(e),function(n){Object.keys(n).forEach(function(t){var e=n[t];l(t).update_wifi(e)})}),{get_neigh:l,lookup_neigh:function(t){return a[t]}}}document.querySelectorAll("[data-interface]").forEach(function(t){var e=t.getAttribute("data-interface"),n=(t.getAttribute("data-interface-address"),!!t.getAttribute("data-interface-wireless"));c[e]=l(t,e,n)});var n=document.body.getAttribute("data-mesh-provider");n&&d(n,function(i){Object.keys(i).forEach(function(t){var e=i[t],n=c[e.ifname];n&&n.get_neigh(t).update_mesh(e)})})}();
\ No newline at end of file
diff --git a/package/gluon-status-page/javascript/status-page.js b/package/gluon-status-page/javascript/status-page.js
index 5b2084929ef0da8f96e93ec644f0f1b7d8ddb07e..6c1d79a94d5e8927eb33b1a89830668669c9ce9a 100644
--- a/package/gluon-status-page/javascript/status-page.js
+++ b/package/gluon-status-page/javascript/status-page.js
@@ -191,8 +191,7 @@
 		}
 
 		div.style.display = '';
-		var table = document.getElementById('mesh-vpn-peers');
-		var tbody = table.firstElementChild;
+		var tbody = document.getElementById('mesh-vpn-peers');
 		while (tbody.lastChild)
 			tbody.removeChild(tbody.lastChild);
 
@@ -445,9 +444,8 @@
 	}
 
 	function Neighbour(iface, addr, color, destroy) {
-		var tb = iface.table.firstElementChild;
-		var th = tb.firstElementChild;
-		var el = tb.insertRow();
+		var th = iface.tbody.firstElementChild;
+		var el = iface.tbody.insertRow();
 
 		var tdHostname = el.insertCell();
 		tdHostname.setAttribute('data-label', th.children[0].textContent);
@@ -694,7 +692,7 @@
 		}
 
 		var info = {
-			'table': el.firstElementChild,
+			'tbody': el.firstElementChild.firstElementChild,
 			'signalgraph': signalgraph,
 			'ifname': ifname,
 			'wireless': wireless,