mirror of
https://github.com/lossless-group/perplexed-plugin.git
synced 2026-07-22 06:49:50 +00:00
docs(perplexica): rename to "Perplexica / Vane" across user-facing surfaces
Background: the open-source self-hosted repo (ItzCrazyKns/Perplexica) was renamed to Vane on 2026-03-09 by its maintainer (commit 'feat(app): rename to vane'). The hosted service at perplexica.io remains live under the Perplexica brand — that's a separate hosted product, not what users self-install for this plugin. The local API surface (/api/search, focus modes, optimization modes) is unchanged across the rename. Updates "Perplexica" to "Perplexica / Vane" wherever a user can see the string — command palette, modals, notice toasts, editor-injected callouts, settings tab, README. Internal references (class names, method names, CSS classes, command IDs, settings field names) are left bare to avoid breaking compatibility or requiring migration. main.ts - Command names: 'Ask Perplexica' / 'Update Perplexica URL' / 'Show Perplexica Settings' all gain '/ Vane'. - Notice toasts (service not initialized, failed to open modal, current URL display) updated. - Settings tab section heading 'Perplexica (Self-Hosted)' → 'Perplexica / Vane (self-hosted)'; all 9 endpoint/model/template/ prompt/placeholder labels and descriptions in that section updated to read 'Perplexica / Vane'. - URLUpdateModal config (title + label) for the Update URL command updated to match the new command name. - Default Perplexica query placeholder updated. src/modals/PerplexicaModal.ts - Header title, subtitle, submit button all read 'Ask Perplexica / Vane'. src/services/perplexicaService.ts - Editor-injected callout '**Perplexica Query**' / '### **Response from Perplexica**' both updated. - Error notice prefix 'Perplexica Error:' → 'Perplexica / Vane Error:'. README.md - Top blurb, features bullet, network-use table row, "Using" section heading + TOC anchor (slug regenerated), full Commands table. - Install section rewrite: heading marks the local-install requirement explicit; new rename callout points users at github.com/ItzCrazyKns/Vane for docs while explaining what got renamed and what didn't (perplexica.io is still a separate hosted brand). Intentionally bare (justified): - Example JSON content '"What is Perplexica's architecture?"' (sample content, not a UI label). - Internal Error throws + console logs (dev-only surface). - Code comments. - Lines 98-102 of README, inside the rename callout itself — those sentences distinguish the two names by design. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
14962edde1
commit
49168823f1
4 changed files with 66 additions and 45 deletions
61
README.md
61
README.md
|
|
@ -1,7 +1,7 @@
|
|||

|
||||

|
||||
# Perplexed: AI Content Generation for Obsidian
|
||||
|
||||
**Perplexed** is an Obsidian plugin that enables AI-powered content generation with source citations using [Perplexity](https://www.perplexity.ai/) and [Perplexica](https://perplexica.io/). This plugin brings research-grade AI capabilities directly into your Obsidian workspace, allowing you to generate well-cited content for your notes.
|
||||
**Perplexed** is an Obsidian plugin that enables AI-powered content generation with source citations using [Perplexity](https://www.perplexity.ai/), [Anthropic Claude](https://www.anthropic.com/), and [Perplexica / Vane](https://github.com/ItzCrazyKns/Vane) (self-hosted). This plugin brings research-grade AI capabilities directly into your Obsidian workspace, allowing you to generate well-cited content for your notes.
|
||||
|
||||
## 🎯 Key Features
|
||||
|
||||
|
|
@ -15,7 +15,7 @@ ## 🎯 Key Features
|
|||
[2]: 2025, Jun 16. [Governance, risk and compliance (GRC): Definitions and resources](https://www.diligent.com/resources/guides/grc). Published: 2025-05-27 | Updated: 2025-06-16
|
||||
> ```
|
||||
|
||||
- **Multiple AI Providers**: Support for Perplexity, Anthropic Claude, Perplexica (self-hosted), and LM Studio (local)
|
||||
- **Multiple AI Providers**: Support for Perplexity, Anthropic Claude, Perplexica / Vane (self-hosted), and LM Studio (local)
|
||||
- **Streaming Responses**: Real-time streaming of AI responses for better UX
|
||||
- **Flexible Configuration**: Customizable endpoints, models, and parameters
|
||||
- **Deep Research Mode**: Comprehensive research across hundreds of sources
|
||||
|
|
@ -32,7 +32,7 @@ ## Network use and accounts
|
|||
|---|---|---|---|
|
||||
| Perplexity | `https://api.perplexity.ai/chat/completions` | Required | Required (paid) |
|
||||
| Anthropic Claude | `https://api.anthropic.com/v1/messages` | Required | Required (paid) |
|
||||
| Perplexica | `http://localhost:3030/api/search` (default; user-configurable) | Not required | Not required (self-hosted) |
|
||||
| Perplexica / Vane ([install required](https://github.com/ItzCrazyKns/Vane)) | `http://localhost:3030/api/search` (default; user-configurable) | Not required | Not required (self-hosted, runs locally) |
|
||||
| LM Studio | `http://localhost:1234/v1/chat/completions` (default; user-configurable) | Not required | Not required (runs locally) |
|
||||
|
||||
The plugin does not collect telemetry, ship vault content anywhere else,
|
||||
|
|
@ -45,7 +45,7 @@ ## 📋 Table of Contents
|
|||
- [Installation](#installation)
|
||||
- [Initial Setup](#initial-setup)
|
||||
- [Using Perplexity](#using-perplexity)
|
||||
- [Using Perplexica](#using-perplexica)
|
||||
- [Using Perplexica / Vane](#using-perplexica--vane)
|
||||
- [Using LM Studio](#using-lm-studio)
|
||||
- [Command Reference](#command-reference)
|
||||
- [Developer Onboarding](#developer-onboarding)
|
||||
|
|
@ -87,18 +87,39 @@ ### 1. Configure Perplexity (Recommended for most users)
|
|||
- Enter your Perplexity API key
|
||||
- The default endpoint should work: `https://api.perplexity.ai/chat/completions`
|
||||
|
||||
### 2. Configure Perplexica (Self-hosted alternative)
|
||||
### 2. Configure Perplexica / Vane (self-hosted — requires local install)
|
||||
|
||||
Perplexica is a free, open-source alternative that you can host yourself.
|
||||
Perplexica / Vane is a free, open-source AI search engine that you run
|
||||
**locally on your own machine**. This plugin does not bundle the server
|
||||
or proxy to a hosted instance — you must install and run it yourself
|
||||
before the "Ask Perplexica / Vane" command will work.
|
||||
|
||||
1. **Set up Perplexica Server**:
|
||||
- Follow the [Perplexica setup guide](https://perplexica.io/)
|
||||
- Ensure your server is running and accessible
|
||||
> **Note on naming:** The maintainer (`ItzCrazyKns`) renamed the
|
||||
> open-source self-hosted repo from **Perplexica** to **Vane** on
|
||||
> 2026-03-09 (commit `feat(app): rename to 'vane'`). The old GitHub URL
|
||||
> `ItzCrazyKns/Perplexica` redirects to `ItzCrazyKns/Vane`. A hosted
|
||||
> service at [perplexica.io](https://perplexica.io/) remains live under
|
||||
> the Perplexica name — that's a separate hosted product, not what you
|
||||
> self-install for use with this plugin. The local API surface this
|
||||
> plugin talks to (`/api/search`, focus modes, optimization modes) is
|
||||
> unchanged across the rename.
|
||||
|
||||
2. **Configure in Plugin**:
|
||||
- Open plugin settings
|
||||
- Set the Perplexica endpoint (e.g., `http://localhost:3030/api/search`)
|
||||
- Configure your preferred model and settings
|
||||
1. **Install Perplexica / Vane locally**:
|
||||
- Repo and full installation docs:
|
||||
[github.com/ItzCrazyKns/Vane](https://github.com/ItzCrazyKns/Vane)
|
||||
- Docker is the recommended install path; the repo's README walks
|
||||
through `docker-compose` setup, configuring SearXNG, and choosing
|
||||
your local LLM provider (Ollama, LM Studio, OpenAI-compatible
|
||||
endpoints, etc.).
|
||||
- Confirm the server is running and reachable, e.g.:
|
||||
`curl http://localhost:3030/api/search`
|
||||
|
||||
2. **Configure in this plugin**:
|
||||
- Open Obsidian Settings → Community Plugins → Perplexed
|
||||
- Set the Perplexica / Vane endpoint to where your local server is
|
||||
listening (default: `http://localhost:3030/api/search`)
|
||||
- Pick a focus mode, optimization mode, and the local model you've
|
||||
configured the server to use
|
||||
|
||||
### 3. Configure LM Studio (Optional)
|
||||
|
||||
|
|
@ -195,12 +216,12 @@ #### Example Usage
|
|||
Artificial Intelligence (AI) is fundamentally transforming how we work across various industries and sectors. From automating routine tasks to enabling more sophisticated decision-making processes, AI technologies are reshaping traditional workflows and creating new opportunities for productivity and innovation.
|
||||
```
|
||||
|
||||
## Using Perplexica
|
||||
## Using Perplexica / Vane
|
||||
|
||||
### Quick Start
|
||||
|
||||
1. **Open Command Palette**: `Ctrl/Cmd + Shift + P`
|
||||
2. **Run Command**: Type "Ask Perplexica" and select it
|
||||
2. **Run Command**: Type "Ask Perplexica / Vane" and select it
|
||||
3. **Enter Your Question**: Type your research question
|
||||
4. **Configure Options**:
|
||||
- **Focus Mode**: Choose search specialization
|
||||
|
|
@ -280,13 +301,13 @@ ### Perplexity Commands
|
|||
| `Update Perplexity URL` | Change Perplexity API endpoint | Settings command |
|
||||
| `Show Perplexity Settings` | Display current Perplexity configuration | Debug command |
|
||||
|
||||
### Perplexica Commands
|
||||
### Perplexica / Vane Commands
|
||||
|
||||
| Command | Description | Usage |
|
||||
|---------|-------------|-------|
|
||||
| `Ask Perplexica` | Query Perplexica with focus and optimization modes | Editor command with modal interface |
|
||||
| `Update Perplexica URL` | Change Perplexica API endpoint | Settings command |
|
||||
| `Show Perplexica Settings` | Display current Perplexica configuration | Debug command |
|
||||
| `Ask Perplexica / Vane` | Query Perplexica / Vane with focus and optimization modes | Editor command with modal interface |
|
||||
| `Update Perplexica / Vane URL` | Change Perplexica / Vane API endpoint | Settings command |
|
||||
| `Show Perplexica / Vane Settings` | Display current Perplexica / Vane configuration | Debug command |
|
||||
|
||||
### LM Studio Commands
|
||||
|
||||
|
|
|
|||
40
main.ts
40
main.ts
|
|
@ -158,7 +158,7 @@ const DEFAULT_SETTINGS: PerplexedPluginSettings = {
|
|||
|
||||
// Placeholder text
|
||||
perplexityQueryPlaceholder: "What would you like to ask Perplexity?",
|
||||
perplexicaQueryPlaceholder: "What would you like to ask Perplexica?",
|
||||
perplexicaQueryPlaceholder: "What would you like to ask Perplexica / Vane?",
|
||||
lmStudioQueryPlaceholder: "What would you like to ask?",
|
||||
lmStudioSystemPromptPlaceholder: "You are a helpful AI assistant...",
|
||||
articleTermPlaceholder: "e.g., AI Copilots, AI Studios, Machine Learning, etc.",
|
||||
|
|
@ -549,11 +549,11 @@ export default class PerplexedPlugin extends Plugin {
|
|||
// Command to update Perplexica URL
|
||||
this.addCommand({
|
||||
id: 'update-perplexica-url',
|
||||
name: 'Update Perplexica URL',
|
||||
name: 'Update Perplexica / Vane URL',
|
||||
callback: () => {
|
||||
const modal = new URLUpdateModal(this.app, {
|
||||
title: 'Update Perplexica API URL',
|
||||
label: 'Perplexica API URL',
|
||||
title: 'Update Perplexica / Vane API URL',
|
||||
label: 'Perplexica / Vane API URL',
|
||||
placeholder: 'http://localhost:3030/api/search',
|
||||
currentValue: this.settings.perplexicaEndpoint,
|
||||
onSave: async (newUrl: string) => {
|
||||
|
|
@ -568,9 +568,9 @@ export default class PerplexedPlugin extends Plugin {
|
|||
// Command to show current settings
|
||||
this.addCommand({
|
||||
id: 'show-perplexica-settings',
|
||||
name: 'Show Perplexica Settings',
|
||||
name: 'Show Perplexica / Vane Settings',
|
||||
callback: () => {
|
||||
new Notice(`Current Perplexica URL: ${this.settings.perplexicaEndpoint}`);
|
||||
new Notice(`Current Perplexica / Vane URL: ${this.settings.perplexicaEndpoint}`);
|
||||
console.log('Perplexica Settings:', this.settings);
|
||||
}
|
||||
});
|
||||
|
|
@ -578,11 +578,11 @@ export default class PerplexedPlugin extends Plugin {
|
|||
// Command to ask Perplexica
|
||||
this.addCommand({
|
||||
id: 'ask-perplexica',
|
||||
name: 'Ask Perplexica',
|
||||
name: 'Ask Perplexica / Vane',
|
||||
editorCallback: (editor: Editor) => {
|
||||
try {
|
||||
if (!this.perplexicaService) {
|
||||
new Notice('Perplexica service not initialized. Please check console for errors and try the debug command.');
|
||||
new Notice('Perplexica / Vane service not initialized. Please check console for errors and try the debug command.');
|
||||
console.error('Perplexica service is not initialized');
|
||||
return;
|
||||
}
|
||||
|
|
@ -595,7 +595,7 @@ export default class PerplexedPlugin extends Plugin {
|
|||
modal.open();
|
||||
} catch (error) {
|
||||
console.error('Error opening Perplexica modal:', error);
|
||||
new Notice('Failed to open Perplexica modal. Check console for details.');
|
||||
new Notice('Failed to open Perplexica / Vane modal. Check console for details.');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
@ -1135,17 +1135,17 @@ class PerplexedSettingTab extends PluginSettingTab {
|
|||
await this.plugin.saveSettings();
|
||||
}));
|
||||
|
||||
// Perplexica Section
|
||||
const perplexicaHeader = containerEl.createEl('h3', { text: 'Perplexica (Self-Hosted)' });
|
||||
// Perplexica / Vane Section
|
||||
const perplexicaHeader = containerEl.createEl('h3', { text: 'Perplexica / Vane (self-hosted)' });
|
||||
perplexicaHeader.style.color = 'var(--text-accent)';
|
||||
containerEl.createEl('p', {
|
||||
text: 'Configure settings for your local Perplexica installation',
|
||||
text: 'Configure settings for your local Perplexica / Vane installation',
|
||||
cls: 'setting-item-description'
|
||||
});
|
||||
|
||||
new Setting(containerEl)
|
||||
.setName('Endpoint')
|
||||
.setDesc('API endpoint for your local Perplexica instance')
|
||||
.setDesc('API endpoint for your local Perplexica / Vane instance')
|
||||
.addText(text => text
|
||||
.setPlaceholder('http://localhost:3030/api/search')
|
||||
.setValue(this.plugin.settings.perplexicaEndpoint)
|
||||
|
|
@ -1169,7 +1169,7 @@ class PerplexedSettingTab extends PluginSettingTab {
|
|||
|
||||
new Setting(containerEl)
|
||||
.setName('Default Model')
|
||||
.setDesc('Default AI model for Perplexica to use')
|
||||
.setDesc('Default AI model for Perplexica / Vane to use')
|
||||
.addText(text => text
|
||||
.setPlaceholder('llama3.2:latest')
|
||||
.setValue(this.plugin.settings.defaultModel)
|
||||
|
|
@ -1182,7 +1182,7 @@ class PerplexedSettingTab extends PluginSettingTab {
|
|||
// Perplexica Request Template
|
||||
const perplexicaJsonSetting = new Setting(containerEl)
|
||||
.setName('Request Body Template')
|
||||
.setDesc('JSON template for Perplexica API requests');
|
||||
.setDesc('JSON template for Perplexica / Vane API requests');
|
||||
|
||||
// Create a textarea element for Perplexica
|
||||
const perplexicaTextArea = document.createElement('textarea');
|
||||
|
|
@ -1307,10 +1307,10 @@ class PerplexedSettingTab extends PluginSettingTab {
|
|||
);
|
||||
|
||||
new Setting(containerEl)
|
||||
.setName('Perplexica System Prompt')
|
||||
.setDesc('System prompt used for Perplexica requests')
|
||||
.setName('Perplexica / Vane System Prompt')
|
||||
.setDesc('System prompt used for Perplexica / Vane requests')
|
||||
.addTextArea(text => text
|
||||
.setPlaceholder('Enter system prompt for Perplexica...')
|
||||
.setPlaceholder('Enter system prompt for Perplexica / Vane...')
|
||||
.setValue(this.plugin.settings.prompts.perplexicaSystemPrompt)
|
||||
.onChange(async (value: string) => {
|
||||
this.plugin.settings.prompts.perplexicaSystemPrompt = value;
|
||||
|
|
@ -1358,8 +1358,8 @@ class PerplexedSettingTab extends PluginSettingTab {
|
|||
);
|
||||
|
||||
new Setting(containerEl)
|
||||
.setName('Perplexica Query Placeholder')
|
||||
.setDesc('Placeholder text for Perplexica query input')
|
||||
.setName('Perplexica / Vane Query Placeholder')
|
||||
.setDesc('Placeholder text for Perplexica / Vane query input')
|
||||
.addText(text => text
|
||||
.setPlaceholder('Enter placeholder text...')
|
||||
.setValue(this.plugin.settings.prompts.perplexicaQueryPlaceholder)
|
||||
|
|
|
|||
|
|
@ -57,10 +57,10 @@ export class PerplexicaModal extends Modal {
|
|||
|
||||
// ----- Header -----
|
||||
const header = contentEl.createDiv({ cls: 'perplexica-modal__header' });
|
||||
header.createEl('h2', { text: 'Ask Perplexica', cls: 'perplexica-modal__title' });
|
||||
header.createEl('h2', { text: 'Ask Perplexica / Vane', cls: 'perplexica-modal__title' });
|
||||
header.createEl('p', {
|
||||
cls: 'perplexica-modal__subtitle',
|
||||
text: 'Self-hosted, source-grounded answers via your local Perplexica instance. Streams into the active note at the cursor.',
|
||||
text: 'Self-hosted, source-grounded answers via your local Perplexica / Vane instance. Streams into the active note at the cursor.',
|
||||
});
|
||||
|
||||
// ----- Question -----
|
||||
|
|
@ -151,7 +151,7 @@ export class PerplexicaModal extends Modal {
|
|||
cancelBtn.addEventListener('click', () => this.close());
|
||||
|
||||
const askBtn = footer.createEl('button', {
|
||||
text: 'Ask Perplexica',
|
||||
text: 'Ask Perplexica / Vane',
|
||||
cls: 'perplexica-modal__button mod-cta',
|
||||
});
|
||||
askBtn.addEventListener('click', () => void this.onSubmit());
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ export class PerplexicaService {
|
|||
// Process query to handle multi-line content in callout
|
||||
const processedQuery = query.split('\n').map(line => `> ${line}`).join('\n');
|
||||
|
||||
editor.replaceRange(`\n\n***\n> [!info] **Perplexica Query** (${timestamp})\n> **Question:**\n${processedQuery}\n> **Focus:** ${focusMode}\n> **Optimization:** ${optimizationMode}\n> \n> ### **Response from Perplexica**:\n\n`, cursor);
|
||||
editor.replaceRange(`\n\n***\n> [!info] **Perplexica / Vane Query** (${timestamp})\n> **Question:**\n${processedQuery}\n> **Focus:** ${focusMode}\n> **Optimization:** ${optimizationMode}\n> \n> ### **Response from Perplexica / Vane**:\n\n`, cursor);
|
||||
|
||||
// Get cursor position after header for response content
|
||||
const responseCursor = editor.getCursor();
|
||||
|
|
@ -210,7 +210,7 @@ export class PerplexicaService {
|
|||
|
||||
} catch (error) {
|
||||
const errorMsg = error instanceof Error ? error.message : String(error);
|
||||
new Notice(`Perplexica Error: ${errorMsg}`);
|
||||
new Notice(`Perplexica / Vane Error: ${errorMsg}`);
|
||||
editor.replaceRange(`\n**Error:** ${errorMsg}\n\n***\n`, editor.getCursor());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue