Refine README.md for clarity and fix typos

Updated language for clarity and corrected minor typos.
Cette révision appartient à :
Francois CB
2026-07-27 21:29:05 +02:00
révisé par GitHub
Parent 4923746610
révision e2ed426622
+9 -12
Voir le fichier
@@ -37,13 +37,7 @@ real user or handing over a login that sees everything.
2. Behind the scenes the plugin tags the shared item with a unique, random tag 2. Behind the scenes the plugin tags the shared item with a unique, random tag
and records the share. Share a series or a season and the tag goes on and records the share. Share a series or a season and the tag goes on
everything underneath it as well, so the guest can browse down through what everything underneath it as well, so the guest can browse down through what
you shared rather than seeing a single locked node. The tag never goes on you shared.
anything above it: Jellyfin treats a parent's tags as belonging to all of its
children, so tagging the series that a shared season sits in would hand over
every other season too. Share one season and that is all the guest gets, and
the series page is not theirs to open. Lookups only ever go through a keyed
HMAC hash of the token, and the link itself is dropped from the record once
it is revoked or expired.
3. Whoever opens the link gets a throwaway guest user created on the spot, 3. Whoever opens the link gets a throwaway guest user created on the spot,
restricted by that tag to the shared item and its tree, and is signed in restricted by that tag to the shared item and its tree, and is signed in
automatically. They land on the title's page. automatically. They land on the title's page.
@@ -70,16 +64,17 @@ server, not only in the browser:
into its seasons and episodes, a shared season into its episodes. Going up does into its seasons and episodes, a shared season into its episodes. Going up does
not, so a guest sent one season cannot reach the series it belongs to. not, so a guest sent one season cannot reach the series it belongs to.
Be clear about what that last part is: it runs in the browser. A guest who To be clear about what that last part is: it runs in the browser. So a guest who
disables the script, or who uses their token from another client, can reach the disables the script, or who uses their token from another client, can reach the
home screen. They find it empty, because the tag policy answers those queries on home screen. They find it empty, because the tag policy answers those queries on
the server. Which page you are on is the browser's doing, what you can pull is the server. There really isn't anyway to completely lock the user on the media page
the server's. Only the second one is load bearing. from the server pov, the only way would be that the plugin uses its own users and its
own login workflow but that would be unmaintainable and not particularly useful anyway.
Playback works normally, including transcoding and remuxing if you allow it, and Playback works normally, including transcoding and remuxing if you allow it, and
the player's back button still returns them to the title's page. the player's back button still returns them to the title's page.
One honest caveat: if you share a series or season and new episodes get added One issue: if you share a series or season and new episodes get added
to it later, those episodes only pick up the tag (and become visible to the to it later, those episodes only pick up the tag (and become visible to the
guest) the next time the link is redeemed : not the instant they are added. For guest) the next time the link is redeemed : not the instant they are added. For
a one-use link that has already been redeemed, that never happens, so a a one-use link that has already been redeemed, that never happens, so a
@@ -171,10 +166,12 @@ itself as the secret. Within that:
reverse proxy's access log and in browser history. reverse proxy's access log and in browser history.
- Redeeming is a public endpoint with no rate limit. Tokens are 256-bit random, so - Redeeming is a public endpoint with no rate limit. Tokens are 256-bit random, so
guessing one is not realistic, but the endpoint is reachable by anyone. guessing one is not realistic, but the endpoint is reachable by anyone.
- Records are kept after they expire, for audit, and are never pruned automatically (you can do so manually though. - Records are kept after they expire, for audit, and are never pruned automatically (you can do so manually though).
- The `sharelinks-` tag is hidden from non-admins in the web client only. It is - The `sharelinks-` tag is hidden from non-admins in the web client only. It is
still present in the API response for anyone who looks, because that tag is what still present in the API response for anyone who looks, because that tag is what
confines the guest and it cannot be removed without removing the confinement. confines the guest and it cannot be removed without removing the confinement.
- The token used for the guest is a real jellyfin session token. It can be abused in ways normal accounts can be
but in any case, accounts can't really do anything besides watching the media you shared for the duration you set.
## Configuration ## Configuration