diff --git a/js/i18n/locales/en-US/common.ftl b/js/i18n/locales/en-US/common.ftl
index 5ab551af..c28ab0a1 100644
--- a/js/i18n/locales/en-US/common.ftl
+++ b/js/i18n/locales/en-US/common.ftl
@@ -45,7 +45,7 @@ completing-sign-in = Completing sign-in…
already-logged-in = You're already logged in.
signed-in-as = Signed in as @{ $handle }
signed-in-as-code = Signed in as { $handle }
-sign-in-description = Sign in with your Bluesky handle. You'll be redirected to your PDS to authorize this app.
+sign-in-description = Sign in with your Atmosphere account. You'll be redirected to your PDS to authorize this app.
handle-label = Handle
redirecting = Redirecting…
sign-in-failed = Sign-in failed
@@ -82,7 +82,8 @@ pds-selector-custom-description = Enter your own PDS host URL
pds-selector-custom-url-label = Custom PDS URL
pds-selector-custom-url-placeholder = https://pds.example.com
pds-selector-learn-more = Learn more about self-hosting
-pds-selector-info = Each host has their own policies and reliability standards. Your ATProto data lives on the host you choose and you can migrate later. Note: Streamplace has its own moderation rules - you can be banned from Streamplace regardless of which host you choose.
+pds-selector-info = Each host has their own policies and reliability standards. Your ATProto data lives on the host you choose and you can migrate later.
+pds-selector-different-policies = Note that Streamplace has its own, different, moderation policies - you can be banned from Streamplace regardless of which host you choose.
pds-selector-read-policies = Read { $label }'s Terms of Service and Privacy Policy before continuing.
pds-selector-handle-policy-checkbox = I have read and agree to the handle policy
diff --git a/js/i18n/public/locales/en-US/common.json b/js/i18n/public/locales/en-US/common.json
index f3bf7c04..9b79eea0 100644
--- a/js/i18n/public/locales/en-US/common.json
+++ b/js/i18n/public/locales/en-US/common.json
@@ -35,7 +35,7 @@
"already-logged-in": "You're already logged in.",
"signed-in-as": "Signed in as @{$handle}",
"signed-in-as-code": "Signed in as {$handle}",
- "sign-in-description": "Sign in with your Bluesky handle. You'll be redirected to your PDS to authorize this app.",
+ "sign-in-description": "Sign in with your Atmosphere account. You'll be redirected to your PDS to authorize this app.",
"handle-label": "Handle",
"redirecting": "Redirecting…",
"sign-in-failed": "Sign-in failed",
@@ -53,7 +53,8 @@
"pds-selector-custom-url-label": "Custom PDS URL",
"pds-selector-custom-url-placeholder": "https://pds.example.com",
"pds-selector-learn-more": "Learn more about self-hosting",
- "pds-selector-info": "Each host has their own policies and reliability standards. Your ATProto data lives on the host you choose and you can migrate later. Note: Streamplace has its own moderation rules - you can be banned from Streamplace regardless of which host you choose.",
+ "pds-selector-info": "Each host has their own policies and reliability standards. Your ATProto data lives on the host you choose and you can migrate later.",
+ "pds-selector-different-policies": "Note that Streamplace has its own, different, moderation policies - you can be banned from Streamplace regardless of which host you choose.",
"pds-selector-read-policies": "Read {$label}'s Terms of Service and Privacy Policy before continuing.",
"pds-selector-handle-policy-checkbox": "I have read and agree to the handle policy",
"profile": "Profile",
@@ -169,9 +170,9 @@
"upload-updating": "Updating...",
"upload-view-video": "View video →",
"upload-waiting-process": "Waiting to process...",
- "create-key-description-delete-if-exposed": "If you think your stream key has been exposed, delete it immediately and create a new one!",
- "create-key-description-staff": "Staff will never, ever ask for your stream key!",
- "create-key-do-not-share": "DO NOT SHARE THIS KEY OR SHOW IT ON STREAM, as ANYONE with this key may be able to stream from your account!",
+ "create-key-description-delete-if-exposed": "If you think your stream key has been exposed, delete it immediately and create a new key.",
+ "create-key-description-staff": "We will never, ever, ask for your key.",
+ "create-key-do-not-share": "DO NOT SHARE THIS KEY, including showing it on stream. Anyone in possession of your key may be able to stream from your account.",
"create-key-title": "Are you sure about creating a new stream key?",
"create-stream-key": "Create Stream Key",
"stream-key": "Stream Key",
diff --git a/js/web/package.json b/js/web/package.json
index 14729381..26c8139a 100644
--- a/js/web/package.json
+++ b/js/web/package.json
@@ -35,6 +35,7 @@
"@tiptap/starter-kit": "^3.26.0",
"@tiptap/suggestion": "^3.26.0",
"class-variance-authority": "^0.6.1",
+ "color": "^5.0.3",
"emojibase": "^17.0.0",
"frimousse": "^0.3.0",
"hls.js": "~1.6.16",
diff --git a/js/web/public/locales/en-US/common.json b/js/web/public/locales/en-US/common.json
index 91a9c101..9b79eea0 100644
--- a/js/web/public/locales/en-US/common.json
+++ b/js/web/public/locales/en-US/common.json
@@ -29,16 +29,13 @@
"go-back": "Go Back",
"sign-in": "Sign In",
"log-in": "Log in",
- "sign-up": "Sign up",
"go-home": "Go home",
"try-again": "Try again",
"completing-sign-in": "Completing sign-in…",
- "use-login-page": "Don't see the popup? Use the login page",
- "closing-in": "Closing in {$count}…",
"already-logged-in": "You're already logged in.",
"signed-in-as": "Signed in as @{$handle}",
"signed-in-as-code": "Signed in as {$handle}",
- "sign-in-description": "Sign in with your Bluesky handle. You'll be redirected to your PDS to authorize this app.",
+ "sign-in-description": "Sign in with your Atmosphere account. You'll be redirected to your PDS to authorize this app.",
"handle-label": "Handle",
"redirecting": "Redirecting…",
"sign-in-failed": "Sign-in failed",
@@ -56,7 +53,8 @@
"pds-selector-custom-url-label": "Custom PDS URL",
"pds-selector-custom-url-placeholder": "https://pds.example.com",
"pds-selector-learn-more": "Learn more about self-hosting",
- "pds-selector-info": "Each host has their own policies and reliability standards. Your ATProto data lives on the host you choose and you can migrate later. Note: Streamplace has its own moderation rules - you can be banned from Streamplace regardless of which host you choose.",
+ "pds-selector-info": "Each host has their own policies and reliability standards. Your ATProto data lives on the host you choose and you can migrate later.",
+ "pds-selector-different-policies": "Note that Streamplace has its own, different, moderation policies - you can be banned from Streamplace regardless of which host you choose.",
"pds-selector-read-policies": "Read {$label}'s Terms of Service and Privacy Policy before continuing.",
"pds-selector-handle-policy-checkbox": "I have read and agree to the handle policy",
"profile": "Profile",
@@ -172,9 +170,9 @@
"upload-updating": "Updating...",
"upload-view-video": "View video →",
"upload-waiting-process": "Waiting to process...",
- "create-key-description-delete-if-exposed": "If you think your stream key has been exposed, delete it immediately and create a new one!",
- "create-key-description-staff": "Staff will never, ever ask for your stream key!",
- "create-key-do-not-share": "DO NOT SHARE THIS KEY OR SHOW IT ON STREAM, as ANYONE with this key may be able to stream from your account!",
+ "create-key-description-delete-if-exposed": "If you think your stream key has been exposed, delete it immediately and create a new key.",
+ "create-key-description-staff": "We will never, ever, ask for your key.",
+ "create-key-do-not-share": "DO NOT SHARE THIS KEY, including showing it on stream. Anyone in possession of your key may be able to stream from your account.",
"create-key-title": "Are you sure about creating a new stream key?",
"create-stream-key": "Create Stream Key",
"stream-key": "Stream Key",
diff --git a/js/web/src/components/auth/login-modal.tsx b/js/web/src/components/auth/login-modal.tsx
index a6071a71..6ca369e3 100644
--- a/js/web/src/components/auth/login-modal.tsx
+++ b/js/web/src/components/auth/login-modal.tsx
@@ -18,13 +18,12 @@ import {
Dialog,
DialogContent,
DialogDescription,
- DialogHeader,
DialogTitle,
} from "@/components/ui/dialog";
import { useSession } from "@/lib/session";
import { useStore } from "@/lib/store";
import { useActorTypeahead, type Actor } from "@streamplace/core";
-import { AtSign, CornerDownLeft, Info } from "lucide-react";
+import { AtSign, CornerDownLeft } from "lucide-react";
import { useEffect, useMemo, useState } from "react";
import { useTranslation } from "react-i18next";
@@ -179,10 +178,10 @@ export function LoginModal() {
}}
>
-
+
{t("log-in")}{t("sign-in-description")}
-
+
{submitting ? (
@@ -198,26 +197,7 @@ export function LoginModal() {