Commit graph

2753 commits

Author SHA1 Message Date
SergeantPanda
393bfd384c
Merge pull request #1028 from Dispatcharr/dev
Dispatcharr - v0.20.0
2026-02-26 14:05:41 -06:00
SergeantPanda
abba65816b Migrations: Add missing migrations. 2026-02-26 13:25:51 -06:00
SergeantPanda
eae38ff931 changelog: Update changelog for changes to integrations. 2026-02-26 13:23:46 -06:00
SergeantPanda
216575a411
Merge pull request #1020 from Dispatcharr/enhanced-webhooks
enhanced webhooks to support custom headers and payload templates
2026-02-26 13:14:24 -06:00
dekzter
fc3c21e16a revert settings / system 2026-02-26 14:12:51 -05:00
dekzter
dfe5ec6e94 updated template with example jinja 2026-02-26 14:08:01 -05:00
dekzter
d5349dcf4f create scripts directory 2026-02-26 14:07:34 -05:00
SergeantPanda
60c165f422 Enhancement: Stats page "Now Playing" EPG lookup updated to use channel_uuids directly (the proxy stats already key active channels by UUID), removing the need for a UUID→integer ID conversion step introduced alongside the lazy channel-fetch refactor. Stream preview sessions (which use a content hash rather than a UUID as their channel ID) are now filtered out before any API call is made, preventing a backend ValidationError on both the current-programs and by-uuids endpoints when a stream preview is active on the Stats page. 2026-02-26 12:00:29 -06:00
dekzter
b9bda67bc2 indicate on reload if login was already complete and data is loading 2026-02-25 12:52:14 -05:00
dekzter
5e93246b95 fixed swapped settings labels 2026-02-25 11:07:46 -05:00
dekzter
4d6351507f enhanced webhooks to support custom headers and payload templates 2026-02-25 10:59:45 -05:00
Dispatcharr
03c8d55ab9 Fix legacy plugin actions missing events
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
Treat action.events as optional ([] by default) and guard UI rendering so Plugin cards no longer crash.
2026-02-25 08:32:40 -06:00
SergeantPanda
e0e195da92 changelog: Update changelog for get_series api change.
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
2026-02-24 20:01:56 -06:00
SergeantPanda
6f63b59e89
Merge pull request #999 from firestaerter3:fix/xtream-added-field-type
Fix: add tmdb_id and imdb_id to Xtream get_series response
2026-02-24 19:57:47 -06:00
SergeantPanda
246c080f99 changelog: Update changelog for recent PR and login notification. 2026-02-24 19:48:59 -06:00
SergeantPanda
26a6753dcc Enhancement: Streamer accounts attempting to log into the web UI now receive a clear notification explaining they cannot access the UI but their stream URLs still work. Previously the login button would silently stop with no feedback. 2026-02-24 19:48:12 -06:00
SergeantPanda
8d6d99a6c5
Merge pull request #1008 from CodeBormen:Feature/954-1004-user-account-management
Fix #954: Superuser detection; Feature #1004: User account disable/enablement
2026-02-24 19:38:01 -06:00
SergeantPanda
273ba9b3b6
Merge pull request #1016 from znake-oil/fix/episode-uuid-stability
Remove clearing of existing episodes on refresh
2026-02-24 18:37:08 -06:00
SergeantPanda
1791a75f15 Bug Fix: Remove stale episode relations when series relations are deleted as well as remove episodes not seen in current series scan.
Enhancement: Added series_relation FK to M3UEpisodeRelation table to properly link episodes with the m3useriesrelation they came from.
2026-02-24 18:32:48 -06:00
Matt Grutza
3ec62a3d52
Merge branch 'dev' into Feature/954-1004-user-account-management 2026-02-24 14:49:31 -06:00
SergeantPanda
e9a2cb4dbb
Merge pull request #1014 from CodeBormen/fix/861-M3U-downloading-endlessly
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 #861: Prevent M3U/EPG tasks from downloading endlessly
2026-02-24 14:28:36 -06:00
SergeantPanda
4bb75d8e84 changelog: Add to changelog. 2026-02-24 14:27:22 -06:00
dekzter
7dc01a821b
Merge pull request #1019 from Dispatcharr/integrations-fix
pass all details into event triggers, updated custom script default path
2026-02-24 12:42:29 -05:00
SergeantPanda
0566784a68 changelog: Added clarity to api keys feature. 2026-02-24 11:30:39 -06:00
SergeantPanda
9e5fed4496 Revert labels for sidebar back to System >>> Settings
Remove unused imports and code.
2026-02-24 11:25:47 -06:00
dekzter
9bd9985d63 remove empty keys 2026-02-24 12:19:41 -05:00
SergeantPanda
c12c77a198 changelog: Update changelog for api keys feature. 2026-02-24 11:18:06 -06:00
dekzter
9470600474 pass all details into event triggers, updated custom script default path 2026-02-24 12:13:21 -05:00
SergeantPanda
f861b01e8a
Merge pull request #1018 from Dispatcharr/api-keys
Api keys
2026-02-24 10:54:47 -06:00
SergeantPanda
74ce971b75 Bug Fix: Cron schedule got overwrote when changing/loading settings (signals issue) 2026-02-24 10:48:17 -06:00
dekzter
5785fef4df ability to revoke API keys, fixed bug showing another user's api key in the UI 2026-02-24 10:09:34 -05:00
znake-oil
dca72f330e Remove clearing of existing episodes on refresh
These 4 lines were wiping episodes before batch_process_episodes could update them in place, causing new UUIDs to be generated on every refresh.
# batch_process_episodes already handles create vs update correctly using (series, season_number, episode_number) as the stable natural key.
2026-02-24 12:11:19 +01:00
None
54f3ee2185 Remove is_Active reference to user accounts
Removed is_active references and checks for users accounts as the functionality does not align with project direction
2026-02-23 18:39:54 -06:00
SergeantPanda
1f779b01aa refactor: Update Docker image tagging to prevent orphaned untagged images for dev builds.
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-02-23 17:09:34 -06:00
None
e55ef41acb Fix uncovered lock_renewer.stop() paths in refresh_single_m3u_account
Five early-return paths released the Redis lock without stopping the
renewal thread, and the final release_task_lock was outside the finally block making it unreachable on exception. All exit paths now properly
stop the renewer before releasing the lock.
2026-02-23 00:48:07 -06:00
None
c841cfc8fc Fix #861: Prevent M3U endless downloading caused by Redis lock expiry
Large M3U downloads that exceed the 300s Redis lock TTL caused Celery Beat
to re-queue duplicate tasks, creating overlapping downloads that never complete.

Files changed:

- core/utils.py: Add TaskLockRenewer class — a daemon thread that periodically renews Redis lock TTL (every 120s) to prevent expiry during long-running tasks.

- apps/m3u/tasks.py: Apply TaskLockRenewer to refresh_single_m3u_account and refresh_m3u_groups; add HTTP timeout (30s connect, 60s read) to M3U download (the only download path missing one); stream M3U download to disk instead of accumulating in memory; add Celery task time limits (1 hour hard limit).

- apps/epg/tasks.py: Apply TaskLockRenewer to refresh_epg_data and parse_programs_for_tvg_id; add Celery task time limits (30 min / 1 hour).

Verified with a throttled test server: locks renewed at T+120s, T+240s, T+360s; 50,000 streams processed with no duplicate tasks.
2026-02-23 00:34:28 -06:00
None
f453380f5c Remove user account disable/enable UI (keep backend guards)
Removed the frontend UI exposure
while keeping backend guards as defensive measures.

Removed:
- frontend/src/components/forms/User.jsx — Account Enabled switch
- frontend/src/components/tables/UsersTable.jsx — Status column
- apps/accounts/api_views.py — is_active check in TokenRefreshView
- apps/accounts/tests.py — related tests
2026-02-22 20:02:08 -06:00
None
db318e4981 Fix #954: Superuser detection; Feature #1004: User account disable/enable
Bug #954: The initialize_superuser endpoint only checked is_superuser=True, missing admin accounts created via the API (user_level=10). This caused users to intermittently see the "Create Super User" page instead of login.

Feature #1004: Admins can now disable/enable user accounts. Disabled users are blocked from JWT login, token refresh, XC API access, and all
authenticated endpoints. The last active admin cannot be disabled.

Files changed:

Backend:
- apps/accounts/api_views.py — Superuser check uses user_level>=10; token refresh blocks disabled users
- apps/accounts/models.py — CustomUserManager ensures create_superuser() always sets user_level=10
- apps/accounts/serializers.py — Last-admin protection guard; respect is_active on user creation
- apps/accounts/tests.py — new tests covering superuser detection, token
 refresh blocking, last-admin protection, disabled user login/access
- apps/backups/api_views.py — Switched from DRF's IsAdminUser (checks is_staff) to app's IsAdmin (checks user_level) on all 8 endpoints
- apps/backups/tests.py — new tests verifying user_level-based admin permission on backup endpoints
- apps/output/views.py — is_active check on xc_get_user(), xc_movie_stream(), xc_series_stream()
- apps/proxy/ts_proxy/views.py — is_active check on stream_xc()
- core/api_views.py — Admin notification filter uses user_level>=10
- core/developer_notifications.py — Admin checks use user_level>=10

Frontend:
- frontend/src/App.jsx — Null-safe superuser existence check
- frontend/src/components/forms/User.jsx — Account Enabled switch with
  self-disable prevention and tooltip
- frontend/src/components/tables/UsersTable.jsx — Status column (Active/Disabled badge)
2026-02-22 18:05:02 -06:00
dekzter
64cbe0cc36 swapped naming / icons for settings / system 2026-02-21 19:26:53 -05:00
SergeantPanda
8babb7d111 Chore: Update NPM packages.
Some checks failed
CI Pipeline / prepare (push) Has been cancelled
Build and Push Multi-Arch Docker Image / build-and-push (push) Has been cancelled
Frontend Tests / test (push) Has been cancelled
CI Pipeline / docker (amd64, ubuntu-24.04) (push) Has been cancelled
CI Pipeline / docker (arm64, ubuntu-24.04-arm) (push) Has been cancelled
CI Pipeline / create-manifest (push) Has been cancelled
2026-02-21 16:24:40 -06:00
SergeantPanda
95909d98f9 Security: Update npm dependencies to resolve vulnerabilities. 2026-02-21 16:11:06 -06:00
SergeantPanda
29a2e07f96 - Dependency updates:
Some checks failed
Base Image Build / prepare (push) Has been cancelled
Build and Push Multi-Arch Docker Image / build-and-push (push) Has been cancelled
Base Image Build / docker (amd64, ubuntu-24.04) (push) Has been cancelled
Base Image Build / docker (arm64, ubuntu-24.04-arm) (push) Has been cancelled
Base Image Build / create-manifest (push) Has been cancelled
- `Django` 5.2.9 → 6.0.2 (major version upgrade; includes security fixes)
  - `celery` 5.6.0 → 5.6.2
  - `psutil` 7.1.3 → 7.2.2
  - `torch` 2.9.1+cpu → 2.10.0+cpu
  - `sentence-transformers` 5.2.0 → 5.2.3
2026-02-21 15:34:10 -06:00
SergeantPanda
ac37973a9a Roll django back to version 5 (still has remediations). django-celery-beat does not support Django 6 quite yet. Should soon. 2026-02-21 15:32:24 -06:00
SergeantPanda
a0ed2a9c84 specify minimum version for django-celery-beat 2026-02-21 15:29:38 -06:00
dekzter
c410b1c1e7 updated wording / icon for integrations 2026-02-21 13:45:33 -05:00
dekzter
6cf808a4df frontend components for API keys 2026-02-21 13:45:21 -05:00
dekzter
aece3367ce backend work for api key authentication 2026-02-21 13:45:07 -05:00
SergeantPanda
26f7f1025a specify minimum version for django-celery-beat
Some checks failed
Base Image Build / prepare (push) Has been cancelled
CI Pipeline / prepare (push) Has been cancelled
Build and Push Multi-Arch Docker Image / build-and-push (push) Has been cancelled
Frontend Tests / test (push) Has been cancelled
Base Image Build / docker (amd64, ubuntu-24.04) (push) Has been cancelled
Base Image Build / docker (arm64, ubuntu-24.04-arm) (push) Has been cancelled
Base Image Build / create-manifest (push) Has been cancelled
CI Pipeline / docker (amd64, ubuntu-24.04) (push) Has been cancelled
CI Pipeline / docker (arm64, ubuntu-24.04-arm) (push) Has been cancelled
CI Pipeline / create-manifest (push) Has been cancelled
2026-02-20 16:52:48 -06:00
SergeantPanda
f92cd22d4e changelog: Update changelog for django version change. 2026-02-20 16:14:48 -06:00
SergeantPanda
d68367e709 Roll django back to version 5 (still has remediations). django-celery-beat does not support Django 6 quite yet. Should soon. 2026-02-20 16:14:11 -06:00