diff --git a/.assets/perplexica-screenshot.png b/.assets/perplexica-screenshot.png
index 0643098..0bea5d0 100644
Binary files a/.assets/perplexica-screenshot.png and b/.assets/perplexica-screenshot.png differ
diff --git a/README.md b/README.md
index ce2db8b..33e62e6 100644
--- a/README.md
+++ b/README.md
@@ -79,19 +79,19 @@ There are mainly 2 ways of installing Perplexica - With Docker, Without Docker.
Perplexica can be easily run using Docker. Simply run the following command:
```bash
-docker run -p 3000:3000 --name perplexica itzcrazykns1337/perplexica:latest
+docker run -d -p 3000:3000 -v perplexica-data:/home/perplexica/data -v perplexica-uploads:/home/perplexica/uploads --name perplexica itzcrazykns1337/perplexica:latest
```
This will pull and start the Perplexica container with the bundled SearxNG search engine. Once running, open your browser and navigate to http://localhost:3000. You can then configure your settings (API keys, models, etc.) directly in the setup screen.
-**Note**: The image includes both Perplexica and SearxNG, so no additional setup is required.
+**Note**: The image includes both Perplexica and SearxNG, so no additional setup is required. The `-v` flags create persistent volumes for your data and uploaded files.
#### Using Perplexica with Your Own SearxNG Instance
If you already have SearxNG running, you can use the slim version of Perplexica:
```bash
-docker run -p 3000:3000 -e SEARXNG_API_URL=http://your-searxng-url:8080 --name perplexica itzcrazykns1337/perplexica:slim-latest
+docker run -d -p 3000:3000 -e SEARXNG_API_URL=http://your-searxng-url:8080 -v perplexica-data:/home/perplexica/data -v perplexica-uploads:/home/perplexica/uploads --name perplexica itzcrazykns1337/perplexica:slim-latest
```
**Important**: Make sure your SearxNG instance has:
@@ -118,7 +118,7 @@ If you prefer to build from source or need more control:
```bash
docker build -t perplexica .
- docker run -p 3000:3000 --name perplexica perplexica
+ docker run -d -p 3000:3000 -v perplexica-data:/home/perplexica/data -v perplexica-uploads:/home/perplexica/uploads --name perplexica perplexica
```
5. Access Perplexica at http://localhost:3000 and configure your settings in the setup screen.
diff --git a/app.dockerfile b/app.dockerfile
deleted file mode 100644
index 92358e7..0000000
--- a/app.dockerfile
+++ /dev/null
@@ -1,37 +0,0 @@
-FROM node:24.5.0-slim AS builder
-
-RUN apt-get update && apt-get install -y python3 python3-pip sqlite3 && rm -rf /var/lib/apt/lists/*
-
-WORKDIR /home/perplexica
-
-COPY package.json yarn.lock ./
-RUN yarn install --frozen-lockfile --network-timeout 600000
-
-COPY tsconfig.json next.config.mjs next-env.d.ts postcss.config.js drizzle.config.ts tailwind.config.ts ./
-COPY src ./src
-COPY public ./public
-COPY drizzle ./drizzle
-
-RUN mkdir -p /home/perplexica/data
-RUN yarn build
-
-FROM node:24.5.0-slim
-
-RUN apt-get update && apt-get install -y python3 python3-pip sqlite3 && rm -rf /var/lib/apt/lists/*
-
-WORKDIR /home/perplexica
-
-COPY --from=builder /home/perplexica/public ./public
-COPY --from=builder /home/perplexica/.next/static ./public/_next/static
-
-COPY --from=builder /home/perplexica/.next/standalone ./
-COPY --from=builder /home/perplexica/data ./data
-COPY drizzle ./drizzle
-
-RUN mkdir /home/perplexica/uploads
-
-COPY entrypoint.sh ./entrypoint.sh
-RUN chmod +x ./entrypoint.sh
-RUN sed -i 's/\r$//' ./entrypoint.sh || true
-
-CMD ["/home/perplexica/entrypoint.sh"]
\ No newline at end of file
diff --git a/docker-compose.yaml b/docker-compose.yaml
new file mode 100644
index 0000000..50b6785
--- /dev/null
+++ b/docker-compose.yaml
@@ -0,0 +1,15 @@
+services:
+ perplexica:
+ image: itzcrazykns1337/perplexica:latest
+ ports:
+ - '3000:3000'
+ volumes:
+ - data:/home/perplexica/data
+ - uploads:/home/perplexica/uploads
+ restart: unless-stopped
+
+volumes:
+ data:
+ name: 'perplexica-data'
+ uploads:
+ name: 'perplexica-uploads'
diff --git a/docs/API/SEARCH.md b/docs/API/SEARCH.md
index bf0db7a..04f11ef 100644
--- a/docs/API/SEARCH.md
+++ b/docs/API/SEARCH.md
@@ -17,6 +17,7 @@ Before making search requests, you'll need to get the available providers and th
Returns a list of all active providers with their available chat and embedding models.
**Response Example:**
+
```json
{
"providers": [
diff --git a/docs/installation/UPDATING.md b/docs/installation/UPDATING.md
index daa1122..0603671 100644
--- a/docs/installation/UPDATING.md
+++ b/docs/installation/UPDATING.md
@@ -10,7 +10,7 @@ Simply pull the latest image and restart your container:
docker pull itzcrazykns1337/perplexica:latest
docker stop perplexica
docker rm perplexica
-docker run -p 3000:3000 --name perplexica itzcrazykns1337/perplexica:latest
+docker run -d -p 3000:3000 -v perplexica-data:/home/perplexica/data -v perplexica-uploads:/home/perplexica/uploads --name perplexica itzcrazykns1337/perplexica:latest
```
For slim version:
@@ -19,7 +19,7 @@ For slim version:
docker pull itzcrazykns1337/perplexica:slim-latest
docker stop perplexica
docker rm perplexica
-docker run -p 3000:3000 -e SEARXNG_API_URL=http://your-searxng-url:8080 --name perplexica itzcrazykns1337/perplexica:slim-latest
+docker run -d -p 3000:3000 -e SEARXNG_API_URL=http://your-searxng-url:8080 -v perplexica-data:/home/perplexica/data -v perplexica-uploads:/home/perplexica/uploads --name perplexica itzcrazykns1337/perplexica:slim-latest
```
Once updated, go to http://localhost:3000 and verify the latest changes. Your settings are preserved automatically.
diff --git a/package.json b/package.json
index 3bfe63f..7083b66 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "perplexica-frontend",
- "version": "1.11.0",
+ "version": "1.11.2",
"license": "MIT",
"author": "ItzCrazyKns",
"scripts": {
diff --git a/src/app/c/[chatId]/page.tsx b/src/app/c/[chatId]/page.tsx
index 672107a..39b93f0 100644
--- a/src/app/c/[chatId]/page.tsx
+++ b/src/app/c/[chatId]/page.tsx
@@ -1,17 +1,10 @@
'use client';
import ChatWindow from '@/components/ChatWindow';
-import { useParams } from 'next/navigation';
import React from 'react';
-import { ChatProvider } from '@/lib/hooks/useChat';
const Page = () => {
- const { chatId }: { chatId: string } = useParams();
- return (
-
diff --git a/src/components/MessageInputActions/ChatModelSelector.tsx b/src/components/MessageInputActions/ChatModelSelector.tsx
index afc3b3b..ddad581 100644
--- a/src/components/MessageInputActions/ChatModelSelector.tsx
+++ b/src/components/MessageInputActions/ChatModelSelector.tsx
@@ -8,17 +8,16 @@ import {
PopoverPanel,
Transition,
} from '@headlessui/react';
-import { Fragment, useEffect, useState } from 'react';
+import { Fragment, useEffect, useMemo, useState } from 'react';
import { MinimalProvider } from '@/lib/models/types';
+import { useChat } from '@/lib/hooks/useChat';
const ModelSelector = () => {
const [providers, setProviders] = useState {
{model.name}
- Chat models -
-+ Chat models +
+- Embedding models -
-+ Embedding models +
+