Skip to content

Commit 3147178

Browse files
committed
docs: CHANGELOG entry for v2.6.0
1 parent 99d589a commit 3147178

1 file changed

Lines changed: 53 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,59 @@ All notable changes to this project are documented here.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [2.6.0] - 2026-05-12
9+
10+
### Fixed
11+
12+
- **Goroutine leak in transcoder retry loop.** `performTranscode`
13+
spawned `mirrorTranscodeMetadata` with the outer transcoder
14+
context, which only cancels on full transcoder stop. Every
15+
source disconnect/reconnect cycle (~1/min on a typical
16+
long-running deployment) entered the retry loop and spawned a
17+
fresh mirror goroutine; the old ones kept ticking forever.
18+
Production showed 1052 leaked goroutines and RSS of 777 MB
19+
(baseline 44 MB) after ~73 hours uptime. Fix: per-invocation
20+
child context inside performTranscode, defer-cancel; passed to
21+
mirrorTranscodeMetadata + EncodeMP3 + EncodeOpus + the decoder
22+
hub Acquire call. Goroutines that belong to one retry cycle now
23+
exit when that cycle returns.
24+
- **Transcoder auto-restart gap reduced from ~2 min to ~5 s.**
25+
When the decoder hub's pump exited (source EOF / disconnect),
26+
nothing closed the orphaned PCM-fanout stream — transcoders
27+
subscribed to it stayed blocked on its dead signal channel and
28+
only recovered when HealthMonitor's 2-minute auto-remove
29+
finally swept the stale stream. Fix: the pump's defer now
30+
RemoveStream's the PCM mount, so subscribers see EOF
31+
immediately and the retry loop produces a fresh pump within
32+
the standard 5-second tick.
33+
34+
### Changed
35+
36+
- **Map rewrite: MapLibre GL + OpenFreeMap, fixes zoom/marker/
37+
autofit thrash.** The previous Leaflet + CARTO dashboard map
38+
re-ran `flyToBounds` and `clearLayers` on every SSE 'geo' tick
39+
(~500 ms when listeners are active). Each fly is an 800 ms
40+
animation; ticks at 0.5 s stack on each other — the camera
41+
never settled, markers flickered as they were torn down and
42+
re-created. New shared `<LiveGeoMap>` component (used by both
43+
GeoMapCard and KioskDashboard):
44+
- Camera refits only when the SET of cities changes
45+
(signature of iso/city/lat/lon tuples). Listener-count
46+
changes update marker sizes in place — no fly.
47+
- Markers diff in place via a Map keyed by city signature.
48+
New cities added; gone cities removed; existing cities
49+
update radius with a 200 ms animation. No clearLayers
50+
churn.
51+
- Provider switch from CARTO basemaps to openfreemap.org —
52+
no signup, no API key, explicit free-for-any-use policy.
53+
Tile and OSM attribution wired into the MapLibre default
54+
AttributionControl plus a footer line.
55+
- `leaflet` removed from frontend deps; `maplibre-gl` added
56+
(~285 KB gzipped, in a route-lazy chunk so the landing
57+
page is unaffected).
58+
59+
[2.6.0]: https://github.com/DatanoiseTV/tinyice/releases/tag/v2.6.0
60+
861
## [2.5.0] - 2026-05-09
962

1063
### Security

0 commit comments

Comments
 (0)