- The Downloads module, its rail icon and badge are gone. A bookmark, the remembered page and an old
history entry that name it land on Files (urlState.resolvePage); `g d` goes to Files too.
- Users page: a Storage tab — the disk in numbers, every user's use against their own limit with
their file count, every user's downloads; aligned tables, one menu per row (edit / reset quota,
open source, copy, the owner's quota). The admin storage rows carry quota + file count, the admin
job list its owner.
- Settings: a Downloads tab — the download formats in one list (duplicate a built-in, edit or delete
your own) and the site sign-ins, moved from Account.
- "View" on an added download, a clip or a converting upload opens the tray on that row (unfolded,
back if closed; a finished one opens as a file; under a player it opens without taking focus).
- The download dialog opens on the format used last.
- DataTable: `pager={false}` for a short list, `cardRow` to give a lone "…" its own card line.
- Welcome and README speak of Files; a new Files screenshot.
138 lines
7.1 KiB
JSON
138 lines
7.1 KiB
JSON
{
|
|
"hero": {
|
|
"title": "Your subscriptions, in one quiet Feed.",
|
|
"subtitle": "Every upload from the channels you follow, in one place you can actually filter, search and sort. No algorithm deciding what you see — and no Shorts or livestreams unless you want them.",
|
|
"trust": "Self-hosted and private: your data stays on your own server. Sign in with email, or continue with Google."
|
|
},
|
|
"openSource": {
|
|
"title": "Free and open source",
|
|
"body": "The whole thing is open — read the code, run your own private copy, or open an issue.",
|
|
"link": "View the source"
|
|
},
|
|
"preview": {
|
|
"feed": "The Feed — filter by channel, language, topic, length and date.",
|
|
"channels": "Channels",
|
|
"playlists": "Playlists",
|
|
"player": "In-app player",
|
|
"files": "Your files",
|
|
"search": "Search results",
|
|
"plex": "Your Plex library"
|
|
},
|
|
"features": {
|
|
"heading": "What it does",
|
|
"readable": {
|
|
"title": "Your subscriptions, actually readable",
|
|
"body": "Sort and filter by channel, tag, language, topic, length or date, and save your setups as views."
|
|
},
|
|
"neverMiss": {
|
|
"title": "Never miss an upload",
|
|
"body": "Every video from every channel lands in one Feed; Shorts and livestreams stay tucked away by default."
|
|
},
|
|
"search": {
|
|
"title": "Search all of YouTube",
|
|
"body": "Search right from your Feed — results play, save and add to playlists like any other video."
|
|
},
|
|
"playlists": {
|
|
"title": "Playlists that sync both ways",
|
|
"body": "Build them locally and keep them in two-way sync with YouTube."
|
|
},
|
|
"player": {
|
|
"title": "Watch in-app, resume anywhere",
|
|
"body": "A built-in player picks each video up where you left off, with keyboard and scroll controls."
|
|
},
|
|
"files": {
|
|
"title": "Files",
|
|
"body": "Every file you keep in one library: paste a link anywhere to download it, trim or join a video, upload your own, then share a link that plays on any phone."
|
|
},
|
|
"plex": {
|
|
"title": "Your Plex library too",
|
|
"body": "Browse and play what your Plex server already holds, right alongside your Feed."
|
|
},
|
|
"private": {
|
|
"title": "Self-hosted and private",
|
|
"body": "Run it yourself, multi-user, in English and Hungarian — your data stays yours."
|
|
}
|
|
},
|
|
"auth": {
|
|
"signinTitle": "Sign in",
|
|
"createTitle": "Create your account",
|
|
"forgotTitle": "Reset your password",
|
|
"resetTitle": "Set a new password",
|
|
"email": "Email",
|
|
"password": "Password",
|
|
"newPassword": "New password (min {{min}} characters)",
|
|
"invalidEmail": "Enter a valid email address",
|
|
"weakPassword": "Password must be at least {{min}} characters",
|
|
"genericError": "Something went wrong. Please try again.",
|
|
"working": "Please wait…",
|
|
"signinButton": "Sign in",
|
|
"createButton": "Create account",
|
|
"forgotButton": "Send reset link",
|
|
"resetButton": "Set password",
|
|
"resendButton": "Resend verification",
|
|
"resendTitle": "Resend verification email",
|
|
"resendLink": "Didn't get the verification email?",
|
|
"createLink": "Create an account",
|
|
"forgotLink": "Forgot password?",
|
|
"backToSignin": "Back to sign in",
|
|
"or": "or",
|
|
"google": "Continue with Google",
|
|
"registerDone": "Almost there — check your email for a confirmation link, and your spam folder if it isn't there in a minute. After you confirm it, an admin approves your account before you can sign in.",
|
|
"forgotDone": "If that email has an account, we've sent a reset link. Check your inbox, and your spam folder if it hasn't arrived in a minute.",
|
|
"resetDone": "Your password has been set — you can sign in now",
|
|
"deadLink": {
|
|
"title": "This link is no longer valid",
|
|
"body": "A password reset link lasts one hour and works once. This one has expired, has already been used, or belongs to an account that no longer exists — so there is nothing to set a password on. Ask for a fresh one and we'll email it.",
|
|
"short": "This reset link is no longer valid",
|
|
"cta": "Request a new link"
|
|
},
|
|
"verifyOk": "Email confirmed. Once an admin approves your account, you can sign in.",
|
|
"verifyOkReset": "Email confirmed. The password this account registered with had been cleared for security — choose a new one to sign in.",
|
|
"verifyOkResetCta": "Set a new password",
|
|
"verifyInvalid": "That verification link is invalid or has expired",
|
|
"verifyUnreachable": "Couldn't reach the server to confirm that link, so it hasn't been used up. Try opening it again in a moment.",
|
|
"resendCta": "Send a new link",
|
|
"resendDone": "If that email has an unconfirmed account, we've sent a new confirmation link. Check your inbox, and your spam folder if it hasn't arrived in a minute.",
|
|
"oauthCancelled": "Google sign-in was cancelled. You can try again or use email and password.",
|
|
"accessRequested": "Thanks — we recorded your request. An admin will review it.",
|
|
"accessRequestedFor": "We've recorded your access request for:",
|
|
"accessRequestedReview": "An admin will review it, and we'll email you either way.",
|
|
"accessLinked": "You already had a request on file for this mailbox, under a different spelling:",
|
|
"accessLinkedTail": "Google returns one fixed spelling of a Gmail address, so we linked this sign-in to that request instead of opening a second one. Any mail goes to the address above.",
|
|
"blocked": {
|
|
"addressLabel": "Address on file",
|
|
"operator": "If you think this is a mistake, contact the operator at {{contact}}.",
|
|
"gate": {
|
|
"emailDone": "Email address confirmed",
|
|
"emailPending": "Email address — not confirmed yet",
|
|
"approvalDone": "Admin approval — granted",
|
|
"approvalPending": "Admin approval — pending"
|
|
},
|
|
"email_unverified": {
|
|
"title": "Confirm your email address",
|
|
"body": "Your password is correct — we just can't let you in until the address on this account is confirmed. Open the link we emailed you, or ask for a new one.",
|
|
"short": "Confirm your email address first — check your inbox"
|
|
},
|
|
"pending_approval": {
|
|
"title": "Waiting for approval",
|
|
"body": "Your password is correct and your address is confirmed. An admin still has to let you in — we'll email you as soon as they decide.",
|
|
"short": "Your account is waiting for admin approval"
|
|
},
|
|
"suspended": {
|
|
"title": "Account suspended",
|
|
"body": "This account has been suspended, so it can't sign in by any method.",
|
|
"short": "This account has been suspended"
|
|
},
|
|
"invalid": {
|
|
"short": "Invalid email or password"
|
|
},
|
|
"rate_limited": {
|
|
"short": "Too many attempts. Try again shortly."
|
|
}
|
|
},
|
|
"accessDenied": "That account isn't approved for this instance yet — register below or ask the admin for access",
|
|
"suspended": "This account has been suspended and can't sign in. If you think this is a mistake, contact the operator (check your email for details).",
|
|
"deleted": "Your account and all its data were permanently deleted. We've emailed you a confirmation."
|
|
}
|
|
}
|