APRSGo v1.3.0 (Ampere)
APRSGo v1.3.0 (Ampere) Download
APRSGo v1.3.0
This release fixes the "trench" artifacts in the statistics charts and makes
the client list usable on busy servers: it is now paginated and returned in a
stable order instead of one huge, randomly-shuffled array.
📈 Statistics: window-averaged sampling
Chart samples used to capture the instantaneous 1-second rate at each
per-minute tick — if that particular second happened to be quiet, the chart
dipped to zero even though traffic over the minute was normal. Each sample is
now the average rate over the entire window (cumulative-counter delta
divided by elapsed time), producing smooth curves that reflect real
throughput. Applies to all four uplink series (packets/bytes, RX/TX); values
may now be fractional (e.g. 12.4 packets/s).
👥 Client list: pagination and stable ordering
New endpoint GET /api/clients:
| Parameter | Default | Notes |
page | 1 | Clamped into the valid range (no empty pages when clients disconnect) |
page_size | 20 | Maximum 500 |
sort | uptime | id, port, verified, addr, uptime, last, last_tx, software, filter, packet_rx, packet_tx, bytes_rx, bytes_tx, out_q, msg_rcpts |
order | asc | asc or desc |
Response: { total, page, page_size, clients: [...] }.
Ordering is fully deterministic — ties always resolve by (ID, address, port) —
so rows keep their position across refreshes. The default order (longest
connected first) appends new connections at the end instead of reshuffling
the whole table every 3 seconds.
🖥️ Web UI
- The client table is paginated (20/50/100/200 per page); rendering thousands
of rows no longer freezes the page.
- Click column headers to sort server-side; sorting resets to the first page.
- The current page keeps auto-refreshing every 3 seconds, with a guard so a
slow response can never overwrite a newer page.
- Pagination controls are localized in all 11 UI languages.
⚠️ Breaking change
GET /api/status no longer includes the clients array. Migrate consumers
to GET /api/clients (paginated); the online-client count is still available
as totals.clients. This also removes the overhead of serializing the full
client list on every status poll.