Commit graph

2937 commits

Author SHA1 Message Date
SergeantPanda
0bc4c40400 Merge branch 'dev' of https://github.com/Dispatcharr/Dispatcharr into dev
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-03-10 11:12:53 -05:00
SergeantPanda
d89ee4c214 Merge branch 'main' of https://github.com/Dispatcharr/Dispatcharr into dev 2026-03-10 11:12:46 -05:00
SergeantPanda
f678c4e663 Add pull request template for improved contribution guidelines
Some checks failed
Build and Push Multi-Arch Docker Image / build-and-push (push) Has been cancelled
2026-03-10 11:08:03 -05:00
SergeantPanda
0516f4c857 Add contributing guidelines to the repository 2026-03-10 10:59:07 -05:00
SergeantPanda
d473b9325d
Merge pull request #1082 from nick4810:tests/frontend-unit-tests
Tests/frontend unit tests
2026-03-10 09:00:54 -05:00
Nick Sandstrom
5add51c337 Minor refactors for readability 2026-03-09 14:13:30 -07:00
Nick Sandstrom
aeb6997541 Added tests for cards/ components 2026-03-09 14:12:59 -07:00
Nick Sandstrom
7a0e396bc0 Merge remote-tracking branch 'upstream/dev' into test/component-cleanup 2026-03-09 14:04:35 -07:00
SergeantPanda
f75a3134fa tests: More failed test fixes...
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-03-08 21:55:23 -05:00
SergeantPanda
fa143aac41 tests: More frontend test fixes.
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-03-08 21:19:19 -05:00
SergeantPanda
4e66363565 tests: Update frontend tests after sidebar changes. 2026-03-08 21:10:53 -05:00
SergeantPanda
e4ba7b6d20
Merge pull request #943 from CodeBormen/Feature/854-Add-Ability-to-sort-Channels-by-Group
feat: Add sorting by Group and EPG columns to Channels and Streams ta…
2026-03-08 19:01:44 -05:00
SergeantPanda
1c6e9bbf04 changelog: Added clarification about api abilities prior to PR. 2026-03-08 19:00:44 -05:00
SergeantPanda
5f80ab08b6 changelog: Update changelog for table sorting pr. 2026-03-08 18:54:28 -05:00
SergeantPanda
ff2d11a199 Merge branch 'dev' of https://github.com/Dispatcharr/Dispatcharr into pr/CodeBormen/943 2026-03-08 18:50:38 -05:00
SergeantPanda
7899901936 Enhancement: Channels page default splitter ratio changed from 50/50 to 60/40 (channels/streams) so all channel action buttons are visible without scrolling on 1080p displays. 2026-03-08 18:48:20 -05:00
SergeantPanda
39865d3732 Merge branch 'dev' of https://github.com/Dispatcharr/Dispatcharr into pr/CodeBormen/943 2026-03-08 18:04:11 -05:00
SergeantPanda
95c2589594
Merge pull request #922 from jcasimir/ui-navigation
Add configurable navigation ordering and visibility
2026-03-08 17:23:33 -05:00
SergeantPanda
ac71458729 changelog: Update changelog for navigation ordering PR 2026-03-08 17:08:52 -05:00
SergeantPanda
70a0b43c8a Cleanup frontend and backend if valid item ids change. 2026-03-08 17:05:26 -05:00
SergeantPanda
76d980dcee Bug Fix: onLogout is not defined, use logout from auth store 2026-03-08 16:36:36 -05:00
SergeantPanda
63234a4a46 Bug Fix: Restore integrations/system groups and fix channels reference after rebase 2026-03-08 16:35:34 -05:00
SergeantPanda
72e4ce0813 tests: Add a check that a user can not self elevate. 2026-03-08 16:30:50 -05:00
SergeantPanda
0070e66dd1 Bug Fix: Fix double merge race condition in auth.jsx 2026-03-08 16:30:49 -05:00
SergeantPanda
d5aaa0277c security: Do not allow user to give themselves admin or super_user privileges. 2026-03-08 16:30:48 -05:00
SergeantPanda
1a9d2e2777 Remove double error notifications. 2026-03-08 16:30:47 -05:00
SergeantPanda
a4ad9a9135 Move python test into tests folder. Fix frontend test after merge changes. 2026-03-08 16:30:47 -05:00
SergeantPanda
cde39c0e13 Fixed logic with default orders. 2026-03-08 16:30:42 -05:00
SergeantPanda
678240da6e Move navigation settings under ui settings 2026-03-08 16:29:38 -05:00
Jeff Casimir
8fb88827ae Fix code review findings for navigation ordering PR
P1 (Critical):
- Replace undefined @swagger_auto_schema with @extend_schema
- Add custom_properties validation with size limits
- Add merge semantics in serializer update() to prevent data loss

P2 (Important):
- Add debouncing (800ms) for drag operations in NavOrderForm
- Add error handling with notifications for visibility toggle
- Use store getters in Sidebar instead of direct property access
- Cache hiddenNav before render loop

P3 (Nice-to-have):
- Add canHide: false to settings nav item
- Fix admin check to use >= instead of ==
- Fix ESLint unused variable warnings

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-08 16:28:29 -05:00
Jeff Casimir
ed117661b5 Add ability to hide navigation items
- Add eye icon toggle to show/hide nav items in settings panel
- Hidden items stay in position but are dimmed with eye-slash icon
- Sidebar filters out hidden items
- Settings item cannot be hidden
- Reset to Default also clears hidden items
- Add getHiddenNav and toggleNavVisibility to auth store
- Update tests for visibility toggle feature

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-08 16:28:28 -05:00
Jeff Casimir
adc28551a6 Integrate configurable navigation into Settings and Sidebar
- Add Navigation accordion section to Settings page
- Update Sidebar to use getOrderedNavItems() with user's saved order
- Sidebar updates immediately when order changes
- Add test coverage for Navigation settings section

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-08 16:28:02 -05:00
Jeff Casimir
e2205fb454 Add NavOrderForm component for drag-and-drop nav ordering
- Drag-and-drop reorderable list using dnd-kit
- Auto-saves on drop with optimistic update
- Reset to Default button restores role-based defaults
- Shows only items available to user's role
- Add test coverage for admin and non-admin users

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-08 16:25:51 -05:00
Jeff Casimir
e876d6e926 Add navigation preference methods to auth store
- Add updateMe() API method for PATCH requests to /me/
- Add getNavOrder() to retrieve saved navigation order
- Add setNavOrder() to persist navigation order changes
- Add updateUserPreferences() with optimistic updates and rollback

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-08 16:25:49 -05:00
Jeff Casimir
0e34415493 Add centralized navigation configuration
- Extract nav item definitions into config/navigation.js
- Define NAV_ITEMS with id, label, icon, path, adminOnly for each item
- Add DEFAULT_ADMIN_ORDER and DEFAULT_USER_ORDER arrays
- Create getOrderedNavItems() helper for custom ordering
- Handle missing items by appending to end of saved order
- Add comprehensive test coverage

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-08 16:25:47 -05:00
Jeff Casimir
edf81ef6c6 Add PATCH method to /me/ endpoint for user preferences
- Allow users to update their own profile via PATCH /api/accounts/users/me/
- Supports partial updates to custom_properties (including navOrder)
- Add comprehensive test coverage for the endpoint

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-08 16:25:47 -05:00
SergeantPanda
76271fc9fd Bug Fix: Version update notification persisting after upgrading to the notified version (e.g. "v0.20.2 available" shown while already running v0.20.2). Root cause: check_for_version_update.delay() was called from AppConfig.ready(), which fires inside Celery prefork pool subprocesses before the broker connection is established, causing the dispatch to fail silently with no log output. Fixed by moving the startup dispatch to the worker_ready signal in celery.py (consistent with the existing recover_recordings_on_startup pattern), and deleting the stale version-{current_version} notification at the top of the production check path so it is cleared even when GitHub is unreachable. A WebSocket update is sent immediately on deletion so the frontend badge clears without waiting for the API response. 2026-03-08 13:38:18 -05:00
SergeantPanda
0a658007ac
Merge pull request #1062 from JCBird1012:1061
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: guard is_adult parsing against invalid values
2026-03-08 12:03:11 -05:00
SergeantPanda
b61f3f970d changelog: Update changelog for parse_is_adult PR. 2026-03-08 12:02:28 -05:00
SergeantPanda
ea9f4f4bbd Merge branch 'dev' of https://github.com/Dispatcharr/Dispatcharr into pr/JCBird1012/1062 2026-03-08 12:00:46 -05:00
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