Commit graph

2893 commits

Author SHA1 Message Date
SergeantPanda
dfb91db987 Bug Fix: VOD orphan cleanup crashing with a ForeignKeyViolation (IntegrityError) when a concurrent refresh task created a new M3UMovieRelation or M3USeriesRelation for a movie/series between the orphan-detection query and the DELETE SQL. Both orphaned_movies.delete() and orphaned_series.delete() are now wrapped in try/except IntegrityError; affected records are skipped with a warning and will be cleaned up on the next scheduled run. 2026-03-08 11:56:52 -05:00
SergeantPanda
753bc1a893 fix(stream-preview): restore stream_name and stream_stats for stream previews
Stream.get_stream() was never called in the preview path of
generate_stream_url(), so the channel_stream and stream_profile
Redis keys were never written. This caused the stream_id to be
missing from channel metadata, which silently broke two things:

- Stats page showed no stream name or logo
- stream_stats were never saved to the database

Fix: replace the manual profile-selection loop in the preview path
with a direct call to Stream.get_stream(), matching the channel path
exactly. This also fixes a pre-existing non-atomic slot reservation
(read-then-check vs INCR-first) that could over-allocate connections
on concurrent previews.

Regression introduced in 49b7b9e2.
2026-03-08 11:46:31 -05:00
SergeantPanda
c0d70767e6 changelog: Add credit to @patchy8736 for contributions that came from his closed PR.
Some checks are pending
CI Pipeline / prepare (push) Waiting to run
CI Pipeline / docker (amd64, ubuntu-24.04) (push) Blocked by required conditions
CI Pipeline / docker (arm64, ubuntu-24.04-arm) (push) Blocked by required conditions
CI Pipeline / create-manifest (push) Blocked by required conditions
Build and Push Multi-Arch Docker Image / build-and-push (push) Waiting to run
2026-03-07 18:39:41 -06:00
SergeantPanda
9876a25e62 Bug Fix: XC stream refresh crashing with a null value in column "name" database error when a provider returns streams with a null or empty name. Affected streams are now assigned a generated fallback name in the format <account name> - <stream_id> so the refresh completes successfully and the stream remains accessible. A warning is logged for each affected stream. 2026-03-07 18:33:17 -06:00
SergeantPanda
639b3ea4af
Merge pull request #1022 from nickgerrer:bugfix/uwsgi-read-timeout-pr
Some checks failed
CI Pipeline / prepare (push) Waiting to run
CI Pipeline / docker (amd64, ubuntu-24.04) (push) Blocked by required conditions
CI Pipeline / docker (arm64, ubuntu-24.04-arm) (push) Blocked by required conditions
CI Pipeline / create-manifest (push) Blocked by required conditions
Build and Push Multi-Arch Docker Image / build-and-push (push) Waiting to run
Frontend Tests / test (push) Has been cancelled
fix: resolve 504 timeout on M3U group settings save via bulk DB operations
2026-03-06 17:26:11 -06:00
SergeantPanda
7e5e539aac changelog: add entry for bulk M3U group settings upsert fix 2026-03-06 17:24:54 -06:00
SergeantPanda
3d27161755 Merge branch 'dev' of https://github.com/Dispatcharr/Dispatcharr into pr/nickgerrer/1022 2026-03-06 17:22:44 -06:00
SergeantPanda
f53dd7e016 Revert "fix: add configurable uwsgi_read_timeout to fix 504 timeout on large M3U imports (fixes #745)"
This reverts commit 6f54910986.
2026-03-06 17:21:07 -06:00
SergeantPanda
ebd112eeb2 changelog: Added reference to issue for PG version check. 2026-03-06 16:29:55 -06:00
SergeantPanda
aa02658c73
Merge pull request #1052 from CodeBormen:fix/1045-modular-postgres-check
Fix modular mode deployment issues (#1045)
2026-03-06 16:22:11 -06:00
SergeantPanda
658c7744f7 changelog: Update changelog for modular hardening PR. 2026-03-06 16:21:24 -06:00
SergeantPanda
2373044adb Merge branch 'dev' of https://github.com/Dispatcharr/Dispatcharr into pr/CodeBormen/1052 2026-03-06 16:12:52 -06:00
SergeantPanda
29943c823f
Merge pull request #1049 from nick4810:tests/frontend-unit-tests
Tests/frontend unit tests
2026-03-06 15:56:58 -06:00
SergeantPanda
cf3f562cab fix: destructure props in M3uSetupSuccess component 2026-03-06 15:47:37 -06:00
None
bb2c3c228d Fix stale env vars in profile.d on container restart
- Rewrite /etc/profile.d/dispatcharr.sh on every startup instead of only on first run, so container restarts with changed env vars pick up new values
- Quote exported values to prevent breakage from special characters in POSTGRES_PASSWORD or other vars
- Update /etc/environment entries instead of skipping if already present
2026-03-06 15:27:19 -06:00
SergeantPanda
846ae598fc Tests: Fix errorboundary and floatingvideo tests. 2026-03-06 15:21:23 -06:00
None
4f41c287ac Fix Redis flush and wait_for_redis in modular mode
- Move modular Redis wait from uWSGI exec-pre to entrypoint (exec-pre runs under 'su -' which strips Docker env vars, so DISPATCHARR_ENV and REDIS_HOST were never available)
- Selective flush in modular mode: clears stale app state (stream locks, proxy metadata) while preserving Celery broker/result keys
- AIO mode unchanged: full flushdb via uWSGI exec-pre
- Update unit tests for both flush paths
2026-03-06 15:17:32 -06:00
SergeantPanda
ba38dc1cd4 changelog: Removed accidental line break. 2026-03-06 15:12:28 -06:00
SergeantPanda
8b332c426b changelog: Update changelog for refactor PR. 2026-03-06 15:08:53 -06:00
SergeantPanda
9d0b560bc7 Merge branch 'dev' of https://github.com/Dispatcharr/Dispatcharr into pr/nick4810/1049 2026-03-06 14:51:44 -06:00
SergeantPanda
d39b077715 Rename fetchChannels to fetchChannelIds in M3URefreshNotification component and tests 2026-03-06 14:51:34 -06:00
SergeantPanda
63e9469a58
Merge pull request #1069 from marcinolek:fix/frontend-stability-react-185
fix(frontend): prevent infinite re-renders (React error #185)
2026-03-06 13:23:19 -06:00
SergeantPanda
375dd57ae5 changelog: Update changelog for m3u import pr. 2026-03-06 13:21:18 -06:00
SergeantPanda
95bc2eac73 Merge branch 'dev' of https://github.com/Dispatcharr/Dispatcharr into pr/marcinolek/1069 2026-03-06 13:19:35 -06:00
SergeantPanda
758a79a4f6 fix(frontend): remove non-existent autoResetRowSelection option
autoResetRowSelection does not exist in TanStack Table v8 — it was a v7
option. The remaining autoResetPageIndex and autoResetExpanded options
are valid v8 API and retained.
2026-03-06 13:16:49 -06:00
SergeantPanda
a0a6babe04
Merge pull request #1070 from marcinolek:fix/installer-hardening-locales-path
fix(install): harden debian_install.sh for non-UTF8 environments
2026-03-06 11:56:39 -06:00
SergeantPanda
03ed8c0a1c changelog: Update changelog for debian_install script pr. 2026-03-06 11:38:12 -06:00
SergeantPanda
af41278ca2 Merge branch 'dev' of https://github.com/Dispatcharr/Dispatcharr into pr/marcinolek/1070 2026-03-06 11:29:26 -06:00
SergeantPanda
dbe80801da
Merge pull request #1073 from JCBird1012:1055
Some checks are pending
CI Pipeline / prepare (push) Waiting to run
CI Pipeline / docker (amd64, ubuntu-24.04) (push) Blocked by required conditions
CI Pipeline / docker (arm64, ubuntu-24.04-arm) (push) Blocked by required conditions
CI Pipeline / create-manifest (push) Blocked by required conditions
Build and Push Multi-Arch Docker Image / build-and-push (push) Waiting to run
fix: M3U EXTINF parsing for attributes ending in double equals
2026-03-06 09:06:07 -06:00
SergeantPanda
4209794cfa changelog: Update changelog for extinf attribute parsing. 2026-03-06 09:05:30 -06:00
Jonathan Caicedo
a51eb37075 fix: M3U EXTINF parsing for attributes ending in double equals
fixes: #1055
2026-03-06 08:10:30 -05:00
Marcin Olek
b43618dbe9 fix(install): harden debian_install.sh for non-UTF8 environments
- ensure en_US.UTF-8 locales are generated and set as default
- force UTF8 encoding during PostgreSQL database creation
- add standard system paths to systemd services to ensure tools like ffmpeg are found

Made-with: Cursor
2026-03-06 00:49:23 +01:00
Marcin Olek
a09915438c fix(frontend): prevent infinite re-renders in tables
- disable autoResetPageIndex, autoResetExpanded, and autoResetRowSelection in CustomTable
- memoize M3U table data to prevent re-renders on playlist progress updates
- fix default table state initialization from array to object

Made-with: Cursor
2026-03-06 00:48:22 +01:00
SergeantPanda
11671e9c4f
Merge pull request #1063 from CodeBormen:fix/1012-Celery-Work-Memory-Growth
Some checks are pending
CI Pipeline / prepare (push) Waiting to run
CI Pipeline / docker (amd64, ubuntu-24.04) (push) Blocked by required conditions
CI Pipeline / docker (arm64, ubuntu-24.04-arm) (push) Blocked by required conditions
CI Pipeline / create-manifest (push) Blocked by required conditions
Build and Push Multi-Arch Docker Image / build-and-push (push) Waiting to run
Frontend Tests / test (push) Waiting to run
fix(m3u): fix Celery worker memory leak during M3U/XC refresh (#1012, #1053)
2026-03-05 16:57:15 -06:00
SergeantPanda
2b44bf1f8e changelog: Update changelog for M3U refresh memory improvements. 2026-03-05 16:55:24 -06:00
SergeantPanda
bf87c44a72 Merge branch 'dev' of https://github.com/Dispatcharr/Dispatcharr into pr/CodeBormen/1063 2026-03-05 16:48:34 -06:00
SergeantPanda
78aa8cf353 Enhancement: Change default new client behind seconds from 2 to 5 for stability. 2026-03-05 15:36:12 -06:00
SergeantPanda
badd552747 Tests: Fix DVR test after video player change. 2026-03-05 14:52:10 -06:00
SergeantPanda
9bffd6347d Enhancement: Floating video player now displays the channel, stream, or VOD title in the player header bar. Title is passed through from all preview entry points: channel table, stream table, stream connection card, guide, DVR, recording cards, recording details modal, VOD modal, and series modal. 2026-03-05 14:42:33 -06:00
SergeantPanda
37fa6aac20
Merge pull request #1023 from CodeBormen/fix/940-Duplicate-Recordings-With-Corruption
fix(dvr): fix duplicate recording execution and add manual stop
2026-03-05 14:11:41 -06:00
None
109e52cf0f Update changelog.md 2026-03-05 13:58:22 -06:00
None
ce9f7ccbf9 fix(m3u): fix Celery worker memory leak during M3U/XC refresh
Restructure cleanup in refresh_single_m3u_account so del statements
run before gc.collect(), enabling cyclic garbage collection. Add worker_max_memory_per_child as a safety net against memory fragmentation.

Closes #1012, Closes #1053
2026-03-05 13:47:20 -06:00
SergeantPanda
c02e060c28 Enhancement: EPG output when no days parameter is specified now excludes already-ended programs instead of returning all historical data. 2026-03-05 12:31:36 -06:00
SergeantPanda
f9d4f11cb2 Bug Fix: update EPG data filtering to use end_time instead of start_time 2026-03-05 12:25:38 -06:00
SergeantPanda
4dfdafd1d7 changelog: Update changelog for DVR PR 2026-03-05 11:54:03 -06:00
SergeantPanda
9805732582 Merge branch 'dev' of https://github.com/Dispatcharr/Dispatcharr into pr/CodeBormen/1023 2026-03-05 11:16:20 -06:00
SergeantPanda
06f864ad6d fix(stream_generator): optimize resource and health checks with throttling 2026-03-04 17:37:42 -06:00
None
5f06bd28ba fix(guide): restrict recording indicator to pending/active recordings
Only show the red recording dot on the TV guide for scheduled and in-progress recordings. Completed, stopped, interrupted, and failed recordings are excluded. Including terminal recordings caused false indicators on unrelated channels due to recycled dummy program IDs for channels without real EPG data.
2026-03-04 15:20:41 -06:00
None
a21ec41f8d fix(guide): show recording indicator for completed/stopped recordings
The red dot on the TV guide was filtering out all terminal recordings (completed, stopped, interrupted, failed). Now only interrupted and failed recordings are excluded, so users can see at a glance which past shows were successfully recorded.
2026-03-04 15:05:45 -06:00
Nick Sandstrom
062022b873 Added original styling back
These were mistakenly removed
2026-03-04 08:53:39 -08:00