diff --git a/README.md b/README.md index 4df7aeb..291ea19 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,21 @@ # 🚀 Perplexica - An AI-powered search engine 🔎 +
+ Special thanks to: +
+
+ + Warp sponsorship + + +### [Warp, the AI Devtool that lives in your terminal](https://www.warp.dev/perplexica) + +[Available for MacOS, Linux, & Windows](https://www.warp.dev/perplexica) + +
+ +
+ [![Discord](https://dcbadge.vercel.app/api/server/26aArMy8tT?style=flat&compact=true)](https://discord.gg/26aArMy8tT) ![preview](.assets/perplexica-screenshot.png?) @@ -43,7 +59,7 @@ Want to know more about its architecture and how it works? You can read it [here - **Normal Mode:** Processes your query and performs a web search. - **Focus Modes:** Special modes to better answer specific types of questions. Perplexica currently has 6 focus modes: - **All Mode:** Searches the entire web to find the best results. - - **Writing Assistant Mode:** Helpful for writing tasks that does not require searching the web. + - **Writing Assistant Mode:** Helpful for writing tasks that do not require searching the web. - **Academic Search Mode:** Finds articles and papers, ideal for academic research. - **YouTube Search Mode:** Finds YouTube videos based on the search query. - **Wolfram Alpha Search Mode:** Answers queries that need calculations or data analysis using Wolfram Alpha. @@ -142,6 +158,7 @@ You can access Perplexica over your home network by following our networking gui ## One-Click Deployment +[![Deploy to Sealos](https://raw.githubusercontent.com/labring-actions/templates/main/Deploy-on-Sealos.svg)](https://usw.sealos.io/?openapp=system-template%3FtemplateName%3Dperplexica) [![Deploy to RepoCloud](https://d16t0pc4846x52.cloudfront.net/deploylobe.svg)](https://repocloud.io/details/?app_id=267) ## Upcoming Features diff --git a/ui/app/settings/page.tsx b/ui/app/settings/page.tsx index 26cdbd6..c659265 100644 --- a/ui/app/settings/page.tsx +++ b/ui/app/settings/page.tsx @@ -651,12 +651,16 @@ const Page = () => { - setConfig({ - ...config, + value={config.customOpenaiModelName} + isSaving={savingStates['customOpenaiModelName']} + onChange={(e: React.ChangeEvent) => { + setConfig((prev) => ({ + ...prev!, customOpenaiModelName: e.target.value, - }) + })); + }} + onSave={(value) => + saveConfig('customOpenaiModelName', value) } /> @@ -667,12 +671,16 @@ const Page = () => { - setConfig({ - ...config, + value={config.customOpenaiApiKey} + isSaving={savingStates['customOpenaiApiKey']} + onChange={(e: React.ChangeEvent) => { + setConfig((prev) => ({ + ...prev!, customOpenaiApiKey: e.target.value, - }) + })); + }} + onSave={(value) => + saveConfig('customOpenaiApiKey', value) } /> @@ -683,12 +691,16 @@ const Page = () => { - setConfig({ - ...config, + value={config.customOpenaiApiUrl} + isSaving={savingStates['customOpenaiApiUrl']} + onChange={(e: React.ChangeEvent) => { + setConfig((prev) => ({ + ...prev!, customOpenaiApiUrl: e.target.value, - }) + })); + }} + onSave={(value) => + saveConfig('customOpenaiApiUrl', value) } /> diff --git a/ui/components/MessageBox.tsx b/ui/components/MessageBox.tsx index 7f5078c..6cc53eb 100644 --- a/ui/components/MessageBox.tsx +++ b/ui/components/MessageBox.tsx @@ -78,7 +78,7 @@ const MessageBox = ({ return (
{message.role === 'user' && ( -
+

{message.content}

diff --git a/ui/components/MessageInputActions/Attach.tsx b/ui/components/MessageInputActions/Attach.tsx index 61cc86a..d5c1448 100644 --- a/ui/components/MessageInputActions/Attach.tsx +++ b/ui/components/MessageInputActions/Attach.tsx @@ -110,7 +110,7 @@ const Attach = ({