Repository navigation
Releases
Releases · streamband/hydra-srt
v0.6.10
What's Changed
- chore(deps-dev): bump js-yaml from 4.3.1 to 4.3.2 in /web_app in the npm_and_yarn group across 1 directory by @dependabot[bot] in #145
- fix(web): keep settings tab dom mounted so backup import works by @abc3 in #148
Full Changelog: v0.6.9...v0.6.10
v0.6.9
What's Changed
- fix(web): stop requiring a youtube quality policy the backend already defaults by @abc3 in #137
- fix(auth): report login failures in the ui and harden credential checks by @abc3 in #138
- fix(web): read youtube source values from the form root by @abc3 in #140
- feat(web): add a clone action to the routes table by @abc3 in #139
- chore(deps): bump the npm_and_yarn group across 1 directory with 2 updates by @dependabot[bot] in #143
- fix(srt): bind caller sockets to the selected interface by @abc3 in #146
Full Changelog: v0.6.8...v0.6.9
v0.6.8
v0.6.7
v0.6.6
What's Changed
- fix(routes): recover srt routes after the sender disconnects by @abc3 in #125
- feat(ci): build and publish multi-arch release images by @abc3 in #126
- fix(sources): report why a source connection test failed by @abc3 in #127
- test(sources): cover the probe process lifecycle without ffprobe by @abc3 in #128
Full Changelog: v0.6.5...v0.6.6
v0.6.5
What's Changed
- fix(srt): surface failure reasons and keep routes reconnecting by @abc3 in #119
- fix(routes): keep retrying routes resting on reconnecting status by @abc3 in #120
- Add lints by @abc3 in #122
- fix(ci): wait for CI to finish before publishing a release by @abc3 in #123
- fix(rtmp): send player-bound metadata as onMetaData by @abc3 in #124
Full Changelog: v0.6.2...v0.6.5
v0.6.2
What's Changed
- chore: remove and ignore compiled assets by @hauleth in #62
- chore: rework Rust compiler task in
mix.exsby @hauleth in #63 - feat: add MCP server by @abc3 in #64
- feat(mcp): add more calls by @abc3 in #65
- chore(security): add sobelow by @abc3 in #66
- test(mcp): add e2e_mcp HTTP protocol test layer by @abc3 in #67
- feat(source): add rtp source and signal generation transport tabs by @abc3 in #68
- refactor(frontend): migrate to typescript by @abc3 in #70
- feat(pipeline): implement IP access control for SRT listeners by @abc3 in #69
- feat: add multicast support for UDP sources by @abc3 in #72
- chore(deps): bump react-router from 7.14.2 to 7.16.0 in /web_app in the npm_and_yarn group across 1 directory by @dependabot[bot] in #71
- feat(rtmp): add ingest server and route source by @abc3 in #75
- chore(deps): bump esbuild from 0.28.0 to 0.28.1 in /web_app in the npm_and_yarn group across 1 directory by @dependabot[bot] in #76
- feat(rtmp): implement RTMP client by @abc3 in #77
- feat(monitoring): add storage and database metrics by @abc3 in #78
- fix(tests): stabilize SignalGenerator restart assertions on CI by @abc3 in #79
- feat(ui): implement the dashboard page by @abc3 in #80
- feat(rtmp): enhance publishing with codec checks and inactivity handling by @abc3 in #98
- fix(rtmp): update primary route attribution logic by @abc3 in #99
- chore(deps-dev): bump js-yaml from 4.1.1 to 4.3.0 in /web_app in the npm_and_yarn group across 1 directory by @dependabot[bot] in #100
- feat(srt): add more metrics by @abc3 in #101
- refactor: replace duckdb to VictoriaMetrics/VictoriaLogs by @abc3 in #103
- chore(deps): bump ws from 8.19.0 to 8.21.1 in /web_app in the npm_and_yarn group across 1 directory by @dependabot[bot] in #105
- chore(deps): bump react-router from 7.16.0 to 8.3.0 in /web_app in the npm_and_yarn group across 1 directory by @dependabot[bot] in #106
- chore(deps): bump postcss from 8.5.15 to 8.5.23 in /web_app in the npm_and_yarn group across 1 directory by @dependabot[bot] in #107
- add ndi support by @abc3 in #104
- fix(ui): persist sources and destinations when editing a route by @abc3 in #110
- fix: derive bind address from the interface, pre-select a lone one, show link estimate in Gbps by @abc3 in #111
- fix(ui): pre-select a lone interface when creating an endpoint by @abc3 in #114
- chore(deps-dev): bump brace-expansion from 1.1.11 to 1.1.18 in /web_app in the npm_and_yarn group across 1 directory by @dependabot[bot] in #115
- chore(deps-dev): bump js-yaml from 4.3.0 to 4.3.1 in /web_app in the npm_and_yarn group across 1 directory by @dependabot[bot] in #116
- fix(route_handler): add SRT query encoding by @abc3 in #117
- feat(ci): auto-bump VERSION on pull requests by @abc3 in #118
Full Changelog: v0.6.1...v0.6.2
v0.6.1
Full Changelog: v0.6.0...v0.6.1
v0.6.0
HydraSRT v0.6.0
Full changelog: v0.5.2...v0.6.0
Highlights
- Telegram notifications for route status changes, with Settings UI and REST API
- Pipeline logging — GStreamer debug output captured in DuckDB, browsable per route in the UI
- Route status history & analytics — cluster-wide timeline, charts, and new API endpoints
New features
Telegram notifications
- Configure Telegram bot token and chat ID under Settings → Notifications
- Route status change events are sent via a dedicated
HydraSrt.Notifications.Telegramprocess (rate-limited per route)
Pipeline logging
- Native pipeline
GST_DEBUGoutput is parsed, buffered, and stored in DuckDB (pipeline_logstable) - Telemetry hooks for pipeline log metrics
- Per-route Pipeline logs tab in the routes UI with filtering
- Automatic retention cleanup (default 24 hours) via stats cleaner
Route status history & analytics
- Route status transitions recorded in DuckDB for historical views
- Cluster-wide status timeline on the Routes page (live + history modes)
- Improved analytics charts (custom tooltips, grid styling)
Routes management UI
- Pagination for route list (
page,limitquery params; default limit 50, max 500) - Bulk actions: start, stop, or delete multiple selected routes
- Tag filtering and improved route table UX
- Optimistic UI updates for interface name changes
Improvements
- Backup/failover config — nested
backup_configJSON on routes replaced with top-level columns (backup_mode,backup_switch_after_ms, etc.); migration migrates existing data PHX_CHECK_ORIGIN— configurable comma-separated allowed origins for Phoenix WebSocket checks (docs/envs.md)- Dev auth —
API_AUTH_USERNAMEandAPI_AUTH_PASSWORDenv vars for development login - Demo mode UI — signal generation settings shown only when demo mode is active
- Default
gst_debug— migration setsgst_debugto4where unset (enables pipeline log capture) - Developer tooling —
mix credencetask for Credence semantic analysis; agent skills under.agents/skills/
Bug fixes
- Prevent assigning duplicate address/port on endpoints
- Correct route status updates in handler/UI
- Remove expensive unused code paths
- E2E/tests: dynamic ports instead of hardcoded values; interface alias wait helper
- Drop runtime
status/schema_statusfrom route update payloads (avoids persisting transient state)
Database migrations
Run migrations on upgrade (included in mix setup / release boot):
20260514180000_flatten_route_backup_config— flattensbackup_config→ columns20260516220000_set_gst_debug_default— sets defaultgst_debug20260517120000_create_notifications— notifications table
DuckDB analytics schema is extended automatically for pipeline_logs and status history tables.
Upgrade from v0.5.2
git pull
mix deps.get
mix ecto.migrate
mix compile
# or rebuild release:
MIX_ENV=prod mix releaseFor Docker deployments, rebuild and redeploy the image tagged for this release.
Optional: Configure Telegram in Settings after upgrade. Set PHX_CHECK_ORIGIN if WebSocket connections fail behind a reverse proxy on a non-default origin.
v0.5.2
Added
- Signal generation — backend support (
SignalGenerator), HTTP API under/system/signal-generation(status, configure, start, stop), and Settings UI integration. - Route tags — full CRUD API:
GET/POST /tags,PUT/DELETE /tags/:id, plus UI and client wiring. - Demo mode — demo streaming workflow (
HydraSrt.Demo), FFmpeg-based demo stream, and automatic creation of a demo route when demo is enabled. - App initialization API —
GET /init(InitController) and frontendInitContextso the SPA can load startup/configuration data in one place. - Route failure handling —
mark_route_failedin the route pipeline for clearer failure status when a route breaks. - Route enable/disable in UI — visible enabled state and filtering for routes and route items on the dashboard.
- Documentation — expanded
README.md, smalldocs/ENVS.mdupdate, and related runtime config notes. - Database migration —
add_bind_target_columns_to_endpoints(endpoint bind/target fields split out from schema options).
Changed
- Endpoint model & API — SRT (and related) endpoint options refactored from nested “schema options” blobs into explicit fields (sources/destinations); API and forms updated accordingly (
Endpoint, controllers,api.js, route editor components, sharedendpointOptions/endpointFormErrorshelpers). - OS monitoring — improved memory and swap calculations and reporting in
OsMon(with test coverage updates). - Route handler — updates to support failure marking and related behavior.
- Web app —
Settings.jsxsignificantly extended;api.js,auth.js, Vite config, and route UI tests updated;yarn.lockrefreshed. - Makefile — minor adjustments tied to the new workflows.
Fixed
- E2E tests — removed reliance on problematic schema-option shapes in Playwright/E2E helpers and specs (
fix: remove schema options in E2E tests).
Upgrade notes
- Run migrations after pulling this range; the new endpoint migration is required for the bind/target column layout.
- If you rely on the old endpoint JSON shape, review clients against the new flat endpoint fields API.
Full Changelog: v0.5.1...v0.5.2