Compare commits
13 Commits
809b625a34
...
v1.11.0-rc
Author | SHA1 | Date | |
---|---|---|---|
|
57407112fb | ||
|
b280cc2e01 | ||
|
e6ebf892c5 | ||
|
b754641058 | ||
|
722f4f760e | ||
|
01e04a209f | ||
|
0299fd1ea0 | ||
|
cf8dec53ca | ||
|
d5c012d748 | ||
|
2ccbd9a44c | ||
|
ccd89d48d9 | ||
|
87d788ddef | ||
|
68c43ea372 |
0
.assets/manifest.json
Normal file
2
.gitignore
vendored
@@ -37,3 +37,5 @@ Thumbs.db
|
|||||||
# Db
|
# Db
|
||||||
db.sqlite
|
db.sqlite
|
||||||
/searxng
|
/searxng
|
||||||
|
|
||||||
|
certificates
|
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
<hr/>
|
<hr/>
|
||||||
|
|
||||||
[](https://discord.gg/26aArMy8tT)
|
[](https://discord.gg/26aArMy8tT)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -135,7 +135,7 @@ If you're encountering an Ollama connection error, it is likely due to the backe
|
|||||||
|
|
||||||
3. **Linux Users - Expose Ollama to Network:**
|
3. **Linux Users - Expose Ollama to Network:**
|
||||||
|
|
||||||
- Inside `/etc/systemd/system/ollama.service`, you need to add `Environment="OLLAMA_HOST=0.0.0.0"`. Then restart Ollama by `systemctl restart ollama`. For more information see [Ollama docs](https://github.com/ollama/ollama/blob/main/docs/faq.md#setting-environment-variables-on-linux)
|
- Inside `/etc/systemd/system/ollama.service`, you need to add `Environment="OLLAMA_HOST=0.0.0.0:11434"`. (Change the port number if you are using a different one.) Then reload the systemd manager configuration with `systemctl daemon-reload`, and restart Ollama by `systemctl restart ollama`. For more information see [Ollama docs](https://github.com/ollama/ollama/blob/main/docs/faq.md#setting-environment-variables-on-linux)
|
||||||
|
|
||||||
- Ensure that the port (default is 11434) is not blocked by your firewall.
|
- Ensure that the port (default is 11434) is not blocked by your firewall.
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "perplexica-frontend",
|
"name": "perplexica-frontend",
|
||||||
"version": "1.11.0-rc1",
|
"version": "1.11.0-rc2",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"author": "ItzCrazyKns",
|
"author": "ItzCrazyKns",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
BIN
public/icon-100.png
Normal file
After Width: | Height: | Size: 916 B |
BIN
public/icon-50.png
Normal file
After Width: | Height: | Size: 515 B |
BIN
public/icon.png
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
public/screenshots/p1.png
Normal file
After Width: | Height: | Size: 183 KiB |
BIN
public/screenshots/p1_small.png
Normal file
After Width: | Height: | Size: 130 KiB |
BIN
public/screenshots/p2.png
Normal file
After Width: | Height: | Size: 627 KiB |
BIN
public/screenshots/p2_small.png
Normal file
After Width: | Height: | Size: 202 KiB |
@@ -11,3 +11,11 @@
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media screen and (-webkit-min-device-pixel-ratio: 0) {
|
||||||
|
select,
|
||||||
|
textarea,
|
||||||
|
input {
|
||||||
|
font-size: 16px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
54
src/app/manifest.ts
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
import type { MetadataRoute } from 'next';
|
||||||
|
|
||||||
|
export default function manifest(): MetadataRoute.Manifest {
|
||||||
|
return {
|
||||||
|
name: 'Perplexica - Chat with the internet',
|
||||||
|
short_name: 'Perplexica',
|
||||||
|
description:
|
||||||
|
'Perplexica is an AI powered chatbot that is connected to the internet.',
|
||||||
|
start_url: '/',
|
||||||
|
display: 'standalone',
|
||||||
|
background_color: '#0a0a0a',
|
||||||
|
theme_color: '#0a0a0a',
|
||||||
|
screenshots: [
|
||||||
|
{
|
||||||
|
src: '/screenshots/p1.png',
|
||||||
|
form_factor: 'wide',
|
||||||
|
sizes: '2560x1600',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
src: '/screenshots/p2.png',
|
||||||
|
form_factor: 'wide',
|
||||||
|
sizes: '2560x1600',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
src: '/screenshots/p1_small.png',
|
||||||
|
form_factor: 'narrow',
|
||||||
|
sizes: '828x1792',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
src: '/screenshots/p2_small.png',
|
||||||
|
form_factor: 'narrow',
|
||||||
|
sizes: '828x1792',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
icons: [
|
||||||
|
{
|
||||||
|
src: '/icon-50.png',
|
||||||
|
sizes: '50x50',
|
||||||
|
type: 'image/png' as const,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
src: '/icon-100.png',
|
||||||
|
sizes: '100x100',
|
||||||
|
type: 'image/png',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
src: '/icon.png',
|
||||||
|
sizes: '440x440',
|
||||||
|
type: 'image/png',
|
||||||
|
purpose: 'any',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
}
|
@@ -82,14 +82,29 @@ const checkConfig = async (
|
|||||||
) {
|
) {
|
||||||
if (!chatModel || !chatModelProvider) {
|
if (!chatModel || !chatModelProvider) {
|
||||||
const chatModelProviders = providers.chatModelProviders;
|
const chatModelProviders = providers.chatModelProviders;
|
||||||
|
const chatModelProvidersKeys = Object.keys(chatModelProviders);
|
||||||
|
|
||||||
|
if (!chatModelProviders || chatModelProvidersKeys.length === 0) {
|
||||||
|
return toast.error('No chat models available');
|
||||||
|
} else {
|
||||||
chatModelProvider =
|
chatModelProvider =
|
||||||
chatModelProvider || Object.keys(chatModelProviders)[0];
|
chatModelProvidersKeys.find(
|
||||||
|
(provider) =>
|
||||||
|
Object.keys(chatModelProviders[provider]).length > 0,
|
||||||
|
) || chatModelProvidersKeys[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
chatModelProvider === 'custom_openai' &&
|
||||||
|
Object.keys(chatModelProviders[chatModelProvider]).length === 0
|
||||||
|
) {
|
||||||
|
toast.error(
|
||||||
|
"Looks like you haven't configured any chat model providers. Please configure them from the settings page or the config file.",
|
||||||
|
);
|
||||||
|
return setHasError(true);
|
||||||
|
}
|
||||||
|
|
||||||
chatModel = Object.keys(chatModelProviders[chatModelProvider])[0];
|
chatModel = Object.keys(chatModelProviders[chatModelProvider])[0];
|
||||||
|
|
||||||
if (!chatModelProviders || Object.keys(chatModelProviders).length === 0)
|
|
||||||
return toast.error('No chat models available');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!embeddingModel || !embeddingModelProvider) {
|
if (!embeddingModel || !embeddingModelProvider) {
|
||||||
@@ -117,7 +132,8 @@ const checkConfig = async (
|
|||||||
|
|
||||||
if (
|
if (
|
||||||
Object.keys(chatModelProviders).length > 0 &&
|
Object.keys(chatModelProviders).length > 0 &&
|
||||||
!chatModelProviders[chatModelProvider]
|
(!chatModelProviders[chatModelProvider] ||
|
||||||
|
Object.keys(chatModelProviders[chatModelProvider]).length === 0)
|
||||||
) {
|
) {
|
||||||
const chatModelProvidersKeys = Object.keys(chatModelProviders);
|
const chatModelProvidersKeys = Object.keys(chatModelProviders);
|
||||||
chatModelProvider =
|
chatModelProvider =
|
||||||
@@ -132,6 +148,16 @@ const checkConfig = async (
|
|||||||
chatModelProvider &&
|
chatModelProvider &&
|
||||||
!chatModelProviders[chatModelProvider][chatModel]
|
!chatModelProviders[chatModelProvider][chatModel]
|
||||||
) {
|
) {
|
||||||
|
if (
|
||||||
|
chatModelProvider === 'custom_openai' &&
|
||||||
|
Object.keys(chatModelProviders[chatModelProvider]).length === 0
|
||||||
|
) {
|
||||||
|
toast.error(
|
||||||
|
"Looks like you haven't configured any chat model providers. Please configure them from the settings page or the config file.",
|
||||||
|
);
|
||||||
|
return setHasError(true);
|
||||||
|
}
|
||||||
|
|
||||||
chatModel = Object.keys(
|
chatModel = Object.keys(
|
||||||
chatModelProviders[
|
chatModelProviders[
|
||||||
Object.keys(chatModelProviders[chatModelProvider]).length > 0
|
Object.keys(chatModelProviders[chatModelProvider]).length > 0
|
||||||
@@ -139,6 +165,7 @@ const checkConfig = async (
|
|||||||
: Object.keys(chatModelProviders)[0]
|
: Object.keys(chatModelProviders)[0]
|
||||||
],
|
],
|
||||||
)[0];
|
)[0];
|
||||||
|
|
||||||
localStorage.setItem('chatModel', chatModel);
|
localStorage.setItem('chatModel', chatModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|