SergeantPanda
03c4ffb4e5
Bug Fix: Applying any filter that temporarily empties the channel list (e.g. switching directly between two channel groups, or typing a search query that matches nothing) caused the guide to show a blank/empty view with no programs visible. The VariableSizeList unmounts when filteredChannels becomes empty, destroying its DOM node and resetting scrollLeft to 0. On remount the scroll position was never restored because initialScrollComplete was still true. Fixed by saving the user's current scroll position when the channel list empties mid-transition, then restoring it once new channels have loaded. On first load the guide still scrolls to the current time as before.
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-27 15:47:09 -06:00
SergeantPanda
8eb24cb945
Bug Fix: The channel store refactor changed to loading only channel IDs instead of full channel objects, leaving Object.keys(channels).length always 0 and incorrectly triggering the onboarding state on any empty filter. Fixed by checking channelIds.length instead.
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-26 16:38:09 -06:00
GitHub Actions
cb3402147e
Release v0.20.1
Build and Push Multi-Arch Docker Image / build-and-push (push) Has been cancelled
Frontend Tests / test (push) Has been cancelled
2026-02-26 21:35:42 +00:00
SergeantPanda
622c22bac7
Merge pull request #1030 from Dispatcharr/dev
...
Bug fix: Login form disabled after token expiry:
2026-02-26 15:35:11 -06:00
SergeantPanda
94fc91f5e3
Bug fix: Login form disabled after token expiry: The login button was permanently rendered as disabled ("Logging you in...") on page load after a session expired, preventing users from logging back in. A regression in v0.20.0 caused LoginForm to check if (user) to detect an already-authenticated reload, but the Zustand auth store initializes user as a truthy empty object { username: '', email: '', user_level: '' }, so the loading state was set immediately on every mount. Reverted to pre-regression behavior. ( Fixes #1029 )
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-26 15:27:35 -06:00
GitHub Actions
a26a42f2d4
Release v0.20.0
Build and Push Multi-Arch Docker Image / build-and-push (push) Waiting to run
Frontend Tests / test (push) Waiting to run
2026-02-26 20:09:34 +00:00
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
...
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.
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
...
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.
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.
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:
...
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