Skip to content

2026.5.1 — Modernization & Stability

Latest

Choose a tag to compare

@WireshJ WireshJ released this 11 May 19:20
· 5 commits to master since this release

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/amd64 and linux/arm64 are automatically published to ghcr.io/wireshj/iptv-proxy on 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.NewRequestWithContext so that when a client disconnects, the upstream request is cancelled immediately and resources are freed.
  • Shared HTTP client with connection pooling — A single http.Client is 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.0
    • gin-contrib/cors → v1.7.2
    • spf13/cobra → v1.10.2
    • spf13/viper → v1.21.0
    • google/uuid → v1.6.0
  • Go 1.25 — Module upgraded to Go 1.25. Builder image updated to golang:1.25-alpine.

🐛 Fixed

  • ioutil deprecation — Replaced all uses of ioutil.ReadAll and ioutil.NopCloser with io.ReadAll and io.NopCloser (deprecated since Go 1.16).
  • satori/go.uuid replaced — Replaced the unmaintained satori/go.uuid package with google/uuid. Updated all uuid.NewV4() calls to uuid.New().
  • mitchellh/go-homedir removed — Replaced with stdlib os.UserHomeDir(). No external dependency needed.
  • Broken test stubs removedxtreamHandles_test.go referenced a non-existent struct field and an unimplemented function, causing compile errors. Removed.
  • Dead code removedpkg/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/TARGETARCH build args in the Dockerfile. Workflow now completes in under 2 minutes.
  • GHCR push permissions — Resolved permission_denied: write_package errors by configuring the CR_PAT secret with the correct write:packages scope.

📦 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 Jacquierpierre-emmanuelJ/iptv-proxy.
Extended by incmve — Xtream EPG fixes, VOD improvements, Gluetun integration.
This release by WireshJ.