From 9ace0425104576f3bdc1bc780085ee967a848330 Mon Sep 17 00:00:00 2001 From: npeter83 Date: Sun, 14 Jun 2026 04:40:22 +0200 Subject: [PATCH] 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). --- README.md | 4 ++-- backend/app/config.py | 4 ++-- backend/app/email.py | 14 ++++++------- backend/app/main.py | 4 ++-- backend/app/static/index.html | 2 +- backend/app/youtube/rss.py | 2 +- backend/entrypoint.sh | 2 +- frontend/index.html | 2 +- frontend/package.json | 2 +- frontend/src/components/Header.tsx | 2 +- frontend/src/components/Login.tsx | 2 +- frontend/src/components/OnboardingWizard.tsx | 8 ++++---- frontend/src/components/SettingsPanel.tsx | 10 +++++----- frontend/src/components/legal/LegalLayout.tsx | 2 +- .../src/components/legal/PrivacyPolicy.tsx | 20 +++++++++---------- frontend/src/components/legal/Terms.tsx | 12 +++++------ scripts/backup.ps1 | 4 ++-- scripts/backup.sh | 4 ++-- scripts/restore.ps1 | 4 ++-- scripts/restore.sh | 4 ++-- 20 files changed, 54 insertions(+), 54 deletions(-) diff --git a/README.md b/README.md index 7812ba0..694f2eb 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Subfeed +# Siftlode Self-hosted, multi-user web app for browsing **your own YouTube subscriptions** the way you actually want: precise filtering and sorting (by language, topic, length, age, watch state…), @@ -66,7 +66,7 @@ server) does **not** require re-fetching from YouTube. Copy your `.env` (keep th `TOKEN_ENCRYPTION_KEY` and Google client so stored tokens stay valid), then: ```sh -./scripts/backup.sh # -> backups/subfeed-.dump (Windows: scripts\backup.ps1) +./scripts/backup.sh # -> backups/siftlode-.dump (Windows: scripts\backup.ps1) ./scripts/restore.sh backups/ # on the new host after `docker compose up` ``` diff --git a/backend/app/config.py b/backend/app/config.py index 91bbb49..808dcf6 100644 --- a/backend/app/config.py +++ b/backend/app/config.py @@ -8,7 +8,7 @@ _DEFAULT_SECRET_KEY = "change-me-session-key" class Settings(BaseSettings): model_config = SettingsConfigDict(env_file=".env", extra="ignore") - app_name: str = "Subfeed" + app_name: str = "Siftlode" database_url: str = "postgresql+psycopg://subfeed:subfeed@db:5432/subfeed" @@ -35,7 +35,7 @@ class Settings(BaseSettings): smtp_port: int = 587 smtp_user: str = "" smtp_password: str = "" - smtp_from: str = "" # e.g. "Subfeed "; falls back to smtp_user + smtp_from: str = "" # e.g. "Siftlode "; falls back to smtp_user # --- Sync / YouTube Data API --- # Optional API key for public reads (channels/videos/playlistItems). When set it is diff --git a/backend/app/email.py b/backend/app/email.py index 07da8be..74fcf75 100644 --- a/backend/app/email.py +++ b/backend/app/email.py @@ -56,20 +56,20 @@ def send_access_approved(email: str) -> bool: admin = _admin_contact() body = ( "Hi,\n\n" - "Your request to use Subfeed has been approved — welcome aboard.\n\n" - "Just open Subfeed and sign in with this Google account, and your YouTube\n" + "Your request to use Siftlode has been approved — welcome aboard.\n\n" + "Just open Siftlode and sign in with this Google account, and your YouTube\n" "subscriptions feed will be ready.\n\n" "If you weren't expecting this, you can ignore the message.\n\n" - "— Subfeed" + "— Siftlode" + (f"\n\nQuestions? Just reply to this email ({admin})." if admin else "") ) - return _send([email], "You're in — your Subfeed access is approved", body, reply_to=admin) + return _send([email], "You're in — your Siftlode access is approved", body, reply_to=admin) def send_admin_new_request(admins: list[str], requester: str) -> bool: body = ( - f"{requester} just requested access to Subfeed.\n\n" - "Open Subfeed → Settings → Account → Access requests to approve or deny it.\n\n" + f"{requester} just requested access to Siftlode.\n\n" + "Open Siftlode → Settings → Account → Access requests to approve or deny it.\n\n" "(Reply to this email to reach the requester directly.)\n" ) - return _send(admins, f"Subfeed access request from {requester}", body, reply_to=requester) + return _send(admins, f"Siftlode access request from {requester}", body, reply_to=requester) diff --git a/backend/app/main.py b/backend/app/main.py index 969a909..7b1eca8 100644 --- a/backend/app/main.py +++ b/backend/app/main.py @@ -32,12 +32,12 @@ from app.scheduler import shutdown_scheduler, start_scheduler @asynccontextmanager async def lifespan(app: FastAPI): - log.info("Subfeed starting up") + log.info("Siftlode starting up") start_scheduler() try: yield finally: - log.info("Subfeed shutting down") + log.info("Siftlode shutting down") shutdown_scheduler() diff --git a/backend/app/static/index.html b/backend/app/static/index.html index d3bf388..0b78703 100644 --- a/backend/app/static/index.html +++ b/backend/app/static/index.html @@ -3,7 +3,7 @@ - Subfeed + Siftlode