Commit Graph

1418 Commits

Author SHA1 Message Date
unkin-agent e23d1a23be feat: add a durable transcode session store
Transcode state lives only in the process that started ffmpeg, so a pod restart
drops every in-flight HLS stream with no way for a peer to pick it up.

- add ITranscodeSessionStore plus the TranscodeSession and LiveStreamSession records
- add RedisTranscodeSessionStore with TTL leases and an atomic Lua takeover script
- add NullTranscodeSessionStore for single-instance deployments
- pick the store from Jellyfin:TranscodeStore:RedisConnectionString at startup
2026-09-11 23:56:19 +10:00
unkin-agent e68455f0ed feat(db): add opt-in PostgreSQL database provider
Multi-replica deployments cannot share a SQLite file, so the database has to
move to a server engine before the rest of the HA work is usable.

- add Jellyfin.Database.Providers.PostgreSQL with an EF Core Npgsql provider
- register the provider and a pooled NpgsqlDataSource when DatabaseType is Jellyfin-PostgreSQL
- accept postgresql:// URIs and POSTGRES_CONNECTION_STRING alongside CustomProviderOptions
- add container-backed provider, CRUD, concurrency and migration tests
2026-09-11 23:56:04 +10:00
Cody Robibero edb6cd11da Merge branch 'master' into fix-code-migration 2026-09-06 07:34:30 -04:00
Shadowghost 63553803b1 Remove the unreachable null service provider path from code migrations 2026-09-06 09:49:39 +02:00
Shadowghost ca90347dc2 Resolve migration routine loggers from the application container 2026-09-06 07:54:11 +02:00
Shadowghost 74ce774eff Revert to doing after migration and on shutdown 2026-09-05 17:33:47 +02:00
Shadowghost 9c259027df Cleanup 2026-09-05 08:55:12 +02:00
Shadowghost c622a16261 Don't dispose application singletons after running a code migration 2026-09-05 07:37:09 +02:00
Shadowghost 5465e0c694 Optimize the database on startup instead of before shutdown 2026-09-05 07:36:17 +02:00
Shadowghost 0b5bbb528a Optimize database after running migrations 2026-09-04 18:57:54 +02:00
Cody Robibero 4910aafa1a Merge pull request #17743 from Shadowghost/migration-logging
Add progress logging to data migrations
2026-08-31 17:49:14 -04:00
Shadowghost 05844d60c1 Apply review suggestions, remove Logo on config page 2026-08-31 20:44:41 +02:00
Shadowghost d1dda7f6c5 Add progress logging to data migrations 2026-08-31 10:39:39 +02:00
Shadowghost ff36560575 Enable local similarity providers on libraries upgraded from 10.11 2026-08-31 08:37:57 +02:00
Shadowghost a81b90f570 Fix tests 2026-08-25 21:03:51 +02:00
Shadowghost 8e80677bdd Fix series merging leaking across libraries and under-counting merged children 2026-08-21 22:48:47 +02:00
Cody Robibero e3a8d209b4 Merge pull request #17455 from Shadowghost/fix-migrations
Reevaluate pending migrations after each one instead of per stage
2026-08-01 08:06:33 -04:00
Cody Robibero e816870f67 Merge pull request #17416 from Shadowghost/enable-duplicate-playlist-children
Allow duplicate LinkedChildren for Playlists
2026-08-01 08:06:02 -04:00
Shadowghost 8293eb26b9 Fix playlist entries being lost on migration and library scans 2026-07-29 14:40:49 +02:00
Shadowghost f571cd5a6a Reevaluate pending migrations after each one instead of per stage 2026-07-27 12:35:59 +02:00
Cody Robibero 02d8e7d828 Merge pull request #17417 from Shadowghost/series-merge-fixes
Fix series merging
2026-07-26 16:19:11 -04:00
Shadowghost 95330223f4 Speedup migration 2026-07-23 22:38:45 +02:00
Shadowghost d4cddb8a5d Fix series merging 2026-07-23 14:03:13 +02:00
Shadowghost dc300fae53 Allow duplicate LinkedChildren for Playlists 2026-07-23 13:41:51 +02:00
Shadowghost 929e1936eb Apply cleaning logic on ForcedSortName 2026-07-22 08:30:29 +02:00
Bond-009 dd0b273b26 Fix Swagger UI auth docs (#12990) (#16910) 2026-07-17 23:48:04 +02:00
Nils Lehnen f8ffccae7f Use InvariantCulture when parsing machine-generated dates
DateTime.TryParse without an IFormatProvider falls back to the current
thread culture, so the same string can parse differently (or fail)
depending on the server's locale. None of these call sites deal with
user-entered text - they parse dates that come from filenames, an
HTTP header, ffprobe metadata and values the app itself wrote to the
auth database - so InvariantCulture is the correct provider everywhere
here.

Fixes the S6580 / CA1305 warnings on these call sites.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 23:55:31 +02:00
Cody Robibero a83920c5a7 Merge pull request #17162 from Shadowghost/batch-duplicate-cleanup-deletes
Batch duplicate-cleanup deletes in merge migrations
2026-06-27 10:22:11 -04:00
Cody Robibero ff36b1b417 Merge pull request #17154 from joshuaboniface/enhance-startup-ux
Revamp startup UI for visual style and usability
2026-06-27 09:48:42 -04:00
Joshua M. Boniface 31070e8208 Add a cancelable redirect handoff and drop the transitional migration status
When the server finishes starting, show "Jellyfin started successfully" with a
5-second "Redirecting in N…" countdown and a Cancel button instead of reloading
immediately. Cancel stops the countdown and the background refresh so the
startup output can be reviewed, and offers a "Continue to Jellyfin" button to
reload manually. The buttons use the web client's emby-button styling.

Also drop the transitional "Applying migrations" activity: it only showed
briefly while the pending migration set was read, or for the whole step when
nothing was pending, so startup now goes from "Preparing migrations" straight
into "Running migration X of Y".
2026-06-25 00:42:31 -04:00
Joshua M. Boniface 2c98ad99db Improve UX to fully match Jellyfin dashboards 2026-06-25 00:08:20 -04:00
Shadowghost af82aceadb Batch duplicate-cleanup deletes in merge migrations 2026-06-22 23:16:47 +02:00
Joshua M. Boniface 58e9e3423a Remove server version from page title
This leaks additional information publicly, and is not really
necessary/useful.
2026-06-22 02:32:59 -04:00
Joshua M. Boniface c257fd5004 Make the startup log a bounded, soft-refreshing scrolling viewport
Order the startup log oldest-to-newest inside a height-bounded panel that
scrolls internally and never extends past the bottom of the window. Refresh it
with a background fetch that swaps the log list in place instead of reloading
the whole page, preserving the user's scroll position and only following to the
bottom when they are already there. A full page reload now happens only on the
final transition to the running server or to the error state.
2026-06-22 00:00:38 -04:00
Joshua M. Boniface 0046adda29 Restyle the startup UI and add a generic startup activity line
Restyle the startup/migration holding page to match the Jellyfin dark theme,
with the inline wordmark logo, a gradient spinner and a recolored startup log
tree, and move the Morestachio template rendering into a reusable
StartupUiRenderer.

Add a curated, non-identifying "current activity" line to the always-visible
header (for example "Initializing server" or "Running migration X of Y"),
reported from the startup flow and the migration service so it never leaks
server details to unauthenticated clients. Move the log download into a
"Download logs" link in the log panel header, and show only the header, with
no log hints, to non-local clients.
2026-06-22 00:00:38 -04:00
Joshua M. Boniface b60c535c84 Add progress logging and batch deletion for logs
After resolving duplicates the migration deleted all items in one silent
pass (per-id GetItemById plus a single DeleteItemsUnsafeFast), which looks
hung for minutes on large libraries. Delete in batches of 500 and log
progress per batch, which also avoids one oversized delete transaction.
2026-06-21 23:31:25 -04:00
Shadowghost 12f718e7bb Fix CleanName and CleanValue refresh 2026-06-10 10:09:01 +02:00
Shadowghost f584759638 Drop linked alternate versions pointing at owned items in migration
(cherry picked from commit 40afd403a655ada6cfa30b577454bb766ea2099f)
2026-06-07 23:06:37 +02:00
Bond-009 ec43ea156e Merge pull request #16941 from Shadowghost/fix-external-data-pruning
Fix external data pruning on item deletion
2026-06-07 20:28:34 +02:00
theguymadmax a6ae68433a Re-disable legacy authorization methods by default 2026-05-31 15:12:44 -04:00
Shadowghost bdb8250300 Fix filename 2026-05-31 20:02:00 +02:00
Bond-009 11130030d2 Backport: Fix/user manager collation (#16919)
Backport: Fix/user manager collation
2026-05-26 20:59:20 +02:00
Shadowghost a05bde53d4 Fix external data pruning on item deletion 2026-05-26 20:44:03 +02:00
chasus 9569b4550d Fix Swagger UI auth docs (#12990) 2026-05-24 00:04:10 +10:00
jakobkukla 37350282cc Run tree-wide dotnet format 2026-05-21 20:48:41 +02:00
Bond-009 e63bc1e27c Merge pull request #16861 from JPVenson/fix/fixMigrations12.0
Reorder Migrations and fix failing migration
2026-05-21 19:32:57 +02:00
JPVenson 49cc2f7899 Modernize version display in UI (#16862)
Modernize version display in UI
2026-05-21 19:27:55 +02:00
JPVenson 9d20aefd89 Reorder migration handling for extra column 2026-05-15 20:10:33 +00:00
JPVenson f73fc1feb2 Update filenaming scheme to match EFCore one 2026-05-15 19:03:08 +00:00
Shadowghost 95164883c1 Add Fallback 2026-05-12 23:18:38 +02:00