diff --git a/personas-open-source/public/robots.txt b/personas-open-source/public/robots.txt new file mode 100644 index 0000000000..fe00f5a311 --- /dev/null +++ b/personas-open-source/public/robots.txt @@ -0,0 +1,7 @@ +User-agent: * +Allow: / +Allow: /u/* + +User-agent: Twitterbot +Allow: / +Allow: /u/* diff --git a/personas-open-source/src/app/chat/page.tsx b/personas-open-source/src/app/chat/page.tsx index 1819c415d7..d3d35e94ee 100644 --- a/personas-open-source/src/app/chat/page.tsx +++ b/personas-open-source/src/app/chat/page.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useState, useEffect, useCallback, useRef } from 'react'; +import { useState, useEffect, useCallback, useRef, useMemo } from 'react'; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; @@ -508,6 +508,23 @@ function ChatContent() { ); const inputRef = useRef(null); + + const getStoreUrl = useMemo(() => { + if (typeof window !== 'undefined') { + // Check if user is on iOS + const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent); + // Check if user is on Android + const isAndroid = /Android/.test(navigator.userAgent); + + if (isIOS) { + return 'https://apps.apple.com/us/app/friend-ai-wearable/id6502156163'; + } else if (isAndroid) { + return 'https://play.google.com/store/apps/details?id=com.friend.ios'; + } + } + // Default to iOS App Store + return 'https://apps.apple.com/us/app/friend-ai-wearable/id6502156163'; + }, []); useEffect(() => { const handleResize = () => { @@ -658,15 +675,25 @@ function ChatContent() { -
-
- Omi by Based Hardware © 2025 +
+
+
-
- - - - +
+
+ Omi by Based Hardware © 2025 +
+
+ + + + +