diff --git a/src/shared/versions.js b/src/shared/versions.js index f84cdcc..f84f1b7 100644 --- a/src/shared/versions.js +++ b/src/shared/versions.js @@ -1,6 +1,6 @@ export const HARBOR_VERSIONS = Object.freeze({ - macClient: '0.14.2', - gatewayClient: '0.15.2', + macClient: '0.14.3', + gatewayClient: '0.15.3', gatewayBackend: '0.15.0', }); diff --git a/src/web/components/DevicesPanel.jsx b/src/web/components/DevicesPanel.jsx index 5ffb23d..3c1c7f8 100644 --- a/src/web/components/DevicesPanel.jsx +++ b/src/web/components/DevicesPanel.jsx @@ -7,6 +7,7 @@ import { formatLastSeen, positiveByteDelta, sortDevicesByTraffic, + trafficAxisMid, trafficSampleMetrics, } from '../utils/format.js'; @@ -46,8 +47,9 @@ function TrafficChart({ samples, scale, capacity, routeLabel }) { const total = byteString(sample.gatewayBytes) + byteString(sample.proxyBytes); return total > largest ? total : largest; }, 0n); + const mid = trafficAxisMid(max, scale); const latest = samples.at(-1)?.observedAt || 'empty'; - return + return {samples.map((sample, index) => { const gateway = byteString(sample.gatewayBytes); @@ -57,8 +59,9 @@ function TrafficChart({ samples, scale, capacity, routeLabel }) { const slot = capacity - samples.length + index; const edge = slot < 28 ? ' is-edge-left' : slot >= capacity - 28 ? ' is-edge-right' : ''; const { height, gatewayShare } = trafficSampleMetrics(gateway, proxy, max, scale); + const newest = index === samples.length - 1; return @@ -75,6 +78,11 @@ function TrafficChart({ samples, scale, capacity, routeLabel }) { ; })} + {max > 0n && } {samples.length > 0 &&