chore: rebrand Subfeed -> Siftlode
Rename all user-facing references (UI wordmark Sift+lode, titles, app name, legal pages, onboarding wizard, emails, README/docs) and infra paths (/srv/subfeed -> /srv/siftlode, image tag, deploy script, backup filenames). Internal identifiers kept on purpose: Postgres user/db "subfeed", logger namespace, localStorage keys, and the subfeed_pgdata volume (renaming would orphan the migrated production data).
This commit is contained in:
parent
6d1d908dc6
commit
6958ed843b
24 changed files with 71 additions and 71 deletions
|
|
@ -33,7 +33,7 @@ export default function Header({
|
|||
className="text-xl font-bold tracking-tight select-none"
|
||||
title="Feed"
|
||||
>
|
||||
Sub<span className="text-accent">feed</span>
|
||||
Sift<span className="text-accent">lode</span>
|
||||
</button>
|
||||
|
||||
<SyncStatus />
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ export default function Login() {
|
|||
<div className="min-h-screen grid place-items-center bg-bg text-fg">
|
||||
<div className="glass w-[min(92vw,420px)] rounded-2xl p-10 text-center">
|
||||
<div className="text-3xl font-bold tracking-tight">
|
||||
Sub<span className="text-accent">feed</span>
|
||||
Sift<span className="text-accent">lode</span>
|
||||
</div>
|
||||
<p className="text-muted my-5 leading-relaxed">
|
||||
A self-hosted, filterable feed of your YouTube subscriptions — sort, tag, and
|
||||
|
|
|
|||
|
|
@ -18,9 +18,9 @@ function ConsentHeadsUp() {
|
|||
<AlertTriangle className="w-4 h-4 shrink-0 mt-0.5 text-amber-400" />
|
||||
<p className="text-xs leading-relaxed text-fg/80">
|
||||
Google will show a <span className="font-medium">"Google hasn't verified this app"</span>{" "}
|
||||
screen — that's expected, because Subfeed hasn't gone through Google's full review.
|
||||
screen — that's expected, because Siftlode hasn't gone through Google's full review.
|
||||
It's safe to continue: click <span className="font-medium">Advanced</span> →{" "}
|
||||
<span className="font-medium">Go to Subfeed</span>. You can revoke access anytime from
|
||||
<span className="font-medium">Go to Siftlode</span>. You can revoke access anytime from
|
||||
your{" "}
|
||||
<a
|
||||
href="https://myaccount.google.com/permissions"
|
||||
|
|
@ -90,7 +90,7 @@ export default function OnboardingWizard({ me, onClose }: { me: Me; onClose: ()
|
|||
</div>
|
||||
<h2 className="text-lg font-semibold">Connect your YouTube subscriptions</h2>
|
||||
<p className="text-sm text-muted leading-relaxed mt-2 mb-4">
|
||||
You're signed in. To build your feed, Subfeed needs{" "}
|
||||
You're signed in. To build your feed, Siftlode needs{" "}
|
||||
<span className="text-fg/90">read-only</span> access to the channels you're
|
||||
subscribed to on YouTube. It never posts, deletes, or changes anything with this.
|
||||
</p>
|
||||
|
|
@ -119,7 +119,7 @@ export default function OnboardingWizard({ me, onClose }: { me: Me; onClose: ()
|
|||
</div>
|
||||
<h2 className="text-lg font-semibold">You're connected</h2>
|
||||
<p className="text-sm text-muted leading-relaxed mt-2 mb-4">
|
||||
Your feed is ready. Optionally, you can let Subfeed{" "}
|
||||
Your feed is ready. Optionally, you can let Siftlode{" "}
|
||||
<span className="text-fg/90">unsubscribe</span> from channels on YouTube for you —
|
||||
this needs an extra write permission. Skip it to stay read-only; you can always
|
||||
enable it later in Settings.
|
||||
|
|
|
|||
|
|
@ -492,7 +492,7 @@ function AccessRow({
|
|||
Granted
|
||||
</span>
|
||||
) : (
|
||||
<Tooltip hint="Redirects to Google to grant the permission. Google shows an 'unverified app' notice — that's expected; click Advanced → Go to Subfeed.">
|
||||
<Tooltip hint="Redirects to Google to grant the permission. Google shows an 'unverified app' notice — that's expected; click Advanced → Go to Siftlode.">
|
||||
<button
|
||||
onClick={onEnable}
|
||||
className="shrink-0 glass-card glass-hover px-3 py-1.5 rounded-xl text-sm transition"
|
||||
|
|
@ -532,8 +532,8 @@ function Account({ me, onOpenWizard }: { me: Me; onOpenWizard: () => void }) {
|
|||
<AccessRow
|
||||
title="Read subscriptions (your feed)"
|
||||
granted={me.can_read}
|
||||
grantedHint="Granted. Subfeed reads the channels you follow to build your feed. It never changes your YouTube account with this."
|
||||
enableHint="Read-only access to your subscriptions — required to build your feed. Subfeed can't modify anything with it."
|
||||
grantedHint="Granted. Siftlode reads the channels you follow to build your feed. It never changes your YouTube account with this."
|
||||
enableHint="Read-only access to your subscriptions — required to build your feed. Siftlode can't modify anything with it."
|
||||
onEnable={() => {
|
||||
window.location.href = "/auth/upgrade?access=read";
|
||||
}}
|
||||
|
|
@ -541,8 +541,8 @@ function Account({ me, onOpenWizard }: { me: Me; onOpenWizard: () => void }) {
|
|||
<AccessRow
|
||||
title="Unsubscribe (write)"
|
||||
granted={me.can_write}
|
||||
grantedHint="Granted. You can unsubscribe from channels on YouTube from inside Subfeed. It only writes when you ask it to."
|
||||
enableHint="Lets Subfeed unsubscribe from channels on YouTube for you. Optional — skip it to stay read-only."
|
||||
grantedHint="Granted. You can unsubscribe from channels on YouTube from inside Siftlode. It only writes when you ask it to."
|
||||
enableHint="Lets Siftlode unsubscribe from channels on YouTube for you. Optional — skip it to stay read-only."
|
||||
onEnable={() => {
|
||||
window.location.href = "/auth/upgrade?access=write";
|
||||
}}
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ export default function LegalLayout({
|
|||
<div className="min-h-screen bg-bg text-fg">
|
||||
<div className="mx-auto w-[min(92vw,720px)] py-12">
|
||||
<a href="/" className="inline-block text-2xl font-bold tracking-tight mb-8">
|
||||
Sub<span className="text-accent">feed</span>
|
||||
Sift<span className="text-accent">lode</span>
|
||||
</a>
|
||||
<div className="glass rounded-2xl p-8">
|
||||
<h1 className="text-2xl font-semibold">{title}</h1>
|
||||
|
|
|
|||
|
|
@ -4,14 +4,14 @@ export default function PrivacyPolicy() {
|
|||
return (
|
||||
<LegalLayout title="Privacy Policy">
|
||||
<p>
|
||||
Subfeed is a personal, non-commercial project operated by an individual in Hungary
|
||||
Siftlode is a personal, non-commercial project operated by an individual in Hungary
|
||||
("we", "us"). It lets you view and organize your own YouTube subscriptions as a
|
||||
filterable feed. This policy explains what data Subfeed accesses, how it is used, and
|
||||
the choices you have. By using Subfeed you agree to this policy.
|
||||
filterable feed. This policy explains what data Siftlode accesses, how it is used, and
|
||||
the choices you have. By using Siftlode you agree to this policy.
|
||||
</p>
|
||||
|
||||
<H2>What we access</H2>
|
||||
<p>Subfeed only accesses data you explicitly authorize, in two separate steps:</p>
|
||||
<p>Siftlode only accesses data you explicitly authorize, in two separate steps:</p>
|
||||
<ul className="list-disc pl-5 space-y-1">
|
||||
<li>
|
||||
<span className="text-fg font-medium">Sign-in (always):</span> your basic Google
|
||||
|
|
@ -31,13 +31,13 @@ export default function PrivacyPolicy() {
|
|||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
You can use Subfeed with sign-in alone, and grant or decline each YouTube permission
|
||||
You can use Siftlode with sign-in alone, and grant or decline each YouTube permission
|
||||
independently.
|
||||
</p>
|
||||
|
||||
<H2>How we use it</H2>
|
||||
<p>
|
||||
Your data is used exclusively to provide Subfeed's features to you: building and
|
||||
Your data is used exclusively to provide Siftlode's features to you: building and
|
||||
displaying your personalized subscription feed, and carrying out actions (such as
|
||||
unsubscribing) that you initiate. We do not use it for advertising, profiling, or any
|
||||
purpose unrelated to the app.
|
||||
|
|
@ -45,7 +45,7 @@ export default function PrivacyPolicy() {
|
|||
|
||||
<H2>Limited Use disclosure</H2>
|
||||
<p>
|
||||
Subfeed's use and transfer of information received from Google APIs to any other app
|
||||
Siftlode's use and transfer of information received from Google APIs to any other app
|
||||
will adhere to the{" "}
|
||||
<LegalLink href="https://developers.google.com/terms/api-services-user-data-policy">
|
||||
Google API Services User Data Policy
|
||||
|
|
@ -65,7 +65,7 @@ export default function PrivacyPolicy() {
|
|||
|
||||
<H2>Retention & deletion</H2>
|
||||
<p>
|
||||
We keep your data while your account is active. You can revoke Subfeed's access to your
|
||||
We keep your data while your account is active. You can revoke Siftlode's access to your
|
||||
Google data at any time at{" "}
|
||||
<LegalLink href="https://myaccount.google.com/permissions">
|
||||
myaccount.google.com/permissions
|
||||
|
|
@ -80,13 +80,13 @@ export default function PrivacyPolicy() {
|
|||
|
||||
<H2>Cookies</H2>
|
||||
<p>
|
||||
Subfeed sets a single, signed session cookie to keep you logged in. It is not used for
|
||||
Siftlode sets a single, signed session cookie to keep you logged in. It is not used for
|
||||
tracking or advertising, and there are no third-party analytics cookies.
|
||||
</p>
|
||||
|
||||
<H2>YouTube & Google</H2>
|
||||
<p>
|
||||
Subfeed uses YouTube API Services. By using Subfeed you also agree to the{" "}
|
||||
Siftlode uses YouTube API Services. By using Siftlode you also agree to the{" "}
|
||||
<LegalLink href="https://www.youtube.com/t/terms">YouTube Terms of Service</LegalLink>,
|
||||
and your use of Google data is subject to the{" "}
|
||||
<LegalLink href="https://policies.google.com/privacy">Google Privacy Policy</LegalLink>.
|
||||
|
|
|
|||
|
|
@ -4,21 +4,21 @@ export default function Terms() {
|
|||
return (
|
||||
<LegalLayout title="Terms of Service">
|
||||
<p>
|
||||
Subfeed is a personal, non-commercial project operated by an individual in Hungary. It
|
||||
Siftlode is a personal, non-commercial project operated by an individual in Hungary. It
|
||||
provides a filterable view of your own YouTube subscriptions. By accessing or using
|
||||
Subfeed, you agree to these Terms. If you do not agree, do not use the service.
|
||||
Siftlode, you agree to these Terms. If you do not agree, do not use the service.
|
||||
</p>
|
||||
|
||||
<H2>The service</H2>
|
||||
<p>
|
||||
Subfeed is offered on an invite-only basis, free of charge, and "as is", without
|
||||
Siftlode is offered on an invite-only basis, free of charge, and "as is", without
|
||||
warranties of any kind. It is a hobby project: features may change, and the service may
|
||||
be slowed, interrupted, or discontinued at any time without notice.
|
||||
</p>
|
||||
|
||||
<H2>Your account & acceptable use</H2>
|
||||
<p>
|
||||
You sign in with your Google account and may only access Subfeed with an email that has
|
||||
You sign in with your Google account and may only access Siftlode with an email that has
|
||||
been invited. You agree to use the service lawfully, not to abuse, disrupt, probe, or
|
||||
overload it, and not to attempt to access other users' data. We may suspend or revoke
|
||||
access at our discretion, for example in case of misuse.
|
||||
|
|
@ -26,7 +26,7 @@ export default function Terms() {
|
|||
|
||||
<H2>Third-party services</H2>
|
||||
<p>
|
||||
Subfeed uses YouTube API Services. By using Subfeed you agree to be bound by the{" "}
|
||||
Siftlode uses YouTube API Services. By using Siftlode you agree to be bound by the{" "}
|
||||
<LegalLink href="https://www.youtube.com/t/terms">YouTube Terms of Service</LegalLink>.
|
||||
Your data is handled as described in our{" "}
|
||||
<a href="/privacy" className="text-accent hover:underline">Privacy Policy</a> and, for
|
||||
|
|
@ -38,7 +38,7 @@ export default function Terms() {
|
|||
<p>
|
||||
To the maximum extent permitted by law, the service is provided without warranty, and
|
||||
the operator is not liable for any indirect, incidental, or consequential damages, or
|
||||
for any loss of data, arising from your use of Subfeed. Your sole remedy if you are
|
||||
for any loss of data, arising from your use of Siftlode. Your sole remedy if you are
|
||||
dissatisfied is to stop using the service and revoke its access to your account.
|
||||
</p>
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue