What's New in 2026.5.1
This release brings a full modernization of the codebase — updated dependencies, a cleaner Docker setup, improved streaming reliability, and a complete CI/CD pipeline. The project is now independent (no longer a fork) and published to GitHub Container Registry.
✨ New Features
- Multi-platform Docker image — Pre-built images for
linux/amd64andlinux/arm64are automatically published toghcr.io/wireshj/iptv-proxyon every release and push to master. Uses Go cross-compilation (no QEMU slow-path). - CalVer release tagging — CI/CD now supports both semver (
v1.0.0) and CalVer (2026.5.1) tag formats. - Traefik v3 support — The bundled Traefik example has been updated to v3 with proper Let's Encrypt certificate resolver and a clean Docker Compose setup.
- Published to GHCR — All images are now on GitHub Container Registry. Pull with
docker pull ghcr.io/wireshj/iptv-proxy:latest.
🔧 Improvements
- Context-aware HTTP streaming — Streams now use
http.NewRequestWithContextso that when a client disconnects, the upstream request is cancelled immediately and resources are freed. - Shared HTTP client with connection pooling — A single
http.Clientis reused across all proxy requests with idle connection pooling (MaxIdleConns: 100,IdleConnTimeout: 90s), reducing overhead and improving throughput under load. - Dependency updates — All dependencies updated to latest stable versions:
gin-gonic/gin→ v1.12.0gin-contrib/cors→ v1.7.2spf13/cobra→ v1.10.2spf13/viper→ v1.21.0google/uuid→ v1.6.0
- Go 1.25 — Module upgraded to Go 1.25. Builder image updated to
golang:1.25-alpine.
🐛 Fixed
ioutildeprecation — Replaced all uses ofioutil.ReadAllandioutil.NopCloserwithio.ReadAllandio.NopCloser(deprecated since Go 1.16).satori/go.uuidreplaced — Replaced the unmaintainedsatori/go.uuidpackage withgoogle/uuid. Updated alluuid.NewV4()calls touuid.New().mitchellh/go-homedirremoved — Replaced with stdlibos.UserHomeDir(). No external dependency needed.- Broken test stubs removed —
xtreamHandles_test.goreferenced a non-existent struct field and an unimplemented function, causing compile errors. Removed. - Dead code removed —
pkg/utils/was never imported anywhere and contained broken references to a stale module path. Deleted entirely. - CI workflow fixed — Previous workflow failed due to QEMU compiling Go code for arm64 (extremely slow). Fixed by using Go's native cross-compilation via
TARGETOS/TARGETARCHbuild args in the Dockerfile. Workflow now completes in under 2 minutes. - GHCR push permissions — Resolved
permission_denied: write_packageerrors by configuring theCR_PATsecret with the correctwrite:packagesscope.
📦 Docker
```bash
Pull latest
docker pull ghcr.io/wireshj/iptv-proxy:latest
Pull this specific release
docker pull ghcr.io/wireshj/iptv-proxy:2026.5.1
```
🙏 Credits
Originally created by Pierre-Emmanuel Jacquier — pierre-emmanuelJ/iptv-proxy.
Extended by incmve — Xtream EPG fixes, VOD improvements, Gluetun integration.
This release by WireshJ.