diff --git a/projects/keepkey-vault/src/mainview/App.tsx b/projects/keepkey-vault/src/mainview/App.tsx index cc48995b..d6fa77da 100644 --- a/projects/keepkey-vault/src/mainview/App.tsx +++ b/projects/keepkey-vault/src/mainview/App.tsx @@ -13,6 +13,7 @@ import { MobilePanel } from "./components/MobilePanel" import { WalletConnectPanel } from "./components/WalletConnectPanel" import { FirmwareDropZone } from "./components/FirmwareDropZone" import { SplashScreen } from "./components/SplashScreen" +import { isBitcoinOnlyVariant } from "../shared/flags" import { DeviceGrid } from "./components/DeviceGrid" import { DeviceClaimedDialog } from "./components/DeviceClaimedDialog" import { LinuxUdevWarning } from "./components/LinuxUdevWarning" @@ -852,10 +853,13 @@ function App() { ) } + // Bitcoin-only firmware connected — brand the splash orange with a ₿ mark. + const splashBitcoinOnly = isBitcoinOnlyVariant(deviceState.firmwareVariant) + if (phase === "claimed") { return ( <>{splashNav}{resizeHandles}{updateBanner}{firmwareDropZone}{signingOverlay}{pairingOverlay}{passphraseOverlay}{charOverlay}{pinOverlay} - + @@ -883,6 +887,7 @@ function App() { variant={linuxUdevBlocked ? "error" : needsPin || needsPassphrase || isConnecting ? "connecting" : isError ? "error" : "searching"} childrenReady={linuxUdevBlocked ? true : gridReady} onLogoClick={linuxUdevBlocked || needsPin || needsPassphrase ? undefined : () => { rpcRequest("retryConnect").catch(() => {}) }} + isBitcoinOnly={splashBitcoinOnly} > {linuxUdevBlocked ? ( @@ -919,7 +924,7 @@ function App() { return ( <>{resizeHandles}{updateBanner}{incomingTxToast}{firmwareDropZone}{signingOverlay}{pairingOverlay}{passphraseOverlay}{charOverlay}{pinOverlay} {!portfolioLoaded && activeTab === "vault" && ( - + )} void + /** Bitcoin-only firmware connected — brand the splash orange with a ₿ mark. */ + isBitcoinOnly?: boolean } const STATUS_DOT_COLORS: Record, string> = { @@ -22,10 +24,11 @@ const STATUS_DOT_COLORS: Record, strin claimed: 'var(--teal)', } +const BTC_ORANGE = '#F7931A' const RETRY_HINT_DELAY_MS = 10_000 -export function SplashScreen({ statusText, hintText, children, variant = 'searching', childrenReady = false, onLogoClick }: SplashScreenProps) { - const dotColor = STATUS_DOT_COLORS[variant] +export function SplashScreen({ statusText, hintText, children, variant = 'searching', childrenReady = false, onLogoClick, isBitcoinOnly = false }: SplashScreenProps) { + const dotColor = isBitcoinOnly ? BTC_ORANGE : STATUS_DOT_COLORS[variant] const [showRetry, setShowRetry] = useState(false) // Show "Tap to retry" hint after 10s — only when there's a click handler and grid isn't ready @@ -81,11 +84,24 @@ export function SplashScreen({ statusText, hintText, children, variant = 'search + {isBitcoinOnly && !childrenReady && ( + + + + + + Bitcoin-Only KeepKey + + + )} {showRetry && !childrenReady && (