Rebrand StreamHoard, strip Emergent.sh platform artifacts

- Remove .emergent/ state dir, tracked .gitconfig, @emergentbase/visual-edits
  dep + craco wiring, emergent.sh script/meta tags, PostHog telemetry snippet
- Rename UI/docs branding Kino -> StreamHoard (README, DEPLOY.md, Navbar,
  Login, Register, AdminShowEpisodes, FastAPI title, health check response)
- Rename docker-compose container/network names to streamhoard-*
- Default admin email domain -> admin@streamhoard.local
This commit is contained in:
Myron Blair
2026-07-23 20:20:29 -05:00
parent d4dffdb6fb
commit e27bb37f7b
18 changed files with 53 additions and 155 deletions
+6 -6
View File
@@ -1,5 +1,5 @@
"""
Backend pytest suite for Kino Personal Media Server.
Backend pytest suite for StreamHoard Personal Media Server.
Tests auth, movies, watchlist, progress, requests, and stream auth.
"""
import os
@@ -8,8 +8,8 @@ import uuid
import pytest
import requests
BASE_URL = os.environ.get("REACT_APP_BACKEND_URL", "https://streamhoard.preview.emergentagent.com").rstrip("/")
ADMIN_EMAIL = "admin@kino.local"
BASE_URL = os.environ.get("REACT_APP_BACKEND_URL", "http://localhost:8001").rstrip("/")
ADMIN_EMAIL = "admin@streamhoard.local"
ADMIN_PASSWORD = "kino-admin-2026"
@@ -32,7 +32,7 @@ def admin_token(api):
@pytest.fixture(scope="session")
def member_token(api):
email = f"TEST_user_{uuid.uuid4().hex[:8]}@kino.local"
email = f"TEST_user_{uuid.uuid4().hex[:8]}@streamhoard.local"
r = api.post(f"{BASE_URL}/api/auth/register", json={"email": email, "password": "pass1234", "name": "Test User"})
assert r.status_code == 200, f"register failed: {r.text}"
data = r.json()
@@ -73,7 +73,7 @@ class TestAuth:
assert r.status_code == 401
def test_register_and_me(self, api):
email = f"TEST_reg_{uuid.uuid4().hex[:8]}@kino.local"
email = f"TEST_reg_{uuid.uuid4().hex[:8]}@streamhoard.local"
r = api.post(f"{BASE_URL}/api/auth/register", json={"email": email, "password": "pass1234", "name": "Reg User"})
assert r.status_code == 200
d = r.json()
@@ -86,7 +86,7 @@ class TestAuth:
assert r2.json()["email"] == email.lower()
def test_register_duplicate(self, api):
email = f"TEST_dup_{uuid.uuid4().hex[:8]}@kino.local"
email = f"TEST_dup_{uuid.uuid4().hex[:8]}@streamhoard.local"
api.post(f"{BASE_URL}/api/auth/register", json={"email": email, "password": "pass1234", "name": "U"})
r = api.post(f"{BASE_URL}/api/auth/register", json={"email": email, "password": "pass1234", "name": "U"})
assert r.status_code == 400
+3 -3
View File
@@ -9,7 +9,7 @@ import pytest
import requests
BASE_URL = os.environ.get("REACT_APP_BACKEND_URL", "").rstrip("/")
ADMIN_EMAIL = "admin@kino.local"
ADMIN_EMAIL = "admin@streamhoard.local"
ADMIN_PASSWORD = "kino-admin-2026"
@@ -36,7 +36,7 @@ def admin_headers(admin_token):
@pytest.fixture(scope="module")
def member(api):
"""Create a fresh member for profile-scoped tests."""
email = f"TEST_p2_{uuid.uuid4().hex[:8]}@kino.local"
email = f"TEST_p2_{uuid.uuid4().hex[:8]}@streamhoard.local"
r = api.post(f"{BASE_URL}/api/auth/register",
json={"email": email, "password": "pass1234", "name": "P2 User"})
assert r.status_code == 200
@@ -101,7 +101,7 @@ class TestProfiles:
def test_cannot_delete_last_profile(self, api):
# fresh user with single profile
email = f"TEST_solo_{uuid.uuid4().hex[:6]}@kino.local"
email = f"TEST_solo_{uuid.uuid4().hex[:6]}@streamhoard.local"
d = api.post(f"{BASE_URL}/api/auth/register",
json={"email": email, "password": "pass1234", "name": "Solo"}).json()
h = {"Authorization": f"Bearer {d['access_token']}"}
+2 -2
View File
@@ -17,7 +17,7 @@ import pytest
import requests
BASE_URL = os.environ["REACT_APP_BACKEND_URL"].rstrip("/")
ADMIN_EMAIL = "admin@kino.local"
ADMIN_EMAIL = "admin@streamhoard.local"
ADMIN_PASSWORD = "kino-admin-2026"
QTEST_VIDEO = "/tmp/qtest.mp4"
@@ -40,7 +40,7 @@ def admin_token(api):
@pytest.fixture(scope="session")
def member_token(api):
email = f"TEST_q_{uuid.uuid4().hex[:8]}@kino.local"
email = f"TEST_q_{uuid.uuid4().hex[:8]}@streamhoard.local"
r = api.post(f"{BASE_URL}/api/auth/register",
json={"email": email, "password": "pass1234", "name": "QTest"},
headers={"Content-Type": "application/json"})