diff --git a/app/apple-icon.png b/app/apple-icon.png new file mode 100644 index 0000000..e9f33e9 Binary files /dev/null and b/app/apple-icon.png differ diff --git a/app/icon.png b/app/icon.png new file mode 100644 index 0000000..e9f33e9 Binary files /dev/null and b/app/icon.png differ diff --git a/app/manifest.json b/app/manifest.json index 2d31d86..64be89d 100644 --- a/app/manifest.json +++ b/app/manifest.json @@ -2,11 +2,18 @@ "name": "MiniPerplx - AI-powered Search Engine", "short_name": "MiniPerplx", "description": "A minimalistic AI-powered search engine that helps you find information on the internet using advanced AI models like GPT-4, Claude, and Grok", - "start_url": "/", + "start_url": "/search", "display": "standalone", "background_color": "#ffffff", "theme_color": "#000000", "categories": ["search", "ai", "productivity"], + "icons" : [ + { + "src": "/favicon.ico", + "sizes": "any", + "type": "image/x-icon" + } + ], "screenshots": [ { "src": "/app/opengraph-image.png", diff --git a/app/search/page.tsx b/app/search/page.tsx index 33e10a3..c4bc88b 100644 --- a/app/search/page.tsx +++ b/app/search/page.tsx @@ -128,6 +128,7 @@ import { FlightTracker } from '@/components/flight-tracker'; import { InstallPrompt } from '@/components/InstallPrompt'; import { atomDark } from 'react-syntax-highlighter/dist/cjs/styles/prism'; import { vs } from 'react-syntax-highlighter/dist/cjs/styles/prism'; +import { useMediaQuery } from '@/hooks/use-media-query'; export const maxDuration = 60; @@ -742,92 +743,161 @@ const HomeContent = () => { const changelogs: Changelog[] = [ { id: "1", - title: "New Updates!", + title: "December Updates", images: [ - "https://metwm7frkvew6tn1.public.blob.vercel-storage.com/mplx-changelogs/mplx-new-claude-models.png", - "https://metwm7frkvew6tn1.public.blob.vercel-storage.com/mplx-changelogs/mplx-nearby-search-maps-demo.png", - "https://metwm7frkvew6tn1.public.blob.vercel-storage.com/mplx-changelogs/mplx-multi-search-demo.png" + "https://metwm7frkvew6tn1.public.blob.vercel-storage.com/mplx-changelogs/mplx-search-groups.png", + "https://metwm7frkvew6tn1.public.blob.vercel-storage.com/mplx-changelogs/mplx-grok2.png", + "https://metwm7frkvew6tn1.public.blob.vercel-storage.com/mplx-changelogs/mplx-track-flights.png", + "https://metwm7frkvew6tn1.public.blob.vercel-storage.com/mplx-changelogs/mplx-reterive-back.png", ], - content: - `## **Nearby Map Search Beta** + content:` +## **Search Groups** -The new Nearby Map Search tool is now available in beta! You can use it to find nearby places, restaurants, attractions, and more. Give it a try and let us know what you think! +You can now switch between different search groups like Default, Youtube, X.com, Academic, and more to get results from different sources. -## **Multi Search is here by default** +## **Added Grok 2.0 Vision model** -The AI powered Multiple Query Search tool is now available by default. The LLM model will now automatically suggest multiple queries based on your input and run the searches in parallel. +xAI's Grok 2.0 Vision model is now available on the platform. -## **Claude 3.5 Sonnet(New) and 3.5 Haiku are here!** +## **Default Search Engine** -The new Anthropic models: Claude 3.5 Sonnet and 3.5 Haiku models are now available on the platform. +You can now set MiniPerplx as the default search engine for the platform. Follow the instructions in the [Readme](https://github.com/zaidmukaddam/miniperplx/blob/main/README.md) to set it as default. + +## **Track Flights** + +You can now track flights in real-time with the new Flight Tracker tool. + +## **PWA support** + +The platform now supports Progressive Web App(PWA) features. You can now install the platform as an app on your device. + +## **Reterive tool is back!** + +You can now use the Retrieve tool to get information from the a specific URL. + +## **Trending Queries** + +You can now view the trending queries on the platform. ` } ]; - const ChangeLogs: React.FC<{ open: boolean; setOpen: (open: boolean) => void }> = ({ open, setOpen }) => { - return ( - - -
-

- What's new -

-
-
- {changelogs.map((changelog) => ( -
- - - {changelog.images.map((image, index) => ( - - {changelog.title} - - ))} - - -
-

{changelog.title}

+ + const ChangeLogs = ({ open, setOpen }: { open: boolean; setOpen: (open: boolean) => void }) => { + const isMobile = useMediaQuery("(max-width: 768px)"); + + const ChangelogContent = () => ( + <> + {/* Fixed Header */} +
+

+ What's new +

+
+ +
+ {changelogs.map((changelog) => ( +
+ {/* Carousel */} + + + {changelog.images.map((image, index) => ( + + {changelog.title} + + ))} + + + + {/* Content Section */} +
+

+ {changelog.title} +

+
( -

+

), p: ({ node, className, ...props }) => ( -

+

+ ), + a: ({ node, className, ...props }) => ( + ), }} - className="text-sm" + className="text-sm text-left pr-2" > {changelog.content}

- ))} -
+
+ ))} +
+ + ); + + if (isMobile) { + return ( + + + + + + + + ); + } + + return ( + + + ); }; + const TranslationTool: React.FC<{ toolInvocation: ToolInvocation; result: any }> = ({ toolInvocation, result }) => { const [isPlaying, setIsPlaying] = useState(false); const [audioUrl, setAudioUrl] = useState(null);