629 Commits

Author SHA1 Message Date
Patrick
29e746dd09 New translations en.json (Japanese) 2026-04-16 05:15:08 +02:00
Patrick
94307d58db New translations en.json (Italian) 2026-04-16 05:15:06 +02:00
Patrick
b667132efe New translations en.json (Hungarian) 2026-04-16 05:15:05 +02:00
Patrick
8ff66448ad New translations en.json (Hebrew) 2026-04-16 05:15:04 +02:00
Patrick
6085e11046 New translations en.json (Finnish) 2026-04-16 05:15:03 +02:00
Patrick
97e684ea30 New translations en.json (Greek) 2026-04-16 05:15:02 +02:00
Patrick
c19d411677 New translations en.json (German) 2026-04-16 05:15:00 +02:00
Patrick
1786591380 New translations en.json (Danish) 2026-04-16 05:14:59 +02:00
Patrick
2d1eb06048 New translations en.json (Czech) 2026-04-16 05:14:58 +02:00
Patrick
ca18e54097 New translations en.json (Catalan) 2026-04-16 05:14:56 +02:00
Patrick
6ac842b2d0 New translations en.json (Arabic) 2026-04-16 05:14:55 +02:00
Patrick
23d7213bc2 New translations en.json (Afrikaans) 2026-04-16 05:14:54 +02:00
Patrick
fcdea48ba8 New translations en.json (Spanish) 2026-04-16 05:14:53 +02:00
Patrick
9f75dbfefe New translations en.json (French) 2026-04-16 05:14:52 +02:00
Patrick
3ac9aa3bdf New translations en.json (Romanian) 2026-04-16 05:14:50 +02:00
kingchenc
75ac9d6e2e fix: resolve "undefined" server display on Samsung TVs and add mDNS (.local) warning
Fixes #319 — Server appears as "undefined" on Samsung TV after network interruptions
when using mDNS (.local) hostnames.

Root cause:
The injected jellyfin_credentials in localStorage were missing the `Name` property.
When the TV couldn't reach the server (mDNS resolution failure), Jellyfin Web had
no cached server name to display, resulting in literal "undefined".

Changes:
- Add `Name` property to injected auto-login credentials using the real ServerName
  from /System/Info/Public, with fallback to the server URL
- Store JellyfinServerName in AppSettings (fetched during server validation and
  authentication, cleared on logout)
- Add the server's LocalAddress (IP-based) as a fallback entry in config.json so
  the TV can still connect when mDNS resolution fails
- Add a visible warning banner in the UI when a .local hostname is detected,
  advising users to use a direct IP address instead
- Add lblMdnsWarning localization key to all 28 language files (translated for
  da, nl, en, fr, de, pt, tr — English fallback for remaining languages)
2026-04-16 04:51:00 +02:00
github-actions[bot]
a128e1be6b chore: update version table in README [skip ci] 2026-04-11 18:29:12 +00:00
Patrick
f3c81a1400 v2.2.0.7 (#322)
# Pull Request Template

## Branch
- [x] I branched off beta (not master) to develop this feature/fix

## Description

NixOS Shell added by @Confused-Engineer #321 
Merged capability calls to prevent unexpected connection error #318 
CustomWGT Path cleared after installation #320 

---

## Type of Change

- [x] Bug fix (non-breaking change)
- [x] New feature (non-breaking change)
- [x] Documentation update

---

## Checklist

- [x] My code follows the existing project structure and style  
- [x] I have tested my changes manually  
- [x] I have added necessary documentation (if applicable)  
- [x] I have verified that the installer still works with the underlying
CLI
2026-04-11 20:16:44 +02:00
github-actions[bot]
74dbde4276 chore: update version table in README [skip ci] 2026-04-11 18:08:21 +00:00
Patrick
912bc84687 Update AppSettings.cs 2026-04-11 20:04:53 +02:00
Patrick
598274ec08 Add NixOS instructions to README
Added instructions for using NixOS with the Samsung2Jellyfin branch.
2026-04-11 20:01:32 +02:00
Patrick
3db936c767 add shell.nix for NixOS Unstable support (#321)
# Pull Request Template

## Branch
- [x] I branched off beta (not master) to develop this feature/fix

## Description

Please include a summary of the change and which issue is fixed. Also
include relevant motivation and context.

Fixes # (issue number, if applicable)

---

## Type of Change

- [ ] Bug fix (non-breaking change)
- [ ] New feature (non-breaking change)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Documentation update
- [ ] Other (please describe):

---

## Checklist

- [ ] My code follows the existing project structure and style  
- [x] I have tested my changes manually  
- [ ] I have added necessary documentation (if applicable)  
- [x] I have verified that the installer still works with the underlying
CLI

---

## Additional Notes

Any other information that reviewers should know, including limitations,
concerns, or context about the change.
2026-04-11 19:55:44 +02:00
Confused-Engineer
ffc314e6c4 Merge pull request #1 from Confused-Engineer/Confused-Engineer-nix
Upload shell.nix
2026-04-11 10:17:15 -04:00
Confused-Engineer
2d6f5492f8 Upload shell.nix 2026-04-11 10:16:46 -04:00
PatrickSt1991
bafcc8721b Merge branch 'beta' of https://github.com/PatrickSt1991/Samsung-Jellyfin-Installer into beta 2026-04-11 14:08:03 +02:00
PatrickSt1991
d7424138c6 Clear CustomWgt path after install 2026-04-11 14:06:56 +02:00
Patrick Stel
fa19289e76 Merge branch 'beta' of https://github.com/PatrickSt1991/Samsung-Jellyfin-Installer into beta 2026-04-10 15:50:49 +02:00
Patrick Stel
3f45b55f02 Single call instead of double preventing connection drop 2026-04-10 15:50:38 +02:00
github-actions[bot]
3916205d56 chore: update version table in README [skip ci] 2026-04-10 12:44:38 +00:00
Patrick
a5e7c0e9ca v2.2.0.6 (#317)
# Pull Request Template

## Branch
- [x] I branched off beta (not master) to develop this feature/fix

## Description

- Added feature by @balcsida, GitHub Token support to prevent rate
limits by using your own GitHub token
- YouTube trailers language fallback by @kingchenc, allowing you to
watch trailers in the selected Jellyfin language
- Network Interface is now saved
- Improved network subnet check

---

## Type of Change

- [x] Bug fix (non-breaking change)
- [x] New feature (non-breaking change)
- [x] Breaking change (fix or feature that would cause existing
functionality to change)
- [x] Documentation update

---

## Checklist

- [x] My code follows the existing project structure and style  
- [x] I have tested my changes manually  
- [x] I have added necessary documentation (if applicable)  
- [x] I have verified that the installer still works with the underlying
CLI
2026-04-10 12:07:43 +02:00
Patrick Stel
d822bd2e9f Feature: Save NetworkInterface
Improvement: Subnet check and IP Search
2026-04-10 11:27:58 +02:00
Patrick
717674ed2f Bump the nuget group with 1 update (#314)
Pinned Tmds.DBus.Protocol at 0.21.3.

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Tmds.DBus.Protocol&package-manager=nuget&previous-version=0.21.2&new-version=0.21.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/Jellyfin2Samsung/Samsung-Jellyfin-Installer/network/alerts).

</details>
2026-04-09 21:11:20 +02:00
dependabot[bot]
32b95a72cf Bump the nuget group with 1 update
Bumps Tmds.DBus.Protocol from 0.21.2 to 0.21.3

---
updated-dependencies:
- dependency-name: Tmds.DBus.Protocol
  dependency-version: 0.21.3
  dependency-type: direct:production
  dependency-group: nuget
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-09 16:51:20 +00:00
Patrick
404496e818 Update FileHelper.cs
Removed obsolete file copy for custom WGT and TPK files
2026-04-09 18:49:00 +02:00
github-actions[bot]
11ed846c1a chore: update version table in README [skip ci] 2026-04-05 18:22:07 +00:00
PatrickSt1991
d02526c1d6 Merge branch 'beta' of https://github.com/PatrickSt1991/Samsung-Jellyfin-Installer into beta 2026-04-05 20:18:57 +02:00
PatrickSt1991
56486c1ec8 Changed IsEnbaled for settings to ServerIpSet 2026-04-05 20:18:48 +02:00
Patrick
a46a352359 New Crowdin updates (#305) 2026-03-30 13:18:45 +02:00
github-actions[bot]
2d0a6525da chore: update version table in README [skip ci] 2026-03-28 06:42:50 +00:00
PatrickSt1991
753fda3407 version bump 2026-03-28 07:39:21 +01:00
Patrick
387c2b501f feat(V17): trailer fallback for non-English metadata languages via TMDB + DuckDuckGo Lite (#304)
Fixes a long-standing Jellyfin upstream bug (jellyfin/jellyfin#12817)
where movies configured with non-English metadata languages (German,
Spanish, French, etc.) show no trailer button because TMDB returns empty
video data for non-English language queries.

## Problem

When Jellyfin fetches metadata with e.g. language=de, TMDB returns 0
trailers even though English trailers exist in their database. Jellyfin
makes no fallback to English. The issue was closed upstream as "not
planned" — unfixed for 2-3 years, affecting every non-English Jellyfin
user.

## Solution

Client-side trailer fallback system built into the existing YouTube fix
(V16 -> V17). No Jellyfin server changes required.

When a movie detail page has no trailer button:

1. TMDB: search for trailer in user's language (via
include_video_language parameter)
2. DuckDuckGo Lite: search "{title} Trailer {language}
site:youtube.com", match by title
3. TMDB: English trailer (cached from step 1, no extra API call)
4. DuckDuckGo Lite: English fallback (cached from step 2, no extra API
call)

Max 2 external HTTP requests (1x TMDB + 1x DDG). Steps 3+4 use cached
results.

## Why DuckDuckGo Lite instead of Google/YouTube search

Google and YouTube aggressively block automated requests with CAPTCHAs,
rate limiting, and bot detection. DuckDuckGo Lite (lite.duckduckgo.com)
returns plain HTML with no JavaScript, no API key required, no CAPTCHAs,
and no bot blocking. DDG Lite has been stable for years with minimal
changes to its HTML structure, making it a reliable fallback for trailer
discovery.

## Technical details

- Language detected from Jellyfin user settings
(document.documentElement.lang), not TV system language
- TMDB API key extracted at runtime from Jellyfin server plugin
configuration (GET /Plugins -> GET /Plugins/{id}/Configuration), falls
back to Jellyfin's default key from TmdbUtils.cs
- DDG results parsed with title extraction: language-matched results
prioritized, non-matched results cached as English fallback
- Trailer button injected as native Jellyfin UI element (same CSS
classes, Material Icons)
- Fullscreen overlay player reuses existing player.html bridge
- Closable via Tizen back button, Escape, Backspace, or video end
- httpsGet helper with 8s timeout and double-callback guard
- 22 non-English languages supported in DDG language map

## Fallback flow

```
Movie detail page loaded
  |
  +-- Trailer button exists? -> Yes -> normal existing fix (CustomPlayer)
  |
  +-- No -> Service: /trailer?tmdbId=X&lang={Jellyfin language}&tmdbKey={runtime key}
              |
              +-- 1. TMDB: trailer in user's language?
              |     -> Found -> play with CustomPlayer
              |
              +-- 2. DDG Lite: "{title} Trailer {language} site:youtube.com"
              |     -> Language matched in title? -> play with CustomPlayer
              |
              +-- 3. TMDB: English trailer (cached from step 1, no extra call)
              |     -> Found -> play with CustomPlayer
              |
              +-- 4. DDG Lite: English fallback (cached from step 2, no extra call)
              |     -> Found -> play with CustomPlayer
              |
              +-- Nothing found -> no trailer available
```

# Pull Request Template

## Branch
- [x] I branched off beta (not master) to develop this feature/fix

## Description

Please include a summary of the change and which issue is fixed. Also
include relevant motivation and context.

Fixes # (issue number, if applicable)

---

## Type of Change

- [x] Bug fix (non-breaking change)
- [x] New feature (non-breaking change)
- [x] Breaking change (fix or feature that would cause existing
functionality to change)
- [-] Documentation update
- [-] Other (please describe):

---

## Checklist

- [x] My code follows the existing project structure and style  
- [-] I have tested my changes manually  
- [-] I have added necessary documentation (if applicable)  
- [-] I have verified that the installer still works with the underlying
CLI
2026-03-28 07:36:55 +01:00
Patrick
016f17ab04 New translations en.json (Portuguese, Brazilian) 2026-03-26 09:43:56 +01:00
Patrick
8e971fc6aa New translations en.json (Vietnamese) 2026-03-26 09:43:55 +01:00
Patrick
ac423c7c04 New translations en.json (English) 2026-03-26 09:43:54 +01:00
Patrick
ec2b9293ee New translations en.json (Chinese Simplified) 2026-03-26 09:43:52 +01:00
Patrick
8cee7d4b97 New translations en.json (Ukrainian) 2026-03-26 09:43:51 +01:00
Patrick
8ecf4a9b8a New translations en.json (Turkish) 2026-03-26 09:43:50 +01:00
Patrick
2e20e6f7b7 New translations en.json (Swedish) 2026-03-26 09:43:49 +01:00
Patrick
eb4ca257f1 New translations en.json (Serbian (Cyrillic)) 2026-03-26 09:43:48 +01:00
Patrick
e6845eebdd New translations en.json (Russian) 2026-03-26 09:43:46 +01:00