Commit graph

2914 commits

Author SHA1 Message Date
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
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